00001 #ifndef CLNTMSG_H
00002 #define CLNTMSG_H
00003
00004 #include "Msg.h"
00005 #include "ClntIfaceMgr.h"
00006 #include "ClntTransMgr.h"
00007 #include "ClntCfgMgr.h"
00008 #include "ClntAddrMgr.h"
00009 #include "SmartPtr.h"
00010 #include "Opt.h"
00011
00012 class TClntMsg : public TMsg
00013 {
00014 public:
00015 TClntMsg(SmartPtr<TClntIfaceMgr> IfaceMgr,
00016 SmartPtr<TClntTransMgr> TransMgr,
00017 SmartPtr<TClntCfgMgr> CfgMgr,
00018 SmartPtr<TClntAddrMgr> AddrMgr,
00019 int iface, SmartPtr<TIPv6Addr> addr, char* buf, int bufSize);
00020
00021 TClntMsg(SmartPtr<TClntIfaceMgr> IfaceMgr,
00022 SmartPtr<TClntTransMgr> TransMgr,
00023 SmartPtr<TClntCfgMgr> CfgMgr,
00024 SmartPtr<TClntAddrMgr> AddrMgr,
00025 int iface, SmartPtr<TIPv6Addr> addr, int msgType);
00026 unsigned long getTimeout();
00027 void send();
00028
00029
00030 virtual void answer(SmartPtr<TClntMsg> Rep) = 0;
00031 virtual void doDuties() = 0;
00032 virtual bool check() = 0;
00033
00034 void appendRequestedOptions();
00035
00036 SmartPtr<TClntTransMgr> getClntTransMgr();
00037 SmartPtr<TClntAddrMgr> getClntAddrMgr();
00038 SmartPtr<TClntCfgMgr> getClntCfgMgr();
00039 SmartPtr<TClntIfaceMgr> getClntIfaceMgr();
00040
00041 virtual string getName() = 0;
00042
00043 protected:
00044 long IRT;
00045 long MRT;
00046 long MRC;
00047 long MRD;
00048 int RC;
00049 int RT;
00050 int FirstTimeStamp;
00051 int LastTimeStamp;
00052 SmartPtr<TClntTransMgr> ClntTransMgr;
00053 SmartPtr<TClntAddrMgr> ClntAddrMgr;
00054 SmartPtr<TClntCfgMgr> ClntCfgMgr;
00055 SmartPtr<TClntIfaceMgr> ClntIfaceMgr;
00056 private:
00057 void setAttribs(SmartPtr<TClntIfaceMgr> IfaceMgr,
00058 SmartPtr<TClntTransMgr> TransMgr,
00059 SmartPtr<TClntCfgMgr> CfgMgr,
00060 SmartPtr<TClntAddrMgr> AddrMgr);
00061 void invalidAllowOptInMsg(int msg, int opt);
00062 void invalidAllowOptInOpt(int msg, int parentOpt, int childOpt);
00063 };
00064
00065 #endif
00066