mirror of https://github.com/tidwall/redcon.git
Compare commits
1 Commits
2f2825976d
...
6952cec09f
Author | SHA1 | Date |
---|---|---|
Fusl | 6952cec09f |
|
@ -18,8 +18,6 @@ Features
|
|||
- Compatible pub/sub support
|
||||
- Multithreaded
|
||||
|
||||
*This library is also avaliable for [Rust](https://github.com/tidwall/redcon.rs) and [C](https://github.com/tidwall/redcon.c).*
|
||||
|
||||
Installing
|
||||
----------
|
||||
|
||||
|
|
39
redcon.go
39
redcon.go
|
@ -236,14 +236,12 @@ func Serve(ln net.Listener,
|
|||
closed func(conn Conn, err error),
|
||||
) error {
|
||||
s := newServer()
|
||||
s.mu.Lock()
|
||||
s.net = ln.Addr().Network()
|
||||
s.laddr = ln.Addr().String()
|
||||
s.ln = ln
|
||||
s.handler = handler
|
||||
s.accept = accept
|
||||
s.closed = closed
|
||||
s.mu.Unlock()
|
||||
return serve(s)
|
||||
}
|
||||
|
||||
|
@ -299,9 +297,7 @@ func (s *Server) ListenServeAndSignal(signal chan error) error {
|
|||
}
|
||||
return err
|
||||
}
|
||||
s.mu.Lock()
|
||||
s.ln = ln
|
||||
s.mu.Unlock()
|
||||
if signal != nil {
|
||||
signal <- nil
|
||||
}
|
||||
|
@ -310,11 +306,9 @@ func (s *Server) ListenServeAndSignal(signal chan error) error {
|
|||
|
||||
// Serve serves incoming connections with the given net.Listener.
|
||||
func (s *Server) Serve(ln net.Listener) error {
|
||||
s.mu.Lock()
|
||||
s.ln = ln
|
||||
s.net = ln.Addr().Network()
|
||||
s.laddr = ln.Addr().String()
|
||||
s.mu.Unlock()
|
||||
return serve(s)
|
||||
}
|
||||
|
||||
|
@ -328,9 +322,7 @@ func (s *TLSServer) ListenServeAndSignal(signal chan error) error {
|
|||
}
|
||||
return err
|
||||
}
|
||||
s.mu.Lock()
|
||||
s.ln = ln
|
||||
s.mu.Unlock()
|
||||
if signal != nil {
|
||||
signal <- nil
|
||||
}
|
||||
|
@ -344,7 +336,7 @@ func serve(s *Server) error {
|
|||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
for c := range s.conns {
|
||||
c.conn.Close()
|
||||
c.Close()
|
||||
}
|
||||
s.conns = nil
|
||||
}()
|
||||
|
@ -611,9 +603,9 @@ func (w *Writer) WriteNull() {
|
|||
// 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")
|
||||
// c.WriteArray(2)
|
||||
// c.WriteBulkString("item 1")
|
||||
// c.WriteBulkString("item 2")
|
||||
func (w *Writer) WriteArray(count int) {
|
||||
if w.err != nil {
|
||||
return
|
||||
|
@ -718,18 +710,17 @@ func (w *Writer) WriteRaw(data []byte) {
|
|||
}
|
||||
|
||||
// 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()
|
||||
// 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 (w *Writer) WriteAny(v interface{}) {
|
||||
if w.err != nil {
|
||||
return
|
||||
|
|
Loading…
Reference in New Issue