Documentation ¶
Index ¶
- Constants
- func AppendAny(b []byte, v interface{}) []byte
- func AppendArray(b []byte, n int) []byte
- func AppendBulk(b []byte, bulk []byte) []byte
- func AppendBulkFloat(dst []byte, f float64) []byte
- func AppendBulkInt(dst []byte, x int64) []byte
- func AppendBulkString(b []byte, bulk string) []byte
- func AppendBulkUint(dst []byte, x uint64) []byte
- func AppendError(b []byte, s string) []byte
- func AppendInt(b []byte, n int64) []byte
- func AppendNull(b []byte) []byte
- func AppendOK(b []byte) []byte
- func AppendString(b []byte, s string) []byte
- func AppendTile38(b []byte, data []byte) []byte
- func AppendUint(b []byte, n uint64) []byte
- func ListenAndServe(options Options, handler func(conn Conn, cmd Command))
- type Command
- type Conn
- type Handler
- type HandlerFunc
- type Kind
- type Marshaler
- type Options
- type RESP
- type Reader
- type RedCon
- func (c *RedCon) Context() interface{}
- func (c *RedCon) PeekPipeline() []Command
- func (c *RedCon) ReadPipeline() []Command
- func (c *RedCon) SetContext(v interface{})
- func (c *RedCon) SetReadBuffer(n int)
- func (c *RedCon) WriteAny(v interface{})
- func (c *RedCon) WriteArray(count int)
- func (c *RedCon) WriteBulk(bulk []byte)
- func (c *RedCon) WriteBulkString(bulk string)
- func (c *RedCon) WriteError(msg string)
- func (c *RedCon) WriteInt(num int)
- func (c *RedCon) WriteInt64(num int64)
- func (c *RedCon) WriteNull()
- func (c *RedCon) WriteRaw(data []byte)
- func (c *RedCon) WriteString(str string)
- func (c *RedCon) WriteUint64(num uint64)
- type ServeMux
- type Server
- func (s *Server) OnClosed(c gnet.Conn, err error) (action gnet.Action)
- func (s *Server) OnInitComplete(srv gnet.Server) (action gnet.Action)
- func (s *Server) OnOpened(c gnet.Conn) (out []byte, action gnet.Action)
- func (s *Server) OnShutdown(svr gnet.Server)
- func (s *Server) OnTick() (delay time.Duration, action gnet.Action)
- func (s *Server) React(frame []byte, conn gnet.Conn) (out []byte, action gnet.Action)
- type SimpleInt
- type SimpleString
- type Type
- type Writer
- func (w *Writer) Buffer() []byte
- func (w *Writer) Flush() error
- func (w *Writer) SetBuffer(raw []byte)
- func (w *Writer) WriteAny(v interface{})
- func (w *Writer) WriteArray(count int)
- func (w *Writer) WriteBulk(bulk []byte)
- func (w *Writer) WriteBulkString(bulk string)
- func (w *Writer) WriteError(msg string)
- func (w *Writer) WriteInt(num int)
- func (w *Writer) WriteInt64(num int64)
- func (w *Writer) WriteNull()
- func (w *Writer) WriteRaw(data []byte)
- func (w *Writer) WriteString(msg string)
- func (w *Writer) WriteUint64(num uint64)
Constants ¶
const ( Integer = ':' String = '+' Bulk = '$' Array = '*' Error = '-' )
Various RESP kinds
Variables ¶
This section is empty.
Functions ¶
func AppendAny ¶
AppendAny appends any type to valid Redis type.
nil -> null error -> error (adds "ERR " when first word is not uppercase) string -> bulk-string numbers -> bulk-string []byte -> bulk-string bool -> bulk-string ("0" or "1") slice -> array map -> array with key/value pairs SimpleString -> string SimpleInt -> integer Marshaler -> raw bytes everything-else -> bulk-string representation using fmt.Sprint()
func AppendArray ¶
AppendArray appends a Redis protocol array to the input bytes.
func AppendBulk ¶
AppendBulk appends a Redis protocol bulk byte slice to the input bytes.
func AppendBulkFloat ¶
AppendBulkFloat appends a float64, as bulk bytes.
func AppendBulkInt ¶
AppendBulkInt appends an int64, as bulk bytes.
func AppendBulkString ¶
AppendBulkString appends a Redis protocol bulk string to the input bytes.
func AppendBulkUint ¶
AppendBulkUint appends an uint64, as bulk bytes.
func AppendError ¶
AppendError appends a Redis protocol error to the input bytes.
func AppendNull ¶
AppendNull appends a Redis protocol null to the input bytes.
func AppendString ¶
AppendString appends a Redis protocol string to the input bytes.
func AppendTile38 ¶
AppendTile38 appends a Tile38 message to the input bytes.
func AppendUint ¶
AppendUint appends a Redis protocol uint64 to the input bytes.
func ListenAndServe ¶
Types ¶
type Command ¶
type Command struct { // Raw is a encoded RESP message. Raw []byte // Args is a series of arguments that make up the command. Args [][]byte }
Command represent a command
type Conn ¶
type Conn interface { // WriteError writes an error to the client. WriteError(msg string) // WriteString writes a string to the client. WriteString(str string) // WriteBulk writes bulk bytes to the client. WriteBulk(bulk []byte) // WriteBulkString writes a bulk string to the client. WriteBulkString(bulk string) // WriteInt writes an integer to the client. WriteInt(num int) // WriteInt64 writes a 64-bit signed integer to the client. WriteInt64(num int64) // WriteUint64 writes a 64-bit unsigned integer to the client. WriteUint64(num uint64) // WriteArray writes an array header. You must then write additional // sub-responses to the client to complete the response. // For example to write two strings: // // c.WriteArray(2) // c.WriteBulkString("item 1") // c.WriteBulkString("item 2") WriteArray(count int) // WriteNull writes a null to the client WriteNull() // WriteRaw writes raw data to the client. WriteRaw(data []byte) // WriteAny writes any type to the client. // nil -> null // error -> error (adds "ERR " when first word is not uppercase) // string -> bulk-string // numbers -> bulk-string // []byte -> bulk-string // bool -> bulk-string ("0" or "1") // slice -> array // map -> array with key/value pairs // SimpleString -> string // SimpleInt -> integer // everything-else -> bulk-string representation using fmt.Sprint() WriteAny(any interface{}) // Context returns a user-defined context Context() interface{} // SetContext sets a user-defined context SetContext(v interface{}) // SetReadBuffer updates the buffer read size for the connection SetReadBuffer(bytes int) // ReadPipeline returns all commands in current pipeline, if any // The commands are removed from the pipeline. ReadPipeline() []Command // PeekPipeline returns all commands in current pipeline, if any. // The commands remain in the pipeline. PeekPipeline() []Command }
type HandlerFunc ¶
func (HandlerFunc) ServeRESP ¶
func (f HandlerFunc) ServeRESP(conn Conn, cmd Command)
type Kind ¶
type Kind int
Kind is the kind of command
func ReadNextCommand ¶
func ReadNextCommand(packet []byte, argsbuf [][]byte) ( complete bool, args [][]byte, kind Kind, leftover []byte, err error, )
ReadNextCommand reads the next command from the provided packet. It's possible that the packet contains multiple commands, or zero commands when the packet is incomplete. 'argsbuf' is an optional reusable buffer and it can be nil. 'complete' indicates that a command was read. false means no more commands. 'args' are the output arguments for the command. 'kind' is the type of command that was read. 'leftover' is any remaining unused bytes which belong to the next command. 'err' is returned when a protocol error was encountered.
type Marshaler ¶
type Marshaler interface {
MarshalRESP() []byte
}
Marshaler is the interface implemented by types that can marshal themselves into a Redis response type from an *Any call. The return value is not check for validity.
type RESP ¶
RESP ...
func ReadNextRESP ¶
ReadNextRESP returns the next resp in b and returns the number of bytes the took up the result.
type RedCon ¶
type RedCon struct {
// contains filtered or unexported fields
}
func (*RedCon) PeekPipeline ¶
func (*RedCon) ReadPipeline ¶
func (*RedCon) SetContext ¶
func (c *RedCon) SetContext(v interface{})
func (*RedCon) SetReadBuffer ¶
func (*RedCon) WriteArray ¶
func (*RedCon) WriteBulkString ¶
func (*RedCon) WriteError ¶
func (*RedCon) WriteInt64 ¶
func (*RedCon) WriteString ¶
func (*RedCon) WriteUint64 ¶
type ServeMux ¶
type ServeMux struct {
// contains filtered or unexported fields
}
func NewServeMux ¶
func NewServeMux() *ServeMux
func (*ServeMux) HandleFunc ¶
type Server ¶
type Server struct { *gnet.EventServer // AcceptError is an optional function used to handle Accept errors. AcceptError func(err error) // contains filtered or unexported fields }
func (*Server) OnInitComplete ¶
func (*Server) OnShutdown ¶
type SimpleInt ¶
type SimpleInt int
SimpleInt is for representing a non-bulk representation of a int from an *Any call.
type SimpleString ¶
type SimpleString string
SimpleString is for representing a non-bulk representation of a string from an *Any call.
type Writer ¶
type Writer struct {
// contains filtered or unexported fields
}
Writer allows for writing RESP messages.
func (*Writer) Buffer ¶
Buffer returns the unflushed buffer. This is a copy so changes to the resulting []byte will not affect the writer.
func (*Writer) WriteAny ¶
func (w *Writer) WriteAny(v interface{})
WriteAny writes any type to client.
nil -> null error -> error (adds "ERR " when first word is not uppercase) string -> bulk-string numbers -> bulk-string []byte -> bulk-string bool -> bulk-string ("0" or "1") slice -> array map -> array with key/value pairs SimpleString -> string SimpleInt -> integer everything-else -> bulk-string representation using fmt.Sprint()
func (*Writer) WriteArray ¶
WriteArray writes an array header. You must then write additional sub-responses to the client to complete the response. For example to write two strings:
c.WriteArray(2) c.WriteBulk("item 1") c.WriteBulk("item 2")
func (*Writer) WriteBulkString ¶
WriteBulkString writes a bulk string to the client.
func (*Writer) WriteError ¶
WriteError writes an error to the client.
func (*Writer) WriteInt64 ¶
WriteInt64 writes a 64-bit signed integer to the client.
func (*Writer) WriteString ¶
WriteString writes a string to the client.
func (*Writer) WriteUint64 ¶
WriteUint64 writes a 64-bit unsigned integer to the client.