netlayer.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003                              -------------------
00004     cvs         : $Id: netlayer.h 985 2006-02-10 03:17:04Z aquamaniac $
00005     begin       : Sat Jan 24 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_NETLAYER_H
00030 #define GWEN_NETLAYER_H
00031 
00032 
00033 #include <gwenhywfar/misc.h>
00034 #include <gwenhywfar/list2.h>
00035 #include <gwenhywfar/inherit.h>
00036 #include <gwenhywfar/inetaddr.h>
00037 #include <gwenhywfar/inetsocket.h>
00038 #include <gwenhywfar/buffer.h>
00039 #include <gwenhywfar/bufferedio.h>
00040 
00041 #include <time.h>
00042 
00043 
00044 typedef struct GWEN_NETLAYER GWEN_NETLAYER;
00045 
00046 GWEN_LIST2_FUNCTION_LIB_DEFS(GWEN_NETLAYER, GWEN_NetLayer, GWENHYWFAR_API)
00047 GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_NETLAYER, GWENHYWFAR_API)
00048 
00058 #define GWEN_NETLAYER_FLAGS_SPECMASK   0x000000FF
00059 
00060 #define GWEN_NETLAYER_FLAGS_EOFMET     0x80000000
00061 #define GWEN_NETLAYER_FLAGS_BROKENPIPE 0x40000000
00062 #define GWEN_NETLAYER_FLAGS_WANTREAD   0x20000000
00063 #define GWEN_NETLAYER_FLAGS_WANTWRITE  0x10000000
00064 #define GWEN_NETLAYER_FLAGS_PASSIVE    0x08000000
00065 #define GWEN_NETLAYER_FLAGS_PKG_BASED  0x04000000
00066 #define GWEN_NETLAYER_FLAGS_INPKG      0x02000000
00067 #define GWEN_NETLAYER_FLAGS_OUTPKG     0x01000000
00068 
00071 #define GWEN_NETLAYER_DEF_BACKLOG 10
00072 
00073 
00074 typedef enum {
00075   GWEN_NetLayerStatus_Unconnected=0,
00076   GWEN_NetLayerStatus_Connecting,
00077   GWEN_NetLayerStatus_Connected,
00078   GWEN_NetLayerStatus_Disconnecting,
00079   GWEN_NetLayerStatus_Disconnected,
00080   GWEN_NetLayerStatus_Listening,
00081   GWEN_NetLayerStatus_Disabled,
00082   GWEN_NetLayerStatus_Unknown=999
00083 } GWEN_NETLAYER_STATUS;
00084 
00085 GWENHYWFAR_API
00086 GWEN_NETLAYER_STATUS GWEN_NetLayerStatus_fromString(const char *s);
00087 
00088 GWENHYWFAR_API
00089 const char *GWEN_NetLayerStatus_toString(GWEN_NETLAYER_STATUS st);
00090 
00091 
00092 typedef enum {
00093   GWEN_NetLayerResult_Idle=0,
00094   GWEN_NetLayerResult_Changed,
00095   GWEN_NetLayerResult_WouldBlock,
00096   GWEN_NetLayerResult_Error,
00097   GWEN_NetLayerResult_Unknown=999
00098 } GWEN_NETLAYER_RESULT;
00099 
00100 GWENHYWFAR_API
00101 GWEN_NETLAYER_RESULT GWEN_NetLayerResult_fromString(const char *s);
00102 
00103 GWENHYWFAR_API
00104 const char *GWEN_NetLayerResult_toString(GWEN_NETLAYER_RESULT res);
00105 
00106 
00117 typedef int (*GWEN_NETLAYER_GETPASSWD_FN)(GWEN_NETLAYER *nl,
00118                                           char *buffer, int num,
00119                                           int rwflag);
00120 
00121 
00122 typedef GWEN_NETLAYER_RESULT (*GWEN_NETLAYER_WORK_FN)(GWEN_NETLAYER *nl);
00123 
00124 
00125 typedef int (*GWEN_NETLAYER_READ_FN)(GWEN_NETLAYER *nl,
00126                                      char *buffer,
00127                                      int *bsize);
00128 
00129 typedef int (*GWEN_NETLAYER_WRITE_FN)(GWEN_NETLAYER *nl,
00130                                       const char *buffer,
00131                                       int *bsize);
00132 
00133 typedef int (*GWEN_NETLAYER_CONNECT_FN)(GWEN_NETLAYER *nl);
00134 
00135 typedef int (*GWEN_NETLAYER_DISCONNECT_FN)(GWEN_NETLAYER *nl);
00136 
00137 typedef int (*GWEN_NETLAYER_LISTEN_FN)(GWEN_NETLAYER *nl);
00138 
00139 typedef int (*GWEN_NETLAYER_ADDSOCKETS_FN)(GWEN_NETLAYER *nl,
00140                                            GWEN_SOCKETSET *readSet,
00141                                            GWEN_SOCKETSET *writeSet,
00142                                            GWEN_SOCKETSET *exSet);
00143 
00144 typedef void (*GWEN_NETLAYER_BASESTATUS_CHG_FN)(GWEN_NETLAYER *nl,
00145                                                 GWEN_NETLAYER_STATUS newst);
00146 
00147 typedef void (*GWEN_NETLAYER_STATUS_CHG_FN)(GWEN_NETLAYER *nl,
00148                                             GWEN_NETLAYER_STATUS newst);
00149 
00150 typedef int (*GWEN_NETLAYER_BEGIN_OUT_PACKET_FN)(GWEN_NETLAYER *nl,
00151                                                   int totalSize);
00152 
00153 typedef int (*GWEN_NETLAYER_END_OUT_PACKET_FN)(GWEN_NETLAYER *nl);
00154 
00155 typedef int (*GWEN_NETLAYER_BEGIN_IN_PACKET_FN)(GWEN_NETLAYER *nl);
00156 typedef int (*GWEN_NETLAYER_CHECK_IN_PACKET_FN)(GWEN_NETLAYER *nl);
00157 
00158 
00159 GWENHYWFAR_API
00160 GWEN_NETLAYER *GWEN_NetLayer_new(const char *typeName);
00161 
00162 GWENHYWFAR_API
00163 void GWEN_NetLayer_free(GWEN_NETLAYER *nl);
00164 
00165 GWENHYWFAR_API
00166 void GWEN_NetLayer_Attach(GWEN_NETLAYER *nl);
00167 
00168 GWENHYWFAR_API
00169 const char *GWEN_NetLayer_GetTypeName(const GWEN_NETLAYER *nl);
00170 
00171 GWENHYWFAR_API
00172 GWEN_NETLAYER_STATUS GWEN_NetLayer_GetStatus(const GWEN_NETLAYER *nl);
00173 
00174 GWENHYWFAR_API
00175 void GWEN_NetLayer_SetStatus(GWEN_NETLAYER *nl, GWEN_NETLAYER_STATUS st);
00176 
00177 GWENHYWFAR_API
00178 time_t GWEN_NetLayer_GetLastStatusChangeTime(const GWEN_NETLAYER *nl);
00179 
00180 GWENHYWFAR_API
00181 GWEN_TYPE_UINT32 GWEN_NetLayer_GetFlags(const GWEN_NETLAYER *nl);
00182 
00183 GWENHYWFAR_API
00184 void GWEN_NetLayer_SetFlags(GWEN_NETLAYER *nl, GWEN_TYPE_UINT32 fl);
00185 
00186 GWENHYWFAR_API
00187 void GWEN_NetLayer_AddFlags(GWEN_NETLAYER *nl, GWEN_TYPE_UINT32 fl);
00188 
00189 GWENHYWFAR_API
00190 void GWEN_NetLayer_SubFlags(GWEN_NETLAYER *nl, GWEN_TYPE_UINT32 fl);
00191 
00192 GWENHYWFAR_API
00193 GWEN_NETLAYER *GWEN_NetLayer_GetBaseLayer(const GWEN_NETLAYER *nl);
00194 
00195 GWENHYWFAR_API
00196 void GWEN_NetLayer_SetBaseLayer(GWEN_NETLAYER *nl, GWEN_NETLAYER *baseLayer);
00197 
00198 GWENHYWFAR_API
00199 GWEN_NETLAYER *GWEN_NetLayer_GetParentLayer(const GWEN_NETLAYER *nl);
00200 
00201 GWENHYWFAR_API
00202 void GWEN_NetLayer_SetParentLayer(GWEN_NETLAYER *nl, GWEN_NETLAYER *pLayer);
00203 
00204 GWENHYWFAR_API
00205 void GWEN_NetLayer_AddIncomingLayer(GWEN_NETLAYER *nl, GWEN_NETLAYER *newnl);
00206 
00207 GWENHYWFAR_API
00208 GWEN_NETLAYER *GWEN_NetLayer_PeekIncomingLayer(const GWEN_NETLAYER *nl);
00209 
00210 GWENHYWFAR_API
00211 GWEN_NETLAYER *GWEN_NetLayer_GetIncomingLayer(GWEN_NETLAYER *nl);
00212 
00213 GWENHYWFAR_API
00214 GWEN_NETLAYER *GWEN_NetLayer_GetIncomingLayer_Wait(GWEN_NETLAYER *nl,
00215                                                    int timeout);
00216 
00217 GWENHYWFAR_API
00218 int GWEN_NetLayer_GetIncomingLayerCount(const GWEN_NETLAYER *nl);
00219 
00220 GWENHYWFAR_API
00221 void GWEN_NetLayer_DelIncomingLayers(GWEN_NETLAYER *nl);
00222 
00223 
00224 GWENHYWFAR_API
00225 const GWEN_INETADDRESS *GWEN_NetLayer_GetLocalAddr(const GWEN_NETLAYER *nl);
00226 
00227 GWENHYWFAR_API
00228 void GWEN_NetLayer_SetLocalAddr(GWEN_NETLAYER *nl,
00229                                 const GWEN_INETADDRESS *addr);
00230 
00231 GWENHYWFAR_API
00232 const GWEN_INETADDRESS *GWEN_NetLayer_GetPeerAddr(const GWEN_NETLAYER *nl);
00233 
00234 GWENHYWFAR_API
00235 void GWEN_NetLayer_SetPeerAddr(GWEN_NETLAYER *nl,
00236                                const GWEN_INETADDRESS *addr);
00237 
00238 GWENHYWFAR_API
00239 int GWEN_NetLayer_GetBackLog(const GWEN_NETLAYER *nl);
00240 
00241 GWENHYWFAR_API
00242 void GWEN_NetLayer_SetBackLog(GWEN_NETLAYER *nl, int i);
00243 
00244 GWENHYWFAR_API
00245 int GWEN_NetLayer_GetInBodySize(const GWEN_NETLAYER *nl);
00246 
00247 GWENHYWFAR_API
00248 void GWEN_NetLayer_SetInBodySize(GWEN_NETLAYER *nl, int i);
00249 
00250 GWENHYWFAR_API
00251 int GWEN_NetLayer_GetOutBodySize(const GWEN_NETLAYER *nl);
00252 
00253 GWENHYWFAR_API
00254 void GWEN_NetLayer_SetOutBodySize(GWEN_NETLAYER *nl, int i);
00255 
00256 
00257 GWENHYWFAR_API
00258 void GWEN_NetLayer_SetGetPasswordFn(GWEN_NETLAYER *nl,
00259                                     GWEN_NETLAYER_GETPASSWD_FN f);
00260 
00261 GWENHYWFAR_API
00262 void GWEN_NetLayer_SetWorkFn(GWEN_NETLAYER *nl, GWEN_NETLAYER_WORK_FN f);
00263 
00264 GWENHYWFAR_API
00265 void GWEN_NetLayer_SetReadFn(GWEN_NETLAYER *nl, GWEN_NETLAYER_READ_FN f);
00266 
00267 GWENHYWFAR_API
00268 void GWEN_NetLayer_SetWriteFn(GWEN_NETLAYER *nl, GWEN_NETLAYER_WRITE_FN f);
00269 
00270 GWENHYWFAR_API
00271 void GWEN_NetLayer_SetConnectFn(GWEN_NETLAYER *nl,
00272                                 GWEN_NETLAYER_CONNECT_FN f);
00273 
00274 GWENHYWFAR_API
00275 void GWEN_NetLayer_SetDisconnectFn(GWEN_NETLAYER *nl,
00276                                    GWEN_NETLAYER_DISCONNECT_FN f);
00277 
00278 GWENHYWFAR_API
00279 void GWEN_NetLayer_SetListenFn(GWEN_NETLAYER *nl,
00280                                GWEN_NETLAYER_LISTEN_FN f);
00281 
00282 GWENHYWFAR_API
00283 void GWEN_NetLayer_SetAddSocketsFn(GWEN_NETLAYER *nl,
00284                                    GWEN_NETLAYER_ADDSOCKETS_FN f);
00285 
00286 GWENHYWFAR_API
00287 void GWEN_NetLayer_SetBaseStatusChangeFn(GWEN_NETLAYER *nl,
00288                                          GWEN_NETLAYER_BASESTATUS_CHG_FN f);
00289 
00290 GWENHYWFAR_API
00291 void GWEN_NetLayer_SetStatusChangeFn(GWEN_NETLAYER *nl,
00292                                      GWEN_NETLAYER_STATUS_CHG_FN f);
00293 
00294 GWENHYWFAR_API
00295 void GWEN_NetLayer_SetBeginOutPacketFn(GWEN_NETLAYER *nl,
00296                                         GWEN_NETLAYER_BEGIN_OUT_PACKET_FN f);
00297 
00298 GWENHYWFAR_API
00299 void GWEN_NetLayer_SetEndOutPacketFn(GWEN_NETLAYER *nl,
00300                                       GWEN_NETLAYER_END_OUT_PACKET_FN f);
00301 
00302 GWENHYWFAR_API
00303 void GWEN_NetLayer_SetBeginInPacketFn(GWEN_NETLAYER *nl,
00304                                        GWEN_NETLAYER_BEGIN_IN_PACKET_FN f);
00305 
00306 GWENHYWFAR_API
00307 void GWEN_NetLayer_SetCheckInPacketFn(GWEN_NETLAYER *nl,
00308                                        GWEN_NETLAYER_CHECK_IN_PACKET_FN f);
00309 
00310 
00311 
00319 
00320 GWENHYWFAR_API
00321 int GWEN_NetLayer_GetPassword(GWEN_NETLAYER *nl,
00322                               char *buffer, int num,
00323                               int rwflag);
00324 
00325 
00326 GWENHYWFAR_API
00327 GWEN_NETLAYER_RESULT GWEN_NetLayer_Work(GWEN_NETLAYER *nl);
00328 
00329 GWENHYWFAR_API
00330 int GWEN_NetLayer_Read(GWEN_NETLAYER *nl,
00331                        char *buffer,
00332                        int *bsize);
00333 
00334 GWENHYWFAR_API
00335 int GWEN_NetLayer_Read_Wait(GWEN_NETLAYER *nl,
00336                             char *buffer, int *bsize,
00337                             int timeout);
00338 
00339 GWENHYWFAR_API
00340 int GWEN_NetLayer_Write(GWEN_NETLAYER *nl,
00341                         const char *buffer,
00342                         int *bsize);
00343 
00344 GWENHYWFAR_API
00345 int GWEN_NetLayer_Write_Wait(GWEN_NETLAYER *nl,
00346                              const char *buffer, int *bsize,
00347                              int timeout);
00348 
00349 GWENHYWFAR_API
00350 int GWEN_NetLayer_WaitForStatus(GWEN_NETLAYER *nl,
00351                                 GWEN_NETLAYER_STATUS nlst,
00352                                 int timeout);
00353 
00354 
00355 GWENHYWFAR_API
00356 int GWEN_NetLayer_Connect(GWEN_NETLAYER *nl);
00357 
00358 GWENHYWFAR_API
00359 int GWEN_NetLayer_Connect_Wait(GWEN_NETLAYER *nl, int timeout);
00360 
00361 GWENHYWFAR_API
00362 int GWEN_NetLayer_Disconnect(GWEN_NETLAYER *nl);
00363 
00364 GWENHYWFAR_API
00365 int GWEN_NetLayer_Disconnect_Wait(GWEN_NETLAYER *nl, int timeout);
00366 
00367 GWENHYWFAR_API
00368 int GWEN_NetLayer_Listen(GWEN_NETLAYER *nl);
00369 
00370 GWENHYWFAR_API
00371 int GWEN_NetLayer_AddSockets(GWEN_NETLAYER *nl,
00372                              GWEN_SOCKETSET *readSet,
00373                              GWEN_SOCKETSET *writeSet,
00374                              GWEN_SOCKETSET *exSet);
00375 
00379 GWENHYWFAR_API
00380 void GWEN_NetLayer_BaseStatusChange(GWEN_NETLAYER *nl,
00381                                     GWEN_NETLAYER_STATUS newst);
00389 
00390 GWENHYWFAR_API
00391 int GWEN_NetLayer_BeginOutPacket(GWEN_NETLAYER *nl, int totalSize);
00392 
00393 GWENHYWFAR_API
00394 int GWEN_NetLayer_EndOutPacket(GWEN_NETLAYER *nl);
00395 
00396 GWENHYWFAR_API
00397 int GWEN_NetLayer_EndOutPacket_Wait(GWEN_NETLAYER *nl, int timeout);
00398 
00399 GWENHYWFAR_API
00400 int GWEN_NetLayer_BeginInPacket(GWEN_NETLAYER *nl);
00404 GWENHYWFAR_API
00405 int GWEN_NetLayer_CheckInPacket(GWEN_NETLAYER *nl);
00409 GWENHYWFAR_API
00410 GWEN_NETLAYER *GWEN_NetLayer_FindBaseLayer(const GWEN_NETLAYER *nl,
00411                                            const char *tname);
00412 
00413 
00414 GWENHYWFAR_API
00415 int GWEN_NetLayer_RecvPacket(GWEN_NETLAYER *nl, GWEN_BUFFER *mbuf,
00416                              int timeout);
00417 
00418 GWENHYWFAR_API
00419 int GWEN_NetLayer_RecvPacketBio(GWEN_NETLAYER *nl,
00420                                 GWEN_BUFFEREDIO *bio,
00421                                 int timeout);
00422 
00423 GWENHYWFAR_API
00424 int GWEN_NetLayer_SendPacket(GWEN_NETLAYER *nl,
00425                              const char *dPtr, int dLen,
00426                              int timeout);
00427 
00428 GWENHYWFAR_API
00429 int GWEN_NetLayer_SendPacketBio(GWEN_NETLAYER *nl,
00430                                 GWEN_BUFFEREDIO *bio,
00431                                 int timeout);
00432 
00433 
00434 #endif /* GWEN_NETLAYER_H */
00435 
00436 
00437 
00438 

Generated on Wed Jun 21 00:59:52 2006 for gwenhywfar by  doxygen 1.4.6