增加客户端日志输出
This commit is contained in:
parent
2ba9e9c0eb
commit
4a4fdbd4f6
48
client.go
48
client.go
|
@ -27,7 +27,7 @@ type Client struct {
|
|||
// ctx and ctxCancel manage the lifecycle of client.
|
||||
ctx context.Context
|
||||
ctxCancel context.CancelFunc
|
||||
|
||||
logger log.Logger
|
||||
writeFrameChan chan frame.Frame
|
||||
shutdownChan chan error
|
||||
}
|
||||
|
@ -47,24 +47,29 @@ func NewClient(appName string, connType ClientType, opts ...ClientOption) *Clien
|
|||
|
||||
ctx, ctxCancel := context.WithCancel(context.Background())
|
||||
|
||||
return &Client{
|
||||
name: appName,
|
||||
clientId: clientId,
|
||||
streamType: connType,
|
||||
opts: option,
|
||||
errorfn: func(err error) { log.Errorf("client err, %s", err) },
|
||||
writeFrameChan: make(chan frame.Frame),
|
||||
shutdownChan: make(chan error, 1),
|
||||
ctx: ctx,
|
||||
ctxCancel: ctxCancel,
|
||||
cli := new(Client)
|
||||
if cli.logger == nil {
|
||||
cli.logger = log.Default()
|
||||
}
|
||||
cli.name = appName
|
||||
cli.clientId = clientId
|
||||
cli.streamType = connType
|
||||
cli.opts = option
|
||||
cli.errorfn = func(err error) {
|
||||
cli.logger.Errorf("client err, %s", err)
|
||||
}
|
||||
cli.writeFrameChan = make(chan frame.Frame)
|
||||
cli.shutdownChan = make(chan error, 1)
|
||||
cli.ctx = ctx
|
||||
cli.ctxCancel = ctxCancel
|
||||
return cli
|
||||
}
|
||||
|
||||
// Connect connects to HPDS-MessageQueue.
|
||||
func (c *Client) Connect(ctx context.Context, addr string) error {
|
||||
controlStream, dataStream, err := c.openStream(ctx, addr)
|
||||
if err != nil {
|
||||
log.Errorf("connect error, %s", err)
|
||||
c.logger.Errorf("connect error, %s", err)
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -91,7 +96,7 @@ func (c *Client) runBackground(ctx context.Context, addr string, controlStream C
|
|||
var err error
|
||||
controlStream, dataStream, err = c.openStream(ctx, addr)
|
||||
if err != nil {
|
||||
log.Errorf("client reconnect error, %s", err)
|
||||
c.logger.Errorf("client reconnect error, %s", err)
|
||||
time.Sleep(time.Second)
|
||||
goto RECONNECT
|
||||
}
|
||||
|
@ -110,7 +115,7 @@ func (c *Client) cleanStream(controlStream ClientControlStream, err error) {
|
|||
errString := ""
|
||||
if err != nil {
|
||||
errString = err.Error()
|
||||
log.Errorf("client cancel with error, %s", err)
|
||||
c.logger.Errorf("client cancel with error, %s", err)
|
||||
}
|
||||
|
||||
// controlStream is nil represents that client is not connected.
|
||||
|
@ -250,18 +255,18 @@ func (c *Client) handleFrame(f frame.Frame) {
|
|||
switch ff := f.(type) {
|
||||
case *frame.DataFrame:
|
||||
if c.processor == nil {
|
||||
log.Warnf("client processor has not been set")
|
||||
c.logger.Warnf("client processor has not been set")
|
||||
} else {
|
||||
c.processor(ff)
|
||||
}
|
||||
case *frame.BackFlowFrame:
|
||||
if c.receiver == nil {
|
||||
log.Warnf("client receiver has not been set")
|
||||
c.logger.Warnf("client receiver has not been set")
|
||||
} else {
|
||||
c.receiver(ff)
|
||||
}
|
||||
default:
|
||||
log.Warnf("client data stream receive unexcepted frame, frame_type: %v", f)
|
||||
c.logger.Warnf("client data stream receive unexcepted frame, frame_type: %v", f)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -291,13 +296,13 @@ func (c *Client) receivingStreamClose(controlStream ControlStream, dataStream Da
|
|||
// SetDataFrameObserver sets the data frame handler.
|
||||
func (c *Client) SetDataFrameObserver(fn func(*frame.DataFrame)) {
|
||||
c.processor = fn
|
||||
log.Debugf("SetDataFrameObserver")
|
||||
c.logger.Debugf("SetDataFrameObserver")
|
||||
}
|
||||
|
||||
// SetBackFlowFrameObserver sets the backflow frame handler.
|
||||
func (c *Client) SetBackFlowFrameObserver(fn func(*frame.BackFlowFrame)) {
|
||||
c.receiver = fn
|
||||
log.Debugf("SetBackFlowFrameObserver")
|
||||
c.logger.Debugf("SetBackFlowFrameObserver")
|
||||
}
|
||||
|
||||
// SetObserveDataTags set the data tag list that will be observed.
|
||||
|
@ -315,3 +320,8 @@ func (c *Client) SetErrorHandler(fn func(err error)) {
|
|||
func (c *Client) ClientId() string {
|
||||
return c.clientId
|
||||
}
|
||||
|
||||
// Logger get client's logger instance, you can customize this using `hpds.WithLogger`
|
||||
func (c *Client) Logger() log.Logger {
|
||||
return c.logger
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue