From 8daa427daf4145b3849956163976da9d4105121e Mon Sep 17 00:00:00 2001 From: v2ray Date: Tue, 16 Feb 2016 00:42:52 +0100 Subject: [PATCH] generalized protocol interface --- common/protocol/encoding.go | 27 +++++++++++++++++++++++++++ common/protocol/headers.go | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 common/protocol/encoding.go create mode 100644 common/protocol/headers.go diff --git a/common/protocol/encoding.go b/common/protocol/encoding.go new file mode 100644 index 000000000..85a423cc7 --- /dev/null +++ b/common/protocol/encoding.go @@ -0,0 +1,27 @@ +package protocol + +import ( + "io" + + "github.com/v2ray/v2ray-core/common/alloc" +) + +type RequestEncoder interface { + EncodeHeader(*RequestHeader) *alloc.Buffer + EncodeBody(io.Writer) io.Writer +} + +type RequestDecoder interface { + DecodeHeader(io.Reader) *RequestHeader + DecodeBody(io.Reader) io.Reader +} + +type ResponseEncoder interface { + EncodeHeader(*ResponseHeader) *alloc.Buffer + EncodeBody(io.Writer) io.Writer +} + +type ResponseDecoder interface { + DecodeHeader(io.Reader) *ResponseHeader + DecodeBody(io.Reader) io.Reader +} diff --git a/common/protocol/headers.go b/common/protocol/headers.go new file mode 100644 index 000000000..887fbae46 --- /dev/null +++ b/common/protocol/headers.go @@ -0,0 +1,33 @@ +package protocol + +import ( + v2net "github.com/v2ray/v2ray-core/common/net" +) + +type RequestCommand byte + +const ( + RequestCommandTCP = RequestCommand(0x01) + RequestCommandUDP = RequestCommand(0x02) +) + +type RequestOption byte + +const ( + RequestOptionChunkStream = RequestOption(0x01) +) + +type RequestHeader struct { + Version byte + User *User + Command RequestCommand + Option RequestOption + Address v2net.Address + Port v2net.Port +} + +type ResponseCommand interface{} + +type ResponseHeader struct { + Command ResponseCommand +}