Server

Server — TCP server object

Synopsis


#include <gnet.h>


                    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.

If conn is non-NULL, the address (IP, port) of the client that established the connection can be found in the inetaddr member of the GConn structure.

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