Main Page | Modules | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

netconnection.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile: netconnection.h,v $
00003                              -------------------
00004     cvs         : $Id: netconnection.h,v 1.18 2005/08/04 04:55:46 aquamaniac Exp $
00005     begin       : Mon Feb 09 2004
00006     copyright   : (C) 2004 by Martin Preuss
00007     email       : martin@libchipcard.de
00008 
00009  ***************************************************************************
00010  *                                                                         *
00011  *   This library is free software; you can redistribute it and/or         *
00012  *   modify it under the terms of the GNU Lesser General Public            *
00013  *   License as published by the Free Software Foundation; either          *
00014  *   version 2.1 of the License, or (at your option) any later version.    *
00015  *                                                                         *
00016  *   This library is distributed in the hope that it will be useful,       *
00017  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00018  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00019  *   Lesser General Public License for more details.                       *
00020  *                                                                         *
00021  *   You should have received a copy of the GNU Lesser General Public      *
00022  *   License along with this library; if not, write to the Free Software   *
00023  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston,                 *
00024  *   MA  02111-1307  USA                                                   *
00025  *                                                                         *
00026  ***************************************************************************/
00027 
00028 
00029 #ifndef GWEN_NETCONNECTION_H
00030 #define GWEN_NETCONNECTION_H
00031 
00039 
00040 
00047 #define GWEN_NETCONNECTION_WAIT_READ  0x0001
00048 
00049 #define GWEN_NETCONNECTION_WAIT_WRITE 0x0002
00050 
00061 #define GWEN_NETCONNECTION_TIMEOUT_NONE    (0)
00062 
00063 #define GWEN_NETCONNECTION_TIMEOUT_FOREVER (-1)
00064 
00071 #include <gwenhywfar/gwenhywfarapi.h>
00072 #ifdef __cplusplus
00073 extern "C" {
00074 #endif
00075 typedef struct GWEN_NETCONNECTION GWEN_NETCONNECTION;
00076 #ifdef __cplusplus
00077 }
00078 #endif
00079 
00080 #include <gwenhywfar/misc.h>
00081 #include <gwenhywfar/inherit.h>
00082 #include <gwenhywfar/nettransport.h>
00083 #include <gwenhywfar/netmsg.h>
00084 #include <gwenhywfar/ringbuffer.h>
00085 
00086 #define GWEN_NETCONNECTION_CHECK_WANTREAD  0x0001
00087 #define GWEN_NETCONNECTION_CHECK_WANTWRITE 0x0002
00088 
00089 #ifdef __cplusplus
00090 extern "C" {
00091 #endif
00092 
00093 typedef enum {
00094   GWEN_NetConnectionWorkResult_NoChange=0,
00095   GWEN_NetConnectionWorkResult_Change,
00096   GWEN_NetConnectionWorkResult_Error
00097 } GWEN_NETCONNECTION_WORKRESULT;
00098 
00099 
00100 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_NETCONNECTION, GWEN_NetConnection, GWENHYWFAR_API)
00101 GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_NETCONNECTION, GWENHYWFAR_API)
00102 /* No trailing semicolon here because this is a macro call */
00103 
00104 
00110 typedef GWEN_NETCONNECTION_WORKRESULT
00111   (*GWEN_NETCONNECTION_WORKFN)(GWEN_NETCONNECTION *conn);
00113 typedef void (*GWEN_NETCONNECTION_UPFN)(GWEN_NETCONNECTION *conn);
00115 typedef void (*GWEN_NETCONNECTION_DOWNFN)(GWEN_NETCONNECTION *conn);
00116 
00117 typedef GWEN_TYPE_UINT32
00118   (*GWEN_NETCONNECTION_CHECKFN)(GWEN_NETCONNECTION *conn);
00119 
00137 GWENHYWFAR_API
00138 GWEN_NETCONNECTION *GWEN_NetConnection_new(GWEN_NETTRANSPORT *tr,
00139                                            int take,
00140                                            GWEN_TYPE_UINT32 libId);
00141 
00142 GWENHYWFAR_API
00143 void GWEN_NetConnection_free(GWEN_NETCONNECTION *conn);
00144 
00145 GWENHYWFAR_API
00146 void GWEN_NetConnection_Attach(GWEN_NETCONNECTION *conn);
00147 
00163 GWENHYWFAR_API
00164 int GWEN_NetConnection_Read(GWEN_NETCONNECTION *conn,
00165                             char *buffer,
00166                             GWEN_TYPE_UINT32 *bsize);
00167 
00178 GWENHYWFAR_API
00179 int GWEN_NetConnection_Read_Wait(GWEN_NETCONNECTION *conn,
00180                                  char *buffer,
00181                                  GWEN_TYPE_UINT32 *bsize,
00182                                  int timeout);
00183 
00184 
00193 GWENHYWFAR_API
00194 int GWEN_NetConnection_Write(GWEN_NETCONNECTION *conn,
00195                              const char *buffer,
00196                              GWEN_TYPE_UINT32 *bsize);
00197 
00211 GWENHYWFAR_API
00212 int GWEN_NetConnection_Write_Wait(GWEN_NETCONNECTION *conn,
00213                                   const char *buffer,
00214                                   GWEN_TYPE_UINT32 *bsize,
00215                                   int timeout);
00216 
00225 GWENHYWFAR_API
00226 int GWEN_NetConnection_Flush(GWEN_NETCONNECTION *conn,
00227                              int timeout);
00243 GWENHYWFAR_API
00244 int GWEN_NetConnection_StartConnect(GWEN_NETCONNECTION *conn);
00245 
00252 GWENHYWFAR_API
00253 int GWEN_NetConnection_Connect_Wait(GWEN_NETCONNECTION *conn,
00254                                     int timeout);
00255 
00265 GWENHYWFAR_API
00266 int GWEN_NetConnection_StartListen(GWEN_NETCONNECTION *conn);
00267 
00274 GWENHYWFAR_API
00275 GWEN_NETTRANSPORT*
00276   GWEN_NetConnection_GetNextIncoming(GWEN_NETCONNECTION *conn);
00277 
00286 GWENHYWFAR_API
00287 GWEN_NETTRANSPORT*
00288   GWEN_NetConnection_GetNextIncoming_Wait(GWEN_NETCONNECTION *conn,
00289                                           int timeout);
00290 
00298 GWENHYWFAR_API
00299 int GWEN_NetConnection_StartDisconnect(GWEN_NETCONNECTION *conn);
00300 
00309 GWENHYWFAR_API
00310 int GWEN_NetConnection_Disconnect_Wait(GWEN_NETCONNECTION *conn,
00311                                        int timeout);
00328 GWENHYWFAR_API
00329 GWEN_NETCONNECTION_WORKRESULT
00330   GWEN_NetConnection_WorkIO(GWEN_NETCONNECTION *conn);
00331 
00341 GWENHYWFAR_API
00342 int GWEN_NetConnection_WaitForStatus(GWEN_NETCONNECTION *conn,
00343                                      GWEN_NETTRANSPORT_STATUS expStatus,
00344                                      int timeout);
00345 
00353 GWENHYWFAR_API
00354 GWEN_NETCONNECTION_WORKRESULT
00355   GWEN_NetConnection_Walk(GWEN_NETCONNECTION_LIST *connList,
00356                           int timeout);
00357 
00376 GWENHYWFAR_API
00377 GWEN_NETCONNECTION_WORKRESULT
00378   GWEN_NetConnection_Work(GWEN_NETCONNECTION *conn);
00379 
00392 GWENHYWFAR_API
00393 void GWEN_NetConnection_Up(GWEN_NETCONNECTION *conn);
00394 
00400 GWENHYWFAR_API
00401 void GWEN_NetConnection_Down(GWEN_NETCONNECTION *conn);
00402 
00410 GWENHYWFAR_API
00411 void GWEN_NetConnection_SetWorkFn(GWEN_NETCONNECTION *conn,
00412                                   GWEN_NETCONNECTION_WORKFN fn);
00413 
00414 GWENHYWFAR_API
00415 void GWEN_NetConnection_SetUpFn(GWEN_NETCONNECTION *conn,
00416                                 GWEN_NETCONNECTION_UPFN fn);
00417 
00418 GWENHYWFAR_API
00419 void GWEN_NetConnection_SetDownFn(GWEN_NETCONNECTION *conn,
00420                                   GWEN_NETCONNECTION_DOWNFN fn);
00421 GWENHYWFAR_API
00422 void GWEN_NetConnection_SetCheckFn(GWEN_NETCONNECTION *conn,
00423                                    GWEN_NETCONNECTION_CHECKFN fn);
00427 #if (defined(GWEN_EXTEND_NETCONNECTION) || defined(DOXYGEN))
00441 
00448 GWENHYWFAR_API
00449 GWEN_RINGBUFFER *GWEN_NetConnection_GetReadBuffer(GWEN_NETCONNECTION *conn);
00450 
00457 GWENHYWFAR_API
00458 GWEN_RINGBUFFER *GWEN_NetConnection_GetWriteBuffer(GWEN_NETCONNECTION *conn);
00459 
00465 GWENHYWFAR_API
00466 void GWEN_NetConnection_AddInMsg(GWEN_NETCONNECTION *conn,
00467                                  GWEN_NETMSG *msg);
00468 
00474 GWENHYWFAR_API
00475 GWEN_NETMSG *GWEN_NetConnection_GetOutMsg(GWEN_NETCONNECTION *conn);
00476 
00482 GWENHYWFAR_API
00483 GWEN_NETMSG *GWEN_NetConnection_PeekOutMsg(const GWEN_NETCONNECTION *conn);
00484 
00486 #endif /* GWEN_EXTENDING_NETCONNECTION */
00487 
00488 
00498 GWENHYWFAR_API
00499 GWEN_NETMSG *GWEN_NetConnection_GetInMsg(GWEN_NETCONNECTION *conn);
00500 
00506 GWENHYWFAR_API
00507 GWEN_NETMSG *GWEN_NetConnection_GetInMsg_Wait(GWEN_NETCONNECTION *conn,
00508                                              int timeout);
00509 
00515 GWENHYWFAR_API
00516 GWEN_NETMSG *GWEN_NetConnection_PeekInMsg(const GWEN_NETCONNECTION *conn);
00517 
00522 GWENHYWFAR_API
00523 void GWEN_NetConnection_AddOutMsg(GWEN_NETCONNECTION *conn,
00524                                   GWEN_NETMSG *msg);
00525 
00538 GWENHYWFAR_API
00539 GWEN_NETTRANSPORT*
00540   GWEN_NetConnection_GetTransportLayer(const GWEN_NETCONNECTION *conn);
00541 
00542 
00546 GWENHYWFAR_API
00547 const GWEN_INETADDRESS*
00548   GWEN_NetConnection_GetPeerAddr(const GWEN_NETCONNECTION *conn);
00549 
00554 GWENHYWFAR_API
00555 GWEN_TYPE_UINT32 GWEN_NetConnection_GetFlags(const GWEN_NETCONNECTION *conn);
00556 
00557 
00562 GWENHYWFAR_API
00563 GWEN_NETTRANSPORT_STATUS
00564   GWEN_NetConnection_GetStatus(const GWEN_NETCONNECTION *conn);
00565 
00566 GWENHYWFAR_API
00567 void GWEN_NetConnection_SetStatus(GWEN_NETCONNECTION *conn,
00568                                   GWEN_NETTRANSPORT_STATUS nst);
00569 
00574 GWENHYWFAR_API
00575 void GWEN_NetConnection_SetFlags(GWEN_NETCONNECTION *conn,
00576                                  GWEN_TYPE_UINT32 fl);
00577 
00584 GWENHYWFAR_API
00585 GWEN_TYPE_UINT32
00586   GWEN_NetConnection_GetLibraryMark(const GWEN_NETCONNECTION *conn);
00587 
00593 GWENHYWFAR_API
00594 GWEN_TYPE_UINT32
00595   GWEN_NetConnection_GetUserMark(const GWEN_NETCONNECTION *conn);
00596 
00602 GWENHYWFAR_API
00603 void GWEN_NetConnection_SetUserMark(GWEN_NETCONNECTION *conn,
00604                                     GWEN_TYPE_UINT32 m);
00605 
00615 GWENHYWFAR_API
00616 double GWEN_NetConnection_GetIdleTime(const GWEN_NETCONNECTION *conn);
00617 
00618 
00623 GWENHYWFAR_API
00624 void GWEN_NetConnection_SetDownAfterSend(GWEN_NETCONNECTION *conn, int i);
00625 
00630 GWENHYWFAR_API
00631 int GWEN_NetConnection_GetDownAfterSend(GWEN_NETCONNECTION *conn);
00632 
00633 GWENHYWFAR_API
00634 void GWEN_NetConnection_Reset(GWEN_NETCONNECTION *conn);
00635 
00638 GWENHYWFAR_API
00639 void GWEN_NetConnection_Dump(const GWEN_NETCONNECTION *conn);
00640  /* defgroup */
00642 
00643 
00644 #ifdef __cplusplus
00645 }
00646 #endif
00647 
00648 #endif
00649 
00650 
00651 
00652 
00653 

Generated on Wed Oct 5 15:12:37 2005 for gwenhywfar by  doxygen 1.4.4