aboutsummaryrefslogtreecommitdiffstats
path: root/p2p/peer_error.go
diff options
context:
space:
mode:
authorViktor Trón <viktor.tron@gmail.com>2014-10-24 19:20:50 +0800
committerViktor Trón <viktor.tron@gmail.com>2014-10-24 19:20:50 +0800
commitf62b6742f2189f45463c362897e9f49a11d811a2 (patch)
treeb53312b931b92d672cf8ec3a0db444727d2a8a8b /p2p/peer_error.go
parente73aad959e530ecfbaff0c041ea881d4c9c95867 (diff)
parent771fbcc02e6d10cdf4cda2e8ec8ea23f11066feb (diff)
downloadgo-tangerine-f62b6742f2189f45463c362897e9f49a11d811a2.tar
go-tangerine-f62b6742f2189f45463c362897e9f49a11d811a2.tar.gz
go-tangerine-f62b6742f2189f45463c362897e9f49a11d811a2.tar.bz2
go-tangerine-f62b6742f2189f45463c362897e9f49a11d811a2.tar.lz
go-tangerine-f62b6742f2189f45463c362897e9f49a11d811a2.tar.xz
go-tangerine-f62b6742f2189f45463c362897e9f49a11d811a2.tar.zst
go-tangerine-f62b6742f2189f45463c362897e9f49a11d811a2.zip
Merge pull request #152 from ethersphere/p2p
initial commit of p2p package
Diffstat (limited to 'p2p/peer_error.go')
-rw-r--r--p2p/peer_error.go76
1 files changed, 76 insertions, 0 deletions
diff --git a/p2p/peer_error.go b/p2p/peer_error.go
new file mode 100644
index 000000000..de921878a
--- /dev/null
+++ b/p2p/peer_error.go
@@ -0,0 +1,76 @@
+package p2p
+
+import (
+ "fmt"
+)
+
+type ErrorCode int
+
+const errorChanCapacity = 10
+
+const (
+ PacketTooShort = iota
+ PayloadTooShort
+ MagicTokenMismatch
+ EmptyPayload
+ ReadError
+ WriteError
+ MiscError
+ InvalidMsgCode
+ InvalidMsg
+ P2PVersionMismatch
+ PubkeyMissing
+ PubkeyInvalid
+ PubkeyForbidden
+ ProtocolBreach
+ PortMismatch
+ PingTimeout
+ InvalidGenesis
+ InvalidNetworkId
+ InvalidProtocolVersion
+)
+
+var errorToString = map[ErrorCode]string{
+ PacketTooShort: "Packet too short",
+ PayloadTooShort: "Payload too short",
+ MagicTokenMismatch: "Magic token mismatch",
+ EmptyPayload: "Empty payload",
+ ReadError: "Read error",
+ WriteError: "Write error",
+ MiscError: "Misc error",
+ InvalidMsgCode: "Invalid message code",
+ InvalidMsg: "Invalid message",
+ P2PVersionMismatch: "P2P Version Mismatch",
+ PubkeyMissing: "Public key missing",
+ PubkeyInvalid: "Public key invalid",
+ PubkeyForbidden: "Public key forbidden",
+ ProtocolBreach: "Protocol Breach",
+ PortMismatch: "Port mismatch",
+ PingTimeout: "Ping timeout",
+ InvalidGenesis: "Invalid genesis block",
+ InvalidNetworkId: "Invalid network id",
+ InvalidProtocolVersion: "Invalid protocol version",
+}
+
+type PeerError struct {
+ Code ErrorCode
+ message string
+}
+
+func NewPeerError(code ErrorCode, format string, v ...interface{}) *PeerError {
+ desc, ok := errorToString[code]
+ if !ok {
+ panic("invalid error code")
+ }
+ format = desc + ": " + format
+ message := fmt.Sprintf(format, v...)
+ return &PeerError{code, message}
+}
+
+func (self *PeerError) Error() string {
+ return self.message
+}
+
+func NewPeerErrorChannel() chan *PeerError {
+ return make(chan *PeerError, errorChanCapacity)
+}