From 9eddfc6e586fd4a99bdc87d32bade0cd1a5a33e6 Mon Sep 17 00:00:00 2001 From: mappu Date: Mon, 4 Jun 2018 16:27:34 +1200 Subject: [PATCH] return errors from saypublic/sayprivate et al --- AdcProtocol.go | 19 ++++++++++--------- AutodetectProtocol.go | 12 ++++++------ HubConnection.go | 21 +++++++++++++++------ NmdcProtocol.go | 12 ++++++------ Protocol.go | 6 +++--- 5 files changed, 40 insertions(+), 30 deletions(-) diff --git a/AdcProtocol.go b/AdcProtocol.go index d423ee8..19b3f69 100644 --- a/AdcProtocol.go +++ b/AdcProtocol.go @@ -468,8 +468,8 @@ func (this *AdcProtocol) ourINFO(includePid bool) string { return ret[1:] } -func (this *AdcProtocol) SayInfo() { - this.hc.SayRaw("BINF " + this.escape(this.sid) + " " + this.ourINFO(true) + "\n") +func (this *AdcProtocol) SayInfo() error { + return this.hc.SayRaw("BINF " + this.escape(this.sid) + " " + this.ourINFO(true) + "\n") } func (this *AdcProtocol) parts2flags(parts []string) (map[string]string, error) { @@ -614,16 +614,17 @@ func (this *AdcProtocol) unescape(encoded string) string { return strings.Replace(v2, `\\`, `\`, -1) } -func (this *AdcProtocol) SayPublic(msg string) { - this.hc.SayRaw("BMSG " + this.sid + " " + this.escape(msg) + "\n") +func (this *AdcProtocol) SayPublic(msg string) error { + return this.hc.SayRaw("BMSG " + this.sid + " " + this.escape(msg) + "\n") } -func (this *AdcProtocol) SayPrivate(user, message string) { - if sid, ok := this.Nick2SID(user); ok { - this.hc.SayRaw("DMSG " + this.sid + " " + sid + " " + this.escape(message) + "\n") - } else { - this.logError(fmt.Errorf("Unknown user '%s'", user)) +func (this *AdcProtocol) SayPrivate(user, message string) error { + sid, ok := this.Nick2SID(user) + if !ok { + return fmt.Errorf("Unknown user '%s'", user) } + + return this.hc.SayRaw("DMSG " + this.sid + " " + sid + " " + this.escape(message) + "\n") } func (this *AdcProtocol) ProtoMessageSeparator() string { diff --git a/AutodetectProtocol.go b/AutodetectProtocol.go index 3c188f6..0b9c372 100644 --- a/AutodetectProtocol.go +++ b/AutodetectProtocol.go @@ -49,34 +49,34 @@ func (this *AutodetectProtocol) ProcessCommand(msg string) { this.realProto.ProcessCommand(msg) } -func (this *AutodetectProtocol) SayPublic(msg string) { +func (this *AutodetectProtocol) SayPublic(msg string) error { this.realProtoMut.Lock() defer this.realProtoMut.Unlock() if this.realProto == nil { this.realProto = NewNmdcProtocol(this.hc) } - this.realProto.SayPublic(msg) + return this.realProto.SayPublic(msg) } -func (this *AutodetectProtocol) SayPrivate(user, message string) { +func (this *AutodetectProtocol) SayPrivate(user, message string) error { this.realProtoMut.Lock() defer this.realProtoMut.Unlock() if this.realProto == nil { this.realProto = NewNmdcProtocol(this.hc) } - this.realProto.SayPrivate(user, message) + return this.realProto.SayPrivate(user, message) } -func (this *AutodetectProtocol) SayInfo() { +func (this *AutodetectProtocol) SayInfo() error { this.realProtoMut.Lock() defer this.realProtoMut.Unlock() if this.realProto == nil { this.realProto = NewNmdcProtocol(this.hc) } - this.realProto.SayInfo() + return this.realProto.SayInfo() } func (this *AutodetectProtocol) ProtoMessageSeparator() string { diff --git a/HubConnection.go b/HubConnection.go index e1dd29a..a58cce7 100644 --- a/HubConnection.go +++ b/HubConnection.go @@ -41,16 +41,25 @@ func (this *HubConnection) Users(cb func(*map[string]UserInfo) error) error { return cb(&this.users) } -func (this *HubConnection) SayPublic(message string) { - this.proto.SayPublic(message) +func (this *HubConnection) SayPublic(message string) error { + if this.proto == nil { + return ErrNotConnected + } + return this.proto.SayPublic(message) } -func (this *HubConnection) SayPrivate(recipient string, message string) { - this.proto.SayPrivate(recipient, message) +func (this *HubConnection) SayPrivate(recipient string, message string) error { + if this.proto == nil { + return ErrNotConnected + } + return this.proto.SayPrivate(recipient, message) } -func (this *HubConnection) SayInfo() { - this.proto.SayInfo() +func (this *HubConnection) SayInfo() error { + if this.proto == nil { + return ErrNotConnected + } + return this.proto.SayInfo() } func (this *HubConnection) UserExists(nick string) bool { diff --git a/NmdcProtocol.go b/NmdcProtocol.go index 1e708cb..149be59 100644 --- a/NmdcProtocol.go +++ b/NmdcProtocol.go @@ -292,16 +292,16 @@ func (this *NmdcProtocol) unescape(encoded string) string { return strings.Replace(v2, "&", "&", -1) } -func (this *NmdcProtocol) SayPublic(message string) { - this.hc.SayRaw("<" + this.hc.Hco.Self.Nick + "> " + this.escape(message) + "|") +func (this *NmdcProtocol) SayPublic(message string) error { + return this.hc.SayRaw("<" + this.hc.Hco.Self.Nick + "> " + this.escape(message) + "|") } -func (this *NmdcProtocol) SayPrivate(recipient, message string) { - this.hc.SayRaw("$To: " + recipient + " From: " + this.hc.Hco.Self.Nick + " $<" + this.hc.Hco.Self.Nick + "> " + this.escape(message) + "|") +func (this *NmdcProtocol) SayPrivate(recipient, message string) error { + return this.hc.SayRaw("$To: " + recipient + " From: " + this.hc.Hco.Self.Nick + " $<" + this.hc.Hco.Self.Nick + "> " + this.escape(message) + "|") } -func (this *NmdcProtocol) SayInfo() { - this.hc.SayRaw(this.getUserMyINFO(this.hc.Hco.Self) + "|") +func (this *NmdcProtocol) SayInfo() error { + return this.hc.SayRaw(this.getUserMyINFO(this.hc.Hco.Self) + "|") } func (this *NmdcProtocol) parseMyINFO(protomsg string) (*UserInfo, error) { diff --git a/Protocol.go b/Protocol.go index 416c398..0e93217 100644 --- a/Protocol.go +++ b/Protocol.go @@ -3,11 +3,11 @@ package libnmdc type Protocol interface { ProcessCommand(msg string) - SayPublic(string) + SayPublic(string) error - SayPrivate(user, message string) + SayPrivate(user, message string) error - SayInfo() + SayInfo() error ProtoMessageSeparator() string }