iolayer.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003                              -------------------
00004     cvs         : $Id: crypttoken.h 1113 2007-01-10 09:14:16Z martin $
00005     begin       : Wed Mar 16 2005
00006     copyright   : (C) 2005 by Martin Preuss
00007     email       : martin@libchipcard.de
00008 
00009  ***************************************************************************
00010  *          Please see toplevel file COPYING for license details           *
00011  ***************************************************************************/
00012 
00013 
00014 #ifndef GWEN_IOLAYER_H
00015 #define GWEN_IOLAYER_H
00016 
00017 #include <gwenhywfar/list2.h>
00018 
00019 #ifdef __cplusplus
00020 extern "C" {
00021 #endif
00022 
00023 
00053 
00054 
00055 typedef struct GWEN_IO_LAYER GWEN_IO_LAYER;
00056 
00057 GWEN_LIST2_FUNCTION_LIB_DEFS(GWEN_IO_LAYER, GWEN_Io_Layer, GWENHYWFAR_API)
00058 
00059 
00060 typedef enum {
00061   GWEN_Io_Layer_WorkResultError=-1,
00062   GWEN_Io_Layer_WorkResultOk=0,
00063   GWEN_Io_Layer_WorkResultBlocking
00064 } GWEN_IO_LAYER_WORKRESULT;
00065 
00066 
00067 typedef enum {
00068   GWEN_Io_Layer_StatusUnknown=-1,
00069   GWEN_Io_Layer_StatusUnconnected=0,
00070   GWEN_Io_Layer_StatusConnecting,
00071   GWEN_Io_Layer_StatusConnected,
00072   GWEN_Io_Layer_StatusDisconnecting,
00073   GWEN_Io_Layer_StatusDisconnected,
00074   GWEN_Io_Layer_StatusListening,
00075   GWEN_Io_Layer_StatusDisabled,
00076 } GWEN_IO_LAYER_STATUS;
00077 
00078 
00079 #include <gwenhywfar/iorequest.h>
00080 #include <gwenhywfar/buffer.h>
00081 
00082 
00092 #define GWEN_IO_LAYER_FLAGS_TAKEOVER    0x01000000
00093 
00098 #define GWEN_IO_LAYER_FLAGS_PASSIVE     0x10000000
00099 
00103 #define GWEN_IO_LAYER_FLAGS_PKG_BASED   0x20000000
00104 
00108 #define GWEN_IO_LAYER_FLAGS_DONTCLOSE   0x40000000
00109 
00114 #define GWEN_IO_LAYER_FLAGS_REGISTERED  0x80000000
00115 
00123 GWENHYWFAR_API void GWEN_Io_Layer_Attach(GWEN_IO_LAYER *io);
00124 GWENHYWFAR_API void GWEN_Io_Layer_free(GWEN_IO_LAYER *io);
00133 GWENHYWFAR_API GWEN_IO_LAYER *GWEN_Io_Layer_GetBaseLayer(GWEN_IO_LAYER *io);
00134 
00139 GWENHYWFAR_API GWEN_IO_LAYER *GWEN_Io_Layer_FindBaseLayerByType(GWEN_IO_LAYER *io, const char *tname);
00140 
00141 GWENHYWFAR_API uint32_t GWEN_Io_Layer_GetFlags(const GWEN_IO_LAYER *io);
00142 GWENHYWFAR_API void GWEN_Io_Layer_SetFlags(GWEN_IO_LAYER *io, uint32_t f);
00143 GWENHYWFAR_API void GWEN_Io_Layer_AddFlags(GWEN_IO_LAYER *io, uint32_t f);
00144 GWENHYWFAR_API void GWEN_Io_Layer_SubFlags(GWEN_IO_LAYER *io, uint32_t f);
00145 
00146 
00147 GWENHYWFAR_API GWEN_IO_LAYER_STATUS GWEN_Io_Layer_GetStatus(const GWEN_IO_LAYER *io);
00148 
00149 GWENHYWFAR_API GWEN_IO_LAYER *GWEN_Io_Layer_GetNextIncomingLayer(GWEN_IO_LAYER *io);
00150 GWENHYWFAR_API void GWEN_Io_Layer_ClearIncomingLayers(GWEN_IO_LAYER *io);
00151 
00175 GWENHYWFAR_API int GWEN_Io_Layer_AddRequest(GWEN_IO_LAYER *io, GWEN_IO_REQUEST *r);
00176 
00182 GWENHYWFAR_API int GWEN_Io_Layer_DelRequest(GWEN_IO_LAYER *io, GWEN_IO_REQUEST *r);
00183 
00188 GWENHYWFAR_API int GWEN_Io_Layer_HasWaitingRequests(GWEN_IO_LAYER *io);
00200 
00204 GWENHYWFAR_API int GWEN_Io_Layer_Connect(GWEN_IO_LAYER *io,
00205                                          uint32_t flags,
00206                                          uint32_t guiid, int msecs);
00207 
00214 GWENHYWFAR_API int GWEN_Io_Layer_ConnectRecursively(GWEN_IO_LAYER *io,
00215                                                     GWEN_IO_LAYER *stopAtLayer,
00216                                                     uint32_t flags,
00217                                                     uint32_t guiid, int msecs);
00218 
00222 GWENHYWFAR_API int GWEN_Io_Layer_Disconnect(GWEN_IO_LAYER *io,
00223                                             uint32_t flags,
00224                                             uint32_t guiid, int msecs);
00225 
00226 
00227 GWENHYWFAR_API int GWEN_Io_Layer_Listen(GWEN_IO_LAYER *io);
00228 
00229 GWENHYWFAR_API int GWEN_Io_Layer_ListenRecursively(GWEN_IO_LAYER *io, GWEN_IO_LAYER *stopAtLayer);
00230 
00231 
00240 GWENHYWFAR_API int GWEN_Io_Layer_DisconnectRecursively(GWEN_IO_LAYER *io,
00241                                                        GWEN_IO_LAYER *stopAtLayer,
00242                                                        uint32_t flags,
00243                                                        uint32_t guiid, int msecs);
00244 
00245 
00246 GWENHYWFAR_API int GWEN_Io_Layer_ReadBytes(GWEN_IO_LAYER *io,
00247                                            uint8_t *buffer,
00248                                            uint32_t size,
00249                                            uint32_t flags,
00250                                            uint32_t guiid, int msecs);
00251 
00252 GWENHYWFAR_API int GWEN_Io_Layer_ReadToBufferUntilEof(GWEN_IO_LAYER *io,
00253                                                       GWEN_BUFFER *buf,
00254                                                       uint32_t guiid, int msecs);
00255 
00256 GWENHYWFAR_API int GWEN_Io_Layer_ReadPacket(GWEN_IO_LAYER *io,
00257                                             uint8_t *buffer,
00258                                             uint32_t size,
00259                                             uint32_t flags,
00260                                             uint32_t guiid, int msecs);
00261 
00262 GWENHYWFAR_API int GWEN_Io_Layer_ReadPacketToBuffer(GWEN_IO_LAYER *io,
00263                                                     GWEN_BUFFER *buf,
00264                                                     uint32_t flags,
00265                                                     uint32_t guiid, int msecs);
00266 
00267 
00268 GWENHYWFAR_API int GWEN_Io_Layer_WriteBytes(GWEN_IO_LAYER *io,
00269                                             const uint8_t *buffer,
00270                                             uint32_t size,
00271                                             uint32_t flags,
00272                                             uint32_t guiid, int msecs);
00273 
00274 GWENHYWFAR_API int GWEN_Io_Layer_WriteString(GWEN_IO_LAYER *io,
00275                                              const char *buffer,
00276                                              uint32_t flags,
00277                                              uint32_t guiid, int msecs);
00278 
00279 GWENHYWFAR_API int GWEN_Io_Layer_WriteChar(GWEN_IO_LAYER *io,
00280                                            char c,
00281                                            uint32_t flags,
00282                                            uint32_t guiid, int msecs);
00283 
00284 
00289 GWENHYWFAR_API int GWEN_Io_Layer_FlushRecursively(GWEN_IO_LAYER *io, uint32_t guiid, int msecs);
00290 
00295 
00296 #ifdef __cplusplus
00297 }
00298 #endif
00299 
00300 
00301 #endif

Generated by  doxygen 1.6.2