Documentation
¶
Overview ¶
Package protocols defines the common interface of protocols used in Easegress.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Header ¶
type Header interface {
Add(key string, value interface{})
Set(key string, value interface{})
Get(key string) interface{}
Del(key string)
// Walk walks all header items, and stops if fn returns false.
Walk(fn func(key string, value interface{}) bool)
Clone() Header
}
Header is the headers of a request or response.
type Protocol ¶
type Protocol interface {
CreateRequest(req interface{}) (Request, error)
CreateResponse(resp interface{}) (Response, error)
NewRequestInfo() interface{}
BuildRequest(reqInfo interface{}) (Request, error)
NewResponseInfo() interface{}
BuildResponse(respInfo interface{}) (Response, error)
}
Protocol is the interface of a protocol.
type Request ¶
type Request interface {
// Header returns the header of the request.
Header() Header
// RealIP returns the real IP of the request.
RealIP() string
// IsStream returns whether the payload is a stream, which cannot be
// read for more than once.
IsStream() bool
// SetPayload set the payload of the request to payload. The payload
// could be a string, a byte slice, or an io.Reader, and if it is an
// io.Reader, it will be treated as a stream, if this is not desired,
// please read the data to a byte slice, and set the byte slice as
// the payload.
//
// If the previous payload is a stream, it is the caller's responsibility
// to close it, if required (that's, the previous payload is also an
// io.Closer).
SetPayload(payload interface{})
// GetPayload returns a payload reader. For non-stream payload, the
// returned reader is always a new one, which contains the full data.
// For stream payload, the function always returns the same reader.
GetPayload() io.Reader
// RawPayload returns the payload in []byte, the caller should not
// modify its content. The function panic if the payload is a stream.
RawPayload() []byte
// PayloadSize returns the size of the payload. If the payload is a
// stream, it returns the bytes count that have been currently read
// out.
PayloadSize() int64
// ToBuilderRequest wraps the request and returns the wrapper, the
// return value can be used in the template of the Builder filters.
ToBuilderRequest(name string) interface{}
// Close closes the request.
Close()
}
Request is the protocol independent interface of a request.
type Response ¶
type Response interface {
// Header returns the header of the response.
Header() Header
// Trailer returns the trailer of the response
Trailer() Trailer
// IsStream returns whether the payload is a stream, which cannot be
// read for more than once.
IsStream() bool
// SetPayload set the payload of the response to payload. The payload
// could be a string, a byte slice, or an io.Reader, and if it is an
// io.Reader, it will be treated as a stream, if this is not desired,
// please read the data to a byte slice, and set the byte slice as
// the payload.
//
// If the previous payload is a stream, it is the caller's responsibility
// to close it, if required (that's, the previouse payload is also an
// io.Closer).
SetPayload(payload interface{})
// GetPayload returns a payload reader. For non-stream payload, the
// returned reader is always a new one, which contains the full data.
// For stream payload, the function always returns the same reader.
GetPayload() io.Reader
// RawPayload returns the payload in []byte, the caller should not
// modify its content. The function panic if the payload is a stream.
RawPayload() []byte
// PayloadSize returns the size of the payload. If the payload is a
// stream, it returns the bytes count that have been currently read
// out.
PayloadSize() int64
// ToBuilderResponse wraps the response and returns the wrapper, the
// return value can be used in the template of the Builder filters.
ToBuilderResponse(name string) interface{}
// Close closes the response.
Close()
}
Response is the protocol independent interface of a response.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package grpcprot implements the grpc protocol.
|
Package grpcprot implements the grpc protocol. |
|
Package httpprot implements the HTTP protocol.
|
Package httpprot implements the HTTP protocol. |
|
httpheader
Package httpheader provides HTTP Header related functions.
|
Package httpheader provides HTTP Header related functions. |
|
httpstat
Package httpstat implements the statistics tool for HTTP traffic.
|
Package httpstat implements the statistics tool for HTTP traffic. |
|
Package mqttprot implements the MQTT protocol.
|
Package mqttprot implements the MQTT protocol. |
Click to show internal directories.
Click to hide internal directories.