a geicko-2 based round robin ranking system designed to test c++ battleship submissions
battleship.dunkirk.sh
1// Package sshfx implements the wire encoding for secsh-filexfer as described in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt
2package sshfx
3
4// PacketMarshaller narrowly defines packets that will only be transmitted.
5//
6// ExtendedPacket types will often only implement this interface,
7// since decoding the whole packet body of an ExtendedPacket can only be done dependent on the ExtendedRequest field.
8type PacketMarshaller interface {
9 // MarshalPacket is the primary intended way to encode a packet.
10 // The request-id for the packet is set from reqid.
11 //
12 // An optional buffer may be given in b.
13 // If the buffer has a minimum capacity, it shall be truncated and used to marshal the header into.
14 // The minimum capacity for the packet must be a constant expression, and should be at least 9.
15 //
16 // It shall return the main body of the encoded packet in header,
17 // and may optionally return an additional payload to be written immediately after the header.
18 //
19 // It shall encode in the first 4-bytes of the header the proper length of the rest of the header+payload.
20 MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error)
21}
22
23// Packet defines the behavior of a full generic SFTP packet.
24//
25// InitPacket, and VersionPacket are not generic SFTP packets, and instead implement (Un)MarshalBinary.
26//
27// ExtendedPacket types should not iplement this interface,
28// since decoding the whole packet body of an ExtendedPacket can only be done dependent on the ExtendedRequest field.
29type Packet interface {
30 PacketMarshaller
31
32 // Type returns the SSH_FXP_xy value associated with the specific packet.
33 Type() PacketType
34
35 // UnmarshalPacketBody decodes a packet body from the given Buffer.
36 // It is assumed that the common header values of the length, type and request-id have already been consumed.
37 //
38 // Implementations should not alias the given Buffer,
39 // instead they can consider prepopulating an internal buffer as a hint,
40 // and copying into that buffer if it has sufficient length.
41 UnmarshalPacketBody(buf *Buffer) error
42}
43
44// ComposePacket converts returns from MarshalPacket into an equivalent call to MarshalBinary.
45func ComposePacket(header, payload []byte, err error) ([]byte, error) {
46 return append(header, payload...), err
47}
48
49// Default length values,
50// Defined in draft-ietf-secsh-filexfer-02 section 3.
51const (
52 DefaultMaxPacketLength = 34000
53 DefaultMaxDataLength = 32768
54)