Переглянути джерело

generalized protocol interface

v2ray 9 роки тому
батько
коміт
8daa427daf
2 змінених файлів з 60 додано та 0 видалено
  1. 27 0
      common/protocol/encoding.go
  2. 33 0
      common/protocol/headers.go

+ 27 - 0
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
+}

+ 33 - 0
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
+}