GskStreamFd

GskStreamFd — a file-descriptor based GskStream

Synopsis




#define     GSK_STREAM_FD_GET_FD            (stream)
            GskStreamFd;
enum        GskStreamFdFlags;
GskStream*  gsk_stream_fd_new               (gint fd,
                                             GskStreamFdFlags flags);
GskStream*  gsk_stream_fd_new_auto          (gint fd);
GskStreamFdFlags gsk_stream_fd_flags_guess  (gint fd);
gboolean    gsk_stream_fd_pipe              (GskStream **read_side_out,
                                             GskStream **write_side_out,
                                             GError **error);
GskStream*  gsk_stream_fd_new_connecting    (gint fd);
GskStream*  gsk_stream_fd_new_read_file     (const char *filename,
                                             GError **error);
GskStream*  gsk_stream_fd_new_write_file    (const char *filename,
                                             gboolean may_create,
                                             gboolean should_truncate,
                                             GError **error);
GskStream*  gsk_stream_fd_new_create_file   (const char *filename,
                                             gboolean may_exist,
                                             GError **error);
GskStream*  gsk_stream_fd_new_open          (const char *filename,
                                             guint open_flags,
                                             guint permission,
                                             GError **error);
gboolean    gsk_stream_fd_duplex_pipe       (GskStream **side_a_out,
                                             GskStream **side_b_out,
                                             GError **error);
gboolean    gsk_stream_fd_duplex_pipe_fd    (GskStream **side_a_out,
                                             int *side_b_fd_out,
                                             GError **error);
GskStream*  gsk_stream_fd_new_from_symbolic_address
                                            (GskSocketAddressSymbolic *symbolic,
                                             GError **error);

Object Hierarchy


  GObject
   +----GskIO
         +----GskStream
               +----GskStreamFd

Properties


  "file-descriptor"      GskFd                 : Read / Write / Construct Only
  "is-pollable"          gboolean              : Read / Write / Construct Only
  "is-readable"          gboolean              : Read / Write / Construct Only
  "is-writable"          gboolean              : Read / Write / Construct Only

Description

a GskStream that can be used for files and sockets.

Details

GSK_STREAM_FD_GET_FD()

#define GSK_STREAM_FD_GET_FD(stream)	(GSK_STREAM_FD (stream)->fd)

Get underlying file-descriptor from a GskStreamFd.

stream : the stream.

GskStreamFd

typedef struct _GskStreamFd GskStreamFd;

An instance of a file-descriptor based stream.


enum GskStreamFdFlags

typedef enum
{
  GSK_STREAM_FD_IS_READABLE     = (1<<0),
  GSK_STREAM_FD_IS_WRITABLE     = (1<<1),
  GSK_STREAM_FD_IS_READWRITE    = GSK_STREAM_FD_IS_READABLE
                                | GSK_STREAM_FD_IS_WRITABLE,
  GSK_STREAM_FD_IS_POLLABLE     = (1<<2),
  GSK_STREAM_FD_IS_SHUTDOWNABLE = (1<<3),
  GSK_STREAM_FD_FOR_NEW_SOCKET  = GSK_STREAM_FD_IS_READWRITE
                                | GSK_STREAM_FD_IS_POLLABLE
			        | GSK_STREAM_FD_IS_SHUTDOWNABLE
} GskStreamFdFlags;


gsk_stream_fd_new ()

GskStream*  gsk_stream_fd_new               (gint fd,
                                             GskStreamFdFlags flags);

Create a new GskStream based on an already open file descriptor.

fd : the raw file descriptor.
flags : information about how to use the file descriptor.
Returns : a new GskStream

gsk_stream_fd_new_auto ()

GskStream*  gsk_stream_fd_new_auto          (gint fd);

Try to guess the nature of the file-descriptor using fstat(), isatty().

fd : the file-descriptor to use as the basis for a stream.
Returns : a new GskStream which will free fd when it is closed.

gsk_stream_fd_flags_guess ()

GskStreamFdFlags gsk_stream_fd_flags_guess  (gint fd);

fd :
Returns :

gsk_stream_fd_pipe ()

gboolean    gsk_stream_fd_pipe              (GskStream **read_side_out,
                                             GskStream **write_side_out,
                                             GError **error);

Call the pipe(2) system call to make a half-duplex connection between two streams. The newly allocated streams are returned.

read_side_out : place to store a reference to a newly allocated readable stream-fd.
write_side_out : place to store a reference to a newly allocated writable stream-fd.
error : optional error return value.
Returns : whether the streams were allocated successfully.

gsk_stream_fd_new_connecting ()

GskStream*  gsk_stream_fd_new_connecting    (gint fd);

Create a new GskStream based on a socket which is still in the process of connecting.

fd : the raw file descriptor.
Returns : a new GskStream

gsk_stream_fd_new_read_file ()

GskStream*  gsk_stream_fd_new_read_file     (const char *filename,
                                             GError **error);

Open a file for reading as a GskStream. The stream is not writable.

filename : file to open readonly.
error : optional error return value.
Returns : a new GskStream

gsk_stream_fd_new_write_file ()

GskStream*  gsk_stream_fd_new_write_file    (const char *filename,
                                             gboolean may_create,
                                             gboolean should_truncate,
                                             GError **error);

Open a file for writing as a GskStream. The stream is not readable.

filename : file to open write-only.
may_create : whether creating the filename is acceptable.
should_truncate : whether an existing filename should be truncated.
error : optional error return value.
Returns : a new GskStream

gsk_stream_fd_new_create_file ()

GskStream*  gsk_stream_fd_new_create_file   (const char *filename,
                                             gboolean may_exist,
                                             GError **error);

Create a file for writing as a GskStream. The stream is not readable.

filename : file to open write-only.
may_exist : whether file may exist.
error : optional error return value.
Returns : a new GskStream

gsk_stream_fd_new_open ()

GskStream*  gsk_stream_fd_new_open          (const char *filename,
                                             guint open_flags,
                                             guint permission,
                                             GError **error);

Open a file as a GskStream; this interface strongly reflects its underlying open(2) implementation. Using gsk_stream_fd_new_read_file() and gsk_stream_fd_new_write_file() may be more portable ultimately.

filename : file to open or create (depending on open_flags)
open_flags : same as the second argument to open(2).
permission : permissions if creating a new file.
error : optional error return value.
Returns : a new GskStream

gsk_stream_fd_duplex_pipe ()

gboolean    gsk_stream_fd_duplex_pipe       (GskStream **side_a_out,
                                             GskStream **side_b_out,
                                             GError **error);

Create a pair of file-descriptors that are connected to eachother, and make GskStreamFds around them.

side_a_out : place to store a reference to a newly allocated stream-fd.
side_b_out : place to store a reference to a newly allocated stream-fd.
error : optional error return value.
Returns : whether the streams were allocated successfully.

gsk_stream_fd_duplex_pipe_fd ()

gboolean    gsk_stream_fd_duplex_pipe_fd    (GskStream **side_a_out,
                                             int *side_b_fd_out,
                                             GError **error);

Create a pair of file-descriptors that are connected to eachother, and make a GskStreamFd around one of them.

side_a_out : place to store a reference to a newly allocated stream-fd.
side_b_fd_out : place to store a new file-descriptor.
error : optional error return value.
Returns : whether the file-descriptors were allocated successfully.

gsk_stream_fd_new_from_symbolic_address ()

GskStream*  gsk_stream_fd_new_from_symbolic_address
                                            (GskSocketAddressSymbolic *symbolic,
                                             GError **error);

Create a stream connecting to a symbolic socket-address.

symbolic : a symbolic address. name resolution will begin immediately.
error : optional error return value.
Returns : a new GskStream

Property Details

The "file-descriptor" property

  "file-descriptor"      GskFd                 : Read / Write / Construct Only

for reading and/or writing.


The "is-pollable" property

  "is-pollable"          gboolean              : Read / Write / Construct Only

whether the file descriptor is pollable.

Default value: FALSE


The "is-readable" property

  "is-readable"          gboolean              : Read / Write / Construct Only

is the FD readable.

Default value: FALSE


The "is-writable" property

  "is-writable"          gboolean              : Read / Write / Construct Only

is the FD writable.

Default value: FALSE