-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathconn.go
49 lines (39 loc) · 989 Bytes
/
conn.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// SPDX-License-Identifier: Apache-2.0
package frisbee
import (
"context"
"crypto/tls"
"errors"
"net"
"time"
"github.com/loopholelabs/logging/types"
"github.com/loopholelabs/frisbee-go/pkg/packet"
)
// DefaultBufferSize is the size of the default buffer
const DefaultBufferSize = 1 << 16
var (
DefaultDeadline = time.Second * 5
DefaultPingInterval = time.Millisecond * 500
emptyTime = time.Time{}
pastTime = time.Unix(1, 0)
emptyState = tls.ConnectionState{}
)
var (
NotTLSConnectionError = errors.New("connection is not of type *tls.Conn")
)
type Conn interface {
Close() error
LocalAddr() net.Addr
RemoteAddr() net.Addr
ConnectionState() (tls.ConnectionState, error)
Handshake() error
HandshakeContext(context.Context) error
SetDeadline(time.Time) error
SetReadDeadline(time.Time) error
SetWriteDeadline(time.Time) error
WritePacket(*packet.Packet) error
ReadPacket() (*packet.Packet, error)
Logger() types.Logger
Error() error
Raw() net.Conn
}