/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
* This file contains the headers of the Data and ParameterList classes.
*/
#ifndef COMMON_H
#define COMMON_H
#pragma warning ( disable : 4786 )
#include <windows.h>
//**********************************************************************************
// Class Data
//
// This class provides data encapsulattion for DataGateway
//**********************************************************************************
class Data
{
public:
//type of data
enum DataType { EEmpty = 0, EControl, EError, EData };
public:
Data(const void* data_in = NULL, DWORD length = 0, DataType type = EEmpty);
Data(const void* data_in, DWORD length, DWORD offset, DataType type);
Data(const Data& d);
virtual ~Data();
/*
* returns data in Data object given parameter
*/
virtual void* GetData(void* data_out = NULL) const;
/*
* returns length of data
*/
virtual DWORD GetLength() const;
/*
* returns type of data
* can be one of the following: EEmpty, EControl, EError, EData
*/
DataType GetType() const;
/*
* This method copies up to length bytes from given data object to class member data object
*/
bool SetData(const void* data_in, DWORD length, DataType type);
/*
* This method copies up to length bytes(starting from offset) from given data object to class member data object
*/
bool SetData(const void* data_in, DWORD length, DWORD offset, DataType type);
Data& operator=(const Data& data);
/*
* Used to combine different messages into one.
* This method appends new data at the end of already excisting data.
* If new data isn't same type as excisting data it isn't appended.
* Returns bool value of whether the method has succeeded to append the data or not.
*/
virtual bool AppendData(Data* aData);
/*
* This method is used to free data and set data type to EEmpty
*/
void FreeData();
private:
//actual data
void* m_pData;
//length of data
DWORD m_dwLength;
//type of data
DataType m_Type;
};
const BYTE ControlPhonePowered = 0x01;
const Data CtrlMessagePhonePowered((void*)&ControlPhonePowered, 1, 0, Data::EControl);
const BYTE ErrorSendingData = 0x81;
const Data ErrorMessageSendingData((void*)&ErrorSendingData, 1, 0, Data::EError);
#define CREATE_CONTROL_MESSAGE(str) new Data( (str), strlen(str)+1, Data::EControl)
//**********************************************************************************
// Class ParameterList
//
//**********************************************************************************
#include <map>
#include <string>
using namespace std;
class ParameterList
{
public:
void Add(const string& key, const void* value);
const void* Get(const string& key);
ParameterList();
~ParameterList();
private:
map<const string,const void*> m_Map;
};
#endif
// End of the file