diff -r 7259cf1302ad -r 169364e7e4b4 hti/PC_Tools/HTIGateway/HtiGateway/inc/IPCommPlugin.h --- a/hti/PC_Tools/HTIGateway/HtiGateway/inc/IPCommPlugin.h Tue Jul 06 16:05:13 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,231 +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 file contains headers of IPCommPlugin, -* IPCommReaderThread, IPCommWriterThread and IPCommMonitorThread classes. -*/ - -#ifndef IPCOMMPLUGIN_H -#define IPCOMMPLUGIN_H - -//#pragma warning ( disable : 4786 ) -#include -#include -#include -#include -#include - -#include "common.h" -#include "plugin.h" -#include "safequeue.h" -#include "thread.h" -#include "datagateway.h" // for g_DataGatewayDefaultTcpIpBufferSize - -// forward declarations -class Socket; - -using namespace std; - -#define IP_INI_FILE_NAME "ipcommplugin.ini" - -#define IP_INI_LOCAL_PORT_PARAM "LOCAL_PORT" -#define IP_INI_REMOTE_HOST_PARAM "REMOTE_HOST" -#define IP_INI_REMOTE_PORT_PARAM "REMOTE_PORT" -#define IP_INI_RECV_BUFFER_SIZE_PARAM "RECV_BUFFER_SIZE" - -#define PARAM_SWITCH_LOCAL_PORT_PARAM "-LOCAL_PORT" -#define PARAM_SWITCH_REMOTE_HOST_PARAM "-REMOTE_HOST" -#define PARAM_SWITCH_REMOTE_PORT_PARAM "-REMOTE_PORT" -#define PARAM_SWITCH_RECV_BUFFER_SIZE_PARAM "-RECV_BUFFER_SIZE" - -const DWORD g_IPCommDefaultTimeout = 40000; //ms -const DWORD g_IPPluginTimeout = 10000; //not used - -// Maximum time to wait -extern long g_MaximumShutdownWaitTime; - -//********************************************************************************** -// Class IPCommReaderThread -// -// This thread is used to read bytes from TCP/IP socket, encapsulate the bytes to Data objects -// and push them to incoming queue -//********************************************************************************** - -class IPCommReaderThread : public Thread -{ -public: - IPCommReaderThread(SafeQueue* q, long bufsize); - /* - * Main execution loop which reads bytes from socket, encapsulates the bytes to Data object and pushes them to incoming queue - */ - void Run(); - void Stop(); - bool IsRunning(); - -private: - friend class IPCommMonitorThread; - //incoming queue - SafeQueue* m_Queue; - //Socket connected to mobile device - Socket* m_Socket; - bool m_Running; - //size of buffer used when reading data from socket - long m_TcpIpBufferSize; -}; - -//********************************************************************************** -// Class IPCommWriterThread -// -// This thread is used to write data from outgoing queue to TCP/IP port -//********************************************************************************** - -class IPCommWriterThread : public Thread -{ -public: - IPCommWriterThread(SafeQueue* q); - /* - * Main execution loop which gets Data from outgoing queue and sends it to socket - */ - void Run(); - void Stop(); - bool IsRunning(); - -private: - friend class IPCommMonitorThread; - //outgoing queue - SafeQueue* m_Queue; - //Socket connected to mobile device - Socket* m_Socket; - bool m_Running; -}; - -//********************************************************************************** -// Class IPCommMonitorThread -// -// This thread creates and starts reader and writer threads -// The thread also monitors if reader and writer threads are running and restarts them in case either isn't running -//********************************************************************************** - -class IPCommMonitorThread : public Thread -{ -public: - IPCommMonitorThread(SafeQueue* TxQueue, - SafeQueue* RxQueue, - int LocalPort, - string& RemoteHost, - int RemotePort, - long RecvBufferSize); - ~IPCommMonitorThread(); - /* - * Main execution loop of thread - * -Creates reader and writer threads and starts them - * -Monitors if either reader or writer thread aren't running and restarts them if not - */ - void Run(); - void Stop(); - bool IsRunning(); - -private: - /* - * This method has two functionalities - * -It waits for incoming connections if local port is defined - * -It tries to connect to remote host if local host is not defined - */ - void Connect(Socket*& s); - -private: - bool m_Running; - //outgoing queue - SafeQueue* m_TxQueue; - //incoming queue - SafeQueue* m_RxQueue; - //used to read data from TCP/IP port and push them to incoming queue - IPCommReaderThread* m_ReaderThread; - //used to write data from outgoing queue to TCP/IP port - IPCommWriterThread* m_WriterThread; - //port that thread should listen to - int m_LocalPort; - //hostname that thread should connect to - string& m_RemoteHost; - //Port that thread should connect to - int m_RemotePort; - long m_RecvBufferSize; -}; - -//********************************************************************************** -// Class IPCommPlugin -// -// This class implements a CommChannelPlugin used in TCP/IP communication with device -//********************************************************************************** - -class IPCommPlugin : public CommChannelPlugin -{ -public: - /* - * This method initializes IPCommPlugin and Starts IPCommMonitorThread - */ - DWORD Init(); - /* - * This method is used to push given data to outgoing queue and then - * wait for data to become available and read all data into single Data object - */ - DWORD SendReceive( Data* data_in, Data** data_out, long timeout = g_IPPluginTimeout ); - /* - * This method pushes the given Data object(of type Data::EData) to outgoing queue - */ - DWORD Send( Data* data_in, long timeout = g_IPPluginTimeout ); - /* - * This method is used to read all data in incoming queue to single Data object and store the result - * to the data object given parameter - */ - DWORD Receive( Data** data_out, long timeout = g_IPPluginTimeout ); - /* - * This method is used to wait for data to become available in incoming queue - * and then read all data into single Data object which is given as parameter - */ - DWORD ReceiveWait( Data** data_out, long timeout = g_IPPluginTimeout ); - /* - * This method checks if data is available on incoming queue - */ - bool IsDataAvailable(); - DWORD Open(); - DWORD Close(); - IPCommPlugin( const CommChannelPluginObserver* observer = NULL ); - ~IPCommPlugin(); - -private: - /* - * This method initializes class member variables from values in map - */ - void CheckProperties( map& props ); - -private: - //outgoing queue - SafeQueue m_TxQueue; - //incoming queue - SafeQueue m_RxQueue; - //thread which starts and monitors reader and writer threads - IPCommMonitorThread* m_MonitorThread; - //port that IPCommPlugin should listen to - int m_PropertyLocalPort; - //hostname that IPCommPlugin should connect to - string m_PropertyRemoteHost; - //port that IPCommPlugin should connect to - int m_PropertyRemotePort; - long m_PropertyRecvBufferSize; -}; - -#endif - -// End of the file \ No newline at end of file