Back to godoc.org

Package server

v0.1.10-docs-prerelease
Latest Go to latest

The highest tagged major version is .

Published: Apr 17, 2020 | License: MIT | Module: github.com/spacemeshos/go-spacemesh

Overview

Package server is used to wrap the p2p services to define multiple req-res messages under one protocol.

Index

type Item

type Item struct {
	// contains filtered or unexported fields
}

Item is queue entry used to match responds to sent requests.

type Message

type Message interface {
	service.DirectMessage
	Data() service.Data
}

Message is helper type for `MessegeServer` messages.

type MessageServer

type MessageServer struct {
	log.Log
	ReqID uint64 //request id
	// contains filtered or unexported fields
}

MessageServer is a request-response multiplexer on top of the p2p layer. it provides a way to register message types on top of a protocol and declare request and response handlers. it matches incoming responses to requests.

func NewMsgServer

func NewMsgServer(network Service, name string, requestLifetime time.Duration, c chan service.DirectMessage, logger log.Log) *MessageServer

NewMsgServer registers a protocol and returns a new server to declare request and response handlers on.

func (*MessageServer) Close

func (p *MessageServer) Close()

Close stops the MessageServer

func (*MessageServer) RegisterBytesMsgHandler

func (p *MessageServer) RegisterBytesMsgHandler(msgType MessageType, reqHandler func([]byte) []byte)

RegisterBytesMsgHandler sets the handler to act on a specific message request.

func (*MessageServer) RegisterMsgHandler

func (p *MessageServer) RegisterMsgHandler(msgType MessageType, reqHandler func(message Message) []byte)

RegisterMsgHandler sets the handler to act on a specific message request.

func (*MessageServer) SendRequest

func (p *MessageServer) SendRequest(msgType MessageType, payload []byte, address p2pcrypto.PublicKey, resHandler func(msg []byte)) error

SendRequest sends a request of a specific message.

type MessageType

type MessageType uint32

MessageType is an int32 used to distinguish between server messages inside a single protocol.

type Service

type Service interface {
	RegisterDirectProtocolWithChannel(protocol string, ingressChannel chan service.DirectMessage) chan service.DirectMessage
	SendWrappedMessage(nodeID p2pcrypto.PublicKey, protocol string, payload *service.DataMsgWrapper) error
}

Service is the subset of method used by MessageServer for p2p communications.

Package Files

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier