/*
 * Copyright (C) 2009 - 2010 Funambol, Inc.
 *
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Affero General Public License version 3 as published by
 * the Free Software Foundation with the addition of the following permission
 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
 * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE
 * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
 *
 * 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 Affero General Public License
 * along with this program; if not, see http://www.gnu.org/licenses or write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301 USA.
 *
 * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite
 * 305, Redwood City, CA 94063, USA, or at email address info@funambol.com.
 *
 * The interactive user interfaces in modified source and object code versions
 * of this program must display Appropriate Legal Notices, as required under
 * Section 5 of the GNU Affero General Public License version 3.
 *
 * In accordance with Section 7(b) of the GNU Affero General Public License
 * version 3, these Appropriate Legal Notices must retain the display of the
 * "Powered by Funambol" logo. If the display of the logo is not reasonably
 * feasible for technical reasons, the Appropriate Legal Notices must display
 * the words "Powered by Funambol".
 */

/* $Id$ */
#include "serverexchange/IServerExchangeManager.h"

#pragma once

#include <syncml/core/DevInf.h>
#include <spds/AccessConfig.h>
#include "daemon/IManager.h"
//#include "commands/SCommandAdapter.h"
#include "serverexchange/firmware/FirmwareManager.h"
#include <NotificationListener/SessionInfo.h>


namespace NS_DM_Client
{
	class MockServerExchangeManager : public IServerExchangeManager
	{
	public:
		/// Add message to the queue
		virtual void AddCommand(NS_SyncMLCommand::SCommandPtr ptrCommand, const char *serverid) {};
		virtual void AddCommands(NS_SyncMLCommand::SCommandsArray &commands, const char *serverid) {};

		/// Get the default DM connection; may be NULL
		virtual NS_Communication::Connection * DefaultConnection() {return 0;};

		virtual void NotifyDiagnosticsReady(String &serverID, String &origID) {};

		/// Set list of account read from the DMAcc node
		virtual void SetConnectionsInfo(NS_Communication::ConnInfoList &) {};

		virtual void HandleNetworkEntrance(int homeNspID, const char* operatorName) {};
		/// Post authentification messages into the sending queue
		//virtual void Authenticate() = 0;
		virtual void SetServerPollerInfo(bool pollingSupported, int pollingInterval, int pollingAttempts) {};

		/// Set server id; value is checked while performing commands on MO tree
		/// typically stored in the MO tree under the ./DMAcc/<X>/ServerID path
		virtual void SetCurentServerID(const char *) {};

		/// Set access configs to be used during next authentification on server
		virtual void SetAccessConfig(Funambol::AccessConfig &accessConfig) {};

		/// Set device info, read from the dmtree
		virtual void SetDevInfo(Funambol::DevInf &devInf) {};

		/// Run client initiated session
		virtual void StartClientSession() {};
		virtual bool HasAccountFor(String &serverID) {return false;};

		/// request for DM session
		virtual void RequestSessionStart(const NS_NotificationListener::SessionInfo& sessionInfo) {};

		virtual void RequestFWUpdate(bool userInitiated, const char *fumouri, int data) {};
		/// Start downloading FW file from the specified URL.
		virtual void FirmwareDU(const char *URL, ExecPtr &cmd, bool update) {};

		virtual void UpdateFW(ExecPtr cmd) {};

		virtual void StartWIB(HomeNSPID nspID, const char* operatorName = NULL) {};

		virtual void ProcessBootstrapMessage(const char *bsm, uint length) {};


		virtual bool Init(const StringMap& settings, const String& loggerInstance, ProfileComponentsHolder& pch) { return true; };
		virtual bool Start() { return true; };
		virtual bool Stop() { return true; };
		virtual void Release() {};
		virtual NS_Communication::FirmwareManager* GetFirmwareManager() { return NULL; };
	};
}
