package tde import ( "encoding/binary" "io" "net" ) type TDE struct { net.Conn } func (t TDE) Write(p []byte) (n int, err error) { size := uint16(len(p)) if err := binary.Write(t.Conn, binary.BigEndian, size); err != nil { return 0, err } return t.Conn.Write(p) } func (t TDE) Read(p []byte) (n int, err error) { var size uint16 if err := binary.Read(t.Conn, binary.BigEndian, &size); err != nil { return 0, err } return t.Conn.Read(p[:size]) } const maxLen = 240 func ReadAll(r io.Reader) ([]byte, error) { p := make([]byte, maxLen) n, err := r.Read(p) return p[:n], err } func Dial(service string) (TDE, error) { conn, err := net.Dial("tcp", service) if err != nil { return TDE{}, err } return TDE{conn}, nil }