pressrv_plat/messaging_connection_manager_api/inc/msgconnmanagerapi.h
changeset 0 c8caa15ef882
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pressrv_plat/messaging_connection_manager_api/inc/msgconnmanagerapi.h	Tue Feb 02 01:05:17 2010 +0200
@@ -0,0 +1,209 @@
+/*
+* Copyright (c) 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:   Connection manager
+*
+*/
+
+
+
+#ifndef __MSGCONNMANAGERAPI__
+#define __MSGCONNMANAGERAPI__
+
+#include "msgbearerobscallback.h"
+
+//Define the CommDb parameters which the Conn Manager must support
+enum TSupportedCommDbRecords
+    {
+    EMsgProxyAddress = 0,
+    EMsgProxyPort
+    };
+
+//FORWARD DECLARATIONS
+class TInetAddr;
+class RConnection;
+class RSocketServ;
+class MMsgBearerObsCallback;
+
+class MMsgConnManager 
+    {
+    public:  // New functions
+
+        /**
+        * Start a connection. This asynchronous request completes
+        * as soon as a connection has been successfully opened or
+        * an error condition has been detected.
+        *
+        * Completes with:
+        *
+        *    - KErrNone if a connection has been succesfully opened
+        *    - KErrNotReady if client has called StopConnection()
+        *      and attempts to start a new connection before the previous
+        *      one has been disconnected.
+        *    - KErrAlreadyExists if a client attempts to open a connection
+        *      while one is already being opened
+        *    - KErrTimedOut if the specified timeout value expires
+        *
+        * @param aStatus Request status of the client.
+        */  
+        virtual void StartConnection( TRequestStatus& aStatus ) = 0;
+    
+        /**
+        * Stop a connection, synchronous version
+        */  
+        virtual void StopConnection() = 0;
+        
+        /**
+        * Stop a connection. This asynchronous request completes
+        * as soon as a connection has been closed. Note that it 
+        * takes a few seconds for the connection to really wear out.
+        * Thus, when a client calls this function, it should really
+        * mean what it is saying, because a new connection CANNOT BE 
+        * OPENED before a previous one has been deactivated.
+        *
+        * The request may complete with
+        *    - KErrNone if connection closing is successful
+        *    - KErrAbort if call takes place while connection initiation
+        *      is ongoing or if there is no active connection that would
+        *      require closing. If a connection initiation is ongoing
+        *      client should use CancelStartL() method instead.
+        *
+        * @param aStatus Request status of the client
+        */  
+        virtual void StopConnection( TRequestStatus& aStatus ) = 0;
+        
+        /**
+        * Cancel StartConnection(). The method may leave with
+        *   - KErrAbort if the TRequestStatus object the client
+        *     supplied is not active, hence, there is no pending
+        *     request that would require cancelling.
+        * In normal cases - when RConnection::Start() or its 
+        * progress notifications are pending - ConnMan completes
+        * the client's request with the "error" KErrCancel.
+        *
+        * @return void
+        */  
+        virtual void CancelStartL() = 0;
+
+        /**
+        * Set the ID of the Access Point to connect to. Note that this
+        * function is effective only when there is no active connection
+        * the start of which has been initiated by the client. In other
+        * words, the ID of the desired Access Point can be changed only
+        * BEFORE calling StartConnection().
+        * 
+        * May leave with
+        *    - KErrNotFound if the Access Point ID does not exist
+        *
+        * @param TInt aAccessPointID ID of the Accee Point to use
+        */
+        virtual void SetAccessPointIDL( const TInt aAccessPointID ) = 0;
+
+        /**
+        * Returns a reference to the active socket server.
+        *
+        * @return RSocketServ& An opened socket server
+        */
+        virtual RSocketServ& SocketSession() = 0;
+
+        /**
+        * Returns a reference to the currently open connection
+        *
+        * @return RConnection& An opened connection
+        */
+        virtual RConnection& Connection() = 0;
+
+        /**
+        * Returns the number of active connections currently open
+        *
+        * @return TInt Number of active connections on the device
+        */
+        virtual TInt NumberOfActiveConns() = 0;
+
+        /**
+        * Read data from the Comms Database
+        *
+        * @param TMsgSupportedCommDbRecords aParameter The type of the CommDb record
+        * @return HBufC* Value of the requested record
+        */
+        virtual HBufC* ReadFromCommsDbLC( const TSupportedCommDbRecords aParameter ) = 0;
+
+        /**
+        * Add an object to the queue of listeners. The object to be added
+        * must inplement the interface MMsgBearerObsCallback in order
+        * to receive events from the system agent. It is important to note
+        * that the call to the notification handler (HandleBearerEventL())
+        * takes place inside the RunL() method of this Connection Manager,
+        * so the listening object MUST return the control to the Manager
+        * AS SOON AS POSSIBLE in order not to clog the scheduler.
+        *
+        * @param MMsgBearerObserverCallback* aClient A subscribing client
+        * @return void
+        */
+        virtual void AddEventSubscriberL( MMsgBearerObsCallback* aClient ) = 0;
+        
+        /**
+        * Remove an object from the queue of listeners. It is not necessary
+        * to call this method at deletion time, as the destructor destroys
+        * the subscriber queue altogether. If, however, a listener object is
+        * destroyed (or is likely to be) before an instance of Connection Manager,
+        * it is mandatory to remove the listener from the queue prior to deleting
+        * the listener.
+        *
+        * @param MMsgBearerObsCallback* aClient The client to be removed
+        * @return void
+        */
+        virtual void RemoveEventSubscriber( MMsgBearerObsCallback* aClient ) = 0;
+
+        /**
+        * Returns the state of this connection manager:
+        *
+        *    - ETrue, if a connection is available
+        *    - EFalse otherwise; bearer suspended, StartConnection() failed etc.
+        *
+        * A component that wishes to send/receive data is encouraged
+        * to call this function before opening a socket, or reading
+        * from or writing to one. This way it can be assured that
+        * no component prompts up that annoying IAP dialog.
+        *
+        * @return TBool Is the connection OK
+        */
+        virtual TBool Status() const = 0;
+
+        /**
+        * Destructor. Must be called when the services of the
+        * manager are no longer needed. This is merely a
+        * wrapper to the C++ destructor.
+        *
+        * It is highly advisable that a client of this API
+        * ALWAYS Destroy()s the instance it owns only after
+        * it has disposed of all other connection-related
+        * components at its command. This is because the other
+        * components may still be dependent on the RConnection
+        * and RSocketServ instances provided by this object.
+        *
+        * @return void
+        */
+        virtual void Destroy() = 0;
+    };
+
+/**
+* Creates a new Connection Manager
+* @param aDefaultAccessPoint ID of the default Access Point
+*/     
+IMPORT_C MMsgConnManager* NewMsgConnManagerL( const TInt aDefaultAccessPoint );
+
+#endif
+
+
+// End of File