conn.h

来自「GNet是一个简单的网络库。它是目标定向的」· C头文件 代码 · 共 166 行

H
166
字号
/* GNet - Networking library * Copyright (C) 2000  David Helder * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA  02111-1307, USA. */#ifndef _GNET_CONN_H#define _GNET_CONN_H/*    This module is experimental, buggy, and unstable.  Use at your own   risk.  To use this module, define GNET_EXPERIMENTAL before   including gnet.h.*/#ifdef GNET_EXPERIMENTAL #include <glib.h>#include "tcp.h"#include "iochannel.h"#ifdef __cplusplusextern "C" {#endif /* __cplusplus */typedef struct _GConn GConn;/** *   GConnStatus *  *   Status of #GConn, passed by #GConnFunc. * **/typedef enum {  GNET_CONN_STATUS_CONNECT,  GNET_CONN_STATUS_CLOSE,  GNET_CONN_STATUS_READ,  GNET_CONN_STATUS_WRITE,  GNET_CONN_STATUS_TIMEOUT,  GNET_CONN_STATUS_ERROR} GConnStatus;/** *  GConnFunc *  @conn: Connection *  @status: Connection status *  @buffer: Buffer (if a read or write) *  @length: Length of the buffer *  @user_data: User data specified in gnet_conn_new() *  *  Callback for gnet_conn_new().  When g_conn_connect() completes, *  the callback is called with status CONNECT.  If the connection *  closes during a read, the callback is called with status CLOSE *  (and a NULL buffer).  If gnet_conn_read() or another read function *  has data available, the callback is called with status READ and *  the buffer is set.  If gnet_conn_read() was called with a NULL *  buffer, that buffer was allocated by GNet but is callee owned.  If *  gnet_conn_read() was called with a non-NULL buffer, the buffer was *  allocated by the gnet_conn_read() caller (so is GConnFunc callee *  owned).  The callee should return TRUE if they want to continue *  reading data.  If gnet_conn_write() completes, the callback is *  called with status WRITE and the buffer is set to the buffer *  passed to gnet_conn_write().  If the gnet_conn_timeout() timer *  expires, the callback is called with status TIMEOUT.  If an error *  ever occurs, the callback is called with status ERROR. * *  Returns: Callee should return TRUE if the status is READ and they *  want to continue reading data.  FALSE otherwise. * **/typedef gboolean (*GConnFunc)(GConn* conn, GConnStatus status, 			      gchar* buffer, gint length,			      gpointer user_data);struct _GConn{  gchar*			hostname;  gint				port;  guint				ref_count;  GTcpSocketConnectAsyncID 	connect_id;  GTcpSocketNewAsyncID 		new_id;  GTcpSocket* 			socket;  GInetAddr*			inetaddr;  GIOChannel* 			iochannel;  guint				read_watch;	/* DEPRICATED */  guint				write_watch;	/* DEPRICATED */  guint				err_watch;	/* DEPRICATED */  GNetIOChannelWriteAsyncID 	write_id;  GList*			queued_writes;  GNetIOChannelReadAsyncID  	read_id;  guint				timer;  GConnFunc			func;  gpointer			user_data;};/* ********** */GConn*     gnet_conn_new (const gchar* hostname, gint port, 			  GConnFunc func, gpointer user_data);GConn*     gnet_conn_new_inetaddr (const GInetAddr* inetaddr, 				   GConnFunc func, gpointer user_data);void 	   gnet_conn_delete (GConn* conn, gboolean delete_buffers);	      void	   gnet_conn_ref (GConn* conn);void	   gnet_conn_unref (GConn* conn, gboolean delete_buffers);	      /* ********** */void	   gnet_conn_connect (GConn* conn, guint timeout);void	   gnet_conn_disconnect (GConn* conn, gboolean delete_buffers);	      gboolean   gnet_conn_is_connected (const GConn* conn);	      /* ********** */void	   gnet_conn_read (GConn* conn, gchar* buffer, 			   guint length, guint timeout,			   gboolean read_one_byte_at_a_time,			   GNetIOChannelReadAsyncCheckFunc check_func, 			   gpointer check_user_data);void	   gnet_conn_readany (GConn* conn, gchar* buffer, 			      guint length, guint timeout);void	   gnet_conn_readline (GConn* conn, gchar* buffer, 			       guint length, guint timeout);void	   gnet_conn_write (GConn* conn, gchar* buffer, 			    gint length, guint timeout);void	   gnet_conn_timeout (GConn* conn, guint timeout);#ifdef __cplusplus}#endif				/* __cplusplus */#endif /* GNET_EXPERIMENTAL */#endif /* _GNET_CONN_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?