diff -r f1578314b8da -r 505ad3f0ce5c Msrp/inc/MsrpCommon.h --- /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 +#include +#include + + +#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( KText() ), value ); \ + RDebug::Print( KText, value ); \ + } + + #define MSRPLOG3( text, value, value2 ) \ + { \ + _LIT( KText, text ); \ + RFileLogger::WriteFormat( KLogDir1, KLogFile1, EFileLoggingModeAppend, \ + TRefByValue( 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