summaryrefslogtreecommitdiff
path: root/common.go
diff options
context:
space:
mode:
authorKevin Chabowski <kevin@kch42.de>2014-03-21 21:49:34 +0100
committerKevin Chabowski <kevin@kch42.de>2014-03-21 21:49:34 +0100
commit931a17e36d5c972cbf17ee739b81529aa97883cb (patch)
treee6ecc9f5f0d1157a8df2a1da219dea949319791f /common.go
downloadbinproto-931a17e36d5c972cbf17ee739b81529aa97883cb.tar.gz
binproto-931a17e36d5c972cbf17ee739b81529aa97883cb.tar.bz2
binproto-931a17e36d5c972cbf17ee739b81529aa97883cb.zip
Initial commit
Diffstat (limited to 'common.go')
-rw-r--r--common.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/common.go b/common.go
new file mode 100644
index 0000000..97c8fdc
--- /dev/null
+++ b/common.go
@@ -0,0 +1,68 @@
+// Package binproto provides functions to handle a simple binary protocol.
+package binproto
+
+import (
+ "errors"
+)
+
+type UnitType byte
+
+// Possible UnitType values
+const (
+ UTNil = iota
+ UTRequest
+ UTAnswer
+ UTEvent
+ UTBin
+ UTNumber
+ UTList
+ UTTextKVMap
+ UTIdKVMap
+ UTUKey
+ UTBinStream
+ UTTerm
+ UTBool
+ UTByte
+)
+
+func (ut UnitType) String() string {
+ switch ut {
+ case UTNil:
+ return "UTNil"
+ case UTRequest:
+ return "UTRequest"
+ case UTAnswer:
+ return "UTAnswer"
+ case UTEvent:
+ return "UTEvent"
+ case UTBin:
+ return "UTBin"
+ case UTNumber:
+ return "UTNumber"
+ case UTList:
+ return "UTList"
+ case UTTextKVMap:
+ return "UTTextKVMap"
+ case UTIdKVMap:
+ return "UTIdKVMap"
+ case UTUKey:
+ return "UTUKey"
+ case UTBinStream:
+ return "UTBinStream"
+ case UTTerm:
+ return "UTTerm"
+ case UTBool:
+ return "UTBool"
+ case UTByte:
+ return "UTByte"
+ }
+ return "Unknown unit"
+}
+
+// Errors
+var (
+ UnknownUnit = errors.New("Unknown unit received")
+ UnexpectedUnit = errors.New("Unexpected unit received")
+ Terminated = errors.New("List or KVMap terminated")
+ TooDeeplyNested = errors.New("Received data is too deeply nested to skip")
+)