--- 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 <iostream>
-#include <process.h>
-#include <string>
-#include <map>
-#include <comdef.h>
-
-#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<IPCommReaderThread>
-{
-public:
- IPCommReaderThread(SafeQueue<Data*>* 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<Data*>* 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<IPCommWriterThread>
-{
-public:
- IPCommWriterThread(SafeQueue<Data*>* 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<Data*>* 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<IPCommMonitorThread>
-{
-public:
- IPCommMonitorThread(SafeQueue<Data*>* TxQueue,
- SafeQueue<Data*>* 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<Data*>* m_TxQueue;
- //incoming queue
- SafeQueue<Data*>* 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<string, string>& props );
-
-private:
- //outgoing queue
- SafeQueue<Data*> m_TxQueue;
- //incoming queue
- SafeQueue<Data*> 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