connectivitylayer/isce/p2papi_dll/inc/p2pif.h
changeset 0 63b37f68c1ce
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivitylayer/isce/p2papi_dll/inc/p2pif.h	Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,183 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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 __P2PIF_H__
+#define __P2PIF_H__
+
+#include <e32cmn.h>     // For RBusLogicalChannel
+#include <p2pdefs.h>    // For TP2PProtocol
+
+/**
+* An interface for transceiving point-to-point (P2P) data between
+* two end points according to used P2P protocol.
+* Interface is used from user side.
+*/
+class RP2PIf : public RBusLogicalChannel
+    {
+
+    public:
+
+        /*
+        * C++ default constructor.
+        */
+        IMPORT_C RP2PIf();
+
+        /*
+        * Destructor
+        */
+        IMPORT_C ~RP2PIf();
+
+        /*
+        * Closes the interface and cancels any outstanding requests with KErrCancel.
+        * If interface is not opened with RP2PIf::Open does nothing.
+        * Automatically called in destructor.
+        * Execution:    Synchronous
+        * Re-entrant:   No
+        * Blocking:     Yes
+        * Panic mode:   User::Panic
+        * SMP safe:     Yes
+        * @post Calling thread not blocked
+        */
+        IMPORT_C void Close();
+
+        /*
+        * Notifies when connection to other point is lost.
+        * Automatically cancelled in RP2PIf::Close.
+        * All data received after connection is lost shall be discarded.
+        * NOTE! If interface is not open panicked with User::Panic.
+        * NOTE! After connection lost RP2PIf::Close shall be called.
+        * Execution:    Asynchronous
+        * Re-entrant:   No
+        * Blocking:     Yes
+        * Panic mode:   User::Panic
+        * SMP safe:     Yes
+        * @param aStatus, updated when connection is lost
+        *                 KErrNotReady when connection is lost
+        *                 KErrCancel when request is cancelled
+        * @post Calling thread not blocked
+        */
+        IMPORT_C void ConnectionLost( TRequestStatus& aStatus );
+
+        /*
+        * Cancels the pending connection lost request with KErrCancel.
+        * Automatically cancelled in RP2PIf::Close.
+        * NOTE! If interface is not open panicked with User::Panic.
+        * Execution:    Synchronous
+        * Re-entrant:   No
+        * Blocking:     Yes
+        * Panic mode:   User::Panic
+        * SMP safe:     Yes
+        * @post Calling thread not blocked
+        */
+        IMPORT_C void ConnectionLostCancel();
+
+        /**
+        * Asynchronously opens a P2P protocol communication path from this point to another.
+        * Open is not complited before the communication path is open.
+        * When request is set to pending blocked calling thread is released.
+        * Automatically cancelled in RP2PIf::Close.
+        * Execution:    Asynchronous
+        * Re-entrant:   No
+        * Blocking:     Yes
+        * Panic mode:   User::Panic
+        * SMP safe:     Yes
+        * @param aP2PProtocolId, unique identifier of the used point-to-point protocol
+        * @param aStatus, KErrNone if ok
+        *                 KErrNotSupported if protocol is not supported
+        *                 KErrInUse if someone uses the same protocol id
+        *                 KErrAlreadyExists same interface object is opened with other protocol id
+        *                 KErrCancel if outstanding request is cancelled
+        *                 KErrPermissionDenied if not enough capabilities
+        * @param aHandleType, specifies whether the handle is owned by process or by thread.
+        * @post Calling thread not blocked
+        */
+        IMPORT_C void Open( const TP2PProtocol aP2PProtocolId,
+                            TRequestStatus& aStatus,
+                            TOwnerType aHandleType = EOwnerThread );
+
+        /**
+        * Cancel asynchronous channel opening with KErrCancel.
+        * Does nothing if request is not pending.
+        * Automatically called in RP2PIf::Close.
+        * NOTE! If interface is not open panicked with User::Panic.
+        * Execution:    Synchronous
+        * Re-entrant:   No
+        * Blocking:     Yes
+        * Panic mode:   User::Panic
+        * SMP safe:     Yes
+        * @post Calling thread not blocked
+        */
+        IMPORT_C void OpenCancel();
+
+        /**
+        * Receive data from other point.
+        * Either receives data immediately or set the receive request pending.
+        * When request is set to pending blocked calling thread is released.
+        * Automatically cancelled in RP2PIf::Close.
+        * NOTE! If interface is not open panicked with User::Panic.
+        * NOTE! If interface is not opened when other point is sending data to it data shall
+        * be deallocated.
+        * Execution:    Asynchronous
+        * Re-entrant:   No
+        * Blocking:     Yes
+        * Panic mode:   User::Panic
+        * SMP safe:     Yes
+        * @param aStatus, KErrNone if ok.
+        *                 KErrBadDescriptor if receive buffer is invalid or too small.
+        * @param aReceiveBuffer, buffer where to receive data from kernel
+        */
+        IMPORT_C void Receive( TRequestStatus& aStatus, TDes8& aReceiveBuffer );
+
+        /**
+        * Cancel asynchronous receive request with KErrCancel.
+        * Does nothing if request is not pending.
+        * Automatically called in RP2PIf::Close.
+        * NOTE! If interface is not open panicked with User::Panic.
+        * Execution:    Synchronous
+        * Re-entrant:   No
+        * Blocking:     Yes
+        * Panic mode:   User::Panic
+        * SMP safe:     Yes
+        * @post Calling thread not blocked
+        */
+        IMPORT_C void ReceiveCancel();
+
+        /**
+        * Sends data to other point.
+        * NOTE! If interface is not open panicked with User::Panic.
+        * NOTE! Absolutely maximum send buffer size is 16-bit value.
+        * Execution:    Synchronous
+        * Re-entrant:   No
+        * Blocking:     Yes
+        * Panic mode:   User::Panic
+        * SMP safe:     Yes
+        * @param aSendBuffer, data to be send
+        * @return KErrNone, is succesfull
+        *                   KErrNoMemory buffer size is over the maximum size
+        *                   KErrNotReady connection to other point lost, data lost
+        *                   KErrBadDescriptor if send buffer is invalid
+        * @post Calling thread not blocked
+        */
+        IMPORT_C TInt Send( const TDesC8& aSendBuffer );
+
+    };
+
+#endif      // __P2PIF_H__
+
+// End of File