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  }