type.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package conn
  2. import (
  3. "fmt"
  4. "net"
  5. )
  6. // 消息类型
  7. type MsgType byte
  8. const (
  9. MsgPing MsgType = iota
  10. MsgRequest
  11. MsgResponse
  12. MsgAuth
  13. MsgProxyConnect
  14. MsgProxyResult
  15. )
  16. func (t MsgType) String() string {
  17. switch t {
  18. case MsgPing:
  19. return "Ping"
  20. case MsgRequest:
  21. return "Request"
  22. case MsgResponse:
  23. return "Response"
  24. case MsgAuth:
  25. return "auth"
  26. case MsgProxyConnect:
  27. return "ProxyConnect"
  28. case MsgProxyResult:
  29. return "ProxyResult"
  30. default:
  31. return fmt.Sprintf("Unknown (%d)", t)
  32. }
  33. }
  34. // 网络数据包结构
  35. // type MsgData struct {
  36. // Type MsgType
  37. // Id uint16
  38. // Cmd string
  39. // State uint8
  40. // Data []byte
  41. // }
  42. // 连接接口,代表一个原始的连接
  43. type Connect interface {
  44. ReadAuthInfo() (proto string, version uint8, channel string, auth []byte, err error)
  45. ReadMessage(deadline int) (msgType MsgType, id uint16, cmd string, state uint8, data []byte, err error)
  46. ReadRawPackage(deadline int) (buf []byte, recycle bool, err error)
  47. WriteRawPackage(raw []byte, recycle bool) (err error)
  48. WriteAuthInfo(channel string, auth []byte) (err error)
  49. WriteRequest(id uint16, cmd string, data []byte) error
  50. WriteResponse(id uint16, state uint8, data []byte) error
  51. WritePing(id uint16) error
  52. RemoteIP() net.IP
  53. LocalIP() net.IP
  54. Close() error
  55. }
  56. // 服务请求连接
  57. type ServerConnectFunc func(conn Connect)