hti/PC_Tools/HTIGateway/HtiGateway/src/util.cpp
branchRCL_3
changeset 40 07b41fa8d1dd
parent 39 3406c99bc375
child 43 ca8a1b6995f6
--- a/hti/PC_Tools/HTIGateway/HtiGateway/src/util.cpp	Thu Jul 15 20:25:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,739 +0,0 @@
-/*
-* 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 module contains the implementation of Util class member functions. 
-*   Util class provides static utility functions for logging and string
-*	manipulation.
-*/
-
-// INCLUDE FILES
-#include "util.h"
-
-// command line parameters
-extern map<string, string> g_parameters;
-
-//**********************************************************************************
-// Class Util
-//
-// Provides static utility functions for logging and string handling.
-//**********************************************************************************
-
-// The default verbose level for Util output is error
-Util::VerboseLevel Util::iVerbose(Util::error);
-
-// The default output is without timestamp
-int Util::iTimestamp(0);
-
-#ifdef ENABLE_LOG_SYNC 
-	Mutex Util::iCritical;
-#endif
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: SetVerboseLevel
-
-    Description: Sets new verbose level by string:
-	           
-				 "none"
-				 "result"
-				 "error"
-				 "info"
-				 "debug"
-    
-    Parameters: const string& aVerbose : in: Verbose level as string
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::SetVerboseLevel(const string& aVerbose)
-{
-	string verbose(aVerbose);
-	ToLower(verbose);
-	if (verbose.compare("result") == 0)
-	{
-		iVerbose = result;
-	}
-	else if (verbose.compare("error") == 0)
-	{
-		iVerbose = error;
-	}
-	else if (verbose.compare("info") == 0)
-	{
-		iVerbose = info;
-	}
-	else if (verbose.compare("debug") == 0)
-	{
-		iVerbose = debug;
-	}
-	else
-	{
-	 	iVerbose = none;
-	}
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: SetVerboseLevel
-
-    Description: Sets new verbose level by enumeration.
-    
-    Parameters: const VerboseLevel aVerbose : in: Verbose level
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::SetVerboseLevel(const VerboseLevel aVerbose)
-{
-	iVerbose = aVerbose;
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: GetVerboseLevel
-
-    Description: Returns current verbose level.
-    
-    Parameters: None
-
-    Return Values: VerboseLevel : Current verbose level
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-Util::VerboseLevel Util::GetVerboseLevel()
-{
-	return iVerbose;
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: SetTimestamp
-
-    Description: Enables/disables timestamp from output by string "yes" or "no".
-    
-    Parameters: const string& aTimestamp : in : "yes" to enable timestamp, "no" to
-	                                            disable.
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::SetTimestamp(const string& aTimestamp)
-{
-	string timestamp(aTimestamp);
-	ToLower(timestamp);
-	if (timestamp.compare("true") == 0)
-	{
-		SetTimestamp(1);
-	}
-	else
-	{
-		SetTimestamp(0);
-	}
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: SetTimestamp
-
-    Description: Enables/disables timestamp from output. 0 is disabled.
-    
-    Parameters: const int aTimestamp : in : Enable/disable time stamp
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::SetTimestamp(const int aTimestamp)
-{
-	iTimestamp = aTimestamp;
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: ParseCmdLine
-
-    Description: Parses command line parameters to map. The map which is passed
-	             as argument must contain all valid keys (command line swicthes).
-				 Function adds values to map to all keys found from command line.
-				 The command line switch is form <key>=<value>. Default values for
-				 keys can be specified.
-    
-    Parameters: const int aArgc           : in     : The number of arguments
-	            char **aArgs              : in     : Pointer array to arguments
-				map<string, string>& aMap : in/out : Map containing possible command
-				                                     line switches (keys). Values of
-													 switches are returned as values.
-
-    Return Values: None
-
-    Errors/Exceptions: UtilError
-
--------------------------------------------------------------------------------*/
-void Util::ParseCmdLine(const int aArgc,
-						char **aArgs,
-						map<string, string>& aMap) throw (UtilError)
-{
-	for (int i = 1; i < aArgc; i++)
-	{
-		string p(aArgs[i]);
-		string v;
-		int idx = p.find_first_of("=");
-		if (idx != string::npos)
-		{
-			if ((idx + 1) == p.length())
-			{
-				string err("Parameter '" + p.substr(0, idx) + "' without value");
-				throw UtilError(err, ERR_UTIL_NO_PARAM_VALUE);
-			}
-			v = &aArgs[i][idx + 1];
-			p = p.substr(0, idx);
-		}
-		else
-		{
-			v = "";
-		}
-
-		// 28.03.06 Disabled this "check" to enable parameter passing to plug-ins also
-		//string def;
-		//GetValue(p, aMap, def);
-		aMap[p] = v;
-	}
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: GetValue
-
-    Description: Returns value by key from a map.
-    
-    Parameters: const string& aKey        : in  : Key to value 
-				map<string, string>& aMap : in  : Map containing valid keys
-				string& aValue            : out : Value of key
-
-    Return Values: None
-
-    Errors/Exceptions: UtilError
-
--------------------------------------------------------------------------------*/
-void Util::GetValue(const string& aKey,
-					const map<string,
-					string>& aMap, string& aValue) throw (UtilError)
-{
-	map<string, string>::const_iterator i = aMap.find(aKey);
-	if (i != aMap.end())
-	{
-		aValue = i->second;
-	}
-	else
-	{
-		string err("Unknown parameter '" + aKey + "'");
-		throw UtilError(err, ERR_UTIL_UNKNOWN_PARAM);
-	}
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: ReadProperties
-
-    Description: Reads properties from a file to a map. Line beginning with
-	             hash character ('#') are considered as comments. The form
-				 of prooerties in file is <property> = <value>.
-    
-    Parameters: const string& aFilename   : in  : Filename where properties are read
-	            map<string, string>& aMap : out : Map where property values are put
-
-    Return Values: None
-
-    Errors/Exceptions: UtilError
-
--------------------------------------------------------------------------------*/
-void Util::ReadProperties(const string& aFilename,
-						  map<string, string>& aMap) throw (UtilError)
-{
-	ifstream in(aFilename.c_str());
-	if (!in)
-	{
-		string err("Cannot open properties file '");
-		err += aFilename + "'.";
-		throw UtilError(err, ERR_UTIL_PROPERTIES_NOT_FOUND);
-	}
-	while (in)
-	{
-		char tmp[256];
-		in.getline(tmp, 256);
-		string line(tmp);
-		if (line.length() == 0 || line.find_first_of("#") == 0)
-		{
-			continue;
-		}
-		int idx = line.find_first_of('=');
-		string v, p;
-		if (idx != string::npos)
-		{
-			p = line.substr(0, idx);
-			int r = p.find(" ");
-			while (r != string::npos)
-			{
-				p.replace(r, 1, "");
-				r = p.find(" ");
-			}
-			v = line.substr(idx + 1);
-			string::iterator i = v.begin();
-			int spaces = 0;
-			while (i != v.end() && *i == ' ')
-			{
-				++spaces;
-				++i;
-			}
-			v.erase(0, spaces);
-			if (v.length() == 0)
-			{
-				string err = "Value not specified for parameter '";
-				err += line.substr(0, idx) + "'.";
-				throw UtilError(err, ERR_UTIL_NO_PROPERTY_VALUE);			
-			}
-		}
-		else 
-		{
-			p = line;
-			v = "";
-		}
-		aMap[p] = v;
-	}
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: Error
-
-    Description: Prints message to output in error level.
-    
-    Parameters: const string& aMsg : in : Error message to output
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::Error(const string& aMsg)
-{
-	Print(cerr, aMsg, error);
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: Error
-
-    Description: Prints message to output in error level with error code number.
-    
-    Parameters: const string& aMsg : in : Error message to output
-				const long aCode   : in : Error code to output
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::Error(const string& aMsg, const long aCode)
-{
-	Print(cerr, aMsg, error, aCode);
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: Log
-
-    Description: Prints message to output in result level.
-    
-    Parameters: const string& aMsg : in : Result message to output
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::Log(const string& aMsg)
-{
-	Print(cout, aMsg, result);
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: Info
-
-    Description: Prints message to output in info level.
-    
-    Parameters: const string& aMsg : in : Info message to output
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::Info(const string& aMsg)
-{
-	Print(cout, aMsg, info);
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: Debug
-
-    Description: Prints message to output in debug level.
-    
-    Parameters: const string& aMsg : in : Debug message to output
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::Debug(const string& aMsg)
-{
-	Print(cout, aMsg, debug);
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: Print
-
-    Description: Prints output to a stream.
-    
-    Parameters: ostream& out              : in : Stream where to write
-                const string& aMsg        : in : Message to output
-                const VerboseLevel aLevel : in : Verbose level of message
-				const long aCode          : in : Possible error code if != 0
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::Print(ostream& out,
-				 const string& aMsg,
-				 const VerboseLevel aLevel,
-				 const long aCode)
-{
-#ifdef ENABLE_LOG_SYNC 
-	iCritical.Lock();
-#endif
-
-	if (aLevel <= iVerbose)
-	{
-		if (iTimestamp)
-		{
-			char timestamp[128];
-			_strdate(timestamp);
-			char tmp[16];
-			_strtime(tmp);
-			strcat(timestamp, " ");
-			strcat(timestamp, tmp);
-			struct _timeb tb;
-			_ftime(&tb);
-			sprintf(tmp, ".%03d", tb.millitm);
-			strcat(timestamp, tmp);
-			out << "[" << timestamp << "] ";
-		}
-		//out << "[" << GetCurrentThreadId() << "] ";
-		out << aMsg;
-		//if (aLevel == debug)
-		{
-			OutputDebugString(aMsg.c_str());
-			OutputDebugString("\r\n");
-		}
-		if (aCode != 0)
-		{
-			out.setf(ios_base::hex, ios_base::basefield);
-			out << " (error: 0x" << aCode << ")";
-		}
-		out << endl;
-	}
-#ifdef ENABLE_LOG_SYNC 
-	iCritical.Unlock();
-#endif
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: ToLower
-
-    Description: Converts string to lower case.
-    
-    Parameters: string& aString : in/out : String which is converted to lower case
-
-    Return Values: string& : Reference to converted string.
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-string& Util::ToLower(string& aString)
-{
-	string::iterator p = aString.begin();
-	while (p != aString.end())
-	{
-		*p = tolower(*p);
-		++p;
-	}
-	return aString;
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: ToUpper
-
-    Description: Converts string to upper case.
-    
-    Parameters: string& aString : in/out : String which is converted to upper case
-
-    Return Values: string& : Reference to converted string.
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-string& Util::ToUpper(string& aString)
-{
-	string::iterator p = aString.begin();
-	while (p != aString.end())
-	{
-		*p = toupper(*p);
-		++p;
-	}
-	return aString;
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: Hex
-
-    Description: Prints hex dump of char table to output.
-    
-    Parameters: const char aData[] : in : Data to be output as hex dump
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::Hex(const char aData[])
-{
-	string s(aData);
-	Hex(s);
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: Hex
-
-    Description: Prints hex dump of string to output.
-    
-    Parameters: const string& aMsg : in : Data to be output as hex dump
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::Hex(const string& aMsg)
-{
-	Hex((const unsigned char *)aMsg.c_str(), aMsg.length());
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: Hex
-
-    Description: Prints hex dump of data to output.
-    
-    Parameters: const unsigned char* aData : in : Pointer to data to be output
-	                                              as hex dump
-                const int aLength          : in : The lenght of data
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::Hex(const unsigned char* aData, const int aLength)
-{
-	Hex((void *)aData, aLength);
-}
-
-/*-------------------------------------------------------------------------------
-
-    Class: Util
-
-    Method: Hex
-
-    Description: Prints hex dump of data to output.
-    
-    Parameters: void *aData       : in : Pointer to data to be output as hex dump
-                const int aLength : in : The lenght of data
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
--------------------------------------------------------------------------------*/
-void Util::Hex(void *aData, const int aLength)
-{
-	Hex(aData, aLength, NULL);
-}
-
-void Util::Hex(void* aData, const int aLength, string* aHexDump)
-{
-#ifdef ENABLE_LOG_SYNC 
-	iCritical.Lock();
-#endif
-
-	char line[16];
-	int line_len = 16;
-	int bytes_to_copy = 0;
-	int printed = 0;
-	bool print_out = (aHexDump == NULL ? true : false);
-	unsigned char *data = (unsigned char *)aData;
-
-	if (print_out)
-	{
-		printf("\n");
-	}
-	else
-	{
-		aHexDump->append("\r\n");
-	}
-	while (printed < aLength)
-	{
-		bytes_to_copy = ((aLength - printed >= line_len ? line_len : (aLength - printed)));
-		memset(line, 0, sizeof(line));
-		memcpy(line, &data[printed], bytes_to_copy);
-		for (int j = 0; j < line_len; j++)
-		{
-			char hex[4];
-			sprintf(hex, "%02X ", (unsigned char)line[j]);
-			if (print_out)
-			{
-				printf("%s", hex);
-			}
-			else
-			{
-				string s(hex);
-				aHexDump->append(s);
-			}
-		}
-		if (print_out) printf(" | ");
-		for (int j = 0; j < line_len; j++)
-		{
-			char c = line[j];
-			if (c >= ' ' && c <= 'z')
-			{
-				if (print_out)
-				{
-					printf("%c", c);
-				}
-				else
-				{
-					char tmp[2];
-					sprintf(tmp, "%c", c);
-					string s(tmp);
-					aHexDump->append(s);
-				}
-			} 
-			else
-			{
-				if (print_out)
-				{
-					printf(".");
-				}
-				else
-				{
-					aHexDump->append(".");
-				}
-			}
-		}
-		if (print_out)
-		{
-			printf("\n");
-		}
-		else
-		{
-			aHexDump->append("\r\n");
-		}
-		if ((printed - line_len) < aLength)
-		{
-			printed += 16;
-		}
-		else
-		{
-			printed = aLength - printed;
-		}
-	}
-	if (print_out) printf("\n");
-
-#ifdef ENABLE_LOG_SYNC 
-	iCritical.Unlock();
-#endif
-}
-
-void Util::CheckCommandlineParam( const string& paramname, string& paramvalue )
-{
-	// Command line parameter overrides ini-file value
-	if ( !g_parameters[paramname].empty() )
-		paramvalue = g_parameters[paramname];
-}
-
-// End of the file
\ No newline at end of file