add TCPConn type

This commit is contained in:
soypat
2025-04-04 19:16:26 -03:00
parent afc1ec6408
commit 39d5e4290e
9 changed files with 713 additions and 178 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ var (
errDropSegment = errors.New("drop segment")
errWindowTooLarge = errors.New("invalid window size > 2**16")
errBufferTooSmall = errors.New("buffer too small")
errBufferTooSmall = errors.New("tcp buffer too small")
errNeedClosedTCBToOpen = errors.New("need closed TCB to call open")
errInvalidState = errors.New("invalid state")
errConnNotExist = errors.New("connection does not exist")
+5 -2
View File
@@ -73,12 +73,14 @@ func (h *Handler) OpenActive(localPort, remotePort uint16, iss Value) error {
}
if h.scb.State() != StateClosed {
return errNeedClosedTCBToOpen
} else if remotePort == 0 {
return errors.New("zero port on open call")
}
h.reset(localPort, remotePort, iss)
return nil
}
// OpenListen prepares a passive connection. Set remote port to non-zero to
// OpenListen prepares a passive connection.
func (h *Handler) OpenListen(localPort uint16, iss Value) error {
if h.bufRx.Size() < minBufferSize || h.bufTx.Size() < minBufferSize {
return errBufferTooSmall
@@ -230,7 +232,8 @@ func (h *Handler) Read(b []byte) (int, error) {
return h.bufRx.Read(b)
}
func (h *Handler) Buffered() int {
// BufferedInput returns amount of bytes buffered in receive buffer.
func (h *Handler) BufferedInput() int {
if h.State().IsClosed() {
return 0
}
+2 -2
View File
@@ -33,8 +33,8 @@ func sendDataFull(t *testing.T, client, server *Handler, data, packetBuf []byte)
err = server.Recv(packetBuf[:n])
if err != nil {
t.Fatal("server receiving:", err)
} else if server.Buffered() != len(data) {
t.Fatal("server did not receive full data packet", server.Buffered(), len(data))
} else if server.BufferedInput() != len(data) {
t.Fatal("server did not receive full data packet", server.BufferedInput(), len(data))
}
clear(packetBuf)
n, err = server.Read(packetBuf)