Unified network I/O

Unified network I/O — Posix style network input/output functions.

Synopsis




GnomeVFSResult (*GnomeVFSSocketReadFunc)    (gpointer connection,
                                             gpointer buffer,
                                             GnomeVFSFileSize bytes,
                                             GnomeVFSFileSize *bytes_read,
                                             GnomeVFSCancellation *cancellation);
GnomeVFSResult (*GnomeVFSSocketWriteFunc)   (gpointer connection,
                                             gconstpointer buffer,
                                             GnomeVFSFileSize bytes,
                                             GnomeVFSFileSize *bytes_written,
                                             GnomeVFSCancellation *cancellation);
void        (*GnomeVFSSocketCloseFunc)      (gpointer connection,
                                             GnomeVFSCancellation *cancellation);
            GnomeVFSSocketImpl;
GnomeVFSSocket* gnome_vfs_socket_new        (GnomeVFSSocketImpl *impl,
                                             void *connection);
GnomeVFSResult gnome_vfs_socket_write       (GnomeVFSSocket *socket,
                                             gconstpointer buffer,
                                             int bytes,
                                             GnomeVFSFileSize *bytes_written,
                                             GnomeVFSCancellation *cancellation);
GnomeVFSResult gnome_vfs_socket_close       (GnomeVFSSocket *socket,
                                             GnomeVFSCancellation *cancellation);
GnomeVFSResult gnome_vfs_socket_read        (GnomeVFSSocket *socket,
                                             gpointer buffer,
                                             GnomeVFSFileSize bytes,
                                             GnomeVFSFileSize *bytes_read,
                                             GnomeVFSCancellation *cancellation);
void        gnome_vfs_socket_free           (GnomeVFSSocket *socket);
GnomeVFSResult gnome_vfs_socket_set_timeout (GnomeVFSSocket *socket,
                                             GTimeVal *timeout,
                                             GnomeVFSCancellation *cancellation);

Description

The GnomeVFSSocket function family unifies network I/O through functions similar to the standard POSIX read/write functions. The main difference is that all operations are cancellable through the standard GnomeVFS cancellation mechanism and you can specify a maximum amount of time an operation may take through gnome_vfs_socket_set_timeout.

Details

GnomeVFSSocketReadFunc ()

GnomeVFSResult (*GnomeVFSSocketReadFunc)    (gpointer connection,
                                             gpointer buffer,
                                             GnomeVFSFileSize bytes,
                                             GnomeVFSFileSize *bytes_read,
                                             GnomeVFSCancellation *cancellation);

connection :
buffer :
bytes :
bytes_read :
cancellation :
Returns :

GnomeVFSSocketWriteFunc ()

GnomeVFSResult (*GnomeVFSSocketWriteFunc)   (gpointer connection,
                                             gconstpointer buffer,
                                             GnomeVFSFileSize bytes,
                                             GnomeVFSFileSize *bytes_written,
                                             GnomeVFSCancellation *cancellation);

connection :
buffer :
bytes :
bytes_written :
cancellation :
Returns :

GnomeVFSSocketCloseFunc ()

void        (*GnomeVFSSocketCloseFunc)      (gpointer connection,
                                             GnomeVFSCancellation *cancellation);

connection :
cancellation :

GnomeVFSSocketImpl

typedef struct {
  GnomeVFSSocketReadFunc read;
  GnomeVFSSocketWriteFunc write;
  GnomeVFSSocketCloseFunc close;
  GnomeVFSSocketSetTimeoutFunc set_timeout;
} GnomeVFSSocketImpl;


gnome_vfs_socket_new ()

GnomeVFSSocket* gnome_vfs_socket_new        (GnomeVFSSocketImpl *impl,
                                             void *connection);

Creates a new GnomeVFS Socket using the specific implementation impl.

impl : an implementation of a socket, e.g. GnomeVFSSSL
connection : pointer to a connection object used by impl to track state (the exact nature of connection varies from implementation to implementation)
Returns : a newly created socket

gnome_vfs_socket_write ()

GnomeVFSResult gnome_vfs_socket_write       (GnomeVFSSocket *socket,
                                             gconstpointer buffer,
                                             int bytes,
                                             GnomeVFSFileSize *bytes_written,
                                             GnomeVFSCancellation *cancellation);

Write bytes bytes of data from buffer to socket.

socket : socket to write data to
buffer : data to write to the socket
bytes : number of bytes from buffer to write to socket
bytes_written : pointer to a GnomeVFSFileSize, will contain the number of bytes actually written to the socket on return.
cancellation : optional cancellation object
Returns : GnomeVFSResult indicating the success of the operation

gnome_vfs_socket_close ()

GnomeVFSResult gnome_vfs_socket_close       (GnomeVFSSocket *socket,
                                             GnomeVFSCancellation *cancellation);

Close socket, freeing any resources it may be using.

socket : the socket to be closed
cancellation : optional cancellation object
Returns : GnomeVFSResult indicating the success of the operation

gnome_vfs_socket_read ()

GnomeVFSResult gnome_vfs_socket_read        (GnomeVFSSocket *socket,
                                             gpointer buffer,
                                             GnomeVFSFileSize bytes,
                                             GnomeVFSFileSize *bytes_read,
                                             GnomeVFSCancellation *cancellation);

Read bytes bytes of data from the socket into buffer.

socket : socket to read data from
buffer : allocated buffer of at least bytes bytes to be read into
bytes : number of bytes to read from socket into buffer
bytes_read : pointer to a GnomeVFSFileSize, will contain the number of bytes actually read from the socket on return.
cancellation : optional cancellation object
Returns : GnomeVFSResult indicating the success of the operation

gnome_vfs_socket_free ()

void        gnome_vfs_socket_free           (GnomeVFSSocket *socket);

Frees the memory allocated for socket, but does not call any GnomeVFSSocketImpl function.

socket : The GnomeVFSSocket you want to free.

Since 2.8


gnome_vfs_socket_set_timeout ()

GnomeVFSResult gnome_vfs_socket_set_timeout (GnomeVFSSocket *socket,
                                             GTimeVal *timeout,
                                             GnomeVFSCancellation *cancellation);

Set a timeout of timeout. If timeout is NULL following operations will block indefinitely).

Note if you set timeout to 0 (means tv_sec and tv_usec are both 0) every following operation will return immediately. (This can be used for polling.)

socket : socket to set the timeout of
timeout : the timeout
cancellation : optional cancellation object
Returns : GnomeVFSResult indicating the success of the operation

Since 2.8