00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00041 #ifndef MODULE_H
00042 #define MODULE_H
00043
00044
00045 #include "plugin.h"
00046
00047
00048
00060 class Module : public PlugIn {
00061 public:
00065 Module();
00069 virtual ~Module();
00070
00090 virtual int command(int argc, const char*const* argv);
00091
00101 virtual void recv(Packet* p, Handler* callback);
00111 virtual void recv(Packet *p, int idSrc);
00120 virtual void recv(Packet *p)=0;
00121
00129 int getUpLaySAPnum();
00139 SAP* getUpLaySAP(int i);
00147 int getDownLaySAPnum();
00157 SAP* getDownLaySAP(int i);
00167 void swapUpLaySAP(int i, int j);
00177 void swapDownLaySAP(int i, int j);
00178
00179 protected:
00180
00188 void addUpSAP(SAP* sap);
00189
00197 void addDownSAP(SAP* sap);
00198
00209 void sendUp(Packet* p, double delay=0);
00210
00221 void sendDown(Packet* p, double delay=0);
00222
00233 void sendUp(int moduleId, Packet* p, double delay=0);
00234
00245 void sendDown(int moduleId, Packet* p, double delay=0);
00246
00247
00248
00249
00250
00261 void sendAsyncClMsgUp(ClMessage* m, double delay=0);
00262
00263
00274 void sendAsyncClMsgDown(ClMessage* m, double delay=0);
00275
00276
00286 void sendSyncClMsgDown(ClMessage* m);
00287
00288
00297 void sendSyncClMsgUp(ClMessage* m);
00298
00299
00300
00311 void drop(Packet* p, int depth, const char* reason = "---");
00312
00322 virtual Packet *copy(Packet *p);
00323
00324 private:
00326 SAP** upLayerSAP_;
00328 int upLaySAPnum_;
00330 SAP** downLayerSAP_;
00332 int downLaySAPnum_;
00333
00334
00335 protected:
00336
00337
00338
00339
00340
00341
00348 void sendUp(ClMessage* m, double delay=0);
00349
00359 void sendUp(int moduleId, ClMessage* m, double delay=0);
00360
00367 void sendDown(ClMessage* m, double delay=0);
00368
00377 void sendDown(int moduleId, ClMessage* p, double delay=0);
00378
00384 void sendSynchronousDown(ClMessage* m);
00385
00391 void sendSynchronousUp(ClMessage* m);
00392
00400 void sendSynchronousUp(int moduleId, ClMessage* m);
00401
00409 void sendSynchronousDown(int moduleId, ClMessage* m);
00410
00411
00412
00413
00414
00415 };
00416
00417 #endif