plnack_proto

package module
v1.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 17, 2021 License: Apache-2.0 Imports: 11 Imported by: 1

README

plnack-proto

protocol for plnack

Plnack协议作为常规go服务和json-api服务的通信间协议

Make for Renj.io Apps

使用
go get github.com/Landers1037/plnack-proto
引入
import pp "github.com/Landers1037/plnack-proto"

type T1 struct {
	Name string
	Age  int
}

func main() {
    j := `{"name": "jiejie"}`
	var td T1
    pp.DecodeAnyJSON(&td, []byte(j))
}

Documentation

Index

Constants

View Source
const (
	PtypeServer  = "server"
	PtypeClient  = "client"
	PtypeDefault = ""
)
View Source
const (
	TCP = "tcp4"
)

Variables

View Source
var PLNACK_LOG bool

PLNACK_LOG 控制是否打印日志

View Source
var (
	PlnackVerify = false
)

Functions

func DecodeAny

func DecodeAny(model interface{}, r io.Reader) error

DecodeAny 自定义数据解析

func DecodeAnyJSON

func DecodeAnyJSON(model interface{}, data []byte) error

DecodeAnyJSON 自定义结构体解析

func EnableLog

func EnableLog()

func EnableVerify added in v1.0.4

func EnableVerify()

EnableVerify 启动内置的校验

func EncodeAny added in v1.0.4

func EncodeAny(w io.Writer, data interface{}) error

EncodeAny 接受任意数据类型

func EncodeAnyJSON added in v1.0.4

func EncodeAnyJSON(data interface{}) ([]byte, error)

func EncodeData

func EncodeData(w io.Writer, data PlnackOutData) error

EncodeData 向标准IO 输出写入

func EncodeGin added in v1.0.5

func EncodeGin(c *gin.Context, data PlnackData) error

EncodeGin 直接将数据定向输出到gin的上下文

func EncodeGinData

func EncodeGinData(c *gin.Context, data PlnackOutData) error

EncodeGinData 向gin上下文写入

func EncodeHTTP

func EncodeHTTP(r http.ResponseWriter, data PlnackOutData) error

EncodeHTTP 向http标准输出写入

func EncodeJSONData

func EncodeJSONData(data PlnackOutData) ([]byte, error)

EncodeJSONData 输出为JSON数据

func EncodePlnack added in v1.0.4

func EncodePlnack(w io.Writer, data PlnackData) error

func EncodePlnackJson added in v1.0.4

func EncodePlnackJson(data PlnackData) ([]byte, error)

func EncodeSocket added in v1.0.4

func EncodeSocket(conn *net.TCPConn, data PlnackOutData) error

func RegStruct

func RegStruct(s interface{})

RegStruct 注册自定义的结构体

func RegStructs

func RegStructs(ss ...interface{})

func SetLoggerWriter

func SetLoggerWriter(w io.Writer)

func VerifyAny added in v1.0.4

func VerifyAny(d interface{}) *validate.Validation

VerifyAny 校验任意结构体 需要满足validate

func VerifyPlnackIn added in v1.0.4

func VerifyPlnackIn(pi *PlnackInData) error

VerifyPlnackIn 校验plnack结构体

func VerifyPlnackOut added in v1.0.4

func VerifyPlnackOut(po *PlnackOutData) error

VerifyPlnackOut 校验输出

Types

type PlnackClient added in v1.0.4

type PlnackClient struct {
	Address string
	Port    int
	// contains filtered or unexported fields
}

func NewPlnackClient added in v1.0.4

func NewPlnackClient(address string, port int) *PlnackClient

NewPlnackClient 封装的tcp客户端

func (*PlnackClient) Send added in v1.0.4

func (p *PlnackClient) Send(data PlnackData) error

type PlnackData added in v1.0.4

type PlnackData struct {
	Key       string      `json:"key" validate:"required"`
	Type      string      `json:"type" validate:"in:server, client,''"`
	Version   string      `json:"version" validate:"required"`
	AppName   string      `json:"app_name" validate:"required"`
	Data      interface{} `json:"data" validate:"required"`
	KeyVerify bool        `json:"key_verify"`
	Time      time.Time   `json:"time" validate:"required"`
}

PlnackData 双向通信的服务协议

func DecodeGin added in v1.0.5

func DecodeGin(c *gin.Context) (PlnackData, error)

DecodeGin 直接从gin的body中解码数据

func DecodePlnack added in v1.0.4

func DecodePlnack(r io.Reader) (PlnackData, error)

func DecodePlnackJson added in v1.0.4

func DecodePlnackJson(j []byte) (PlnackData, error)

func (*PlnackData) Check added in v1.0.4

func (pd *PlnackData) Check() error

Check 公共的结构体验证配置

type PlnackInData

type PlnackInData struct {
	Key     string      `json:"key" validate:"required"`
	Version string      `json:"version" validate:"required"`
	AppName string      `json:"app_name" validate:"required"`
	Data    interface{} `json:"data" validate:"required"`
}

PlnackInData 标准的plnack输入结构体

func DecodeData

func DecodeData(r io.Reader) (PlnackInData, error)

DecodeData 从标准输入输出读取数据

func DecodeGinData

func DecodeGinData(c *gin.Context) (PlnackInData, error)

DecodeGinData 从gin 上下文读取数据

func DecodeHTTP

func DecodeHTTP(r http.Request) (PlnackInData, error)

DecodeHTTP 从常规的http reader中读取

func DecodeJSONData

func DecodeJSONData(j []byte) (PlnackInData, error)

DecodeJSONData 从非gob的json数据读取 直接接受字节流

func DecodeSocket added in v1.0.4

func DecodeSocket(conn *net.TCPConn) (PlnackInData, error)

DecodeSocket 从tcp句柄中读取

func (*PlnackInData) Check added in v1.0.4

func (pi *PlnackInData) Check() error

type PlnackOutData

type PlnackOutData struct {
	KeyVerify bool        `json:"key_verify" validate:"required"`
	Version   string      `json:"version" validate:"required"`
	AppName   string      `json:"app_name" validate:"required"`
	Data      interface{} `json:"data" validate:"required"`
	Time      time.Time   `json:"time" validate:"required"`
}

PlnackOutData 标准的plnack返回值

func (*PlnackOutData) Check added in v1.0.4

func (po *PlnackOutData) Check() error

type PlnackServer added in v1.0.4

type PlnackServer struct {
	Address string
	Port    int
	// contains filtered or unexported fields
}

func NewPlnackServer added in v1.0.4

func NewPlnackServer(address string, port int) *PlnackServer

NewPlnackServer 封装的tcp服务端

func (*PlnackServer) Close added in v1.0.4

func (p *PlnackServer) Close() error

func (*PlnackServer) Receive added in v1.0.4

func (p *PlnackServer) Receive() (PlnackData, error)

func (*PlnackServer) RemoteIP added in v1.0.4

func (p *PlnackServer) RemoteIP() net.Addr

func (*PlnackServer) Run added in v1.0.4

func (p *PlnackServer) Run() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL