![]() |
![]() |
![]() |
GnomeVFS - Filesystem Abstraction library | ![]() |
---|---|---|---|---|
Top | Description |
typedef GnomeVFSSocket; GnomeVFSSocketImpl; GnomeVFSResult (*GnomeVFSSocketReadFunc) (gpointer connection
,gpointer buffer
,GnomeVFSFileSize bytes
,GnomeVFSFileSize *bytes_read_out
,GnomeVFSCancellation *cancellation
); GnomeVFSResult (*GnomeVFSSocketWriteFunc) (gpointer connection
,gconstpointer buffer
,GnomeVFSFileSize bytes
,GnomeVFSFileSize *bytes_written_out
,GnomeVFSCancellation *cancellation
); void (*GnomeVFSSocketCloseFunc) (gpointer connection
,GnomeVFSCancellation *cancellation
); GnomeVFSResult (*GnomeVFSSocketSetTimeoutFunc) (gpointer connection
,GTimeVal *timeout
,GnomeVFSCancellation *cancellation
); 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
);
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.
typedef struct GnomeVFSSocket GnomeVFSSocket;
An handle to a generic unbuffered socket connection established with
gnome_vfs_socket_new()
.
The specifics of the underlying socket implementation are hidden inside the GnomeVFSSocketImpl passed on construction.
If you need buffered I/O, you will also have to create a GnomeVFSSocketBuffer.
typedef struct { GnomeVFSSocketReadFunc read; GnomeVFSSocketWriteFunc write; GnomeVFSSocketCloseFunc close; GnomeVFSSocketSetTimeoutFunc set_timeout; } GnomeVFSSocketImpl;
An implementation of a generic socket (i.e. of GnomeVFSSocket) encapsulating the details of how socket I/O works.
Please refer to GnomeVFSSSL for a sample implementation of this interface.
GnomeVFSSocketReadFunc |
A GnomeVFSSocketReadFunc function used for reading from a socket. |
GnomeVFSSocketWriteFunc |
A GnomeVFSSocketWriteFunc function used for writing to a socket. |
GnomeVFSSocketCloseFunc |
A GnomeVFSSocketCloseFunc function used for closing an open socket. |
GnomeVFSSocketSetTimeoutFunc |
A GnomeVFSSocketSetTimeoutFunc function used for setting a socket's timeout. |
GnomeVFSResult (*GnomeVFSSocketReadFunc) (gpointer connection
,gpointer buffer
,GnomeVFSFileSize bytes
,GnomeVFSFileSize *bytes_read_out
,GnomeVFSCancellation *cancellation
);
This is a generic prototype for a function that reads from a socket.
This function is implemented by a GnomeVFSSocketImpl, and it defines how data
should be written to a buffer using the gnome_vfs_socket_read()
function which hides the socket implementation details.
|
The socket connection. |
|
A connection buffer. |
|
The bytes to read. |
|
The bytes that were read (out). |
|
A cancellation handle that allows clients to cancel the read operation. |
Returns : |
A GnomeVFSResult signalling the result of the read operation. |
GnomeVFSResult (*GnomeVFSSocketWriteFunc) (gpointer connection
,gconstpointer buffer
,GnomeVFSFileSize bytes
,GnomeVFSFileSize *bytes_written_out
,GnomeVFSCancellation *cancellation
);
This is a generic prototype for a function that writes to a socket.
This function is implemented by a GnomeVFSSocketImpl, and it defines how data
should be written to a buffer using the gnome_vfs_socket_write()
function which hides the socket implementation details.
|
The socket connection. |
|
A connection buffer. |
|
The bytes to write. |
|
The bytes that were written. |
|
A cancellation handle that allows clients to cancel the write operation. |
Returns : |
A GnomeVFSResult signalling the result of the write operation. |
void (*GnomeVFSSocketCloseFunc) (gpointer connection
,GnomeVFSCancellation *cancellation
);
This is a generic prototype for a function that closes a socket.
This function is implemented by a GnomeVFSSocketImpl, and it defines how an
open socket that was previously opened by gnome_vfs_socket_new()
should be closed using the gnome_vfs_socket_set_timeout()
function which
hides the socket implementation details.
|
A cancellation handle that allows clients to cancel the write operation. |
GnomeVFSResult (*GnomeVFSSocketSetTimeoutFunc) (gpointer connection
,GTimeVal *timeout
,GnomeVFSCancellation *cancellation
);
This is a generic prototype for a function that sets a socket timeout.
This function is implemented by a GnomeVFSSocketImpl, and it defines how
a socket timeout should be set using
should be closed by the gnome_vfs_socket_close()
function which
hides the socket implementation details.
|
A cancellation handle that allows clients to cancel the write operation. |
Returns : |
A GnomeVFSResult signalling the result of the write operation. |
GnomeVFSSocket * gnome_vfs_socket_new (GnomeVFSSocketImpl *impl
,void *connection
);
Creates a new GnomeVFSSocket using the specific implementation
impl
.
|
an implementation of socket, e.g. GnomeVFSSSL. |
|
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. |
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 to write data to. |
|
data to write to the socket. |
|
number of bytes from buffer to write to socket . |
|
pointer to a GnomeVFSFileSize, will contain
the number of bytes actually written to the socket on return. |
|
optional cancellation object. |
Returns : |
GnomeVFSResult indicating the success of the operation. |
GnomeVFSResult gnome_vfs_socket_close (GnomeVFSSocket *socket
,GnomeVFSCancellation *cancellation
);
Close socket
, freeing any resources it may be using.
|
the socket to be closed. |
|
optional cancellation object. |
Returns : |
GnomeVFSResult indicating the success of the operation. |
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 to read data from. |
|
allocated buffer of at least bytes bytes to be read into. |
|
number of bytes to read from socket into buffer . |
|
pointer to a GnomeVFSFileSize, will contain the number of bytes actually read from the socket on return. |
|
optional cancellation object. |
Returns : |
GnomeVFSResult indicating the success of the operation. |
void gnome_vfs_socket_free (GnomeVFSSocket *socket
);
Frees the memory allocated for socket
, but does
not call any GnomeVFSSocketImpl function.
|
The GnomeVFSSocket you want to free. |
Since 2.8
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 to set the timeout of. |
|
the timeout. |
|
optional cancellation object. |
Returns : |
GnomeVFSResult indicating the success of the operation. |
Since 2.8