project initialized

This commit is contained in:
crusader
2018-08-22 17:37:12 +09:00
commit e78f235740
50 changed files with 6749 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
package client
import (
ouc "git.loafle.net/overflow/util-go/ctx"
)
type ClientCtx interface {
ouc.Ctx
}
func NewClientCtx(parent ouc.Ctx) ClientCtx {
return &clientCtx{
Ctx: ouc.NewCtx(parent),
}
}
type clientCtx struct {
ouc.Ctx
}

View File

@@ -0,0 +1,72 @@
package client
import (
"fmt"
"sync/atomic"
)
type ClientHandler interface {
GetName() string
GetConnector() Connector
ClientCtx() ClientCtx
Init(clientCtx ClientCtx) error
OnStart(clientCtx ClientCtx) error
OnStop(clientCtx ClientCtx)
Destroy(clientCtx ClientCtx)
Validate() error
}
type ClientHandlers struct {
Name string `json:"name,omitempty"`
Connector Connector `json:"-"`
validated atomic.Value
}
func (ch *ClientHandlers) ClientCtx() ClientCtx {
return NewClientCtx(nil)
}
func (ch *ClientHandlers) Init(clientCtx ClientCtx) error {
return nil
}
func (ch *ClientHandlers) OnStart(clientCtx ClientCtx) error {
return nil
}
func (ch *ClientHandlers) OnStop(clientCtx ClientCtx) {
}
func (ch *ClientHandlers) Destroy(clientCtx ClientCtx) {
}
func (ch *ClientHandlers) GetName() string {
return ch.Name
}
func (ch *ClientHandlers) GetConnector() Connector {
return ch.Connector
}
func (ch *ClientHandlers) Validate() error {
if nil != ch.validated.Load() {
return nil
}
ch.validated.Store(true)
if nil == ch.Connector {
return fmt.Errorf("Connector is not valid")
}
if err := ch.Connector.Validate(); nil != err {
return err
}
return nil
}

View File

@@ -0,0 +1,75 @@
package client
import (
"sync/atomic"
"git.loafle.net/overflow/server-go/socket"
)
type OnDisconnectedFunc func(connector Connector)
type Connector interface {
socket.ClientConnHandler
socket.ReadWriteHandler
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 {
socket.ClientConnHandlers
socket.ReadWriteHandlers
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,
ClientConnHandlers: *c.ClientConnHandlers.Clone(),
ReadWriteHandlers: *c.ReadWriteHandlers.Clone(),
validated: c.validated,
}
}
func (c *Connectors) Validate() error {
if nil != c.validated.Load() {
return nil
}
c.validated.Store(true)
if err := c.ClientConnHandlers.Validate(); nil != err {
return err
}
if err := c.ReadWriteHandlers.Validate(); nil != err {
return err
}
if "" == c.Name {
c.Name = "Connector"
}
return nil
}