server-go/socket/client/connector.go
crusader d1d485c711 ing
2018-06-29 19:02:40 +09:00

61 lines
1.1 KiB
Go

package client
import (
"sync/atomic"
"git.loafle.net/commons/server-go/socket"
)
type OnDisconnectedFunc func(connector Connector)
type Connector interface {
Connect() (readChan <-chan socket.SocketMessage, writeChan chan<- socket.SocketMessage, err error)
Disconnect() error
GetName() string
GetOnDisconnected() OnDisconnectedFunc
SetOnDisconnected(fnc OnDisconnectedFunc)
Clone() Connector
Validate() error
}
type Connectors struct {
Name string `json:"name,omitempty"`
OnDisconnected OnDisconnectedFunc `json:"-"`
validated atomic.Value
}
func (c *Connectors) GetName() string {
return c.Name
}
func (c *Connectors) GetOnDisconnected() OnDisconnectedFunc {
return c.OnDisconnected
}
func (c *Connectors) SetOnDisconnected(fnc OnDisconnectedFunc) {
c.OnDisconnected = fnc
}
func (c *Connectors) Clone() *Connectors {
return &Connectors{
Name: c.Name,
validated: c.validated,
}
}
func (c *Connectors) Validate() error {
if nil != c.validated.Load() {
return nil
}
c.validated.Store(true)
if "" == c.Name {
c.Name = "Connector"
}
return nil
}