Server

Server — TCP server object

Synopsis




            GServer;
void        (*GServerFunc)                  (GServer *server,
                                             GConn *conn,
                                             gpointer user_data);
GServer*    gnet_server_new                 (const GInetAddr *iface,
                                             gint port,
                                             GServerFunc func,
                                             gpointer user_data);
void        gnet_server_delete              (GServer *server);
void        gnet_server_ref                 (GServer *server);
void        gnet_server_unref               (GServer *server);

Description

A GServer represents a TCP server. GServer is a thin wrapper around a TCP server socket. To create a new GServer, call gnet_server_new(). One of the arguments is a callback function that is called with a new GConn whenever a new client connects. Remember to call gnet_conn_set_callback() on the new GConn to set the GConn callback. To delete a GServer, call gnet_server_delete().

See also GConn and the echoserver-gserver example.

Details

GServer

typedef struct {
  GInetAddr* 	iface;
  gint		port;

  GTcpSocket* 	socket;

  guint 	ref_count;

  GServerFunc	func;
  gpointer	user_data;
} GServer;

GServer is a high-level interface to a TCP server socket. The callback is called with a GConn whenever a new connection is made.

GInetAddr *iface; interface address
gint port; port number
GTcpSocket *socket; TCP server socket
guint ref_count; [private]
GServerFunc func; callback function
gpointer user_data; user data for callback

GServerFunc ()

void        (*GServerFunc)                  (GServer *server,
                                             GConn *conn,
                                             gpointer user_data);

Callback for gnet_server_new(). When a client connects, this callback is called with a new connection. If the server fails, this callback is called with conn set to NULL. The callback is not called again.

server : server
conn : new connection (or NULL if error)
user_data : user data specified in gnet_server_new()

gnet_server_new ()

GServer*    gnet_server_new                 (const GInetAddr *iface,
                                             gint port,
                                             GServerFunc func,
                                             gpointer user_data);

Creates a new GServer object representing a server. Usually, iface is set to NULL to bind to all interfaces and port is a specific number. The callback is called whenever a new connection arrives or if there is a server error. The callback is not called again after a server error.

iface : interface to bind to (NULL for all interfaces)
port : port to bind to (0 for an arbitrary port)
func : callback to call when a connection is accepted
user_data : data to pass to callback
Returns : a new GServer.

gnet_server_delete ()

void        gnet_server_delete              (GServer *server);

Closes and deletes a GServer.

server : GServer to delete.

gnet_server_ref ()

void        gnet_server_ref                 (GServer *server);

Adds a reference to a GServer.

server : a GServer

gnet_server_unref ()

void        gnet_server_unref               (GServer *server);

Removes a reference from a GServer. A GServer is deleted when the reference count reaches 0.

server : a GServer