## InfdTcpServer InfdTcpServer |

## Synopsis

    enum                InfdTcpServerStatus;
                        InfdTcpServer;
    struct              InfdTcpServerClass;
    gboolean            infd_tcp_server_bind                (InfdTcpServer *server,
                                                             GError **error);
    gboolean            infd_tcp_server_open                (InfdTcpServer *server,
                                                             GError **error);
    void                infd_tcp_server_close               (InfdTcpServer *server);

## Object Hierarchy

      GEnum
       +----InfdTcpServerStatus

      GObject
       +----InfdTcpServer

## Properties

      "io"                       InfIo*                : Read / Write / Construct Only
      "local-address"            InfIpAddress*         : Read / Write
      "local-port"               guint                 : Read / Write
      "status"                   InfdTcpServerStatus   : Read

## Signals

      "error"                                          : Run Last
      "new-connection"                                 : Run Last

## Description

## Details

### enum InfdTcpServerStatus

    typedef enum {
      INFD_TCP_SERVER_CLOSED,
      INFD_TCP_SERVER_BOUND,
      INFD_TCP_SERVER_OPEN
    } InfdTcpServerStatus;

### InfdTcpServer

    typedef struct _InfdTcpServer InfdTcpServer;

### struct InfdTcpServerClass

    struct InfdTcpServerClass {
      GObjectClass parent_class;

      /* Signals */
      void (*new_connection)(InfdTcpServer* server,
                             InfTcpConnection* connection);

      void (*error)(InfdTcpServer* server,
                    GError* error);
    };

### infd_tcp_server_bind ()

    gboolean            infd_tcp_server_bind                (InfdTcpServer *server,
                                                             GError **error);

Binds the server to the address and port given by the "local-address" and "local-port" properties. If the former is `NULL`, it will bind on all interfaces on IPv4. If the latter is 0, a random available port will be assigned. If the function fails, `FALSE` is returned and an error is set.

`server` must be in `INFD_TCP_SERVER_CLOSED` state for this function to be called.

`server` : | A InfdTcpServer.
`error` : | Location to store error information, if any.
Returns : | `TRUE` on success, or `FALSE` if an error occured.

### infd_tcp_server_open ()

    gboolean            infd_tcp_server_open                (InfdTcpServer *server,
                                                             GError **error);

Attempts to open `server`. This means binding its local address and port if not already (see `infd_tcp_server_bind()`) and accepting incoming connections.

`server` needs to be in `INFD_TCP_SERVER_CLOSED` or `INFD_TCP_SERVER_BOUND` status for this function to be called. If `server`'s status is `INFD_TCP_SERVER_CLOSED`, then `infd_tcp_server_bind()` is called before actually opening the server.

`server` : | A InfdTcpServer.
`error` : | Location to store error information.
Returns : | `TRUE` on success, or `FALSE` if an error occured.

### infd_tcp_server_close ()

    void                infd_tcp_server_close               (InfdTcpServer *server);

Closes a TCP server that is open or bound.

`server` : | A InfdTcpServer.

## Property Details

### The `"io"` property

      "io"                       InfIo*                : Read / Write / Construct Only

I/O handler.

### The `"local-address"` property

      "local-address"            InfIpAddress*         : Read / Write

Address to bind to.

### The `"local-port"` property

      "local-port"               guint                 : Read / Write

Port to bind to.

Allowed values: <= 65535

Default value: 0

### The `"status"` property

      "status"                   InfdTcpServerStatus   : Read

Status of the TCP server.

Default value: INFD_TCP_SERVER_CLOSED

## Signal Details

### The `"error"` signal

    void                user_function                      (InfdTcpServer *infdtcpserver,
                                                            gpointer       arg1,
                                                            gpointer       user_data)          : Run Last

`infdtcpserver` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.

### The `"new-connection"` signal

    void                user_function                      (InfdTcpServer    *infdtcpserver,
                                                            InfTcpConnection *arg1,
                                                            gpointer          user_data)          : Run Last

`infdtcpserver` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.