// --------------------------------------------------------------------------------------------------------------
//
//   AmiGnut 0.9.0 Network Defines/Structures Header
//
//   Copyright (C) 2001 Jay Cornwall <jay@realfantasy.demon.co.uk>
//
//   This is free software distributed under the terms of the GNU Public License. See the file License.txt for
//   details.
//
// --------------------------------------------------------------------------------------------------------------

#define CONNECTION_INCOMING 0
#define CONNECTION_OUTGOING 1

#define HANDSHAKE_INCOMING  0
#define HANDSHAKE_OUTGOING  1

#define PAYLOAD_PING        0x00
#define PAYLOAD_PONG        0x01
#define PAYLOAD_PUSH        0x40
#define PAYLOAD_QUERY       0x80
#define PAYLOAD_QUERYHIT    0x81

#define STATUS_CONNECTING   0
#define STATUS_CONNECTED    1
#define STATUS_CLOSED       2
#define STATUS_DROPPED      3
#define STATUS_FAILED       4
#define STATUS_FLOODED      5
#define STATUS_OUTOFSYNC    6

#define TIME_BRANCH         5
#define TIME_CONNECTTIMEOUT 10
#define TIME_KILL           5

// --------------------------------------------------------------------------------------------------------------

struct ConnectionNode
{
    struct MinNode c_MinNode;
    LONG c_Socket;
    struct in_addr c_Addr;
    char c_AddrStr[16];
    char c_PortStr[6];
    UBYTE c_Status;
    UBYTE c_Type;
    UBYTE c_ConnectTimeout;
    UBYTE c_KillTimeout;
    UBYTE *c_RecvBuffer;
    ULONG c_BytesRead;
    UBYTE *c_SendBuffer;
    ULONG c_BytesToSend;
    UWORD c_FloodLevel;
};

struct GnutellaDescriptor
{
    UBYTE *gd_ID;
    UBYTE gd_Payload;
    BYTE gd_TTL;
    BYTE gd_Hops;
    ULONG gd_Length;
    UBYTE *gd_Data;
};

struct HostCacheNode
{
    struct MinNode hc_MinNode;
    struct in_addr hc_Addr;
    UWORD hc_Port;
};

// --------------------------------------------------------------------------------------------------------------

// End Of Text
