Documentation ¶
Index ¶
- Constants
- Variables
- func Equal(a []byte, b []byte) bool
- func FromUint32(v uint32) []byte
- func NewQlcMessage(data []byte, currentVersion byte, messageType string) []byte
- func Ping(ctx context.Context, h host.Host, p peer.ID) (<-chan time.Duration, error)
- func Uint32(data []byte) uint32
- type DiscoveryOption
- type Dispatcher
- type Message
- type MessageService
- type MessageType
- type PeersSlice
- type PingService
- type QlcMessage
- func (message *QlcMessage) DataCheckSum() uint32
- func (message *QlcMessage) DataLength() uint32
- func (message *QlcMessage) HeaderCheckSum() uint32
- func (message *QlcMessage) HeaderData() []byte
- func (message *QlcMessage) MagicNumber() []byte
- func (message *QlcMessage) MessageData() []byte
- func (message *QlcMessage) MessageType() MessageType
- func (message *QlcMessage) ParseMessageData(data []byte) error
- func (message *QlcMessage) Reserved() []byte
- func (message *QlcMessage) VerifyData() error
- func (message *QlcMessage) VerifyHeader() error
- func (message *QlcMessage) Version() byte
- type QlcNode
- func (node *QlcNode) BroadcastMessage(messageName string, value interface{})
- func (node *QlcNode) GetID() string
- func (node *QlcNode) HandlePeerFound(p peer.AddrInfo)
- func (node *QlcNode) SendMessageToPeer(messageName string, value interface{}, peerID string) error
- func (node *QlcNode) SendMessageToPeers(messageName string, value interface{}, peerID string)
- func (node *QlcNode) SetQlcService(ns *QlcService)
- func (node *QlcNode) StartServices() error
- func (node *QlcNode) Stop() error
- func (node *QlcNode) StreamManager() *StreamManager
- type QlcService
- func (ns *QlcService) Broadcast(name string, value interface{})
- func (ns *QlcService) Deregister(subscribers ...*Subscriber)
- func (ns *QlcService) MessageEvent() event.EventBus
- func (ns *QlcService) Node() *QlcNode
- func (ns *QlcService) PutMessage(msg *Message)
- func (ns *QlcService) Register(subscribers ...*Subscriber)
- func (ns *QlcService) SendMessageToPeer(messageName string, value interface{}, peerID string) error
- func (ns *QlcService) SendMessageToPeers(messageName string, value interface{}, peerID string)
- func (ns *QlcService) Start() error
- func (ns *QlcService) Stop() error
- type ServiceSync
- type Stream
- func (s *Stream) Connect() error
- func (s *Stream) IsConnected() bool
- func (s *Stream) SendMessageToChan(message []byte)
- func (s *Stream) SendMessageToCtrlChan(message []byte)
- func (s *Stream) SendMessageToPeer(messageType string, data []byte) error
- func (s *Stream) StartLoop()
- func (s *Stream) String() string
- func (s *Stream) Write(data []byte) error
- func (s *Stream) WriteQlcMessage(message []byte) error
- type StreamManager
- func (sm *StreamManager) Add(s network.Stream)
- func (sm *StreamManager) AddStream(stream *Stream)
- func (sm *StreamManager) BroadcastMessage(messageName string, v interface{})
- func (sm *StreamManager) CloseStream(peerID string) error
- func (sm *StreamManager) FindByPeerID(peerID string) *Stream
- func (sm *StreamManager) GetAllConnectPeersInfo(p map[string]string)
- func (sm *StreamManager) IsConnectWithPeerId(peerID string) bool
- func (sm *StreamManager) PeerCounts() int
- func (sm *StreamManager) RandomPeer() (string, error)
- func (sm *StreamManager) RemoveStream(s *Stream)
- func (sm *StreamManager) SendMessageToPeers(messageName string, v interface{}, peerID string)
- func (sm *StreamManager) SetQlcNode(node *QlcNode)
- type Subscriber
Constants ¶
const ( QlcProtocolID = "qlc/1.0.0" QlcProtocolFOUND = "/qlc/discovery/1.0.0" )
const ( QlcMessageHeaderLength = 22 QlcMessageMagicNumberEndIdx = 3 QlcMessageVersionEndIdx = 4 QlcMessageTypeEndIdx = 6 QlcMessageDataLengthEndIdx = 10 QlcMessageReservedEndIdx = 14 QlcMessageHeaderCheckSumEndIdx = 18 QlcMessageDataCheckSumEndIdx = 22 )
const ( PublishReq = "0" //PublishReq ConfirmReq = "1" //ConfirmReq ConfirmAck = "2" //ConfirmAck FrontierRequest = "3" //FrontierReq FrontierRsp = "4" //FrontierRsp BulkPullRequest = "5" //BulkPullRequest BulkPullRsp = "6" //BulkPullRsp BulkPushBlock = "7" //BulkPushBlock MessageResponse = "8" //MessageResponse PovStatus = "20" PovPublishReq = "21" PovBulkPullReq = "22" PovBulkPullRsp = "23" )
Message Type
const ( PingSize = 32 ID = "/qlc/ping/1.0.0" )
Variables ¶
var ( ErrInvalidMessageHeaderLength = errors.New("invalid message header length") ErrInvalidMessageDataLength = errors.New("invalid message data length") ErrInvalidMagicNumber = errors.New("invalid magic number") ErrInvalidHeaderCheckSum = errors.New("invalid header checksum") ErrInvalidDataCheckSum = errors.New("invalid data checksum") )
Error types
var ( ErrStreamIsNotConnected = errors.New("stream is not connected") ErrNoStream = errors.New("no stream") ErrCloseStream = errors.New("stream close error") )
Stream Errors
var (
ErrPeerIsNotConnected = errors.New("peer is not connected")
)
Error types
var (
MagicNumber = []byte{0x51, 0x4C, 0x43} //QLC
)
Functions ¶
func NewQlcMessage ¶
NewQlcMessage new qlc message
Types ¶
type Dispatcher ¶
type Dispatcher struct {
// contains filtered or unexported fields
}
Dispatcher a message dispatcher service.
func (*Dispatcher) Deregister ¶
func (dp *Dispatcher) Deregister(subscribers ...*Subscriber)
Deregister deregister subscribers.
func (*Dispatcher) PutMessage ¶
func (dp *Dispatcher) PutMessage(msg *Message)
PutMessage put new message to chan, then subscribers will be notified to process.
func (*Dispatcher) Register ¶
func (dp *Dispatcher) Register(subscribers ...*Subscriber)
Register register subscribers.
type Message ¶
type Message struct {
// contains filtered or unexported fields
}
Message struct
func NewMessage ¶ added in v1.1.0
func NewMessage(messageType MessageType, from string, data []byte, content []byte) *Message
NewBaseMessage new base message
func (*Message) MessageFrom ¶
MessageFrom get message who send
func (*Message) MessageType ¶
func (msg *Message) MessageType() MessageType
MessageType get message type
type MessageService ¶
type MessageService struct {
// contains filtered or unexported fields
}
func NewMessageService ¶
func NewMessageService(netService *QlcService, ledger *ledger.Ledger) *MessageService
NewService return new Service.
func (*MessageService) Stop ¶
func (ms *MessageService) Stop()
type PingService ¶
func NewPingService ¶
func NewPingService(h host.Host) *PingService
func (*PingService) PingHandler ¶
func (ps *PingService) PingHandler(s inet.Stream)
type QlcMessage ¶
type QlcMessage struct {
// contains filtered or unexported fields
}
func ParseQlcMessage ¶
func ParseQlcMessage(data []byte) (*QlcMessage, error)
ParseqlcMessage parse qlc message
func (*QlcMessage) DataCheckSum ¶
func (message *QlcMessage) DataCheckSum() uint32
DataCheckSum return data checkSum
func (*QlcMessage) DataLength ¶
func (message *QlcMessage) DataLength() uint32
DataLength return dataLength
func (*QlcMessage) HeaderCheckSum ¶
func (message *QlcMessage) HeaderCheckSum() uint32
HeaderCheckSum return header checkSum
func (*QlcMessage) HeaderData ¶
func (message *QlcMessage) HeaderData() []byte
HeaderData return HeaderData
func (*QlcMessage) MagicNumber ¶
func (message *QlcMessage) MagicNumber() []byte
MagicNumber return magicNumber
func (*QlcMessage) MessageData ¶
func (message *QlcMessage) MessageData() []byte
func (*QlcMessage) MessageType ¶
func (message *QlcMessage) MessageType() MessageType
func (*QlcMessage) ParseMessageData ¶
func (message *QlcMessage) ParseMessageData(data []byte) error
ParseMessageData parse qlc message data
func (*QlcMessage) VerifyData ¶
func (message *QlcMessage) VerifyData() error
VerifyData verify qlc message data
func (*QlcMessage) VerifyHeader ¶
func (message *QlcMessage) VerifyHeader() error
VerifyHeader verify qlc message header
func (*QlcMessage) Version ¶
func (message *QlcMessage) Version() byte
type QlcNode ¶
func (*QlcNode) BroadcastMessage ¶
BroadcastMessage broadcast message.
func (*QlcNode) HandlePeerFound ¶
HandlePeerFound attempts to connect to peer from `PeerInfo`.
func (*QlcNode) SendMessageToPeer ¶
SendMessageToPeer send message to a peer.
func (*QlcNode) SendMessageToPeers ¶ added in v0.0.9
BroadcastMessage broadcast message.
func (*QlcNode) SetQlcService ¶
func (node *QlcNode) SetQlcService(ns *QlcService)
SetQlcService set netService
func (*QlcNode) StartServices ¶
func (*QlcNode) StreamManager ¶
func (node *QlcNode) StreamManager() *StreamManager
ID return node ID.
type QlcService ¶
type QlcService struct {
// contains filtered or unexported fields
}
QlcService service for qlc p2p network
func NewQlcService ¶
func NewQlcService(cfg *config.Config) (*QlcService, error)
NewQlcService create netService
func (*QlcService) Broadcast ¶
func (ns *QlcService) Broadcast(name string, value interface{})
Broadcast message.
func (*QlcService) Deregister ¶
func (ns *QlcService) Deregister(subscribers ...*Subscriber)
Deregister Deregister the subscribers.
func (*QlcService) MessageEvent ¶
func (ns *QlcService) MessageEvent() event.EventBus
EventQueue return EventQueue
func (*QlcService) PutMessage ¶
func (ns *QlcService) PutMessage(msg *Message)
PutMessage put message to dispatcher.
func (*QlcService) Register ¶
func (ns *QlcService) Register(subscribers ...*Subscriber)
Register register the subscribers.
func (*QlcService) SendMessageToPeer ¶
func (ns *QlcService) SendMessageToPeer(messageName string, value interface{}, peerID string) error
SendMessageToPeer send message to a peer.
func (*QlcService) SendMessageToPeers ¶ added in v0.0.9
func (ns *QlcService) SendMessageToPeers(messageName string, value interface{}, peerID string)
type ServiceSync ¶
type ServiceSync struct {
// contains filtered or unexported fields
}
Service manage sync tasks
func NewSyncService ¶
func NewSyncService(netService *QlcService, ledger *ledger.Ledger) *ServiceSync
NewService return new Service.
func (*ServiceSync) LastSyncTime ¶ added in v1.2.0
func (ss *ServiceSync) LastSyncTime(t time.Time)
func (*ServiceSync) Start ¶
func (ss *ServiceSync) Start()
type Stream ¶
type Stream struct {
// contains filtered or unexported fields
}
Stream define the structure of a stream in p2p network
func NewStreamFromPID ¶
NewStreamFromPID return a new Stream based on the pid
func (*Stream) IsConnected ¶
IsConnected return if the stream is connected
func (*Stream) SendMessageToChan ¶ added in v1.2.3
func (*Stream) SendMessageToCtrlChan ¶ added in v1.2.3
func (*Stream) SendMessageToPeer ¶ added in v0.0.9
SendMessage send msg to peer
func (*Stream) WriteQlcMessage ¶
WriteQlcMessage write qlc msg in the stream
type StreamManager ¶
type StreamManager struct {
// contains filtered or unexported fields
}
StreamManager manages all streams
func NewStreamManager ¶
func NewStreamManager() *StreamManager
NewStreamManager return a new stream manager
func (*StreamManager) Add ¶
func (sm *StreamManager) Add(s network.Stream)
Add a new stream into the stream manager
func (*StreamManager) AddStream ¶
func (sm *StreamManager) AddStream(stream *Stream)
AddStream into the stream manager
func (*StreamManager) BroadcastMessage ¶
func (sm *StreamManager) BroadcastMessage(messageName string, v interface{})
BroadcastMessage broadcast the message
func (*StreamManager) CloseStream ¶
func (sm *StreamManager) CloseStream(peerID string) error
CloseStream with the given pid and reason
func (*StreamManager) FindByPeerID ¶
func (sm *StreamManager) FindByPeerID(peerID string) *Stream
FindByPeerID find the stream with the given peerID
func (*StreamManager) GetAllConnectPeersInfo ¶ added in v1.1.1
func (sm *StreamManager) GetAllConnectPeersInfo(p map[string]string)
func (*StreamManager) IsConnectWithPeerId ¶ added in v1.2.3
func (sm *StreamManager) IsConnectWithPeerId(peerID string) bool
func (*StreamManager) PeerCounts ¶ added in v0.0.4
func (sm *StreamManager) PeerCounts() int
func (*StreamManager) RandomPeer ¶
func (sm *StreamManager) RandomPeer() (string, error)
func (*StreamManager) RemoveStream ¶
func (sm *StreamManager) RemoveStream(s *Stream)
RemoveStream from the stream manager
func (*StreamManager) SendMessageToPeers ¶ added in v0.0.9
func (sm *StreamManager) SendMessageToPeers(messageName string, v interface{}, peerID string)
func (*StreamManager) SetQlcNode ¶
func (sm *StreamManager) SetQlcNode(node *QlcNode)
SetQlcService set netService
type Subscriber ¶
type Subscriber struct {
// contains filtered or unexported fields
}
Subscriber subscriber.
func NewSubscriber ¶
func NewSubscriber(id interface{}, msgChan chan *Message, doFilter bool, msgType MessageType) *Subscriber
NewSubscriber return new Subscriber instance.
func (*Subscriber) MessageChan ¶
func (s *Subscriber) MessageChan() chan *Message
MessageChan return msgChan.
func (*Subscriber) MessageType ¶
func (s *Subscriber) MessageType() MessageType
MessageType return msgTypes.