server

package
v1.23.9 Latest Latest
Warning

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

Go to latest
Published: Aug 14, 2025 License: BSD-3-Clause Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CONNECT     = 0b0001
	CONNACK     = 0b0010
	PUBLISH     = 0b0011
	PUBACK      = 0b0100
	PUBREC      = 0b0101
	PUBREL      = 0b0110
	PUBCOMP     = 0b0111
	SUBSCRIBE   = 0b1000
	SUBACK      = 0b1001
	UNSUBSCRIBE = 0b1010
	UNSUBACK    = 0b1011
	PINGREQ     = 0b1100
	PINGRESP    = 0b1101
	DISCONNECT  = 0b1110

	LESS_LENGTH_LIMIT4 = 0x0FFFFFFF
	LESS_LENGTH_LIMIT3 = 0x001FFFFF
	LESS_LENGTH_LIMIT2 = 0x00003FFF
	LESS_LENGTH_LIMIT1 = 0x0000007F

	Qos0 = 0b00
	Qos1 = 0b01
	Qos2 = 0b10

	FIXED_FLAG_NONE  = 0b0000
	FIXED_FLAG_Qos0s = 0b0000
	FIXED_FLAG_Qos1s = 0b0010
	FIXED_FLAG_Qos2s = 0b0100
)
View Source
const (
	MQTT_HEADER      = "MQTT"
	MQTT_LEVEL_3_1_1 = 0x04

	CONNECT_VARIABLE_HEADER_LEN = 10
)
View Source
const (
	CORE_MQTT_SERVER = "X##!CORE_MQTT_SERVER"
)
View Source
const XHTTP_QUERY_OPTIONS_ALL = "all"

Variables

View Source
var DefaultMqttChecker = func() *xMqttDataChecker {
	return &xMqttDataChecker{}
}
View Source
var RunHttpServer = func(handlers ...*XhttpExecutor) {
	prefix := path.Join("/", global.StringValue("zero.httpserver.prefix"))
	server := http.Server{Addr: fmt.Sprintf("%s:%d", global.StringValue("zero.httpserver.hostname"), global.IntValue("zero.httpserver.port"))}
	for _, handler := range handlers {
		if handler.funcmode {
			if strings.HasSuffix(handler.path, "/") {
				http.HandleFunc(fmt.Sprintf("%s/", path.Join(prefix, handler.path)), handler.executorfunc)
				global.Logger().Info(fmt.Sprintf("http server register path : %s", fmt.Sprintf("%s/", path.Join(prefix, handler.path))))
			} else {
				http.HandleFunc(path.Join(prefix, handler.path), handler.executorfunc)
				global.Logger().Info(fmt.Sprintf("http server register path : %s", path.Join(prefix, handler.path)))
			}
		} else {
			if strings.HasSuffix(handler.path, "/") {
				http.Handle(fmt.Sprintf("%s/", path.Join(prefix, handler.path)), handler.executor)
				global.Logger().Info(fmt.Sprintf("http server register path : %s", fmt.Sprintf("%s/", path.Join(prefix, handler.path))))
			} else {
				http.Handle(path.Join(prefix, handler.path), handler.executor)
				global.Logger().Info(fmt.Sprintf("http server register path : %s", path.Join(prefix, handler.path)))
			}
		}
	}
	global.Logger().Info(fmt.Sprintf("http server start on : http://%s:%d%s", global.StringValue("zero.httpserver.hostname"), global.IntValue("zero.httpserver.port"), prefix))
	server.ListenAndServe()
}
View Source
var RunInterceptor = func(interceptor XhttpInterceptor, handlers ...*XhttpExecutor) {
	prefix := path.Join("/", global.StringValue("zero.httpserver.prefix"))
	server := http.Server{Addr: fmt.Sprintf("%s:%d", global.StringValue("zero.httpserver.hostname"), global.IntValue("zero.httpserver.port"))}
	for _, handler := range handlers {
		if strings.HasSuffix(handler.path, "/") {
			http.Handle(fmt.Sprintf("%s/", path.Join(prefix, handler.path)), interceptor.Registry(handler))
			global.Logger().Info(fmt.Sprintf("http server register path : %s", fmt.Sprintf("%s/", path.Join(prefix, handler.path))))
		} else {
			http.Handle(path.Join(prefix, handler.path), interceptor.Registry(handler))
			global.Logger().Info(fmt.Sprintf("http server register path : %s", path.Join(prefix, handler.path)))
		}
	}
	global.Logger().Info(fmt.Sprintf("http server start on : http://%s:%d%s", global.StringValue("zero.httpserver.hostname"), global.IntValue("zero.httpserver.port"), prefix))
	server.ListenAndServe()
}
View Source
var XhttpCompleteQueryOperation = func(xRequest *structs.ZeroRequest, xProcessor processors.ZeroQueryOperation, tableName string) (processors.ZeroQueryOperation, *processors.ZeroQuery, error) {
	xQuery, err := XhttpZeroQuery(xRequest)
	if err != nil {
		return nil, nil, err

	}
	xProcessor.AddQuery(xQuery)
	xProcessor.AddTableName(tableName)
	return xProcessor, xQuery, nil
}
View Source
var XhttpContainsOptions = func(xRequest *structs.ZeroRequest, option string) bool {
	if _, ok := xRequest.Expands["options"]; ok {
		return strings.Contains(xRequest.Expands["options"].(string), option) ||
			strings.Contains(xRequest.Expands["options"].(string), XHTTP_QUERY_OPTIONS_ALL)
	}
	return false
}
View Source
var XhttpEQuery = func(xRequest *structs.ZeroRequest) (*database.EQuerySearch, error) {
	if len(xRequest.Querys) <= 0 {
		return nil, errors.New("missing necessary parameter `query[0]`")
	}

	bytes, err := json.Marshal(xRequest.Querys[0])
	if err != nil {
		return nil, err
	}

	var query database.EQuerySearch
	err = json.Unmarshal(bytes, &query)
	if err != nil {
		return nil, err
	}
	return &query, nil
}
View Source
var XhttpEQueryRequest = func(xRequest *structs.ZeroRequest, indexName string) (*database.EQueryRequest, *database.EQuerySearch, error) {
	xEQuery, err := XhttpEQuery(xRequest)
	if err != nil {
		return nil, nil, err
	}
	if xEQuery.Size > 1000 {
		xEQuery.Size = 1000
	}
	eRequest := &database.EQueryRequest{Query: xEQuery}
	eRequest.InitIndex(indexName)
	return eRequest, xEQuery, nil
}
View Source
var XhttpEachQuerys = func(req *http.Request, performer func(*structs.ZeroRequest, []byte)) (*structs.ZeroRequest, error) {
	xRequest, err := XhttpZeroRequest(req)
	if err != nil {
		return nil, err
	}
	for _, xQuery := range xRequest.Querys {
		jsonbytes, err := json.Marshal(xQuery)
		if err != nil {
			return nil, err
		}
		performer(xRequest, jsonbytes)
	}
	return xRequest, nil
}
View Source
var XhttpFromFileRequest = func(req *http.Request, maxmem int64) ([]*XhttpFromFile, error) {
	err := req.ParseMultipartForm(maxmem)
	if err != nil {
		return nil, err
	}

	formfiles := make([]*XhttpFromFile, 0)
	for formName := range req.MultipartForm.File {
		formFile, formFileHeader, err := req.FormFile(formName)
		if err != nil {
			return nil, err
		}
		defer formFile.Close()

		filebytes, err := io.ReadAll(formFile)
		if err != nil {
			return nil, err
		}

		formfiles = append(formfiles, &XhttpFromFile{
			header:     formFileHeader,
			filesbytes: filebytes,
		})
	}
	return formfiles, nil
}
View Source
var XhttpFuncHandle = func(funcx func(http.ResponseWriter, *http.Request), path ...string) *XhttpExecutor {
	return &XhttpExecutor{
		funcmode:     true,
		path:         xhttpuri(path...),
		executorfunc: funcx,
	}
}
View Source
var XhttpHandle = func(handler http.Handler, path ...string) *XhttpExecutor {
	return &XhttpExecutor{
		funcmode: false,
		path:     xhttpuri(path...),
		executor: handler,
	}
}
View Source
var XhttpKeyValueRequest = func(req *http.Request) map[string]string {
	kv := make(map[string]string)
	if req.URL.Query() != nil {
		for k := range req.URL.Query() {
			kv[k] = req.URL.Query().Get(k)
		}
	}

	if req.PostForm != nil {
		for k := range req.PostForm {
			kv[k] = req.PostFormValue(k)
		}
	}
	return kv
}
View Source
var XhttpMysqlQueryOperation = func(xRequest *structs.ZeroRequest, tableName string) (processors.ZeroQueryOperation, *processors.ZeroQuery, error) {
	xQuery, err := XhttpZeroQuery(xRequest)
	if err != nil {
		return nil, nil, err

	}
	return processors.NewZeroMysqlQueryOperation(xQuery, tableName), xQuery, nil
}
View Source
var XhttpPerform = func(executor *XhttpExecutor, writer http.ResponseWriter, request *http.Request) {
	if executor.funcmode {
		executor.executorfunc(writer, request)
	} else {
		executor.executor.ServeHTTP(writer, request)
	}
}
View Source
var XhttpPostgresQueryOperation = func(xRequest *structs.ZeroRequest, tableName string) (processors.ZeroQueryOperation, *processors.ZeroQuery, error) {
	xQuery, err := XhttpZeroQuery(xRequest)
	if err != nil {
		return nil, nil, err

	}
	return processors.NewZeroPostgresQueryOperation(xQuery, tableName), xQuery, nil
}
View Source
var XhttpQueryOptions = func(xRequest *structs.ZeroRequest) []string {
	xoptions := make([]string, 0)
	if xRequest.Expands == nil {
		return xoptions
	}
	if _, ok := xRequest.Expands["options"]; ok {
		xoptionItems := strings.Split(xRequest.Expands["options"].(string), "|")
		for _, xoption := range xoptionItems {
			if xoption == XHTTP_QUERY_OPTIONS_ALL {
				return []string{XHTTP_QUERY_OPTIONS_ALL}
			}
			xoptions = append(xoptions, strings.ToLower(xoption))
		}
	}
	return xoptions
}
View Source
var XhttpResponseDatas = func(writer http.ResponseWriter, code int, message string, datas []interface{}, expands map[string]interface{}) {
	bytes, err := json.Marshal(structs.ZeroResponse{
		Code:    code,
		Message: message,
		Datas:   datas,
		Expands: expands,
	})
	if err != nil {
		panic(err)
	}

	writer.Header().Set("Content-Type", "application/json")
	writer.WriteHeader(code)
	writer.Write(bytes)
}
View Source
var XhttpResponseMaps = func(writer http.ResponseWriter, code int, message string, datas []map[string]interface{}, expands map[string]interface{}) {
	response := make(map[string]interface{})
	response["code"] = code
	response["message"] = message
	response["datas"] = datas
	response["expands"] = expands

	bytes, err := json.Marshal(response)
	if err != nil {
		panic(err)
	}

	writer.Header().Set("Content-Type", "application/json")
	writer.WriteHeader(code)
	writer.Write(bytes)
}
View Source
var XhttpResponseMessages = func(writer http.ResponseWriter, code int, message string) {
	XhttpResponseDatas(writer, code, message, nil, nil)
}
View Source
var XhttpURIParams = func(req *http.Request, xPattern string) map[string]string {
	uriparams := make(map[string]string)
	xAfter := xPattern[:strings.Index(xPattern, ":")]
	if strings.Index(req.URL.Path, xAfter) > 0 {
		xFieldItems := strings.Split(xPattern[strings.Index(xPattern, xAfter)+len(xAfter):], "/")
		xParamsURI := req.URL.Path[strings.Index(req.URL.Path, xAfter)+len(xAfter):]
		xParamsItems := strings.Split(xParamsURI, "/")

		for i, item := range xFieldItems {
			if strings.HasPrefix(item, ":") && len(xParamsItems) > i {
				uriparams[item[1:]] = xParamsItems[i]
			}
		}
	}
	return uriparams
}
View Source
var XhttpUnitaryQuerys = func(req *http.Request) (*structs.ZeroRequest, []byte, error) {
	xRequest, err := XhttpZeroRequest(req)
	if err != nil {
		return nil, nil, err
	}
	if len(xRequest.Querys) <= 0 {
		return nil, nil, fmt.Errorf("no operation required")
	}
	if len(xRequest.Querys) > 1 {
		return nil, nil, fmt.Errorf("operation not supported")
	}
	jsonbytes, err := json.Marshal(xRequest.Querys[0])
	if err != nil {
		return nil, nil, err
	}
	return xRequest, jsonbytes, nil
}
View Source
var XhttpZeroQuery = func(xRequest *structs.ZeroRequest) (*processors.ZeroQuery, error) {
	if len(xRequest.Querys) <= 0 {
		return nil, errors.New("missing necessary parameter `query[0]`")
	}

	bytes, err := json.Marshal(xRequest.Querys[0])
	if err != nil {
		return nil, err
	}

	var query processors.ZeroQuery
	err = json.Unmarshal(bytes, &query)
	if err != nil {
		return nil, err
	}

	return &query, nil
}
View Source
var XhttpZeroRequest = func(req *http.Request) (*structs.ZeroRequest, error) {
	body, err := io.ReadAll(req.Body)
	if err != nil {
		return nil, err
	}

	var request structs.ZeroRequest
	err = json.Unmarshal(body, &request)
	if err != nil {
		return nil, err
	}
	return &request, nil
}

Functions

This section is empty.

Types

type IPCServer added in v1.3.0

type IPCServer struct {
	ZeroSocketServer
	// contains filtered or unexported fields
}

func NewIPCServer added in v1.3.0

func NewIPCServer(ipcsock string, authWaitSeconds int64, heartbeatSeconds int64, bufferSize int) *IPCServer

func (*IPCServer) RunServer added in v1.3.0

func (ipcserv *IPCServer) RunServer()

type MqttConnackVariableHeader added in v1.3.0

type MqttConnackVariableHeader struct {
	MqttVariableHeader
}

func (*MqttConnackVariableHeader) ReturnCode added in v1.3.0

func (connackHeader *MqttConnackVariableHeader) ReturnCode() byte

func (*MqttConnackVariableHeader) SessionPresent added in v1.3.0

func (connackHeader *MqttConnackVariableHeader) SessionPresent() byte

type MqttConnect added in v1.3.0

type MqttConnect struct {
	ZeroSocketConnect
	// contains filtered or unexported fields
}

func NewMqttConnect added in v1.16.29

func NewMqttConnect() MqttConnect

func NewMqttConnectPtr added in v1.20.9

func NewMqttConnectPtr() *MqttConnect

func (*MqttConnect) Accept added in v1.3.0

func (mqttconn *MqttConnect) Accept(_ ZeroServ, connect net.Conn) error

func (*MqttConnect) AddListener added in v1.12.22

func (mqttconn *MqttConnect) AddListener(xListener MqttMessageListener)

func (*MqttConnect) Close added in v1.3.0

func (mqttconn *MqttConnect) Close() error

func (*MqttConnect) OnMessage added in v1.3.0

func (mqttconn *MqttConnect) OnMessage(datas []byte) error

func (*MqttConnect) RegisterId added in v1.3.0

func (mqttconn *MqttConnect) RegisterId() string

func (*MqttConnect) UpdateSerialNnumber added in v1.12.29

func (mqttconn *MqttConnect) UpdateSerialNnumber(serialNnumber uint16)

func (*MqttConnect) UseSerialNnumber added in v1.12.24

func (mqttconn *MqttConnect) UseSerialNnumber() uint16

type MqttConnectBuilder added in v1.20.2

type MqttConnectBuilder struct{}

func (*MqttConnectBuilder) NewConnect added in v1.20.2

func (xDefault *MqttConnectBuilder) NewConnect() ZeroConnect

type MqttConnectVariableHeader added in v1.3.0

type MqttConnectVariableHeader struct {
	MqttVariableHeader
}

func (*MqttConnectVariableHeader) CleanSession added in v1.3.0

func (connectHeader *MqttConnectVariableHeader) CleanSession() byte

func (*MqttConnectVariableHeader) KeepAlive added in v1.3.0

func (connectHeader *MqttConnectVariableHeader) KeepAlive() int

func (*MqttConnectVariableHeader) Level added in v1.3.0

func (connectHeader *MqttConnectVariableHeader) Level() byte

func (*MqttConnectVariableHeader) PasswordFlag added in v1.3.0

func (connectHeader *MqttConnectVariableHeader) PasswordFlag() byte

func (*MqttConnectVariableHeader) Protocol added in v1.3.0

func (connectHeader *MqttConnectVariableHeader) Protocol() string

func (*MqttConnectVariableHeader) ProtocolLength added in v1.3.0

func (connectHeader *MqttConnectVariableHeader) ProtocolLength() int

func (*MqttConnectVariableHeader) Reserved added in v1.3.0

func (connectHeader *MqttConnectVariableHeader) Reserved() byte

func (*MqttConnectVariableHeader) UserNameFlag added in v1.3.0

func (connectHeader *MqttConnectVariableHeader) UserNameFlag() byte

func (*MqttConnectVariableHeader) WillFlag added in v1.3.0

func (connectHeader *MqttConnectVariableHeader) WillFlag() byte

func (*MqttConnectVariableHeader) WillQos added in v1.3.0

func (connectHeader *MqttConnectVariableHeader) WillQos() byte

func (*MqttConnectVariableHeader) WillRetain added in v1.3.0

func (connectHeader *MqttConnectVariableHeader) WillRetain() byte

type MqttCorePayload added in v1.3.0

type MqttCorePayload interface {
	Payload() []byte
}

type MqttCoreVariableHeader added in v1.3.0

type MqttCoreVariableHeader interface {
	VariableHeader() []byte
}

type MqttFixedHeader added in v1.3.0

type MqttFixedHeader struct {
	// contains filtered or unexported fields
}

func (*MqttFixedHeader) B0 added in v1.3.0

func (fixedHeader *MqttFixedHeader) B0() byte

func (*MqttFixedHeader) B1 added in v1.3.0

func (fixedHeader *MqttFixedHeader) B1() byte

func (*MqttFixedHeader) B2 added in v1.3.0

func (fixedHeader *MqttFixedHeader) B2() byte

func (*MqttFixedHeader) B3 added in v1.3.0

func (fixedHeader *MqttFixedHeader) B3() byte

func (*MqttFixedHeader) BTvarL added in v1.3.0

func (fixedHeader *MqttFixedHeader) BTvarL(bytes []byte) int

func (*MqttFixedHeader) CompleteLength added in v1.21.7

func (fixedHeader *MqttFixedHeader) CompleteLength() int

func (*MqttFixedHeader) Length added in v1.20.6

func (fixedHeader *MqttFixedHeader) Length() []byte

func (*MqttFixedHeader) LessLength added in v1.3.0

func (fixedHeader *MqttFixedHeader) LessLength() int

func (*MqttFixedHeader) MessageType added in v1.3.0

func (fixedHeader *MqttFixedHeader) MessageType() byte

func (*MqttFixedHeader) MessageTypeString added in v1.3.0

func (fixedHeader *MqttFixedHeader) MessageTypeString() string

func (*MqttFixedHeader) Qos added in v1.21.5

func (fixedHeader *MqttFixedHeader) Qos() byte

func (*MqttFixedHeader) Size added in v1.21.7

func (fixedHeader *MqttFixedHeader) Size() int

func (*MqttFixedHeader) With added in v1.21.2

func (fixedHeader *MqttFixedHeader) With(header byte, length []byte)

type MqttIdentifierVariableHeader added in v1.3.0

type MqttIdentifierVariableHeader struct {
	MqttVariableHeader
}

func (*MqttIdentifierVariableHeader) Identifier added in v1.3.0

func (identifierHeader *MqttIdentifierVariableHeader) Identifier() uint16

type MqttMessage added in v1.3.0

type MqttMessage struct {
	// contains filtered or unexported fields
}

func ParseMqttMessage added in v1.20.6

func ParseMqttMessage(data []byte) (*MqttMessage, error)

func (*MqttMessage) Bytes added in v1.3.0

func (message *MqttMessage) Bytes() []byte

func (*MqttMessage) FixedHeader added in v1.3.0

func (message *MqttMessage) FixedHeader() *MqttFixedHeader

func (*MqttMessage) MakeConnackMessage added in v1.3.0

func (message *MqttMessage) MakeConnackMessage()

func (*MqttMessage) MakePingrespMessage added in v1.3.0

func (message *MqttMessage) MakePingrespMessage()

func (*MqttMessage) MakePubackMessage added in v1.3.0

func (message *MqttMessage) MakePubackMessage(identifier uint16)

func (*MqttMessage) MakePubcompMessage added in v1.21.7

func (message *MqttMessage) MakePubcompMessage(identifier uint16)

func (*MqttMessage) MakePublistMessage added in v1.3.0

func (message *MqttMessage) MakePublistMessage(topic string, identifier uint16, flag byte, data []byte)

func (*MqttMessage) MakePubrecMessage added in v1.21.7

func (message *MqttMessage) MakePubrecMessage(identifier uint16)

func (*MqttMessage) MakePubrelMessage added in v1.3.0

func (message *MqttMessage) MakePubrelMessage(identifier uint16)

func (*MqttMessage) MakeSubackMessage added in v1.3.0

func (message *MqttMessage) MakeSubackMessage(identifier uint16, results []byte)

func (*MqttMessage) Payload added in v1.3.0

func (message *MqttMessage) Payload() MqttCorePayload

func (*MqttMessage) VariableHeader added in v1.3.0

func (message *MqttMessage) VariableHeader() MqttCoreVariableHeader

type MqttMessageListener added in v1.12.20

type MqttMessageListener interface {
	Publish(ZeroConnect, *MqttMessage) error
}

type MqttParamsPayload added in v1.3.0

type MqttParamsPayload struct {
	MqttPayload
	// contains filtered or unexported fields
}

func (*MqttParamsPayload) Params added in v1.3.0

func (connectPayload *MqttParamsPayload) Params() []string

type MqttPayload added in v1.3.0

type MqttPayload struct {
	// contains filtered or unexported fields
}

func (*MqttPayload) Payload added in v1.3.0

func (payload *MqttPayload) Payload() []byte

type MqttPublishVariableHeader added in v1.3.0

type MqttPublishVariableHeader struct {
	MqttVariableHeader
}

func (*MqttPublishVariableHeader) Identifier added in v1.3.0

func (publishVariableHeader *MqttPublishVariableHeader) Identifier() uint16

func (*MqttPublishVariableHeader) Topic added in v1.3.0

func (publishVariableHeader *MqttPublishVariableHeader) Topic() string

type MqttServer added in v1.3.0

type MqttServer struct {
	TCPServer
	// contains filtered or unexported fields
}

func NewMqttServer added in v1.3.0

func NewMqttServer(address string, authWaitSeconds int64, heartbeatSeconds int64, bufferSize int) *MqttServer

func (*MqttServer) RunServer added in v1.3.0

func (mqttserv *MqttServer) RunServer()

type MqttSubscribePayload added in v1.3.0

type MqttSubscribePayload struct {
	MqttPayload
	// contains filtered or unexported fields
}

func (*MqttSubscribePayload) Topics added in v1.3.0

func (subscribePayload *MqttSubscribePayload) Topics() []*MqttTopic

type MqttTopic added in v1.3.0

type MqttTopic struct {
	TopicName string
	Qos       byte
}

type MqttVariableHeader added in v1.3.0

type MqttVariableHeader struct {
	// contains filtered or unexported fields
}

func (*MqttVariableHeader) VariableHeader added in v1.3.0

func (variableHeader *MqttVariableHeader) VariableHeader() []byte

type TCPClient added in v1.7.0

type TCPClient struct {
	structs.ZeroMeta
	// contains filtered or unexported fields
}

func NewTCPClient added in v1.7.0

func NewTCPClient(address string, authWaitSeconds int64, heartbeatSeconds int64, heartbeatCheckInterval int64, bufferSize int) *TCPClient

func (*TCPClient) Active added in v1.7.0

func (client *TCPClient) Active() bool

func (*TCPClient) AddChecker added in v1.7.0

func (client *TCPClient) AddChecker(checker ZeroDataChecker)

func (*TCPClient) AddListener added in v1.7.0

func (client *TCPClient) AddListener(xListener ZeroClientListener)

func (*TCPClient) CheckPackageData added in v1.7.0

func (client *TCPClient) CheckPackageData(data []byte) [][]byte

func (*TCPClient) Close added in v1.7.0

func (client *TCPClient) Close() error

func (*TCPClient) Connect added in v1.7.0

func (client *TCPClient) Connect()

func (*TCPClient) Heartbeat added in v1.7.0

func (client *TCPClient) Heartbeat()

func (*TCPClient) HeartbeatCheck added in v1.7.0

func (client *TCPClient) HeartbeatCheck(heartbeatSeconds int64) bool

func (*TCPClient) OnMessage added in v1.7.0

func (client *TCPClient) OnMessage(datas []byte) error

func (*TCPClient) RemoteAddr added in v1.7.0

func (client *TCPClient) RemoteAddr() string

func (*TCPClient) This added in v1.7.0

func (client *TCPClient) This() interface{}

func (*TCPClient) Write added in v1.7.0

func (client *TCPClient) Write(datas []byte) error

type TCPServer added in v1.3.0

type TCPServer struct {
	ZeroSocketServer
	// contains filtered or unexported fields
}

func NewTCPServer added in v1.3.0

func NewTCPServer(address string, authWaitSeconds int64, heartbeatSeconds int64, bufferSize int, watchers ...ZeroServerWatcher) *TCPServer

func (*TCPServer) RunServer added in v1.3.0

func (tcpserv *TCPServer) RunServer()

type UDPMessageProcesser added in v1.3.0

type UDPMessageProcesser interface {
	OnMessage([]byte) error
}

type UDPServer added in v1.3.0

type UDPServer struct {
	// contains filtered or unexported fields
}

func NewUDPServer added in v1.3.0

func NewUDPServer(port int, bufferSize int, checker ZeroDataChecker, processer UDPMessageProcesser) *UDPServer

func (*UDPServer) RunServer added in v1.3.0

func (udpserv *UDPServer) RunServer()

func (*UDPServer) Write added in v1.3.0

func (udpserv *UDPServer) Write(datas []byte, addr *net.UDPAddr) error

type XhttpExecutor added in v1.0.1

type XhttpExecutor struct {
	// contains filtered or unexported fields
}

type XhttpFromFile added in v1.12.0

type XhttpFromFile struct {
	// contains filtered or unexported fields
}

func (*XhttpFromFile) FileHeader added in v1.12.0

func (xfile *XhttpFromFile) FileHeader() *multipart.FileHeader

func (*XhttpFromFile) FileName added in v1.12.0

func (xfile *XhttpFromFile) FileName() string

func (*XhttpFromFile) FileSize added in v1.12.0

func (xfile *XhttpFromFile) FileSize() int64

func (*XhttpFromFile) FilesBytes added in v1.12.0

func (xfile *XhttpFromFile) FilesBytes() []byte

func (*XhttpFromFile) MIMEHeader added in v1.12.0

func (xfile *XhttpFromFile) MIMEHeader() textproto.MIMEHeader

type XhttpInterceptor added in v1.15.6

type XhttpInterceptor interface {
	Registry(*XhttpExecutor) http.Handler
}

type ZeroClientConnect added in v1.7.0

type ZeroClientConnect interface {
	structs.ZeroMetaDef

	Connect()
	RemoteAddr() string
	HeartbeatCheck(int64) bool
	Active() bool
	Heartbeat()
	Close() error
	Write([]byte) error

	OnMessage([]byte) error

	AddChecker(ZeroDataChecker)
	CheckPackageData([]byte) [][]byte

	AddListener(ZeroClientListener)
}

type ZeroClientListener added in v1.7.0

type ZeroClientListener interface {
	OnConnect(ZeroClientConnect) error
	OnHeartbeat(ZeroClientConnect) error
}

type ZeroConnect added in v1.3.0

type ZeroConnect interface {
	structs.ZeroMetaDef

	AcceptTime() int64
	HeartbeatTime() int64

	Accept(ZeroServ, net.Conn) error
	RegisterId() string
	ConnectId() string
	RemoteAddr() string
	HeartbeatCheck(int64) bool
	Active() bool
	Heartbeat()
	Close() error
	Write([]byte) error

	Node() *list.Element
	Clock() *ring.Ring
	FlushNode(*list.Element)
	FlushClock(*ring.Ring)

	Authorized(authMessage ...byte) bool
	OnMessage(datas []byte) error

	AddChecker(ZeroDataChecker)
	CheckPackageData(data []byte) [][]byte
}

type ZeroConnectBuilder added in v1.3.0

type ZeroConnectBuilder interface {
	NewConnect() ZeroConnect
}

type ZeroDataChecker added in v1.3.0

type ZeroDataChecker interface {
	CheckPackageData(string, []byte) [][]byte
}

type ZeroServ added in v1.3.0

type ZeroServ interface {
	OnConnect(ZeroConnect) error
	OnDisconnect(ZeroConnect) error
	OnAuthorized(ZeroConnect) error
	OnHeartbeat(ZeroConnect) error
	UseConnect(string) (ZeroConnect, error)
}

type ZeroServerWatcher added in v1.23.0

type ZeroServerWatcher interface {
	WatcherName() string
	OnConnect(ZeroConnect) error
	OnAuthorized(ZeroConnect) error
	OnDisconnect(ZeroConnect) error
	OnHeartbeat(ZeroConnect) error
	OnMessage(ZeroConnect, []byte) error
}

type ZeroSocketConnect added in v1.3.0

type ZeroSocketConnect struct {
	structs.ZeroMeta
	// contains filtered or unexported fields
}

func (*ZeroSocketConnect) Accept added in v1.3.0

func (zSock *ZeroSocketConnect) Accept(zserv ZeroServ, connect net.Conn) error

func (*ZeroSocketConnect) AcceptTime added in v1.10.5

func (zSock *ZeroSocketConnect) AcceptTime() int64

func (*ZeroSocketConnect) Active added in v1.3.0

func (zSock *ZeroSocketConnect) Active() bool

func (*ZeroSocketConnect) AddChecker added in v1.5.1

func (zSock *ZeroSocketConnect) AddChecker(checker ZeroDataChecker)

func (*ZeroSocketConnect) Authorized added in v1.3.0

func (zSock *ZeroSocketConnect) Authorized(authMessage ...byte) bool

func (*ZeroSocketConnect) CheckPackageData added in v1.3.0

func (zSock *ZeroSocketConnect) CheckPackageData(data []byte) [][]byte

func (*ZeroSocketConnect) Clock added in v1.18.1

func (zSock *ZeroSocketConnect) Clock() *ring.Ring

func (*ZeroSocketConnect) Close added in v1.3.0

func (zSock *ZeroSocketConnect) Close() error

func (*ZeroSocketConnect) ConnectId added in v1.3.0

func (zSock *ZeroSocketConnect) ConnectId() string

func (*ZeroSocketConnect) FlushClock added in v1.18.1

func (zSock *ZeroSocketConnect) FlushClock(clock *ring.Ring)

func (*ZeroSocketConnect) FlushNode added in v1.18.1

func (zSock *ZeroSocketConnect) FlushNode(node *list.Element)

func (*ZeroSocketConnect) Heartbeat added in v1.3.0

func (zSock *ZeroSocketConnect) Heartbeat()

func (*ZeroSocketConnect) HeartbeatCheck added in v1.3.0

func (zSock *ZeroSocketConnect) HeartbeatCheck(heartbeatSeconds int64) bool

func (*ZeroSocketConnect) HeartbeatTime added in v1.10.5

func (zSock *ZeroSocketConnect) HeartbeatTime() int64

func (*ZeroSocketConnect) Node added in v1.18.1

func (zSock *ZeroSocketConnect) Node() *list.Element

func (*ZeroSocketConnect) OnMessage added in v1.3.0

func (zSock *ZeroSocketConnect) OnMessage(datas []byte) error

func (*ZeroSocketConnect) RegisterId added in v1.3.0

func (zSock *ZeroSocketConnect) RegisterId() string

func (*ZeroSocketConnect) RemoteAddr added in v1.3.0

func (zSock *ZeroSocketConnect) RemoteAddr() string

func (*ZeroSocketConnect) This added in v1.4.2

func (zSock *ZeroSocketConnect) This() interface{}

func (*ZeroSocketConnect) Write added in v1.3.0

func (zSock *ZeroSocketConnect) Write(datas []byte) error

type ZeroSocketServer added in v1.3.0

type ZeroSocketServer struct {
	ConnectBuilder ZeroConnectBuilder
	// contains filtered or unexported fields
}

func (*ZeroSocketServer) AddWatchers added in v1.23.0

func (sockServer *ZeroSocketServer) AddWatchers(watchers ...ZeroServerWatcher)

func (*ZeroSocketServer) OnAuthorized added in v1.3.0

func (sockServer *ZeroSocketServer) OnAuthorized(conn ZeroConnect) error

func (*ZeroSocketServer) OnConnect added in v1.3.0

func (sockServer *ZeroSocketServer) OnConnect(conn ZeroConnect) error

func (*ZeroSocketServer) OnDisconnect added in v1.3.0

func (sockServer *ZeroSocketServer) OnDisconnect(conn ZeroConnect) error

func (*ZeroSocketServer) OnHeartbeat added in v1.18.1

func (sockServer *ZeroSocketServer) OnHeartbeat(conn ZeroConnect) error

func (*ZeroSocketServer) RunServer added in v1.3.0

func (sockServer *ZeroSocketServer) RunServer()

func (*ZeroSocketServer) UseConnect added in v1.3.3

func (sockServer *ZeroSocketServer) UseConnect(registerId string) (ZeroConnect, error)

Jump to

Keyboard shortcuts

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