with Byte_Defs;

package Transport_Defs is

    type Network_Name is new String;
    -- Identifies one of the several networks to which the Byte_Defs
    -- may be connected, e.g.  "Milnet", "Telenet", "Bitnet", etc.

    Null_Network_Name : constant Network_Name := "";

    function Normalize (Value : Network_Name) return Network_Name;
    -- Strips leading/trailing blanks, and maps to upper case.

    function Hash (Value : Network_Name) return Natural;


    type Host_Id is new Byte_Defs.Byte_String;
    -- Identifies a machine within a network.

    Null_Host_Id : constant Host_Id (1 .. 0) := (others => 0);

    function Normalize (Value : Host_Id) return Host_Id;
    -- Strips leading 0's.

    function Hash (Value : Host_Id) return Natural;


    type Socket_Id is new Byte_Defs.Byte_String;
    -- Identifies a program within a machine.

    Null_Socket_Id : constant Socket_Id (1 .. 0) := (others => 0);

    function Normalize (Value : Socket_Id) return Socket_Id;
    -- Strips leading 0's.

    function Hash (Value : Socket_Id) return Natural;


    type Status_Code is new Integer;
    -- An encoding of the outcome of a TRANSPORT operation.

    function Image (Status : Status_Code) return String;
    -- Returns a printable string, describing the error.

    Ok : constant Status_Code := 0;
    No_Local_Resources : constant Status_Code := 1;
    No_Free_Sockets : constant Status_Code := 2;
    No_Free_Memory : constant Status_Code := 3;
    Not_Open : constant Status_Code := 4;
    Not_Connected : constant Status_Code := 5;
    Too_Many_Clients : constant Status_Code := 6;
    Timed_Out : constant Status_Code := 7;
    No_Such_Host : constant Status_Code := 8;
    Connection_Refused : constant Status_Code := 9;
    Disconnected : constant Status_Code := 10;
    Connection_Broken : constant Status_Code := 11;
    No_Hardware : constant Status_Code := 12;
    No_Such_Network : constant Status_Code := 13;
    Not_Initialized : constant Status_Code := 14;
    Not_Downloaded : constant Status_Code := 15;
    Socket_In_Use : constant Status_Code := 16;
    Access_Denied : constant Status_Code := 17;

end Transport_Defs;