Documentation ¶
Index ¶
- Constants
- Variables
- func IsCloseError(err error, codes ...int) bool
- func IsUnexpectedCloseError(err error, expectedCodes ...int) bool
- func IsWebTransportUpgrade(r *http.Request) bool
- type BufferPool
- type CloseError
- type Conn
- func (c *Conn) CloseWithError(code webtransport.SessionErrorCode, msg string) error
- func (c *Conn) LocalAddr() net.Addr
- func (c *Conn) NextReader() (messageType int, r io.Reader, err error)
- func (c *Conn) NextWriter(messageType int) (io.WriteCloser, error)
- func (c *Conn) ReadMessage() (messageType int, p []byte, err error)
- func (c *Conn) RemoteAddr() net.Addr
- func (c *Conn) Session() *webtransport.Session
- func (c *Conn) SetReadDeadline(t time.Time) error
- func (c *Conn) SetReadLimit(limit int64)
- func (c *Conn) SetWriteDeadline(t time.Time) error
- func (c *Conn) Stream() webtransport.Stream
- func (c *Conn) WriteMessage(messageType int, data []byte) error
- func (c *Conn) WritePreparedMessage(pm *PreparedMessage) error
- type PreparedMessage
Constants ¶
const ( CloseNormalClosure = 1000 CloseGoingAway = 1001 CloseProtocolError = 1002 CloseUnsupportedData = 1003 CloseNoStatusReceived = 1005 CloseAbnormalClosure = 1006 CloseInvalidFramePayloadData = 1007 ClosePolicyViolation = 1008 CloseMessageTooBig = 1009 CloseMandatoryExtension = 1010 CloseInternalServerErr = 1011 CloseServiceRestart = 1012 CloseTryAgainLater = 1013 CloseTLSHandshake = 1015 )
Close codes defined in RFC 6455, section 11.7.
const ( // TextMessage denotes a text data message. The text message payload is // interpreted as UTF-8 encoded text data. TextMessage = 1 // BinaryMessage denotes a binary data message. BinaryMessage = 2 )
The message types are defined in RFC 6455, section 11.8.
Variables ¶
var ErrCloseSent = errors.New("webtransport: close sent")
ErrCloseSent is returned when the application writes a message to the connection after sending a close message.
var ErrReadLimit = errors.New("webtransport: read limit exceeded")
ErrReadLimit is returned when reading a message that is larger than the read limit set for the connection.
Functions ¶
func IsCloseError ¶
IsCloseError returns boolean indicating whether the error is a *CloseError with one of the specified codes.
func IsUnexpectedCloseError ¶
IsUnexpectedCloseError returns boolean indicating whether the error is a *CloseError with a code not in the list of expected codes.
func IsWebTransportUpgrade ¶
IsWebTransportUpgrade returns true if the client requested upgrade to the WebTransport protocol.
Types ¶
type BufferPool ¶
type BufferPool interface { // Get gets a value from the pool or returns nil if the pool is empty. Get() interface{} // Put adds a value to the pool. Put(interface{}) }
BufferPool represents a pool of buffers. The *sync.Pool type satisfies this interface. The type of the value stored in a pool is not specified.
type CloseError ¶
type CloseError struct { // Code is defined in RFC 6455, section 11.7. Code int // Text is the optional text payload. Text string }
CloseError represents a close message.
func (*CloseError) Error ¶
func (e *CloseError) Error() string
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
The Conn type represents a WebTransport connection.
func (*Conn) CloseWithError ¶
Close closes the underlying network connection without sending or waiting for a close message.
func (*Conn) NextReader ¶
NextReader returns the next data message received from the peer. The returned messageType is either TextMessage or BinaryMessage.
There can be at most one open reader on a connection. NextReader discards the previous message if the application has not already consumed it.
Applications must break out of the application's read loop when this method returns a non-nil error value. Errors returned from this method are permanent. Once this method returns a non-nil error, all subsequent calls to this method return the same error.
func (*Conn) NextWriter ¶
func (c *Conn) NextWriter(messageType int) (io.WriteCloser, error)
NextWriter returns a writer for the next message to send. The writer's Close method flushes the complete message to the network.
There can be at most one open writer on a connection. NextWriter closes the previous writer if the application has not already done so.
All message types (TextMessage, BinaryMessage, CloseMessage, PingMessage and PongMessage) are supported.
func (*Conn) ReadMessage ¶
ReadMessage is a helper method for getting a reader using NextReader and reading from that reader to a buffer.
func (*Conn) RemoteAddr ¶
RemoteAddr returns the remote network address.
func (*Conn) Session ¶
func (c *Conn) Session() *webtransport.Session
Session returns the underlying connection that is wrapped by c. Note that writing to or reading from this connection directly will corrupt the WebTransport session.
func (*Conn) SetReadDeadline ¶
SetReadDeadline sets the read deadline on the underlying network connection. After a read has timed out, the webtransport connection state is corrupt and all future reads will return an error. A zero value for t means reads will not time out.
func (*Conn) SetReadLimit ¶
SetReadLimit sets the maximum size in bytes for a message read from the peer. If a message exceeds the limit, the connection sends a close message to the peer and returns ErrReadLimit to the application.
func (*Conn) SetWriteDeadline ¶
SetWriteDeadline sets the write deadline on the underlying network connection. After a write has timed out, the webtransport state is corrupt and all future writes will return an error. A zero value for t means writes will not time out.
func (*Conn) Stream ¶
func (c *Conn) Stream() webtransport.Stream
Stream returns the underlying connection that is wrapped by c. Note that writing to or reading from this connection directly will corrupt the WebTransport stream.
func (*Conn) WriteMessage ¶
WriteMessage is a helper method for getting a writer using NextWriter, writing the message and closing the writer.
func (*Conn) WritePreparedMessage ¶
func (c *Conn) WritePreparedMessage(pm *PreparedMessage) error
WritePreparedMessage writes prepared message into connection.
type PreparedMessage ¶
type PreparedMessage struct {
// contains filtered or unexported fields
}
PreparedMessage caches on the wire representations of a message payload. Use PreparedMessage to efficiently send a message payload to multiple connections. PreparedMessage is especially useful when compression is used because the CPU and memory expensive compression operation can be executed once for a given set of compression options.
func NewPreparedMessage ¶
func NewPreparedMessage(messageType int, data []byte) (*PreparedMessage, error)
NewPreparedMessage returns an initialized PreparedMessage. You can then send it to connection using WritePreparedMessage method. Valid wire representation will be calculated lazily only once for a set of current connection options.