2023-08-23 15:11:28 +09:00

47 lines
1.2 KiB
Go

package server
import (
"fmt"
"net"
"github.com/c4ei/kaspad/infrastructure/network/netadapter/router"
)
// OnConnectedHandler is a function that is to be called
// once a new Connection is successfully established.
type OnConnectedHandler func(connection Connection) error
// OnDisconnectedHandler is a function that is to be
// called once a Connection has been disconnected.
type OnDisconnectedHandler func()
// OnInvalidMessageHandler is a function that is to be called when
// an invalid message (cannot be parsed/doesn't have a route)
// was received from a connection.
type OnInvalidMessageHandler func(err error)
// Server represents a server.
type Server interface {
Start() error
Stop() error
SetOnConnectedHandler(onConnectedHandler OnConnectedHandler)
}
// P2PServer represents a p2p server.
type P2PServer interface {
Server
Connect(address string) (Connection, error)
}
// Connection represents a server connection.
type Connection interface {
fmt.Stringer
Start(router *router.Router)
Disconnect()
IsConnected() bool
IsOutbound() bool
SetOnDisconnectedHandler(onDisconnectedHandler OnDisconnectedHandler)
SetOnInvalidMessageHandler(onInvalidMessageHandler OnInvalidMessageHandler)
Address() *net.TCPAddr
}