gorpc

package module
v0.0.0-...-e391cb3 Latest Latest
Warning

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

Go to latest
Published: Mar 9, 2016 License: MIT Imports: 20 Imported by: 10

README

gorpc

gsrpc golang runtimes

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrRPC      = errors.New("rpc error")
	ErrOverflow = errors.New("overflow of router queue")
	ErrTimeout  = errors.New("rpc timeout")
	ErrCanceled = errors.New("rpc canceled")
	ErrClosed   = errors.New("pipeline closed")
	ErrSkip     = errors.New("skip handle pipeline event")
	ErrUnknown  = errors.New("unknown error")
)

...

View Source
var (
	ErrDecode    = errors.New("decode error")
	ErrWriteNone = errors.New("write nothing")
	ErrEncode    = errors.New("encoding error")
)

gsbuff public errors

View Source
var (
	ErrRegistry = errors.New("load registry file error")
)

Errors

View Source
var (
	ErrRegistryNotFound = errors.New("search found nothing")
)

Errors

Functions

func PrintProfile

func PrintProfile() string

PrintProfile .

func Read

func Read(reader io.Reader) ([]byte, error)

Read read whole package from stream

func ReadBool

func ReadBool(reader Reader) (bool, error)

ReadBool read bool

func ReadByte

func ReadByte(reader Reader) (byte, error)

ReadByte read byte from Reader interface

func ReadBytes

func ReadBytes(reader Reader, val []byte) error

ReadBytes read bytes from reader

func ReadFloat32

func ReadFloat32(reader Reader) (float32, error)

ReadFloat32 read float32 from Reader interface

func ReadFloat64

func ReadFloat64(reader Reader) (float64, error)

ReadFloat64 read float64 from Reader interface

func ReadInt16

func ReadInt16(reader Reader) (int16, error)

ReadInt16 read uint16 from Reader interface

func ReadInt32

func ReadInt32(reader Reader) (int32, error)

ReadInt32 read int32 from Reader interface

func ReadInt64

func ReadInt64(reader Reader) (int64, error)

ReadInt64 read int16 from Reader interface

func ReadSByte

func ReadSByte(reader Reader) (int8, error)

ReadSByte read sbyte from Reader interface

func ReadString

func ReadString(reader Reader) (string, error)

ReadString read string

func ReadUInt16

func ReadUInt16(reader Reader) (uint16, error)

ReadUInt16 read uint16 from Reader interface

func ReadUInt32

func ReadUInt32(reader Reader) (uint32, error)

ReadUInt32 read uint32 from Reader interface

func ReadUInt64

func ReadUInt64(reader Reader) (uint64, error)

ReadUInt64 read uint16 from Reader interface

func RegistryLoad

func RegistryLoad(r io.Reader, name string)

RegistryLoad load registry table from io.Reader

func RegistryUpdate

func RegistryUpdate(items map[string]uint16)

RegistryUpdate update default registry

func ServiceID

func ServiceID(name string) uint16

ServiceID get service id by service name

func ServiceName

func ServiceName(id uint16) string

ServiceName get service name by service id

func SkipRead

func SkipRead(reader Reader, tag Tag) error

SkipRead ..

func TCPListen

func TCPListen(acceptor *Acceptor, laddr string) error

TCPListen .

func Write

func Write(writer io.Writer, buff []byte) (int, error)

Write write whole input data to stream

func WriteBool

func WriteBool(writer Writer, v bool) error

WriteBool write bool byte into bytes buffer

func WriteByte

func WriteByte(writer Writer, v byte) error

WriteByte write one byte into bytes buffer

func WriteBytes

func WriteBytes(writer Writer, bytes []byte) error

WriteBytes write string into stream

func WriteFloat32

func WriteFloat32(writer Writer, n float32) error

WriteFloat32 write a little-endian int64 into a writer stream

func WriteFloat64

func WriteFloat64(writer Writer, n float64) error

WriteFloat64 write a little-endian int64 into a writer stream

func WriteInt16

func WriteInt16(writer Writer, v int16) error

WriteInt16 write a little-endian int16 into a writer stream

func WriteInt32

func WriteInt32(writer Writer, v int32) error

WriteInt32 write a little-endian int32 into a writer stream

func WriteInt64

func WriteInt64(writer Writer, v int64) error

WriteInt64 write a little-endian int64 into a writer stream

func WriteSByte

func WriteSByte(writer Writer, v int8) error

WriteSByte write sbyte into stream

func WriteString

func WriteString(writer Writer, v string) error

WriteString write string into stream

func WriteUInt16

func WriteUInt16(writer Writer, v uint16) error

WriteUInt16 write a little-endian uint16 into a writer stream

func WriteUInt32

func WriteUInt32(writer Writer, v uint32) error

WriteUInt32 write a little-endian uint32 into a writer stream

func WriteUInt64

func WriteUInt64(writer Writer, v uint64) error

WriteUInt64 write a little-endian uint64 into a writer stream

Types

type Acceptor

type Acceptor struct {
	gslogger.Log // mixin log APIs
	// contains filtered or unexported fields
}

Acceptor the gorpc server channel acceptor

func NewAcceptor

func NewAcceptor(name string, builder *PipelineBuilder) *Acceptor

NewAcceptor create new server channel acceptor

func (*Acceptor) Accept

func (acceptor *Acceptor) Accept(name string, conn io.ReadWriteCloser) (pipeline Pipeline, err error)

Accept accept new io.ReaderWriterCloser as rpc channel

func (*Acceptor) Timeout

func (acceptor *Acceptor) Timeout(timeout time.Duration) *Acceptor

Timeout .

type CallSite

type CallSite struct {
	ID    uint32
	Trace uint64
}

CallSite .

type Channel

type Channel interface {
	Post(call *Request) error
	Send(call *Request) (Future, error)
}

Channel .

type Client

type Client interface {
	Close()
	Pipeline() Pipeline
}

Client gorpc client

func TCPConnect

func TCPConnect(builder *ClientBuilder, name, raddr string) (Client, error)

TCPConnect create a new tcp client

func WebSocketConnect

func WebSocketConnect(builder *ClientBuilder, name string, u *url.URL) (Client, error)

WebSocketConnect establish a websocket client channel

type ClientBuilder

type ClientBuilder struct {
	gslogger.Log // Mixin Log APIs
	// contains filtered or unexported fields
}

ClientBuilder .

func NewClientBuilder

func NewClientBuilder(name string, builder *PipelineBuilder) *ClientBuilder

NewClientBuilder create new client builder

func (*ClientBuilder) Build

func (builder *ClientBuilder) Build(name string, F ConnectF) (Client, error)

Build create new client

func (*ClientBuilder) Reconnect

func (builder *ClientBuilder) Reconnect(timeout time.Duration) *ClientBuilder

Reconnect .

type ClosableChannel

type ClosableChannel interface {
	CloseChannel()
}

ClosableChannel .

type ConnectF

type ConnectF func() (io.ReadWriteCloser, error)

ConnectF .

type Context

type Context interface {
	// current handler name
	Name() string
	// Pipeline current channel pipeline
	Pipeline() Pipeline
	// OnActive
	FireActive()
	// Send create new send pipeline message
	Send(message *Message)
	// Close close current pipeline
	Close()
}

Context channel handler context

type Dispatcher

type Dispatcher interface {
	Dispatch(call *Request) (callReturn *Response, err error)
	ID() uint16
	String() string
}

Dispatcher .

type Future

type Future interface {
	Wait() (callReturn *Response, err error)
}

Future .

type Handler

type Handler interface {
	// Register when handler had been add into one pipeline,
	// system call this function notify handler
	Register(context Context) error
	// Unregister sysm call this function when handler had been removed from
	// pipeline,you can get this pipeline object by Context#Pipeline function
	Unregister(context Context)
	// Active system call this function when pipline state trans to active
	Active(context Context) error
	// Inactive system call this function when pipeline state trans to inactive
	Inactive(context Context)
	// MessageReceived
	MessageReceived(context Context, message *Message) (*Message, error)
	// MessageSending
	MessageSending(context Context, message *Message) (*Message, error)
	// Panic handle async pipline method error
	Panic(context Context, err error)
}

Handler the gorpc channel pipeline handlers

func ProfileHandler

func ProfileHandler() Handler

ProfileHandler create profile handler

type HandlerF

type HandlerF func() Handler

HandlerF handler factory

type MessageChannel

type MessageChannel interface {
	SendMessage(message *Message) error
}

MessageChannel .

type Pipeline

type Pipeline interface {
	String() string
	// Name pipeline name
	Name() string
	// Close close pipeline
	Close()
	// Active trans pipeline state to active state
	Active() error
	// Inactive trans pipeline state to inactive state
	Inactive()
	// Received .
	Received(message *Message) error
	// TimeWheel invoke handle after timeout
	TimeWheel() *timer.Wheel
	// After invoke handle after timeout
	After(timeout time.Duration, f func()) *timer.Timer
	// Channel implement channel interface
	Channel
	// SendMessage .
	SendMessage(message *Message) error
	// AddService add new service
	AddService(dispatcher Dispatcher)
	// RemoveService remove service
	RemoveService(dispatcher Dispatcher)
	// Get Handler by name
	Handler(name string) (Handler, bool)
	// Get Sending message
	Sending() (*Message, error)
}

Pipeline Channel handlers pipeline

type PipelineBuilder

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

PipelineBuilder pipeline builder

func BuildPipeline

func BuildPipeline(timerTick time.Duration) *PipelineBuilder

BuildPipeline creaet new pipeline builder

func (*PipelineBuilder) Build

func (builder *PipelineBuilder) Build(name string) (Pipeline, error)

Build create new Pipeline

func (*PipelineBuilder) CachedSize

func (builder *PipelineBuilder) CachedSize(cachedsize int) *PipelineBuilder

CachedSize .

func (*PipelineBuilder) Handler

func (builder *PipelineBuilder) Handler(name string, handlerF HandlerF) *PipelineBuilder

Handler append new handler builder

func (*PipelineBuilder) Timeout

func (builder *PipelineBuilder) Timeout(duration time.Duration) *PipelineBuilder

Timeout set rpc timeout

type Profile

type Profile struct {
	Timestamp time.Time // profile timestamp
	Pipelines int32     // register pipelines
	Actives   int32     // actived pipelines
	Received  uint64    // received messages
	Send      uint64    // send messages
	Errors    uint64    // panic times
}

Profile .

func GetProfile

func GetProfile() *Profile

GetProfile .

type Promise

type Promise interface {
	Wait() (callReturn *Response, err error)
	Notify(callReturn *Response, err error)
	Timeout()
	Cancel()
}

Promise .

func NewPromise

func NewPromise(timewheel *timer.Wheel, timeout time.Duration, f func()) Promise

NewPromise .

type Reader

type Reader interface {
	io.ByteReader
	io.Reader
}

Reader the gsbuff Reader interface, Mixin io.ByteReader and io.Reader interfaces

type Registry

type Registry interface {
	// Update update the registry
	Update(items map[string]uint16)
	// ServiceName get service name by service id
	ServiceName(id uint16) string
	// ServiceID get service id by service name
	ServiceID(name string) uint16
	// Load load registry from io.Reader
	Load(r io.Reader, name string)
}

Registry the service registry

func NewRegistry

func NewRegistry() Registry

NewRegistry create new registry table

type Send

type Send func(call *Request) (Future, error)

Send send method

func (Send) Send

func (sendfunc Send) Send(call *Request) (Future, error)

Send .

type SharedHandler

type SharedHandler interface {
	// Lock lock this handler
	HandlerLock()
	// Unlock unlock this handler
	HandlerUnlock()
}

SharedHandler this handler will been shared with more than one piplines

type Sink

type Sink interface {
	Channel
	AddService(dispatcher Dispatcher)
	RemoveService(dispatcher Dispatcher)
	ClearServices()
	MessageReceived(message *Message) error
}

Sink .

func NewSink

func NewSink(name string, channel MessageChannel, timeWheel *timer.Wheel, timeout time.Duration) Sink

NewSink .

type Stream

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

Stream the read/write stream

func NewStream

func NewStream(reader io.Reader, writer io.Writer) *Stream

NewStream create new stream

func (*Stream) Flush

func (stream *Stream) Flush() (int, error)

Flush .

func (*Stream) Read

func (stream *Stream) Read(buf []byte) (int, error)

func (*Stream) ReadByte

func (stream *Stream) ReadByte() (byte, error)

ReadByte implement Read interface

func (*Stream) WBuf

func (stream *Stream) WBuf() []byte

WBuf .

func (*Stream) Write

func (stream *Stream) Write(buf []byte) (int, error)

func (*Stream) WriteByte

func (stream *Stream) WriteByte(val byte) error

WriteByte implement Write interface

type Wait

type Wait func() (callReturn *Response, err error)

Wait .

func (Wait) Wait

func (waitfunc Wait) Wait() (callReturn *Response, err error)

Wait .

type Writer

type Writer interface {
	io.ByteWriter
	io.Writer
}

Writer the gsbuff Writer interface, Mixin io.ByteWriterand io.Writer interfaces

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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