netconnection.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile: netconnection.h,v $
00003                              -------------------
00004     cvs         : $Id: netconnection.h,v 1.19 2005/09/07 18:49: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/list2.h>
00082 #include <gwenhywfar/inherit.h>
00083 #include <gwenhywfar/nettransport.h>
00084 #include <gwenhywfar/netmsg.h>
00085 #include <gwenhywfar/ringbuffer.h>
00086 
00087 #define GWEN_NETCONNECTION_CHECK_WANTREAD  0x0001
00088 #define GWEN_NETCONNECTION_CHECK_WANTWRITE 0x0002
00089 
00090 #ifdef __cplusplus
00091 extern "C" {
00092 #endif
00093 
00094 typedef enum {
00095   GWEN_NetConnectionWorkResult_NoChange=0,
00096   GWEN_NetConnectionWorkResult_Change,
00097   GWEN_NetConnectionWorkResult_Error
00098 } GWEN_NETCONNECTION_WORKRESULT;
00099 
00100 
00101 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_NETCONNECTION, GWEN_NetConnection, GWENHYWFAR_API)
00102 GWEN_LIST2_FUNCTION_LIB_DEFS(GWEN_NETCONNECTION, GWEN_NetConnection, GWENHYWFAR_API)
00103 GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_NETCONNECTION, GWENHYWFAR_API)
00104 /* No trailing semicolon here because this is a macro call */
00105 
00106 
00112 typedef GWEN_NETCONNECTION_WORKRESULT
00113   (*GWEN_NETCONNECTION_WORKFN)(GWEN_NETCONNECTION *conn);
00115 typedef void (*GWEN_NETCONNECTION_UPFN)(GWEN_NETCONNECTION *conn);
00117 typedef void (*GWEN_NETCONNECTION_DOWNFN)(GWEN_NETCONNECTION *conn);
00118 
00119 typedef GWEN_TYPE_UINT32
00120   (*GWEN_NETCONNECTION_CHECKFN)(GWEN_NETCONNECTION *conn);
00121 
00139 GWENHYWFAR_API
00140 GWEN_NETCONNECTION *GWEN_NetConnection_new(GWEN_NETTRANSPORT *tr,
00141                                            int take,
00142                                            GWEN_TYPE_UINT32 libId);
00143 
00144 GWENHYWFAR_API
00145 void GWEN_NetConnection_free(GWEN_NETCONNECTION *conn);
00146 
00147 GWENHYWFAR_API
00148 void GWEN_NetConnection_Attach(GWEN_NETCONNECTION *conn);
00149 
00165 GWENHYWFAR_API
00166 int GWEN_NetConnection_Read(GWEN_NETCONNECTION *conn,
00167                             char *buffer,
00168                             GWEN_TYPE_UINT32 *bsize);
00169 
00180 GWENHYWFAR_API
00181 int GWEN_NetConnection_Read_Wait(GWEN_NETCONNECTION *conn,
00182                                  char *buffer,
00183                                  GWEN_TYPE_UINT32 *bsize,
00184                                  int timeout);
00185 
00186 
00195 GWENHYWFAR_API
00196 int GWEN_NetConnection_Write(GWEN_NETCONNECTION *conn,
00197                              const char *buffer,
00198                              GWEN_TYPE_UINT32 *bsize);
00199 
00213 GWENHYWFAR_API
00214 int GWEN_NetConnection_Write_Wait(GWEN_NETCONNECTION *conn,
00215                                   const char *buffer,
00216                                   GWEN_TYPE_UINT32 *bsize,
00217                                   int timeout);
00218 
00227 GWENHYWFAR_API
00228 int GWEN_NetConnection_Flush(GWEN_NETCONNECTION *conn,
00229                              int timeout);
00245 GWENHYWFAR_API
00246 int GWEN_NetConnection_StartConnect(GWEN_NETCONNECTION *conn);
00247 
00254 GWENHYWFAR_API
00255 int GWEN_NetConnection_Connect_Wait(GWEN_NETCONNECTION *conn,
00256                                     int timeout);
00257 
00267 GWENHYWFAR_API
00268 int GWEN_NetConnection_StartListen(GWEN_NETCONNECTION *conn);
00269 
00276 GWENHYWFAR_API
00277 GWEN_NETTRANSPORT*
00278   GWEN_NetConnection_GetNextIncoming(GWEN_NETCONNECTION *conn);
00279 
00288 GWENHYWFAR_API
00289 GWEN_NETTRANSPORT*
00290   GWEN_NetConnection_GetNextIncoming_Wait(GWEN_NETCONNECTION *conn,
00291                                           int timeout);
00292 
00300 GWENHYWFAR_API
00301 int GWEN_NetConnection_StartDisconnect(GWEN_NETCONNECTION *conn);
00302 
00311 GWENHYWFAR_API
00312 int GWEN_NetConnection_Disconnect_Wait(GWEN_NETCONNECTION *conn,
00313                                        int timeout);
00330 GWENHYWFAR_API
00331 GWEN_NETCONNECTION_WORKRESULT
00332   GWEN_NetConnection_WorkIO(GWEN_NETCONNECTION *conn);
00333 
00343 GWENHYWFAR_API
00344 int GWEN_NetConnection_WaitForStatus(GWEN_NETCONNECTION *conn,
00345                                      GWEN_NETTRANSPORT_STATUS expStatus,
00346                                      int timeout);
00347 
00355 GWENHYWFAR_API
00356 GWEN_NETCONNECTION_WORKRESULT
00357   GWEN_NetConnection_Walk(GWEN_NETCONNECTION_LIST *connList,
00358                           int timeout);
00359 
00378 GWENHYWFAR_API
00379 GWEN_NETCONNECTION_WORKRESULT
00380   GWEN_NetConnection_Work(GWEN_NETCONNECTION *conn);
00381 
00394 GWENHYWFAR_API
00395 void GWEN_NetConnection_Up(GWEN_NETCONNECTION *conn);
00396 
00402 GWENHYWFAR_API
00403 void GWEN_NetConnection_Down(GWEN_NETCONNECTION *conn);
00404 
00412 GWENHYWFAR_API
00413 void GWEN_NetConnection_SetWorkFn(GWEN_NETCONNECTION *conn,
00414                                   GWEN_NETCONNECTION_WORKFN fn);
00415 
00416 GWENHYWFAR_API
00417 void GWEN_NetConnection_SetUpFn(GWEN_NETCONNECTION *conn,
00418                                 GWEN_NETCONNECTION_UPFN fn);
00419 
00420 GWENHYWFAR_API
00421 void GWEN_NetConnection_SetDownFn(GWEN_NETCONNECTION *conn,
00422                                   GWEN_NETCONNECTION_DOWNFN fn);
00423 GWENHYWFAR_API
00424 void GWEN_NetConnection_SetCheckFn(GWEN_NETCONNECTION *conn,
00425                                    GWEN_NETCONNECTION_CHECKFN fn);
00429 #if (defined(GWEN_EXTEND_NETCONNECTION) || defined(DOXYGEN))
00430 
00443 
00450 GWENHYWFAR_API
00451 GWEN_RINGBUFFER *GWEN_NetConnection_GetReadBuffer(GWEN_NETCONNECTION *conn);
00452 
00459 GWENHYWFAR_API
00460 GWEN_RINGBUFFER *GWEN_NetConnection_GetWriteBuffer(GWEN_NETCONNECTION *conn);
00461 
00467 GWENHYWFAR_API
00468 void GWEN_NetConnection_AddInMsg(GWEN_NETCONNECTION *conn,
00469                                  GWEN_NETMSG *msg);
00470 
00476 GWENHYWFAR_API
00477 GWEN_NETMSG *GWEN_NetConnection_GetOutMsg(GWEN_NETCONNECTION *conn);
00478 
00484 GWENHYWFAR_API
00485 GWEN_NETMSG *GWEN_NetConnection_PeekOutMsg(const GWEN_NETCONNECTION *conn);
00486 
00488 #endif /* GWEN_EXTENDING_NETCONNECTION */
00489 
00490 
00500 GWENHYWFAR_API
00501 GWEN_NETMSG *GWEN_NetConnection_GetInMsg(GWEN_NETCONNECTION *conn);
00502 
00508 GWENHYWFAR_API
00509 GWEN_NETMSG *GWEN_NetConnection_GetInMsg_Wait(GWEN_NETCONNECTION *conn,
00510                                               int timeout);
00511 
00517 GWENHYWFAR_API
00518 GWEN_NETMSG *GWEN_NetConnection_PeekInMsg(const GWEN_NETCONNECTION *conn);
00519 
00524 GWENHYWFAR_API
00525 void GWEN_NetConnection_AddOutMsg(GWEN_NETCONNECTION *conn,
00526                                   GWEN_NETMSG *msg);
00527 
00540 GWENHYWFAR_API
00541 GWEN_NETTRANSPORT*
00542   GWEN_NetConnection_GetTransportLayer(const GWEN_NETCONNECTION *conn);
00543 
00544 
00548 GWENHYWFAR_API
00549 const GWEN_INETADDRESS*
00550   GWEN_NetConnection_GetPeerAddr(const GWEN_NETCONNECTION *conn);
00551 
00556 GWENHYWFAR_API
00557 GWEN_TYPE_UINT32 GWEN_NetConnection_GetFlags(const GWEN_NETCONNECTION *conn);
00558 
00559 
00564 GWENHYWFAR_API
00565 GWEN_NETTRANSPORT_STATUS
00566   GWEN_NetConnection_GetStatus(const GWEN_NETCONNECTION *conn);
00567 
00568 GWENHYWFAR_API
00569 void GWEN_NetConnection_SetStatus(GWEN_NETCONNECTION *conn,
00570                                   GWEN_NETTRANSPORT_STATUS nst);
00571 
00576 GWENHYWFAR_API
00577 void GWEN_NetConnection_SetFlags(GWEN_NETCONNECTION *conn,
00578                                  GWEN_TYPE_UINT32 fl);
00579 
00586 GWENHYWFAR_API
00587 GWEN_TYPE_UINT32
00588   GWEN_NetConnection_GetLibraryMark(const GWEN_NETCONNECTION *conn);
00589 
00595 GWENHYWFAR_API
00596 GWEN_TYPE_UINT32
00597   GWEN_NetConnection_GetUserMark(const GWEN_NETCONNECTION *conn);
00598 
00604 GWENHYWFAR_API
00605 void GWEN_NetConnection_SetUserMark(GWEN_NETCONNECTION *conn,
00606                                     GWEN_TYPE_UINT32 m);
00607 
00617 GWENHYWFAR_API
00618 double GWEN_NetConnection_GetIdleTime(const GWEN_NETCONNECTION *conn);
00619 
00620 
00625 GWENHYWFAR_API
00626 void GWEN_NetConnection_SetDownAfterSend(GWEN_NETCONNECTION *conn, int i);
00627 
00632 GWENHYWFAR_API
00633 int GWEN_NetConnection_GetDownAfterSend(GWEN_NETCONNECTION *conn);
00634 
00635 GWENHYWFAR_API
00636 void GWEN_NetConnection_Reset(GWEN_NETCONNECTION *conn);
00637 
00640 GWENHYWFAR_API
00641 void GWEN_NetConnection_Dump(const GWEN_NETCONNECTION *conn);
00642  /* defgroup */
00644 
00645 
00646 #ifdef __cplusplus
00647 }
00648 #endif
00649 
00650 #endif
00651 
00652 
00653 
00654 
00655 

Generated on Wed Jan 11 16:49:07 2006 for gwenhywfar by  doxygen 1.4.6