00001 class TMsg;
00002 #ifndef MSG_H
00003 #define MSG_H
00004
00005 #include <iostream>
00006 #include <string>
00007 #include "SmartPtr.h"
00008 #include "Container.h"
00009 #include "DHCPConst.h"
00010 #include "IPv6Addr.h"
00011 #include "Opt.h"
00012
00013
00014 class TMsg
00015 {
00016 public:
00017
00018 TMsg(int iface, SmartPtr<TIPv6Addr> addr, int msgType);
00019 TMsg(int iface, SmartPtr<TIPv6Addr> addr, int msgType, long transID);
00020
00021
00022 TMsg(int iface, SmartPtr<TIPv6Addr> addr, char* &buf, int &bufSize);
00023
00024 int getSize();
00025
00026
00027 virtual void answer(SmartPtr<TMsg> Rep) = 0;
00028
00029
00030 virtual void doDuties() = 0;
00031
00032 virtual bool check() = 0;
00033
00034 virtual unsigned long getTimeout();
00035
00036 virtual void send();
00037
00038 virtual string getName() = 0;
00039
00040
00041 SmartPtr<TOpt> getOption(int type);
00042 void firstOption();
00043 int countOption();
00044
00045 virtual SmartPtr<TOpt> getOption();
00046
00047 long getType();
00048 long getTransID();
00049 TContainer< SmartPtr<TOpt> > getOptLst();
00050 SmartPtr<TIPv6Addr> getAddr();
00051 int getIface();
00052 virtual ~TMsg();
00053 bool isDone();
00054
00055 protected:
00056 int MsgType;
00057
00058 long TransID;
00059
00060 TContainer< SmartPtr<TOpt> > Options;
00061
00062 void setAttribs(int iface, SmartPtr<TIPv6Addr> addr,
00063 int msgType, long transID);
00064
00065 bool IsDone;
00066 char * pkt;
00067 int Iface;
00068 SmartPtr<TIPv6Addr> PeerAddr;
00069 };
00070
00071 #endif
00072