00001
00002
00003
00004
00005
00006
00007 #ifdef USE_STD
00008 #include <iostream>
00009 #include <fstream>
00010 #include <cstdlib>
00011 using namespace std;
00012 #else
00013 #include <iostream.h>
00014 #include <fstream.h>
00015 #include <stdlib.h>
00016 #endif
00017
00018 #include "utility.h"
00019 #include "MCFTPid.h"
00020
00021 #include "MCFTPMessageManager.h"
00022
00023 MCFTPMessageManager* MCFTPMessageManager::_ptinstance = 0;
00024
00025 unsigned int MCFTPMessageManager::_dst_ip = 0;
00026 unsigned int MCFTPMessageManager::_dst_port = 0;
00027 unsigned int MCFTPMessageManager::_src_ip = 0;
00028 unsigned int MCFTPMessageManager::_src_port = 0;
00029 unsigned int MCFTPMessageManager::_mssgnum = 0;
00030
00031 MCFTPMessageManager* MCFTPMessageManager::instance()
00032 {
00033 if ( _ptinstance == 0 ) _ptinstance = new MCFTPMessageManager;
00034 return _ptinstance;
00035 }
00036
00037 void MCFTPMessageManager::destroy() {
00038 if ( _ptinstance != 0 ) { delete _ptinstance; _ptinstance = 0; }
00039 }
00040
00041 MCFTPMessageManager::MCFTPMessageManager()
00042 {
00043 int ip3,ip2,ip1,ip0;
00044 ifstream ifs;
00045
00046 ifs.open("mcftpmessagemanager.conf");
00047 if ( !ifs.good() ) {
00048 cerr << "MCFTPMessageManager::ERROR: failed open on "
00049 << "file mcftpmessagemanager.conf" << endl ;
00050 exit(1);
00051 }
00052 ifs >> ip3 >> ip2 >> ip1 >> ip0;
00053 _dst_ip = iptoint( ip3, ip2, ip1, ip0 );
00054 ifs >> _dst_port;
00055 ifs >> ip3 >> ip2 >> ip1 >> ip0;
00056 _src_ip = iptoint( ip3, ip2, ip1, ip0 );
00057 ifs >> _src_port;
00058 ifs.close();
00059
00060 ifs.open("mcftpmessagemanager.rc");
00061 if ( ifs.fail() ) {
00062 cerr << "MCFTPMessageManager::ERROR: failed open on "
00063 << "file mcftpmessagemanager.rc" << endl ;
00064 exit(1);
00065 }
00066 else ifs >> _mssgnum;
00067 ifs.close();
00068 }
00069
00070 MCFTPMessageManager::~MCFTPMessageManager()
00071 {
00072 ofstream ofs;
00073 ofs.open("mcftpmessagemanager.rc");
00074 if ( ofs.fail() )
00075 cerr << "MCFTPMessageManager::ERROR: failed write, mssgnum = "
00076 << _mssgnum << endl ;
00077 else ofs << _mssgnum;
00078 ofs.close();
00079 }
00080
00081 MCFTPid MCFTPMessageManager::get_id()
00082 {
00083 MCFTPid id( _dst_ip, _dst_port, _src_ip, _src_port, _mssgnum++ );
00084 return id;
00085 }
00086
00087