--- /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