PreviousUpNext

14.4.74  Socket

The standard library Socket api defines access to TCP/IP network socket functionality.

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: Posix_1003_1b.

See also: Synchronous_Socket.

See also: Threadkit_Socket.

The above information is manually maintained and may contain errors.

api {
    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 socket : 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 control : api {
                          get_debug : Socket((X, Y) ) -> Bool;
                          set_debug : (Socket((X, Y) ) , Bool) -> Void;
                          get_reuseaddr : Socket((X, Y) ) -> Bool;
                          set_reuseaddr : (Socket((X, Y) ) , Bool) -> Void;
                          get_keepalive : Socket((X, Y) ) -> Bool;
                          set_keepalive : (Socket((X, Y) ) , Bool) -> Void;
                          get_dontroute : Socket((X, Y) ) -> Bool;
                          set_dontroute : (Socket((X, Y) ) , Bool) -> Void;
                          get_linger : Socket((X, Y) ) -> Null_Or(time::Time );
                          set_linger : (Socket((X, Y) ) , Null_Or(time::Time )) -> Void;
                          get_broadcast : Socket((X, Y) ) -> Bool;
                          set_broadcast : (Socket((X, Y) ) , Bool) -> Void;
                          get_oobinline : Socket((X, Y) ) -> Bool;
                          set_oobinline : (Socket((X, Y) ) , Bool) -> Void;
                          get_sndbuf : Socket((X, Y) ) -> Int;
                          set_sndbuf : (Socket((X, Y) ) , Int) -> Void;
                          get_rcvbuf : Socket((X, Y) ) -> Int;
                          set_rcvbuf : (Socket((X, Y) ) , Int) -> Void;
                          get_type : Socket((X, Y) ) -> socket::Socket_Type;
                          get_error : Socket((X, Y) ) -> Bool;
                          get_peer_name : Socket((Y, X) ) -> Socket_Address(Y );
                          get_sock_name : Socket((Y, X) ) -> Socket_Address(Y );
                          get_nread : Socket((X, Y) ) -> Int;
                          get_atmark : Socket((X, Stream(Active )) ) -> Bool;
                      };;
    same_address : (Socket_Address(X ) , Socket_Address(X )) -> Bool;
    family_of_address : Socket_Address(X ) -> af::Address_Family;
    bind : (Socket((Y, X) ) , Socket_Address(Y )) -> Void;
    listen : (Socket((X, Stream(Passive )) ) , Int) -> Void;
    accept : Socket((X, Stream(Passive )) )
             -> (Socket((X, Stream(Active )) ) , Socket_Address(X ));
    connect : (Socket((Y, X) ) , Socket_Address(Y )) -> Void;
    close : Socket((X, Y) ) -> Void;
    Shutdown_Mode  = NO_RECVS | NO_RECVS_OR_SENDS | NO_SENDS;
    shutdown : (Socket((X, Stream(Y )) ) , Shutdown_Mode) -> Void;
    Socket_Descriptor ;
    socket_descriptor : Socket((X, Y) ) -> Socket_Descriptor;
    same_descriptor : (Socket_Descriptor , Socket_Descriptor) -> Bool;
    wait_for_io_opportunity : {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 )};
    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 : Socket((X, Y) ) -> Int;
    Out_Flags  = {don't_route:Bool,  oob:Bool};
    In_Flags  = {oob:Bool,  peek:Bool};
    send_vector : (Socket((X, Stream(Active )) )
                   , vector_slice_of_one_byte_unts::Slice)
                  -> Int;
    send_rw_vector : (Socket((X, Stream(Active )) )
                      , rw_vector_slice_of_one_byte_unts::Slice)
                     -> Int;
    send_vector' : (Socket((X, Stream(Active )) )
                    , vector_slice_of_one_byte_unts::Slice , Out_Flags)
                   -> Int;
    send_rw_vector' : (Socket((X, Stream(Active )) )
                       , rw_vector_slice_of_one_byte_unts::Slice , Out_Flags)
                      -> Int;
    send_vector_to : (Socket((X, Datagram) ) , Socket_Address(X )
                      , vector_slice_of_one_byte_unts::Slice)
                     -> Void;
    send_rw_vector_to : (Socket((X, Datagram) ) , Socket_Address(X )
                         , rw_vector_slice_of_one_byte_unts::Slice)
                        -> Void;
    send_vector_to' : (Socket((X, Datagram) ) , Socket_Address(X )
                       , vector_slice_of_one_byte_unts::Slice , Out_Flags)
                      -> Void;
    send_rw_vector_to' : (Socket((X, Datagram) ) , Socket_Address(X )
                          , rw_vector_slice_of_one_byte_unts::Slice , Out_Flags)
                         -> Void;
    receive_vector : (Socket((X, Stream(Active )) ) , Int)
                     -> vector_of_one_byte_unts::Vector;
    receive_rw_vector : (Socket((X, Stream(Active )) )
                         , rw_vector_slice_of_one_byte_unts::Slice)
                        -> Int;
    receive_vector' : (Socket((X, Stream(Active )) ) , Int , In_Flags)
                      -> vector_of_one_byte_unts::Vector;
    receive_rw_vector' : (Socket((X, Stream(Active )) )
                          , rw_vector_slice_of_one_byte_unts::Slice , In_Flags)
                         -> Int;
    receive_vector_from : (Socket((X, Datagram) ) , Int)
                          -> (vector_of_one_byte_unts::Vector , Socket_Address(Y ));
    receive_rw_vector_from : (Socket((X, Datagram) )
                              , rw_vector_slice_of_one_byte_unts::Slice)
                             -> (Int , Socket_Address(X ));
    receive_vector_from' : (Socket((X, Datagram) ) , Int , In_Flags)
                           -> (vector_of_one_byte_unts::Vector , Socket_Address(Y ));
    receive_rw_vector_from' : (Socket((X, Datagram) )
                               , rw_vector_slice_of_one_byte_unts::Slice , In_Flags)
                              -> (Int , Socket_Address(X ));
    accept_nonblocking : Socket((X, Stream(Passive )) )
                         -> Null_Or(
                              ((Socket((X, Stream(Active )) ) , Socket_Address(X )))
                              );
    connect_nonblocking : (Socket((Y, X) ) , Socket_Address(Y )) -> Bool;
    send_vector_nonblocking : (Socket((X, Stream(Active )) )
                               , vector_slice_of_one_byte_unts::Slice)
                              -> Null_Or(Int );
    send_rw_vector_nonblocking : (Socket((X, Stream(Active )) )
                                  , rw_vector_slice_of_one_byte_unts::Slice)
                                 -> Null_Or(Int );
    send_vector_nonblocking' : (Socket((X, Stream(Active )) )
                                , vector_slice_of_one_byte_unts::Slice , Out_Flags)
                               -> Null_Or(Int );
    send_rw_vector_nonblocking' : (Socket((X, Stream(Active )) )
                                   , rw_vector_slice_of_one_byte_unts::Slice , Out_Flags)
                                  -> Null_Or(Int );
    send_vector_to_nonblocking : (Socket((X, Datagram) ) , Socket_Address(X )
                                  , vector_slice_of_one_byte_unts::Slice)
                                 -> Bool;
    send_rw_vector_to_nonblocking : (Socket((X, Datagram) ) , Socket_Address(X )
                                     , rw_vector_slice_of_one_byte_unts::Slice)
                                    -> Bool;
    send_vector_to_nonblocking' : (Socket((X, Datagram) ) , Socket_Address(X )
                                   , vector_slice_of_one_byte_unts::Slice , Out_Flags)
                                  -> Bool;
    send_rw_vector_to_nonblocking' : (Socket((X, Datagram) ) , Socket_Address(X )
                                      , rw_vector_slice_of_one_byte_unts::Slice , Out_Flags)
                                     -> Bool;
    receive_vector_nonblocking : (Socket((X, Stream(Active )) ) , Int)
                                 -> Null_Or(vector_of_one_byte_unts::Vector );
    receive_rw_vector_nonblocking : (Socket((X, Stream(Active )) )
                                     , rw_vector_slice_of_one_byte_unts::Slice)
                                    -> Null_Or(Int );
    receive_vector_nonblocking' : (Socket((X, Stream(Active )) ) , Int , In_Flags)
                                  -> Null_Or(vector_of_one_byte_unts::Vector );
    receive_rw_vector_nonblocking' : (Socket((X, Stream(Active )) )
                                      , rw_vector_slice_of_one_byte_unts::Slice , In_Flags)
                                     -> Null_Or(Int );
    receive_vector_from_nonblocking : (Socket((X, Datagram) ) , Int)
                                      -> Null_Or(
                                           ((vector_of_one_byte_unts::Vector , Socket_Address(Y )))
                                           );
    receive_rw_vector_from_nonblocking : (Socket((X, Datagram) )
                                          , rw_vector_slice_of_one_byte_unts::Slice)
                                         -> Null_Or(((Int , Socket_Address(X ))) );
    receive_vector_from_nonblocking' : (Socket((X, Datagram) ) , Int , In_Flags)
                                       -> Null_Or(
                                            ((vector_of_one_byte_unts::Vector , Socket_Address(Y )))
                                            );
    receive_rw_vector_from_nonblocking' : (Socket((X, Datagram) )
                                           , rw_vector_slice_of_one_byte_unts::Slice , In_Flags)
                                          -> Null_Or(((Int , Socket_Address(X ))) );
};


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext