--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/biomsgfw/BioWatchers/Inc/SmsSocketWatcher.h Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,172 @@
+// Copyright (c) 1999-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:
+//
+
+#ifndef __SMSSOCKETWATCHER_H_
+#define __SMSSOCKETWATCHER_H_
+
+#include <e32base.h>
+#include <msvstd.h>
+#include <mtsr.h>
+#include <msvapi.h>
+#include <es_sock.h>
+#include <bif.h>
+#include <bsp.h>
+#include <csmsgetdetdescinterface.h>
+
+enum TBioWatcherPanic
+ {
+ EMainSchedulerError1 = 0,
+ EMainSchedulerError2 = 1,
+ ECreateTrapCleanup = 2,
+ ESocketWatcherAlreadyActive = 3,
+ EAllSocketWatchersComplete = 4,
+ EHandleBifChangeError = 5,
+ EReportHandlingInvalid = 6,
+ EUnexpectedErrorCode = 7,
+ EBufferNotNull = 8,
+ EObjectNotConstructed = 9,
+ EAddrFamilyNotSupported1 = 10,
+ EAddrFamilyNotSupported2 = 11,
+ EAddrFamilyNotSupported3 = 12
+ };
+
+#ifdef _BIOMSG_NO_LOGGING
+#define BIOWATCHERLOG(a)
+#else
+#define BIOWATCHERLOG(a) a
+#endif
+
+_LIT(KSocketWatcherPanicString, "BioWatcher");
+inline void PanicWatcher(TBioWatcherPanic aPanic)
+ {
+ User::Panic(KSocketWatcherPanicString, aPanic);
+ }
+
+class CSmsMessage;
+class CBaseSmsActiveSocketWatcher;
+class CWatcherLog;
+class CBIODatabase;
+class CSmsSettings;
+
+class MBioWatcherObserver
+ {
+ public:
+ virtual void HandleWatcherComplete(CBaseSmsActiveSocketWatcher& aWatcher, TInt aError) = 0;
+ };
+
+class CBaseSmsActiveSocketWatcher : public CActive, public MMsvSessionObserver
+ {
+public:
+ IMPORT_C virtual ~CBaseSmsActiveSocketWatcher();
+
+ // Setup gets called synchronously to set up sockets and
+ // mail server before we get going asynchy
+ IMPORT_C void SetupL();
+
+ // over-ride setup code here
+ virtual void DoSetupL() = 0;
+
+ // StartL gets called to kick off the AO putting
+ IMPORT_C void StartL();
+
+ // Sets up the Sockets to wait
+ virtual void WaitForMessageL() = 0;
+ // Receives the message from the Socket
+
+ virtual void ReceiveL() = 0;
+
+ // Store the message in the mail server
+ IMPORT_C void StoreMsgL(CSmsMessage* aSmsMsg);
+ IMPORT_C void StoreMsgL(CSmsMessage* aSmsMsg, TBool aCheckForSID);
+
+ inline void SetObserver(MBioWatcherObserver* aObserver);
+ inline TUid BioMsgUID() const;
+
+ virtual void DoComplete(TInt&) = 0;
+ virtual void DoRunL() = 0;
+
+private:
+ void ReplaceTypeMessageL(CMsvEntry&, CSmsMessage& aMessage, TBool& aRetainOriginalMessage);
+ void DeleteReplaceTypeMessagesL(CMsvEntry& aEntry, TUint8 aPid, CSmsMessage& aMessage, TBool& aRetainOriginalMessage);
+
+ void CreateMessageL(CMsvEntry& aEntry, CSmsMessage* aMessage, TBool aCheckForSecureId);
+
+ void SetBioServiceId(CMsvSession& aSession);
+ void SetBioServiceId(TMsvId aBioServiceId, TMsvId aSmsServiceId);
+ TBool CheckMessageExistsL(CMsvSession& aSession, TMsvId aId) const;
+
+ TBool CheckForSID(TPtr& aMessage, TSecureId& aSecureId);
+
+private: // methods from MMsvSessionObserver
+ virtual void HandleSessionEventL(TMsvSessionEvent, TAny*, TAny*, TAny*) {};
+
+private: // methods from CActive
+ IMPORT_C virtual void RunL();
+ IMPORT_C virtual TInt RunError(TInt aError);
+
+private:
+
+#ifndef _BIOMSG_NO_LOGGING
+ void LogMessageL(const CSmsMessage& aMessage); //will only leave with KErrNoMemory
+ void LogEachLine(const TDesC& aInput);
+ void Log(const TDesC& aInput);
+ void Log(const TDesC8& aInput);
+#endif
+
+protected:
+ // Constructor
+ IMPORT_C CBaseSmsActiveSocketWatcher(CWatcherLog& iWatcherLog, TInt aPriority, TUid aBioID, RFs& aFs);
+ IMPORT_C void Complete(TInt aStatus);
+ inline void WatcherComplete(TInt aError);
+
+ inline virtual TBool CanStoreMessage() const;
+ inline virtual TBool Visible() const;
+ IMPORT_C virtual void RestoreSettingsL(CMsvSession&);
+ IMPORT_C virtual void RestoreSettingsL(TMsvId aBioServiceId, TMsvId aSmsServiceId);
+ IMPORT_C virtual void ConstructL(CBIODatabase& aBioDb, TMsvId aBioServiceId, TMsvId aSmsServiceId);
+ IMPORT_C virtual void SetBioMsgText(CBIODatabase& aBioDb);
+ IMPORT_C virtual void PreStoreActionL(CMsvSession& aSession, CSmsMessage& aMessage);
+
+public:
+ enum TSmsWatcherState
+ {
+ ESmsWWaitForMsg,
+ ESmsWReadMsg,
+ ESmsWRetryError,
+ ESmsIsClass0Msg,
+ ESmsSupportClass0Msg
+ } iState;
+
+protected:
+
+ TUid iBioMsgUID;
+ TMsvId iBioServiceId;
+ TMsvId iSmsServiceId;
+ TBioMsgIdText iBioMsgText;
+ CWatcherLog& iWatcherLog;
+ RTimer iTimer;
+ RFs& iFs;
+ CSmsSettings* iSettings;
+
+private:
+
+ MBioWatcherObserver* iObserver;
+ CSmsGetDetDescInterface* iGetDetDesc;
+
+ };
+
+#include "SmsSocketWatcher.inl"
+
+#endif