Msrp/inc/MsrpCommon.h
branchMSRP_FrameWork
changeset 25 505ad3f0ce5c
child 58 cdb720e67852
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Msrp/inc/MsrpCommon.h	Sat Jun 12 14:30:11 2010 +0530
@@ -0,0 +1,282 @@
+/*
+* Copyright (c) 2009-2010 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:
+* MSRP Implementation
+*
+*/
+
+#ifndef __MSRPCOMMON_H__
+#define __MSRPCOMMON_H__
+
+// EXTERNAL INCLUDES
+#include <e32base.h>
+#include <e32debug.h>
+#include <flogger.h>
+
+
+#ifdef UT_TEST
+
+const TInt KTimeOutInSeconds( 5 );
+const TInt KSecondinMicroseconds( 1000000 );
+
+const TInt KListenTimeoutInSeconds( 10 );
+const TInt KBufSize = 4096;
+const TInt KThreshold = 3839;
+
+#else
+
+const TInt KTimeOutInSeconds( 30 );
+const TInt KSecondinMicroseconds( 1000000 );
+
+const TInt KListenTimeoutInSeconds( 30 );
+const TInt KBufSize = 4096;
+const TInt KThreshold = 1024;
+
+#endif
+
+// CONSTANTS
+// Server name.
+_LIT( KMSRPServerName, "!MSRPServer" );
+// The name of the MSRP Client module
+_LIT( KMSRPClientName, "MSRPClient" );
+
+_LIT( KLogDir1, "MSRP" );
+_LIT( KLogFile1, "msrp.txt" );
+_LIT8( KLog8Dir1, "MSRP" );
+_LIT8( KLog8File1, "msrp.txt" );
+_LIT( KMSRPExe, "MSRPServer.exe" );
+
+#ifdef __WINSCW__
+_LIT( KProgramsDir, "\\" );
+#else
+_LIT( KProgramsDir, "\\sys\\bin\\" );
+#endif
+
+_LIT8( KCRAndLF, "\r\n" );
+_LIT8( KMatchCRAndLF, "*\r\n*" );
+_LIT8( KMatch2CRAndLF, "*\r\n\r\n*" );
+_LIT8( KSpaceChar, " " );
+_LIT8( KDashLine, "-------" );
+_LIT8( KMessageEndSign, "$" );
+_LIT8( KMessageContinuesSign, "+" );
+_LIT8( KMessageTerminatedSign, "#" );
+_LIT8( KAsterisk, "*" );
+
+_LIT8( KMsrpUriScheme, "msrp://" );
+_LIT8( KColon, ":" );
+_LIT8( KSemicolon, ";" );
+_LIT8( KForwardSlash, "/" );
+_LIT8( KTransport, "tcp" );
+
+_LIT8( KMSRP,"MSRP" );
+_LIT8( KMSRPSend,"SEND" );
+_LIT8( KMSRPReport,"REPORT" );
+_LIT8( KMSRPMessageID, "Message-ID" );
+_LIT8( KMSRPByteRange,"Byte-Range" );
+_LIT8( KMSRPContentType, "Content-Type" );
+_LIT8( KMSRPToPath, "To-Path" );
+_LIT8( KMSRPFromPath,"From-Path" );
+_LIT8( KMSRPSuccessReport,"Success-Report" );
+_LIT8( KMSRPFailureReport,"Failure-Report" );
+_LIT8( KMSRPStatus, "Status" );
+
+// temporary file path
+_LIT( KDefaultTempFilePath, "C:\\system\\temp\\" );
+
+// CONSTANTS
+const TInt KMaxLengthOfUrl = 255;
+const TInt KMaxLengthOfHost = 255;
+const TInt KMaxLengthOfSessionId = 255;
+const TInt KSizeOfProgramPath = 50;
+
+// maximum length of incoming message buffer (for externalizing CMSRPMessage
+// class
+const TInt KMaxLengthOfIncomingMessageExt = 4096;
+
+// max length of small MSRP message
+const TInt KMaxLengthOfSmallMSRPMessage = 2048;
+
+// MSRP port number, IANA assigned
+const TInt KMsrpPort = 2855;
+
+// MSRP server version
+const TUint KMSRPServerMajorVersionNumber = 1;
+const TUint KMSRPServerMinorVersionNumber = 0;
+const TUint KMSRPServerBuildVersionNumber = 0;
+
+// end of line chars
+const TUint KDashCharacter = 0x2D;
+const TUint KDividedCharacter = 0x2F;
+const TUint KSpaceCharacter = 0x20;
+
+const TUint KColonCharacter = 0x3A;
+const TUint KSemiColonCharacter = 0x3B;
+const TInt KMaxLengthOfStatusCode = 3;
+
+// the maximum length of MSRP end line string
+const TInt KMaxLengthOfMessageEndString = 100;
+
+// the maximum length of transaction id string
+const TInt KMaxLengthOfTransactionIdString = 100;
+
+const TInt KUnknownRange = -1;
+
+// MACROS
+#ifdef _DEBUG
+
+	// logging
+	#define MSRPLOG( text ) \
+		{ \
+		_LIT( KText, text ); \
+		RFileLogger::Write( KLogDir1, KLogFile1, EFileLoggingModeAppend, KText ); \
+		RDebug::Print( KText ); \
+		}
+
+	#define MSRPLOG2( text, value ) \
+		{ \
+		_LIT( KText, text ); \
+		RFileLogger::WriteFormat( KLogDir1, KLogFile1, EFileLoggingModeAppend, \
+		TRefByValue<const TDesC>( KText() ), value ); \
+		RDebug::Print( KText, value ); \
+		}
+
+	#define MSRPLOG3( text, value, value2 ) \
+		{ \
+		_LIT( KText, text ); \
+		RFileLogger::WriteFormat( KLogDir1, KLogFile1, EFileLoggingModeAppend, \
+		TRefByValue<const TDesC>( KText() ), value, value2 ); \
+		RDebug::Print( KText, value, value2 ); \
+		}
+
+#else
+
+	// not used
+	#define MSRPLOG( text )
+	#define MSRPLOG2( text, value1 )
+	#define MSRPLOG3( text, value1, value2 )
+
+#endif // END MACROS
+
+// ENUMS
+// MSRP API IPC request definitions
+
+enum TMSRPRequests
+	{
+    EMSRPCreateSubSession,
+	EMSRPCloseSubSession,
+	EMSRPLocalPath,
+	EMSRPConnect,
+	EMSRPListenConnections,
+    EMSRPListenMessages,
+    EMSRPListenSendResult,
+    EMSRPSendMessage,    
+    EMSRPSendFile,
+    EMSRPReceiveFile,
+	EMSRPCancelSending,
+	EMSRPCancelReceiving,
+	EMSRPCancelSendRespListening,
+	EMSRPReserved
+	};
+
+enum TMSRPMessageContent
+	{
+	EMSRPChunkEndHeaders,
+	EMSRPChunkEndNoHeaders,
+	EMSRPChunkPartialChunkNoHeaders,
+	EMSRPChunkPartialChunkHeaders
+	};
+
+enum TServerClientResponses
+    {
+    ESubSessionHandle=3, // type integer and returned as response to EMSRPCreateSubSession  
+    // Reserved,    
+    };
+
+enum TPanicCode
+    {
+    EBadRequest = 1,
+    EBadDescriptor,
+    EBadSubsessionHandle 
+    };
+
+enum TReportStatus
+    {
+    EYes,
+    ENo,
+    EPartial
+    };
+
+enum TErrorCode
+    {
+    EUndefined = -1,
+    ENoError = 0,
+    ENetworkTimeout = 1,
+    EUnrecoverableError = 2,    
+    ELocalTimeout = 3,
+    EInvalidAction = 4
+    };
+
+
+// Local host name and session id
+typedef struct TLocalPathMSRPData
+    {
+    TBuf8< KMaxLengthOfHost> iLocalHost;
+    TBuf8< KMaxLengthOfSessionId > iSessionID;
+    } TLocalPathMSRPData;
+    
+
+// for connection parameters
+typedef struct TConnectMSRPData
+	{
+	TBuf8< KMaxLengthOfHost > iRemoteHost;
+	TUint iRemotePort;
+	TBuf8< KMaxLengthOfSessionId > iRemoteSessionID;
+	} TConnectMSRPData;
+
+	
+// for listening parameters
+typedef struct TListenMSRPData
+	{
+	TBuf8< KMaxLengthOfHost > iRemoteHost;
+	TUint iRemotePort;
+	TBuf8< KMaxLengthOfSessionId > iRemoteSessionID;
+	TBuf8< KMaxLengthOfIncomingMessageExt > iExtMessageBuffer;
+	TBool iIsMessage;
+	TBool iIsProgress;
+    TInt iBytesRecvd;
+    TInt iTotalBytes;
+	TInt iStatus; 
+	} TListenMSRPData;
+
+	
+// for sending a message
+typedef struct TSendMSRPData
+	{
+	TBuf8< KMaxLengthOfIncomingMessageExt > iExtMessageBuffer;
+	} TSendMSRPData;
+
+    
+// for listening to result of a sent message
+typedef struct TListenSendResultMSRPData
+	{
+	TBuf8< KMaxLengthOfSessionId > iSessionID;
+	TBuf8< KMaxLengthOfSessionId > iMessageId;
+    TBool iIsProgress;
+    TInt iBytesSent;
+    TInt iTotalBytes;
+	TInt iStatus; // error codes propagated to the client
+	} TListenSendResultMSRPData;
+
+
+#endif // __MSRPCOMMON_H__
+
+// End of File