本文整理匯總了Golang中github.com/nyxtom/broadcast/server.ProtocolClient.WriteError方法的典型用法代碼示例。如果您正苦於以下問題:Golang ProtocolClient.WriteError方法的具體用法?Golang ProtocolClient.WriteError怎麽用?Golang ProtocolClient.WriteError使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/nyxtom/broadcast/server.ProtocolClient
的用法示例。
在下文中一共展示了ProtocolClient.WriteError方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: SIsMember
func (stats *StatsBackend) SIsMember(data interface{}, client server.ProtocolClient) error {
d, _ := data.([][]byte)
if len(d) < 2 {
client.WriteError(errors.New("SISMEMBER takes 2 parameters (SISMEMBER key member)"))
client.Flush()
return nil
} else {
key := string(d[0])
results := make([]int64, len(d)-1)
for i, v := range d[1:] {
result, err := stats.mem.SIsMember(key, string(v))
if err != nil {
return err
}
results[i] = result
}
if len(results) > 1 {
client.WriteLen('*', len(results))
for _, v := range results {
client.WriteInt64(v)
}
} else {
client.WriteInt64(results[0])
}
client.Flush()
return nil
}
}
示例2: SInter
func (stats *StatsBackend) SInter(data interface{}, client server.ProtocolClient) error {
d, _ := data.([][]byte)
if len(d) < 2 {
client.WriteError(errors.New("SINTER takes at least 2 parameters (SINTER key [key ...])"))
client.Flush()
return nil
} else {
keys := make([]string, len(d))
for i, v := range d {
keys[i] = string(v)
}
results, err := stats.mem.SInter(keys)
if err != nil {
return err
}
if results == nil {
client.WriteNull()
client.Flush()
return nil
}
client.WriteLen('*', len(results))
for k, _ := range results {
client.WriteString(k)
}
client.Flush()
return nil
}
}
示例3: SDiff
func (stats *StatsBackend) SDiff(data interface{}, client server.ProtocolClient) error {
d, _ := data.([][]byte)
if len(d) < 2 {
client.WriteError(errors.New("SDIFF requires at least 2 parameters (SDIFF key [key ...])"))
client.Flush()
return nil
} else {
results, err := stats.mem.SMembers(string(d[0]))
if err != nil {
return err
} else if results == nil {
client.WriteNull()
client.Flush()
return nil
} else {
for _, v := range d[1:] {
results, err = stats.mem.SDiff(results, string(v))
if err != nil {
return err
} else if len(results) == 0 {
break
}
}
client.WriteLen('*', len(results))
for k, _ := range results {
client.WriteString(k)
}
client.Flush()
return nil
}
}
}
示例4: SRem
func (stats *StatsBackend) SRem(data interface{}, client server.ProtocolClient) error {
d, _ := data.([][]byte)
key := ""
if len(d) < 2 {
client.WriteError(errors.New("SREM takes at least 2 parameters (SREM key member)"))
client.Flush()
return nil
} else {
key = string(d[0])
members := d[1:]
result := int64(0)
for _, v := range members {
r, err := stats.mem.SRem(key, string(v))
if err != nil {
return err
} else if r == -1 {
return stats.FlushInt(r, nil, client)
} else {
result += r
}
}
return stats.FlushInt(result, nil, client)
}
}
示例5: SCard
func (stats *StatsBackend) SCard(data interface{}, client server.ProtocolClient) error {
d, _ := data.([][]byte)
if len(d) < 1 {
client.WriteError(errors.New("SCARD takes at least 1 parameter (SCARD key)"))
client.Flush()
return nil
} else {
results := make([]int64, len(d))
for i, v := range d {
r, err := stats.mem.SCard(string(v))
if err != nil {
return err
} else {
results[i] = r
}
}
if len(d) > 1 {
client.WriteLen('*', len(d))
for _, v := range results {
client.WriteInt64(v)
}
} else {
client.WriteInt64(results[0])
}
client.Flush()
return nil
}
}
示例6: Count
func (stats *StatsBackend) Count(data interface{}, client server.ProtocolClient) error {
d, _ := data.([][]byte)
if len(d) == 0 {
client.WriteError(errors.New("COUNTER takes at least 1 parameter (i.e. key to increment)"))
client.Flush()
return nil
} else {
key, err := stats.readString(d[0])
if err != nil {
return err
}
values := d[1:]
if len(values) > 0 {
value, err := stats.readInt64(values[0])
if err != nil {
return err
}
_, err = stats.mem.CounterBy(key, value)
return err
} else {
_, err := stats.mem.Counter(key)
return err
}
}
}
示例7: FindEdges
func (b *BGraphBackend) FindEdges(data interface{}, client server.ProtocolClient) error {
d, _ := data.([][]byte)
if len(d) < 1 {
client.WriteError(errors.New("*e takes at least 1 parameter (*e vertex [vertex ...])"))
client.Flush()
return nil
}
vertexEdges := make(map[string]map[string]float64)
for _, k := range d {
key := string(k)
edges := b.db.findEdges(key)
if edges != nil {
vertexEdges[key] = edges
}
}
if len(vertexEdges) > 0 {
client.WriteJson(vertexEdges)
client.Flush()
} else {
client.WriteNull()
client.Flush()
}
return nil
}
示例8: SMembers
func (stats *StatsBackend) SMembers(data interface{}, client server.ProtocolClient) error {
d, _ := data.([][]byte)
if len(d) == 0 {
client.WriteError(errors.New("SMEMBERS takes 1 parameter (SMEMBERS key)"))
client.Flush()
return nil
} else {
values, err := stats.mem.SMembers(string(d[0]))
if err != nil {
return err
}
if values == nil {
client.WriteNull()
client.Flush()
return nil
}
client.WriteLen('*', len(values))
for k, _ := range values {
client.WriteString(k)
}
client.Flush()
return nil
}
}
示例9: Counters
func (stats *StatsBackend) Counters(data interface{}, client server.ProtocolClient) error {
results, err := stats.mem.Counters()
if err != nil {
client.WriteError(err)
client.Flush()
return nil
}
client.WriteJson(results)
client.Flush()
return nil
}
示例10: Set
func (stats *StatsBackend) Set(data interface{}, client server.ProtocolClient) error {
d, _ := data.([][]byte)
if len(d) < 2 {
client.WriteError(errors.New("SET takes at least 2 parameters (i.e. key to set and value to set to)"))
client.Flush()
return nil
} else {
key, value, err := stats.readStringInt64(d)
if err != nil {
return err
}
i, err := stats.mem.Set(key, value)
return stats.FlushInt(i, err, client)
}
}
示例11: Exists
func (stats *StatsBackend) Exists(data interface{}, client server.ProtocolClient) error {
d, _ := data.([][]byte)
if len(d) == 0 {
client.WriteError(errors.New("EXISTS takes at least 1 parameter (i.e. key to find)"))
client.Flush()
return nil
} else {
key, err := stats.readString(d[0])
if err != nil {
return err
}
i, err := stats.mem.Exists(key)
return stats.FlushInt(i, err, client)
}
}
示例12: Get
func (stats *StatsBackend) Get(data interface{}, client server.ProtocolClient) error {
d, _ := data.([][]byte)
if len(d) == 0 {
client.WriteError(errors.New("GET takes at least 1 parameter (i.e. key to get)"))
client.Flush()
return nil
} else {
key, err := stats.readString(d[0])
if err != nil {
return err
}
i, err := stats.mem.Get(key)
if err == ErrNotFound {
return stats.FlushNil(client)
}
return stats.FlushInt(i, err, client)
}
}
示例13: ListFiles
func (t *TermBackend) ListFiles(data interface{}, client server.ProtocolClient) error {
files, err := ioutil.ReadDir(t.homeDir)
filenames := []interface{}{}
if err != nil {
client.WriteError(err)
client.Flush()
} else {
for _, f := range files {
if !f.IsDir() {
filenames = append(filenames, f.Name())
}
}
client.WriteArray(filenames)
client.Flush()
}
return nil
}
示例14: CatFile
func (t *TermBackend) CatFile(data interface{}, client server.ProtocolClient) error {
d, _ := data.([][]byte)
if len(d) > 0 {
fileName := string(d[0])
content, err := ioutil.ReadFile(path.Join(t.homeDir, fileName))
if err != nil {
client.WriteError(err)
} else {
client.WriteBytes(content)
}
client.Flush()
} else {
client.WriteError(errors.New("cat takes at least 1 parameter (cat filename)"))
client.Flush()
}
return nil
}
示例15: RunClient
func (p *LineProtocol) RunClient(client server.ProtocolClient) {
c, ok := client.(*LineProtocolClient)
if !ok {
client.WriteError(errInvalidProtocol)
client.Close()
return
}
defer func() {
if e := recover(); e != nil {
buf := make([]byte, 4096)
n := runtime.Stack(buf, false)
buf = buf[0:n]
p.ctx.Events <- server.BroadcastEvent{"fatal", "client run panic", errors.New(fmt.Sprintf("%v", e)), buf}
}
c.Close()
return
}()
reqErr := client.RequestErrorChan()
for {
data, err := c.readBulk()
if err != nil {
if err != io.EOF {
p.ctx.Events <- server.BroadcastEvent{"error", "read error", err, nil}
}
return
}
err = p.handleData(data, c, reqErr)
if err != nil {
if err == errQuit {
return
} else {
p.ctx.Events <- server.BroadcastEvent{"error", "accept error", err, nil}
c.WriteError(err)
c.Flush()
}
}
}
}