ing
This commit is contained in:
parent
903c790624
commit
4691a6923a
|
@ -30,7 +30,7 @@ type Client struct {
|
||||||
pendingRequests sync.Map
|
pendingRequests sync.Map
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Start(readChan <-chan []byte, writeChan chan<- []byte) error {
|
func (c *Client) Start() error {
|
||||||
if c.stopChan != nil {
|
if c.stopChan != nil {
|
||||||
return fmt.Errorf("%s already running. Stop it before starting it again", c.logHeader())
|
return fmt.Errorf("%s already running. Stop it before starting it again", c.logHeader())
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,11 @@ func (c *Client) Start(readChan <-chan []byte, writeChan chan<- []byte) error {
|
||||||
return fmt.Errorf("%s Codec is not valid", c.logHeader())
|
return fmt.Errorf("%s Codec is not valid", c.logHeader())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
readChan, writeChan, err := c.Connector.Connect()
|
||||||
|
if nil != err {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
c.stopChan = make(chan struct{})
|
c.stopChan = make(chan struct{})
|
||||||
|
|
||||||
c.stopWg.Add(1)
|
c.stopWg.Add(1)
|
||||||
|
@ -158,6 +163,12 @@ func (c *Client) internalSend(hasResponse bool, result interface{}, method strin
|
||||||
|
|
||||||
func (c *Client) handleClient(readChan <-chan []byte, writeChan chan<- []byte) {
|
func (c *Client) handleClient(readChan <-chan []byte, writeChan chan<- []byte) {
|
||||||
defer func() {
|
defer func() {
|
||||||
|
|
||||||
|
if err := c.Connector.Disconnect(); nil != err {
|
||||||
|
logging.Logger().Warn(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
logging.Logger().Infof("%s Stopped", c.logHeader())
|
||||||
c.stopWg.Done()
|
c.stopWg.Done()
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -168,6 +179,8 @@ func (c *Client) handleClient(readChan <-chan []byte, writeChan chan<- []byte) {
|
||||||
go c.handleSend(stopChan, sendDoneChan, writeChan)
|
go c.handleSend(stopChan, sendDoneChan, writeChan)
|
||||||
go c.handleReceive(stopChan, receiveDoneChan, readChan)
|
go c.handleReceive(stopChan, receiveDoneChan, readChan)
|
||||||
|
|
||||||
|
logging.Logger().Infof("%s Started", c.logHeader())
|
||||||
|
|
||||||
select {
|
select {
|
||||||
case <-sendDoneChan:
|
case <-sendDoneChan:
|
||||||
close(stopChan)
|
close(stopChan)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user