--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hti/PC_Tools/DataGateway/INC/datagateway.h Wed Oct 13 16:17:58 2010 +0300
@@ -0,0 +1,184 @@
+/*
+* 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 DataGatewaySocketWriterThread,
+* DataGatewaySocketReaderThread, DataGatewayClientThread and DataGateway
+* classes.
+*/
+
+#ifndef DATAGATEWAY_H
+#define DATAGATEWAY_H
+
+#pragma warning ( disable : 4786 )
+
+#include "Socket.h"
+
+#include <windows.h>
+#include <process.h>
+
+#include "util.h"
+#include "common.h"
+#include "plugin.h"
+#include "safequeue.h"
+#include "thread.h"
+
+const int g_DataGatewayDefaultTcpIpPort = 2000;
+const int g_DataGatewayDefaultTcpIpBufferSize = 8 * 1024;
+
+// Maximum time to wait
+extern long g_MaximumShutdownWaitTime;
+
+extern DWORD g_ErrorCode;
+
+//**********************************************************************************
+// Class DataGatewaySocketWriterThread
+//
+// This thread is used to read Data from outgoing queue
+// and write it to Socket(connected to program using DataGateway)
+//**********************************************************************************
+
+class DataGatewaySocketWriterThread : public Thread<DataGatewaySocketWriterThread>
+{
+public:
+ DataGatewaySocketWriterThread(SafeQueue<Data*>* q, Socket* s);
+ /*
+ * Main loop of thread
+ * Reads Data from outgoing queue and writes it to Socket(connected to program using DataGateway)
+ */
+ void Run();
+ void Stop();
+ bool IsRunning();
+
+private:
+ //outgoing queue
+ SafeQueue<Data*>* m_Queue;
+ //socket to which software using DataGateway is connected to
+ Socket* m_Socket;
+ bool m_Running;
+};
+
+//**********************************************************************************
+// Class DataGatewaySocketReaderThread
+//
+// This thread is used to read incoming bytes from Socket(connected to program using DataGateway)
+// which it then encapsulates into Data objects and forwards to outgoing queue
+//**********************************************************************************
+
+class DataGatewaySocketReaderThread : public Thread<DataGatewaySocketReaderThread>
+{
+public:
+ DataGatewaySocketReaderThread(SafeQueue<Data*>* q, long bufsize, Socket* s);
+ /*
+ * Main loop of thread
+ * Reads bytes from Socket(connected to program using DataGateway), encapsulates them to Data object and puts these to outgoing queue
+ */
+ void Run();
+ void Stop();
+ bool IsRunning();
+
+private:
+ //incoming queue
+ SafeQueue<Data*>* m_Queue;
+ //socket to which software using DataGateway is connected to
+ Socket* m_Socket;
+ bool m_Running;
+ long m_TcpIpBufferSize;
+};
+
+//**********************************************************************************
+// Class DataGatewayClientThread
+//
+// This thread serves DataGateway's clients
+// Gets Data from incoming queue to which DataGatewaySocketReader has pushed it and forwards
+// them to CommChannelPlugin.
+// The thread also reads incoming data from CommChannelPlugin and forwards them to outgoing queue which
+// DataGatewaySocketWriter then reads
+//**********************************************************************************
+
+class DataGatewayClientThread : public Thread<DataGatewayClientThread>
+{
+public:
+ DataGatewayClientThread(Socket** s, long bufsize, const string& commchannel);
+ DataGatewayClientThread(Socket** s, long bufsize, CommChannelPlugin** f);
+ ~DataGatewayClientThread();
+ /*
+ * Main loop of thread
+ * Gets Data from incoming queue to which DataGatewaySocketReader has pushed it and forwards
+ * them to CommChannelPlugin.
+ * Reads incoming data from CommChannelPlugin and forwards them to outgoing queue which
+ * DataGatewaySocketWriter then reads
+ */
+ void Run();
+ void Stop();
+
+private:
+ //incoming queue
+ SafeQueue<Data*> m_ReaderQueue;
+ //outgoing queue
+ SafeQueue<Data*> m_WriterQueue;
+ //used to read data from socket to incoming queue
+ DataGatewaySocketReaderThread m_ReaderThread;
+ //used to write data from outgoing queue to socket
+ DataGatewaySocketWriterThread m_WriterThread;
+ //Socket to which software using DataGateway is connected to
+ Socket** m_Socket;
+ //The CommChannelPlugin that is used in communication
+ CommChannelPlugin* m_CommChannelPlugin;
+ //determines which CommChannelPlugin is loaded
+ const string& m_CommChannelPluginName;
+ bool m_Running;
+ //This value states whether or not Communication Channel Plugin uses late initialization
+ bool m_CCLateInit;
+ //This value tells the buffer size that is used
+ long m_TcpIpBufferSize;
+};
+
+//**********************************************************************************
+// Class DataGateway
+//
+// This is the main thread of DataGateway
+//**********************************************************************************
+
+class DataGateway : public Thread<DataGateway>
+{
+public:
+ DataGateway(int port = g_DataGatewayDefaultTcpIpPort,
+ long bufsize = g_DataGatewayDefaultTcpIpBufferSize,
+ const string& commchannel = "",
+ bool stayalive = false,
+ bool cclateinit = false);
+ void Run();
+ void Stop();
+ bool IsRunning();
+
+private:
+ //determines which CommChannelPlugin is loaded
+ const string& m_CommChannelPluginName;
+ //reference to CommChannelPlugin
+ CommChannelPlugin* m_CommChannelPlugin;
+ Event m_ShutdownEvent;
+ bool m_Running;
+ //tells whether DataGateway should stay alive after first client has disconnected
+ bool m_StayAlive;
+ //this value states whether or not Communication Channel Plugin uses late initialization
+ bool m_CCLateInit;
+ //the port which DataGateway listens for incoming connections
+ int m_TcpIpPort;
+ //buffer size used in communication
+ long m_TcpIpBufferSize;
+};
+
+#endif
+
+// End of the file
\ No newline at end of file