PreviousUpNext

14.4.95  Socket

The standard library Socket api defines access to TCP/IP network socket functionality for multithreaded Mythryl programs.

The Socket api is implemented by the socket package.

The Socket api source code is in src/lib/std/src/socket/socket.api.

See also: Socket_Junk.

See also: Posixlib.

See also: Synchronous_Socket.

See also: Socket__Premicrothread. The above information is manually maintained and may contain errors.

api {
    Mailop X = Mailop(X );
    Threadkit_Socket (X, Y);
    Socket_Address X;
    Datagram;
    Stream X;
    Passive;
    Active;
        package af
          : api {
                Address_Family  = Address_Family;
                list : Void -> List(((String , Address_Family)) );
                to_string : Address_Family -> String;
                from_string : String -> Null_Or(Address_Family );};;
        package typ
          : api {
                eqtype Socket_Type;
                stream : Socket_Type;
                datagram : Socket_Type;
                list : Void -> List(((String , Socket_Type)) );
                to_string : Socket_Type -> String;
                from_string : String -> Null_Or(Socket_Type );};;
        package ctl
          : api {
                get_debug : Threadkit_Socket((X, Y)) -> Bool;
                set_debug : (Threadkit_Socket((X, Y)) , Bool) -> Void;
                get_reuseaddr : Threadkit_Socket((X, Y)) -> Bool;
                set_reuseaddr : (Threadkit_Socket((X, Y)) , Bool) -> Void;
                get_keepalive : Threadkit_Socket((X, Y)) -> Bool;
                set_keepalive : (Threadkit_Socket((X, Y)) , Bool) -> Void;
                get_dontroute : Threadkit_Socket((X, Y)) -> Bool;
                set_dontroute : (Threadkit_Socket((X, Y)) , Bool) -> Void;
                get_linger : Threadkit_Socket((X, Y)) -> Null_Or(time::Time );
                set_linger : (Threadkit_Socket((X, Y)) , Null_Or(time::Time )) -> Void;
                get_broadcast : Threadkit_Socket((X, Y)) -> Bool;
                set_broadcast : (Threadkit_Socket((X, Y)) , Bool) -> Void;
                get_oobinline : Threadkit_Socket((X, Y)) -> Bool;
                set_oobinline : (Threadkit_Socket((X, Y)) , Bool) -> Void;
                get_sndbuf : Threadkit_Socket((X, Y)) -> Int;
                set_sndbuf : (Threadkit_Socket((X, Y)) , Int) -> Void;
                get_rcvbuf : Threadkit_Socket((X, Y)) -> Int;
                set_rcvbuf : (Threadkit_Socket((X, Y)) , Int) -> Void;
                get_type : Threadkit_Socket((X, Y)) -> typ::Socket_Type;
                get_error : Threadkit_Socket((X, Y)) -> Bool;
                get_peer_name : Threadkit_Socket((Y, X)) -> Socket_Address(Y );
                get_sock_name : Threadkit_Socket((Y, X)) -> Socket_Address(Y );
                get_nread : Threadkit_Socket((X, Y)) -> Int;
                get_atmark : Threadkit_Socket((X, Stream(Active ))) -> Bool;};;
    same_address : (Socket_Address(X ) , Socket_Address(X )) -> Bool;
    family_of_address : Socket_Address(X ) -> af::Address_Family;
    bind : (Threadkit_Socket((Y, X)) , Socket_Address(Y )) -> Void;
    listen : (Threadkit_Socket((X, Stream(Passive ))) , Int) -> Void;
        accept :
            Threadkit_Socket((X, Stream(Passive )))
            ->
            (Threadkit_Socket((X, Stream(Active ))) , Socket_Address(X ));
    connect : (Threadkit_Socket((Y, X)) , Socket_Address(Y )) -> Void;
    close : Threadkit_Socket((X, Y)) -> Void;
    Shutdown_Mode  = NO_RECVS | NO_RECVS_OR_SENDS | NO_SENDS;
    shutdown : (Threadkit_Socket((X, Stream(Y ))) , Shutdown_Mode) -> Void;
    Socket_Descriptor;
    socket_descriptor : Threadkit_Socket((X, Y)) -> Socket_Descriptor;
    same_descriptor : (Socket_Descriptor , Socket_Descriptor) -> Bool;
        select :{oobdable:List(Socket_Descriptor ), readable:List(Socket_Descriptor ), timeout:Null_Or(time::Time ),
                writable:List(Socket_Descriptor )}
            ->  {oobdable:List(Socket_Descriptor ), readable:List(Socket_Descriptor ),
                writable:List(Socket_Descriptor )};
    io_descriptor : Threadkit_Socket((X, Y)) -> Int;
    Out_Flags  = {don't_route:Bool, oob:Bool};
    In_Flags  = {oob:Bool, peek:Bool};
        send_vector :
        (Threadkit_Socket((X, Stream(Active ))) , vector_slice_of_one_byte_unts::Slice) -> Int;
        send_rw_vector :
        (Threadkit_Socket((X, Stream(Active ))) , rw_vector_slice_of_one_byte_unts::Slice) -> Int;
        send_vector' :
        (Threadkit_Socket((X, Stream(Active ))) , vector_slice_of_one_byte_unts::Slice , Out_Flags) -> Int;
        send_rw_vector' :
            (Threadkit_Socket((X, Stream(Active ))) , rw_vector_slice_of_one_byte_unts::Slice , Out_Flags)
            ->
            Int;
        send_vector_to :
            (Threadkit_Socket((X, Datagram)) , Socket_Address(X ) , vector_slice_of_one_byte_unts::Slice)
            ->
            Void;
        send_rw_vector_to :
            (Threadkit_Socket((X, Datagram)) , Socket_Address(X ) , rw_vector_slice_of_one_byte_unts::Slice)
            ->
            Void;
        send_vector_to' :
            (   Threadkit_Socket((X, Datagram)) , Socket_Address(X ) , vector_slice_of_one_byte_unts::Slice ,
                Out_Flags
            )
            ->
            Void;
        send_rw_vector_to' :
            (   Threadkit_Socket((X, Datagram)) , Socket_Address(X ) , rw_vector_slice_of_one_byte_unts::Slice ,
                Out_Flags
            )
            ->
            Void;
    receive_vector : (Threadkit_Socket((X, Stream(Active ))) , Int) -> vector_of_one_byte_unts::Vector;
        receive_rw_vector :
        (Threadkit_Socket((X, Stream(Active ))) , rw_vector_slice_of_one_byte_unts::Slice) -> Int;
        receive_vector' :
        (Threadkit_Socket((X, Stream(Active ))) , Int , In_Flags) -> vector_of_one_byte_unts::Vector;
        receive_rw_vector' :
        (Threadkit_Socket((X, Stream(Active ))) , rw_vector_slice_of_one_byte_unts::Slice , In_Flags) -> Int;
        receive_vector_from :
        (Threadkit_Socket((X, Datagram)) , Int) -> (vector_of_one_byte_unts::Vector , Socket_Address(Y ));
        receive_rw_vector_from :
            (Threadkit_Socket((X, Datagram)) , rw_vector_slice_of_one_byte_unts::Slice)
            ->
            (Int , Socket_Address(X ));
        receive_vector_from' :
            (Threadkit_Socket((X, Datagram)) , Int , In_Flags)
            ->
            (vector_of_one_byte_unts::Vector , Socket_Address(Y ));
        receive_rw_vector_from' :
            (Threadkit_Socket((X, Datagram)) , rw_vector_slice_of_one_byte_unts::Slice , In_Flags)
            ->
            (Int , Socket_Address(X ));
    receive_vektor : (Int((_, _)) , Int) -> vector_of_one_byte_unts::Vector;
    receive_vektor' : (Int((_, _)) , Int) -> Mailop(vector_of_one_byte_unts::Vector );
    recv_v__syscall : (Int , Int , Bool , Bool) -> vector_of_one_byte_unts::Vector;
        set__recv_v__ref :
                (   {fun_name:String, io_call:(Int , Int , Bool , Bool) -> vector_of_one_byte_unts::Vector,
                    lib_name:String}
                ->
                (Int , Int , Bool , Bool) -> vector_of_one_byte_unts::Vector
                )
            ->
            Void;
    recv_v_mailop__syscall : (Int , Int , Bool , Bool) -> Mailop(vector_of_one_byte_unts::Vector );
        set__recv_v_mailop__ref :
                (   {fun_name:String, io_call:(Int , Int , Bool , Bool) -> vector_of_one_byte_unts::Vector,
                    lib_name:String}
                ->
                (Int , Int , Bool , Bool) -> Mailop(vector_of_one_byte_unts::Vector )
                )
            ->
            Void;};


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext