Documentation ¶
Index ¶
- func CreateGoQuicAlarm(go_quic_alarm_go_wrapper_c unsafe.Pointer, clock_c unsafe.Pointer, ...) unsafe.Pointer
- func CreateGoSession(dispatcher_c unsafe.Pointer, session_c unsafe.Pointer) unsafe.Pointer
- func CreateIncomingDataStream(session_c unsafe.Pointer, stream_id uint32, wrapper_c unsafe.Pointer) unsafe.Pointer
- func DataStreamProcessorOnClose(go_data_stream_processor_c unsafe.Pointer, isServer int)
- func DataStreamProcessorOnFinRead(go_data_stream_processor_c unsafe.Pointer, isServer int)
- func DataStreamProcessorProcessData(go_data_stream_processor_c unsafe.Pointer, data unsafe.Pointer, ...) uint32
- func DeleteGoSession(dispatcher_c unsafe.Pointer, go_session_c unsafe.Pointer)
- func DeleteIPAddressNumber(ipAddr IPAddressNumber)
- func DeleteIPEndPoint(endpoint IPEndPoint)
- func DeleteQuicEncryptedPacket(packet QuicEncryptedPacket)
- func GetProof(dispatcher_c unsafe.Pointer, server_ip_c unsafe.Pointer, ...) C.int
- func GoQuicAlarmCancelImpl(alarm_c unsafe.Pointer)
- func GoQuicAlarmDestroy(alarm_c unsafe.Pointer)
- func GoQuicAlarmSetImpl(alarm_c unsafe.Pointer, deadline int64)
- func ParseHeaders(reader io.Reader) (http.Header, error)
- func SetLogLevel(level int)
- func UnregisterQuicClientStreamFromSession(go_stream_c unsafe.Pointer)
- func UnregisterQuicServerStreamFromSession(go_stream_c unsafe.Pointer)
- func WriteToUDP(conn_c unsafe.Pointer, ip_endpoint_c unsafe.Pointer, buffer_c unsafe.Pointer, ...)
- type AlarmHeap
- type ClientSessionImpl
- type ClientStreamImpl
- type Conn
- func (c *Conn) Close() (err error)
- func (c *Conn) Connect() bool
- func (c *Conn) CreateStream() *Stream
- func (c *Conn) SetDeadline(t time.Time) (err error)
- func (c *Conn) SetReadDeadline(t time.Time) (err error)
- func (c *Conn) SetWriteDeadline(t time.Time) (err error)
- func (c *Conn) Socket() *net.UDPConn
- type DataStreamCreator
- type DataStreamProcessor
- type GoQuicAlarm
- type HeapItem
- type IPAddressNumber
- type IPEndPoint
- type ProofSource
- type QuicClient
- func (qc *QuicClient) Close() (err error)
- func (qc *QuicClient) CreateReliableQuicStream() *QuicClientStream
- func (qc *QuicClient) EncryptionBeingEstablished() bool
- func (qc *QuicClient) IsConnected() bool
- func (qc *QuicClient) ProcessPacket(self_address *net.UDPAddr, peer_address *net.UDPAddr, buffer []byte)
- func (qc *QuicClient) SendConnectionClosePacket()
- func (qc *QuicClient) StartConnect()
- type QuicClientSession
- type QuicClientStream
- type QuicConn
- type QuicDispatcher
- type QuicEncryptedPacket
- type QuicServerSession
- type QuicSpdyServerStream
- type QuicStream
- type Stream
- type TaskRunner
- func (t *TaskRunner) CallWriteCallback(server_packet_writer_c unsafe.Pointer, rv int)
- func (t *TaskRunner) CancelAlarm(alarm *GoQuicAlarm)
- func (t *TaskRunner) DoTasks()
- func (t *TaskRunner) RegisterAlarm(alarm *GoQuicAlarm)
- func (t *TaskRunner) RunAlarm(alarm *GoQuicAlarm)
- func (t *TaskRunner) UnregisterAlarm(alarm *GoQuicAlarm)
- func (t *TaskRunner) WaitTimer() <-chan time.Time
- type WriteCallback
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CreateGoQuicAlarm ¶
func CreateGoSession ¶
func DeleteGoSession ¶
func DeleteIPAddressNumber ¶
func DeleteIPAddressNumber(ipAddr IPAddressNumber)
func DeleteIPEndPoint ¶
func DeleteIPEndPoint(endpoint IPEndPoint)
func DeleteQuicEncryptedPacket ¶
func DeleteQuicEncryptedPacket(packet QuicEncryptedPacket)
func GetProof ¶
func GetProof(dispatcher_c unsafe.Pointer, server_ip_c unsafe.Pointer, hostname_c unsafe.Pointer, hostname_sz_c C.size_t, server_config_c unsafe.Pointer, server_config_sz_c C.size_t, ecdsa_ok_c C.int, out_certs_c ***C.char, out_certs_sz_c *C.int, out_certs_item_sz_c **C.size_t, out_signature_c **C.char, out_signature_sz_c *C.size_t) C.int
func GoQuicAlarmCancelImpl ¶
func GoQuicAlarmDestroy ¶
func GoQuicAlarmSetImpl ¶
func SetLogLevel ¶
func SetLogLevel(level int)
Types ¶
type ClientSessionImpl ¶
type ClientSessionImpl struct {
// contains filtered or unexported fields
}
func (*ClientSessionImpl) CreateIncomingDataStream ¶
func (c *ClientSessionImpl) CreateIncomingDataStream(stream_id uint32) DataStreamProcessor
func (*ClientSessionImpl) CreateOutgoingDataStream ¶
func (c *ClientSessionImpl) CreateOutgoingDataStream() DataStreamProcessor
type ClientStreamImpl ¶
type ClientStreamImpl struct {
// contains filtered or unexported fields
}
func (*ClientStreamImpl) OnClose ¶
func (cs *ClientStreamImpl) OnClose(writer QuicStream)
func (*ClientStreamImpl) OnFinRead ¶
func (cs *ClientStreamImpl) OnFinRead(writer QuicStream)
func (*ClientStreamImpl) ProcessData ¶
func (cs *ClientStreamImpl) ProcessData(writer QuicStream, buffer []byte) int
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
func (*Conn) CreateStream ¶
type DataStreamCreator ¶
type DataStreamCreator interface { CreateIncomingDataStream(streamId uint32) DataStreamProcessor CreateOutgoingDataStream() DataStreamProcessor }
(For QuicServerSession)
type DataStreamProcessor ¶
type DataStreamProcessor interface { ProcessData(writer QuicStream, buffer []byte) int // Called when there's nothing to read. Called on server XXX(serialx): Not called on client OnFinRead(writer QuicStream) // Called when the connection is closed. Called on client XXX(serialx): Not called on server OnClose(writer QuicStream) }
(For QuicSpdyServerStream)
type GoQuicAlarm ¶
type GoQuicAlarm struct {
// contains filtered or unexported fields
}
func (*GoQuicAlarm) CancelImpl ¶
func (alarm *GoQuicAlarm) CancelImpl()
func (*GoQuicAlarm) Destroy ¶
func (alarm *GoQuicAlarm) Destroy()
Called by C++ side when the C++ wrapper object is destoryed
func (*GoQuicAlarm) Now ¶
func (alarm *GoQuicAlarm) Now() int64
func (*GoQuicAlarm) OnAlarm ¶
func (alarm *GoQuicAlarm) OnAlarm()
func (*GoQuicAlarm) SetImpl ¶
func (alarm *GoQuicAlarm) SetImpl()
type IPAddressNumber ¶
type IPAddressNumber struct {
// contains filtered or unexported fields
}
func CreateIPAddressNumber ¶
func CreateIPAddressNumber(ip net.IP) IPAddressNumber
type IPEndPoint ¶
type IPEndPoint struct {
// contains filtered or unexported fields
}
func CreateIPEndPoint ¶
func CreateIPEndPoint(udpAddr *net.UDPAddr) IPEndPoint
func CreateIPEndPointC ¶
func CreateIPEndPointC(ipAddr IPAddressNumber, port uint16) IPEndPoint
func (*IPEndPoint) UDPAddr ¶
func (endpoint *IPEndPoint) UDPAddr() *net.UDPAddr
type ProofSource ¶
type QuicClient ¶
type QuicClient struct {
// contains filtered or unexported fields
}
TODO(hodduc) multi-stream support ?
func CreateQuicClient ¶
func CreateQuicClient(addr *net.UDPAddr, conn QuicConn, createQuicClientSession func() DataStreamCreator, taskRunner *TaskRunner) (qc *QuicClient, err error)
func (*QuicClient) Close ¶
func (qc *QuicClient) Close() (err error)
func (*QuicClient) CreateReliableQuicStream ¶
func (qc *QuicClient) CreateReliableQuicStream() *QuicClientStream
func (*QuicClient) EncryptionBeingEstablished ¶
func (qc *QuicClient) EncryptionBeingEstablished() bool
func (*QuicClient) IsConnected ¶
func (qc *QuicClient) IsConnected() bool
func (*QuicClient) ProcessPacket ¶
func (*QuicClient) SendConnectionClosePacket ¶
func (qc *QuicClient) SendConnectionClosePacket()
func (*QuicClient) StartConnect ¶
func (qc *QuicClient) StartConnect()
type QuicClientSession ¶
type QuicClientSession struct {
// contains filtered or unexported fields
}
func (*QuicClientSession) NumActiveRequests ¶
func (s *QuicClientSession) NumActiveRequests() int
type QuicClientStream ¶
type QuicClientStream struct {
// contains filtered or unexported fields
}
func (*QuicClientStream) CloseReadSide ¶
func (stream *QuicClientStream) CloseReadSide()
func (*QuicClientStream) UserStream ¶
func (stream *QuicClientStream) UserStream() DataStreamProcessor
func (*QuicClientStream) WriteHeader ¶
func (stream *QuicClientStream) WriteHeader(header http.Header, is_body_empty bool)
func (*QuicClientStream) WriteOrBufferData ¶
func (stream *QuicClientStream) WriteOrBufferData(body []byte, fin bool)
type QuicDispatcher ¶
type QuicDispatcher struct { TaskRunner *TaskRunner // contains filtered or unexported fields }
func CreateQuicDispatcher ¶
func CreateQuicDispatcher(conn *net.UDPConn, createQuicServerSession func() DataStreamCreator, taskRunner *TaskRunner, proofSource ProofSource, isSecure bool) *QuicDispatcher
func (*QuicDispatcher) ProcessPacket ¶
type QuicEncryptedPacket ¶
type QuicEncryptedPacket struct {
// contains filtered or unexported fields
}
func CreateQuicEncryptedPacket ¶
func CreateQuicEncryptedPacket(buffer []byte) QuicEncryptedPacket
Note that the buffer is NOT copied. So it is the callers responsibility to retain the buffer until it is processed by QuicConnection
type QuicServerSession ¶
type QuicServerSession struct {
// contains filtered or unexported fields
}
type QuicSpdyServerStream ¶
type QuicSpdyServerStream struct {
// contains filtered or unexported fields
}
func (*QuicSpdyServerStream) CloseReadSide ¶
func (writer *QuicSpdyServerStream) CloseReadSide()
func (*QuicSpdyServerStream) UserStream ¶
func (writer *QuicSpdyServerStream) UserStream() DataStreamProcessor
func (*QuicSpdyServerStream) WriteHeader ¶
func (writer *QuicSpdyServerStream) WriteHeader(header http.Header, is_body_empty bool)
func (*QuicSpdyServerStream) WriteOrBufferData ¶
func (writer *QuicSpdyServerStream) WriteOrBufferData(body []byte, fin bool)
type QuicStream ¶
type TaskRunner ¶
type TaskRunner struct { WriteChan chan *WriteCallback // contains filtered or unexported fields }
This TaskRunner is NOT THREAD SAFE (and NEED NOT TO BE) so be careful All heap operations and callback operations should be called in a mainloop, not seperated goroutine
func CreateTaskRunner ¶
func CreateTaskRunner(writeCh chan *WriteCallback) *TaskRunner
func (*TaskRunner) CallWriteCallback ¶
func (t *TaskRunner) CallWriteCallback(server_packet_writer_c unsafe.Pointer, rv int)
func (*TaskRunner) CancelAlarm ¶
func (t *TaskRunner) CancelAlarm(alarm *GoQuicAlarm)
func (*TaskRunner) DoTasks ¶
func (t *TaskRunner) DoTasks()
func (*TaskRunner) RegisterAlarm ¶
func (t *TaskRunner) RegisterAlarm(alarm *GoQuicAlarm)
func (*TaskRunner) RunAlarm ¶
func (t *TaskRunner) RunAlarm(alarm *GoQuicAlarm)
func (*TaskRunner) UnregisterAlarm ¶
func (t *TaskRunner) UnregisterAlarm(alarm *GoQuicAlarm)
func (*TaskRunner) WaitTimer ¶
func (t *TaskRunner) WaitTimer() <-chan time.Time
type WriteCallback ¶
type WriteCallback struct {
// contains filtered or unexported fields
}
func (*WriteCallback) Callback ¶
func (cb *WriteCallback) Callback()
Source Files ¶
Click to show internal directories.
Click to hide internal directories.