messagingfw/biomsgfw/BioWatchers/Inc/NBSSocketWatcher.h
changeset 62 db3f5fa34ec7
parent 0 8e480a14352b
equal deleted inserted replaced
60:9f5ae1728557 62:db3f5fa34ec7
       
     1 // Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #ifndef __NBSSOCKETWATCHER_H__
       
    17 #define __NBSSOCKETWATCHER_H__
       
    18 
       
    19 #include <s32mem.h>
       
    20 #include <e32base.h>
       
    21 #include <smsuaddr.h>
       
    22 #include <gsmumsg.h>
       
    23 #include <gsmubuf.h>
       
    24 #include <smsustrm.h>
       
    25 #include <smutset.h>
       
    26 #include "SmsSocketWatcher.h"
       
    27 #include "class0sms.h"
       
    28 
       
    29 class CSmsHeader;
       
    30 
       
    31 //UID for Class 0 SMS Implementation
       
    32 const TUid KUidClass0SmsHandler = {0x2000BDF1};
       
    33 
       
    34 #include "SmsSocketWatcher.h"
       
    35 
       
    36 class CNbsSmsSocketWatcher : public CBaseSmsActiveSocketWatcher
       
    37 	{
       
    38 public:
       
    39 	static CNbsSmsSocketWatcher* NewLC(TMsvId aBioServiceId, 
       
    40 									   TMsvId aSmsServiceId, 
       
    41 									   CBIODatabase& aBioDb, 
       
    42 									   CWatcherLog& aLog, 
       
    43 									   TInt aPriority, 
       
    44 									   TUid aBioID, 
       
    45 									   RFs& aFs, 
       
    46 									   const TDesC& 
       
    47 									   aNbsPattern, 
       
    48 									   TSmsAddrFamily aAddrFamily = ESmsAddrMatchText);
       
    49 	virtual ~CNbsSmsSocketWatcher();
       
    50 
       
    51 public:	// methods from CBaseSmsActiveSocketWatcher
       
    52 	virtual void DoSetupL();
       
    53 	virtual void WaitForMessageL();
       
    54 	virtual void ReceiveL();
       
    55 	virtual void DoComplete(TInt&);
       
    56 	virtual void DoRunL();
       
    57 
       
    58 public:	// methods from CActive
       
    59 	virtual void DoCancel();
       
    60 	void CheckForClass0SmsSupport();
       
    61 	void SupportForClass0SmsL();
       
    62 
       
    63 protected:
       
    64 	CNbsSmsSocketWatcher(CWatcherLog& aLog, TInt aPriority, TUid aBioID, RFs& aFs, const TDesC& aNbsPattern, TSmsAddrFamily aAddrFamily);
       
    65 	void ConstructL(TMsvId aBioServiceId, TMsvId aSmsServiceId, CBIODatabase& aBioDb);
       
    66 	void DoReceiveL();
       
    67 	void ExternalizeL(RBufWriteStream& aWriteStream, TInt aStartPos, TInt endPos, TBool aIsLastMessage, TPtr aData);
       
    68 		
       
    69 private:
       
    70 	TBool MessageHasPort(const CSmsMessage& aSmsMessage);
       
    71 	TBool IsJavaTextMessage(const CSmsMessage& aSmsMessage);
       
    72 	
       
    73 protected:
       
    74 	TSmsAddrFamily			iAddrFamily;
       
    75 	TBioMsgIdText			iNbsPattern;
       
    76 	TSmsAddr				iSmsAddr;
       
    77 	TPckgBuf<TUint>			iOctlRes;
       
    78 	RSocketServ				iSocketServer;
       
    79 	RSocket					iSocket;
       
    80 	TBool					iIoCtlActive;
       
    81 	
       
    82 	TUid					iDtor_ID_Key;
       
    83 	CSmsClass0Base* 		iSmsClass0;
       
    84 	TInt					iMsgRefNumber;
       
    85 	};
       
    86 
       
    87 /**
       
    88 Handles Status Reports and Special (Message Waiting) Messages
       
    89 
       
    90 @internalComponent
       
    91 @released
       
    92 */
       
    93 class CSpecialNbsSmsSocketWatcher : public CNbsSmsSocketWatcher
       
    94 	{
       
    95 public:
       
    96 	static CSpecialNbsSmsSocketWatcher* NewL(TMsvId aBioServiceId, TMsvId aSmsServiceId, CBIODatabase& aBioDb, CWatcherLog& aLog, TInt aPriority, TUid aBioID, RFs& aFs, const TDesC& aNbsPattern, TSmsAddrFamily aAddrFamily);
       
    97 	static CSpecialNbsSmsSocketWatcher* NewLC(TMsvId aBioServiceId, TMsvId aSmsServiceId, CBIODatabase& aBioDb, CWatcherLog& aLog, TInt aPriority, TUid aBioID, RFs& aFs, const TDesC& aNbsPattern, TSmsAddrFamily aAddrFamily);
       
    98 	virtual ~CSpecialNbsSmsSocketWatcher();
       
    99 
       
   100 protected:
       
   101 	CSpecialNbsSmsSocketWatcher(CWatcherLog& aLog, TInt aPriority, TUid aBioID, RFs& aFs, const TBioMsgIdText& aNbsPattern, TSmsAddrFamily aAddrFamily);
       
   102 	
       
   103 protected:	// methods from CBaseSmsActiveSocketWatcher
       
   104 	virtual inline TBool CanStoreMessage() const;
       
   105 	virtual inline TBool Visible() const;
       
   106 	virtual void RestoreSettingsL(CMsvSession&);
       
   107 	virtual void RestoreSettingsL(TMsvId aBioServiceId, TMsvId aSmsServiceId);
       
   108 	virtual void SetBioMsgText(CBIODatabase& aBioDb);
       
   109 	virtual void PreStoreActionL(CMsvSession& aSession, CSmsMessage& aSmsMessage);
       
   110 
       
   111 protected:
       
   112 	void ConstructL(TMsvId aBioServiceId, TMsvId aSmsServiceId, CBIODatabase& aBioDb);
       
   113 	void MatchStatusReportL(CMsvSession& aSession, TLogId aLogId, TSmsStatus::TSmsStatusValue aDeliveryStatus);
       
   114 	TBool SearchForMessageL(CMsvEntry& aMsvEntry, CSmsHeader& aHeader, const CMsvEntrySelection& aSelection, TLogId aLogId, TMsvId& aMessageId);
       
   115 	void UpdateMessageEntryL(CMsvEntry& aMsvEntry, CSmsHeader& aHeader, TMsvId aMessageId, TLogId aLogId, TSmsStatus::TSmsStatusValue aDeliveryStatus);
       
   116 
       
   117 protected:
       
   118 	CSmsSettings::TSmsReportHandling iReportHandling;
       
   119 
       
   120 	};
       
   121 
       
   122 #include "NBSSocketWatcher.inl"
       
   123 
       
   124 #endif	// __NBSSOCKETWATCHER_H__