github.com/argoproj/argo-events@v1.9.1/eventbus/stan/base/stan_conn.go (about) 1 package base 2 3 import ( 4 "fmt" 5 6 nats "github.com/nats-io/nats.go" 7 "github.com/nats-io/stan.go" 8 "go.uber.org/zap" 9 ) 10 11 type STANConnection struct { 12 NATSConn *nats.Conn 13 STANConn stan.Conn 14 15 NATSConnected bool 16 STANConnected bool 17 18 // defaultSubject string 19 ClientID string 20 21 Logger *zap.SugaredLogger 22 } 23 24 func (nsc *STANConnection) Close() error { 25 if nsc == nil { 26 return fmt.Errorf("can't close STAN connection, STANConnection is nil") 27 } 28 if nsc.STANConn != nil { 29 err := nsc.STANConn.Close() 30 if err != nil { 31 return err 32 } 33 } 34 if nsc.NATSConn != nil && nsc.NATSConn.IsConnected() { 35 nsc.NATSConn.Close() 36 } 37 return nil 38 } 39 40 func (nsc *STANConnection) IsClosed() bool { 41 return nsc == nil || nsc.NATSConn == nil || nsc.STANConn == nil || !nsc.NATSConnected || !nsc.STANConnected || nsc.NATSConn.IsClosed() 42 }