www.pudn.com > DCPlusPlus-src.zip > DCPlusPlus.cpp


/*  
 * Copyright (C) 2001-2004 Jacek Sieka, j_s at telia com 
 * 
 * This program is free software; you can redistribute it and/or modify 
 * it under the terms of the GNU General Public License as published by 
 * the Free Software Foundation; either version 2 of the License, or 
 * (at your option) any later version. 
 * 
 * This program is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 * GNU General Public License for more details. 
 * 
 * You should have received a copy of the GNU General Public License 
 * along with this program; if not, write to the Free Software 
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
 */ 
 
#include "stdinc.h" 
#include "DCPlusPlus.h" 
 
#include "ConnectionManager.h" 
#include "DownloadManager.h" 
#include "UploadManager.h" 
#include "CryptoManager.h" 
#include "ShareManager.h" 
#include "SearchManager.h" 
#include "QueueManager.h" 
#include "ClientManager.h" 
#include "HashManager.h" 
#include "LogManager.h" 
#include "HubManager.h" 
#include "SettingsManager.h" 
#include "FinishedManager.h" 
#include "ADLSearch.h" 
 
#include "StringTokenizer.h" 
 
void startup(void (*f)(void*, const string&), void* p) { 
	// "Dedicated to the near-memory of Nev. Let's start remembering people while they're still alive." 
	// Nev's great contribution to dc++ 
	while(1) break; 
 
	Util::initialize(); 
 
	ResourceManager::newInstance(); 
	SettingsManager::newInstance(); 
 
	LogManager::newInstance(); 
	TimerManager::newInstance(); 
	HashManager::newInstance(); 
	CryptoManager::newInstance(); 
	SearchManager::newInstance(); 
	ClientManager::newInstance(); 
	ConnectionManager::newInstance(); 
	DownloadManager::newInstance(); 
	UploadManager::newInstance(); 
	ShareManager::newInstance(); 
	HubManager::newInstance(); 
	QueueManager::newInstance(); 
	FinishedManager::newInstance(); 
	ADLSearchManager::newInstance(); 
 
	SettingsManager::getInstance()->load(); 
 
	if(!SETTING(LANGUAGE_FILE).empty()) { 
		ResourceManager::getInstance()->loadLanguage(SETTING(LANGUAGE_FILE)); 
	} 
 
	HubManager::getInstance()->load(); 
	int i; 
	for(i = 0; i < SettingsManager::SPEED_LAST; i++) { 
		if(SETTING(CONNECTION) == SettingsManager::connectionSpeeds[i]) 
			break; 
	} 
	if(i == SettingsManager::SPEED_LAST) { 
		SettingsManager::getInstance()->set(SettingsManager::CONNECTION, SettingsManager::connectionSpeeds[0]); 
	} 
 
	if(f != NULL) 
		(*f)(p, STRING(HASH_DATABASE)); 
	HashManager::getInstance()->startup(); 
	if(f != NULL) 
		(*f)(p, STRING(SHARED_FILES)); 
	ShareManager::getInstance()->refresh(true, false, true); 
	if(f != NULL) 
		(*f)(p, STRING(DOWNLOAD_QUEUE)); 
	QueueManager::getInstance()->loadQueue(); 
 
} 
 
void shutdown() { 
	ConnectionManager::getInstance()->shutdown(); 
	HashManager::getInstance()->shutdown(); 
 
	TimerManager::getInstance()->removeListeners(); 
	SettingsManager::getInstance()->save(); 
	 
	ADLSearchManager::deleteInstance(); 
	FinishedManager::deleteInstance(); 
	ShareManager::deleteInstance(); 
	CryptoManager::deleteInstance(); 
	DownloadManager::deleteInstance(); 
	UploadManager::deleteInstance(); 
	QueueManager::deleteInstance(); 
	ConnectionManager::deleteInstance(); 
	SearchManager::deleteInstance(); 
	ClientManager::deleteInstance(); 
	HubManager::deleteInstance(); 
	HashManager::deleteInstance(); 
	LogManager::deleteInstance(); 
	SettingsManager::deleteInstance(); 
	TimerManager::deleteInstance(); 
	ResourceManager::deleteInstance(); 
} 
 
/** 
 * @file 
 * $Id: DCPlusPlus.cpp,v 1.34 2004/09/13 23:02:43 arnetheduck Exp $ 
 */