IMPSengine/inc/impspurecli.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IMPSengine/inc/impspurecli.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,192 @@
+/*
+* Copyright (c) 2002-2005 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: 
+*     WV Engine pure data API definition
+*
+*/
+
+
+#ifndef RIMPSPURECLI_H
+#define RIMPSPURECLI_H
+
+// INCLUDES
+#include <e32base.h>
+#include <badesca.h>
+#include <bamdesca.h>
+#include "impsconst.h"
+#include "impsclient.h"
+
+// CONSTANTS
+
+// service type
+enum TImpsServiceType
+    {
+    EImpsServiceNone = 0x0000,
+    EImpsServiceAccess = 0x0001,
+    EImpsServiceIM = 0x0002,
+    EImpsServicePresence = 0x0004, 
+    EImpsServiceGroup = 0x0010,
+    EImpsServiceCommon = 0x0100   
+    };
+
+// FORWARD DECLARATIONS
+class MImpsPureHandler2;
+class CImpsPureCommand2;
+
+
+// CLASS DECLARATION
+
+/**
+*  Pure data WV Client API
+*
+*  Applications use Access service via RImpsPureClient2 class. 
+*  First, they need to
+*  connect to the server by calling RegisterL() member function.
+*  Immediately after that an error handler must be registered by 
+*  RegisterErrorObserverL.  
+*  
+*  When everything is done, call Unregister() to end
+*  the session.
+*
+*  A user of this API must be aware that raising/releasing
+*  the PDP context may affect the response times of called functions.
+*
+*
+*  Observer methods:
+*  -----------------------
+*  Client can be notified when a certain type of message is received 
+*  from the remote server.
+*  Client has to be connected in the server in order to get notify events.
+*  If the client is disconnected by server by calling Unregister(), all notify
+*  requests and possible incoming events are canceled. 
+*
+*  Notify events are session-specific, ie. if you have several RImpsPureClients
+*  connected to the server, each has its own notify requests. 
+*
+*  In order to use notify services, you need to implement MImpsPureHandler2 
+*  and give a pointer to your class in RegisterL.
+*  Observer method doesn't need to do anything else than your application needs 
+*  it to do.
+*/ 
+
+class RImpsPureClient2 : public RImpsClient2
+    {
+
+    public: // Constructors and destructor
+
+        /**
+        * C++ default constructor.
+        */      
+        IMPORT_C RImpsPureClient2();
+
+    public: // New functions        
+
+        // INITILIZATION AND CONNECT
+
+       /**
+        * Registers the listener object for Pure events and connects to
+        * the SOS Server. 
+        * Leaves with KImpsErrorAlreadyInUse if the client 
+        * has already registered.
+        * @param aEngine WV Engine server instance
+        * @param aObserver The observer.
+        * @param aType aServiceType
+        * @param aReceiveNew determines if new pushed messages are received.
+        *        If EFalse then new messages are filtered out and 
+        *        responses to own requests are deliverd only.
+        * @param aPriority Observer priority. Refer to CActive priority.
+        */
+        IMPORT_C void RegisterL( RImpsEng& aEngine,
+                                 MImpsPureHandler2* aObserver,
+                                 TImpsServiceType aType = EImpsServicePresence,
+                                 TBool aReceiveNew = ETrue,
+                                 TInt aPriority = CActive::EPriorityStandard );
+
+
+
+        /**
+        * Unregisters the listener object and disconnects from the server.
+        */
+        IMPORT_C void Unregister();
+
+        /**
+        * Send pure transaction content
+        * Only primitives that belong to the presence service are allowed,
+        * otherwise leaves with KImpsErrorUnknownMessageType.
+        * If content size exceeds the maximum, 
+        * leaves with KImpsErrorMessageTooBig.
+        * Max. content size can be retrieved by calling 
+        * method MaxTransactionContentSizeL()
+        * @param aContent UTF-8 coded transaction content in XML format
+        */
+        IMPORT_C TInt SendPureDataL( const TDesC8& aContent );
+      
+        /**
+        * Pointer to the pure data handler
+        * @return handler
+        */
+        MImpsPureHandler2* Handler();
+
+    private:
+
+       /**
+        * Registers the listener object for Presence events and connects to
+        * the Symbian Server.
+        * @param aEngine WV Engine server instance
+        * @param aHandler the observer
+        * @return general error code
+        */
+        TInt DoRegister( RImpsEng& aEngine,
+                         CImpsHandler2* aHandler );
+
+    private: // data
+
+        CImpsPureCommand2*             iCommand;
+        MImpsPureHandler2*             iPureCallback;
+       
+    private: // friend classes
+        friend class CImpsPureCommand2;
+    
+    };
+
+// CLASS DECLARATION
+
+/**
+* MImpsPureHandler2
+*
+* Abstract interface for handling the notify events from the server.
+* User derives his class from this and implements the methods below.
+*/
+
+class MImpsPureHandler2
+    {
+
+    public: // New functions
+
+        /**
+        * Observer method for pure message content.
+        * @param aOpId operation id received in SendPureDataL. If this is 0,
+        *        then the HandlePureDataL was initated by SAP.
+        * @param aBuffer UTF-8 coded message content in XML format
+        * @param aCspId CSP session identifier
+        */
+        virtual void HandlePureDataL( TInt aOpId,
+                                      const TDesC8& aBuffer,
+                                      TImpsCspIdentifier& aCspId )  = 0;
+
+    };
+
+#endif // RIMPSPURECLI_H
+
+// End of file