streaming_rpc

package
v0.0.0-...-4db8000 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 29, 2020 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const ChunkSize = 2048

Variables

View Source
var ErrProviderNotAvailable = errors.New("provider unable to provide service")

Functions

func GenerateSecretKey

func GenerateSecretKey() kademlia.PrivateKey

func HostAddr

func HostAddr(host net.IP, port uint16) string

Types

type Context

type Context struct {
	KadId   kademlia.ID
	Headers map[string]string
	Body    io.ReadCloser
	// contains filtered or unexported fields
}

func (*Context) Conn

func (c *Context) Conn() *st.Conn

func (*Context) Write

func (c *Context) Write(data []byte) (int, error)

Implement Write function for io.Writer interface

func (*Context) WriteHeader

func (c *Context) WriteHeader(key, val string)

type ContextPool

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

type DataPacket

type DataPacket struct {
	StreamID uint32 // stream id
	Data     []byte // payload
}

func UnmarshalDataPacket

func UnmarshalDataPacket(buf []byte) (DataPacket, error)

func (DataPacket) AppendTo

func (p DataPacket) AppendTo(dst []byte) []byte

type Handler

type Handler func(ctx *Context)

type HandshakePacket

type HandshakePacket struct {
	KadId     *kademlia.ID
	Services  []string
	Signature kademlia.Signature
}

func UnmarshalHandshakePacket

func UnmarshalHandshakePacket(buf []byte) (HandshakePacket, error)

func (HandshakePacket) AppendPayloadTo

func (h HandshakePacket) AppendPayloadTo(dst []byte) []byte

func (HandshakePacket) AppendTo

func (h HandshakePacket) AppendTo(dst []byte) []byte

func (HandshakePacket) Validate

func (h HandshakePacket) Validate(dst []byte) error

type NetProtocolType

type NetProtocolType = uint8
const (
	NetProtocolTCP NetProtocolType = iota
	NetProtocolUDP
	NetProtocolIP
)

type OpCode

type OpCode = uint8
const (
	OpCodeHandshake OpCode = iota
	OpCodeServiceRequest
	OpCodeServiceResponse
	OpCodeData
	OpCodeFindNodeRequest
	OpCodeFindNodeResponse
)

type Provider

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

Service Provider

func (*Provider) Addr

func (p *Provider) Addr() string

func (*Provider) Close

func (p *Provider) Close()

func (*Provider) CloseStreamWithError

func (p *Provider) CloseStreamWithError(stream *Stream, err error)

func (*Provider) GetStream

func (p *Provider) GetStream(id uint32) (*Stream, bool)

func (*Provider) KadID

func (p *Provider) KadID() *kademlia.ID

func (*Provider) NextStream

func (p *Provider) NextStream() *Stream

func (*Provider) Push

func (p *Provider) Push(services []string, headers map[string]string, body io.ReadCloser) (*Stream, error)

func (*Provider) RegisterStreamWithServiceRequestPacket

func (p *Provider) RegisterStreamWithServiceRequestPacket(header ServiceRequestPacket) (*Stream, bool)

func (*Provider) Services

func (p *Provider) Services() []string

type Providers

type Providers struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewProviders

func NewProviders() *Providers

func (*Providers) FindProvider

func (p *Providers) FindProvider(conn *st.Conn) *Provider

type ServiceRequestPacket

type ServiceRequestPacket struct {
	StreamId uint32            // stream id
	Services []string          // services this packet may be processed through
	Headers  map[string]string // headers for this packet
}

func UnmarshalServiceRequestPacket

func UnmarshalServiceRequestPacket(buf []byte) (ServiceRequestPacket, error)

func (ServiceRequestPacket) AppendTo

func (p ServiceRequestPacket) AppendTo(dst []byte) []byte

type ServiceResponsePacket

type ServiceResponsePacket struct {
	StreamId uint32            // stream id
	Handled  bool              // whether or not the service was handled
	Headers  map[string]string // headers for this packet
}

func UnmarshalServiceResponsePacket

func UnmarshalServiceResponsePacket(buf []byte) (ServiceResponsePacket, error)

func (ServiceResponsePacket) AppendTo

func (p ServiceResponsePacket) AppendTo(dst []byte) []byte

type Stream

type Stream struct {
	ID     uint32
	Reader *pipeReader
	Writer *pipeWriter

	Header *ServiceResponsePacket
	// contains filtered or unexported fields
}

type StreamNode

type StreamNode struct {

	// A 32-byte Ed25519 private key. A secret key must be provided to allow for peers to reach you.
	// A secret key may be generated by calling `streaming_rpc.GenerateSecretKey()`.
	// It was used to sign for the HandshakePacket
	SecretKey   kademlia.PrivateKey
	NetProtocol NetProtocolType // Such as TCP,UDP,IP

	KadId *kademlia.ID

	Srv *st.Server

	// A mapping of service names to their respective handlers.
	Services map[string]Handler
	// contains filtered or unexported fields
}

func NewStreamNode

func NewStreamNode(sk kademlia.PrivateKey, kid *kademlia.ID, tab *kademlia.Table) *StreamNode

func (*StreamNode) Bootstrap

func (n *StreamNode) Bootstrap()

func (*StreamNode) HandleConnState

func (n *StreamNode) HandleConnState(conn *st.Conn, state st.ConnState)

Implement HandleConnState function for the ConnStateHandler interface

func (*StreamNode) HandleMessage

func (n *StreamNode) HandleMessage(ctx *st.Context) error

Implement HandleMessage function for the Handler interface

func (*StreamNode) ProbeWithAddr

func (n *StreamNode) ProbeWithAddr(addr string) error

func (*StreamNode) Providers

func (n *StreamNode) Providers() *Providers

func (*StreamNode) ProvidersFor

func (n *StreamNode) ProvidersFor(services ...string) []*Provider

func (*StreamNode) Push

func (n *StreamNode) Push(services []string, headers map[string]string, body io.ReadCloser) (*Stream, error)

func (*StreamNode) SetNetProtocol

func (n *StreamNode) SetNetProtocol(np NetProtocolType)

func (*StreamNode) Shutdown

func (n *StreamNode) Shutdown()

func (*StreamNode) Start

func (n *StreamNode) Start() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL