00001 /* 00002 * Dibbler - a portable DHCPv6 00003 * 00004 * authors: Tomasz Mrugalski <thomson@klub.com.pl> 00005 * Marek Senderski <msend@o2.pl> 00006 * 00007 * released under GNU GPL v2 or later licence 00008 * 00009 * $Id: SrvTransMgr.h,v 1.5 2004/12/07 00:45:10 thomson Exp $ 00010 * 00011 * $Log: SrvTransMgr.h,v $ 00012 * Revision 1.5 2004/12/07 00:45:10 thomson 00013 * Manager creation unified and cleaned up. 00014 * 00015 * Revision 1.4 2004/09/05 15:27:49 thomson 00016 * Data receive switched from recvfrom to recvmsg, unicast partially supported. 00017 * 00018 * Revision 1.3 2004/09/03 20:58:36 thomson 00019 * *** empty log message *** 00020 * 00021 * 00022 */ 00023 00024 class TSrvTransMgr; 00025 #ifndef SRVTRANSMGR_H 00026 #define SRVTRANSMGR_H 00027 00028 #include "SmartPtr.h" 00029 #include "Container.h" 00030 #include "Opt.h" 00031 #include "Msg.h" 00032 #include "SrvIfaceMgr.h" 00033 #include "SrvCfgMgr.h" 00034 #include "SrvAddrMgr.h" 00035 00036 class TSrvTransMgr 00037 { 00038 friend ostream & operator<<(ostream &strum, TSrvTransMgr &x); 00039 public: 00040 TSrvTransMgr(SmartPtr<TSrvIfaceMgr> ifaceMgr, 00041 SmartPtr<TSrvAddrMgr> addrMgr, 00042 SmartPtr<TSrvCfgMgr> cfgMgr, 00043 string xmlFile); 00044 ~TSrvTransMgr(); 00045 00046 bool openSocket(SmartPtr<TSrvCfgIface> confIface); 00047 00048 long getTimeout(); 00049 void relayMsg(SmartPtr<TMsg> msg); 00050 void doDuties(); 00051 void dump(); 00052 00053 bool isDone(); 00054 void shutdown(); 00055 00056 char * getCtrlAddr(); 00057 int getCtrlIface(); 00058 00059 void setThat(SmartPtr<TSrvTransMgr> that); 00060 private: 00061 string XmlFile; 00062 TContainer< SmartPtr<TMsg> > MsgLst; 00063 bool IsDone; 00064 00065 SmartPtr<TSrvIfaceMgr> IfaceMgr; 00066 SmartPtr<TSrvTransMgr> That; 00067 SmartPtr<TSrvCfgMgr> CfgMgr; 00068 SmartPtr<TSrvAddrMgr> AddrMgr; 00069 00070 int ctrlIface; 00071 char ctrlAddr[48]; 00072 }; 00073 00074 00075 00076 #endif 00077 00078 00079