NAME
src/pmc/socket.pmc - Socket PMC
DESCRIPTION
The Socket PMC performs network I/O operations.
Vtable Functions
- void init()Initializes a newly created Socket object.
- PMC *clone()Create a copy of the socket handle.
- void mark()Mark active socket handle data as live.
- void destroy()Free structures.
- INTVAL get_bool()Returns whether the Socket is currently open.
Methods
- socket(INTVAL fam, INTVAL type, INTVAL proto)
- poll(INTVAL which, INTVAL sec, INTVAL usec)Watches the socket for
- sockaddr(STRING * address, INTVAL port)
- connect(PMC * address)Connects a socket object to an address.The asynchronous version takes an additional final PMC callback argument,
and only returns a status object.
When the socket operation is complete,
it invokes the callback,
passing it a status object and the socket object it was called on.
[If you want notification when a connect operation is completed,
you probably want to do something with that connected socket object.]
- close()Close a socket.
- recv()Receives a message from a connected socket object.
It returns the message in a string.The asynchronous version takes an additional final PMC callback argument,
and only returns a status object.
When the recv operation is complete,
it invokes the callback,
passing it a status object and a string containing the received message.
- send(STRING *buf)Sends a message string to a connected socket object.The asynchronous version takes an additional final PMC callback argument,
and only returns a status object.
When the send operation is complete,
it invokes the callback,
passing it a status object.
- bind(PMC *host)
- listen(INTVAL backlog)
- accept()
sec seconds and usec milliseconds.
which is a bitmask representing the states you want to watch for.
Or together 1 for readable,
two for writeable,
and four for exceptions.
sockaddr returns an object representing a socket address,
generated from a port number (integer) and an address (string).
bind binds a socket object to the port and address specified by an address object (the packed result of sockaddr).The asynchronous version takes an additional final PMC callback argument,
and only returns a status object.
When the bind operation is complete,
it invokes the callback,
passing it a status object and the socket object it was called on.
[If you want notification when a bind operation is completed,
you probably want to do something with that bound socket object.]
listen specifies that a socket object is willing to accept incoming connections.
The integer argument gives the maximum size of the queue for pending connections.There is no asynchronous version.
listen marks a set of attributes on the socket object.
accept accepts a new connection on a given socket object,
and returns a newly created socket object for the connection.The asynchronous version takes an additional final PMC callback argument,
and only returns a status object.
When the accept operation receives a new connection,
it invokes the callback,
passing it a status object and a newly created socket object for the connection.
[While the synchronous accept has to be called repeatedly in a loop (once for each connection received),
the asynchronous version is only called once,
but continues to send new connection events until the socket is closed.]