diff -r e1b950c65cb4 -r 837f303aceeb epoc32/include/mw/senserviceconnection.h --- a/epoc32/include/mw/senserviceconnection.h Wed Mar 31 12:27:01 2010 +0100 +++ b/epoc32/include/mw/senserviceconnection.h Wed Mar 31 12:33:34 2010 +0100 @@ -1,17 +1,17 @@ /* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* 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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +* under the terms of "Eclipse Public License v1.0" * which accompanies this distribution, and is available -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * * Initial Contributors: * Nokia Corporation - initial contribution. * * Contributors: * -* Description: CSenServiceConnection offers public API for +* Description: CSenServiceConnection offers public API for * service consumers to access invocable services, * as a part of the Web Services Framework (WSF). * @@ -25,6 +25,9 @@ + + + #ifndef SEN_SERVICE_CONNECTION_H #define SEN_SERVICE_CONNECTION_H @@ -75,7 +78,7 @@ const TInt KErrSenAuthenticationFault = -30319; const TInt KErrSenNoEndUserPermission = -30321; - +const TInt KErrSenBrandNotSupported = -30322; const TInt KSenConnectionStatusCreateFailed = -1; // post-state const TInt KSenConnectionStatusNew = 0; // post-state @@ -105,6 +108,57 @@ class CSenServicePattern; class CSenIdentityProvider; +struct TSenDataTrafficDetails +{ +public: + + TSenDataTrafficDetails():iTotalBytesSent(0), + iTotalBytesRecieved(0) + { + } + + TBool operator==(TSenDataTrafficDetails& rhs) + { + if( (this->iTotalBytesSent == rhs.iTotalBytesSent) && + (this->iTotalBytesRecieved == rhs.iTotalBytesRecieved) ) + return ETrue; + else + return EFalse; + } + + TSenDataTrafficDetails& operator=(TSenDataTrafficDetails& rhs) + { + if(*this == rhs) + return *this; + this->iTotalBytesSent = rhs.iTotalBytesSent; + this->iTotalBytesRecieved = rhs.iTotalBytesRecieved; + return *this; + } + + TSenDataTrafficDetails& operator+=(TSenDataTrafficDetails& rhs) + { + this->iTotalBytesSent += rhs.iTotalBytesSent; + this->iTotalBytesRecieved += rhs.iTotalBytesRecieved; + return *this; + } + + TUint iTotalBytesSent ; + TUint iTotalBytesRecieved ; +private: + TAny* iReserved; +}; + +struct TSenDataTrafficOperations +{ +public: + TSenDataTrafficOperations(): iReset(EFalse) + { + } + TBool iReset; +private: + TAny* iReserved; +}; + // CLASS DECLARATION /** @@ -1177,6 +1231,85 @@ * @param aFilesObserver Implementation of transfer progress observer. */ + virtual void DataTrafficDetails(TSenDataTrafficDetails& aDetails, + TSenDataTrafficOperations& aOperations) = 0; + + /** + * Service Consumer can call this method to acquire a new interface, + * which is identified by unique ID (UID). + * @param aUID is the UID of the interface being requested + * @return TAny* pointer to the interface, or if no interface to + * given UID exists, function returns NULL. In typical cases, returned + * pointer should be cast to some preknown M-class pointer (the actual + * new interface). + * + * List of currently supported interfaces: + * KSenInterfaceUidAlrServiceConnection => MSenAlrServiceConnection + */ + virtual TAny* InterfaceByUid( TUid aUID ) = 0; + + /* + * Sends a RFile Handle to the service. + * the Identity Based Web Service Framework (which ID is "ID-WSF") + * and the Basic Web Services Framework (which ID is "WS-I"). + * Please note, that ID-WSF does NOT support this method. + * SendL(const TDesC8&). + * So, currently this method is supported only in Basic Web Services framework. + * @param aMessage The service specific message - a full SOAP envelope + * @return Transaction ID (positive integer) or error code, if method fails. + * Transaction ids: + * Positive integers SendL returns transaction ID of the request, + * which can be later on utilized inside + * HandleMessageL and HandleErrorL methods, + * in order to map request and its response + * together. + * Error codes: + * KErrSenNotInitialized Connection has not been initialized. + * KErrArgument RFile handle is NULL ( Specified file doesnot exist) + * KErrSenServiceConnectionBusy Connection is already busy with another + * request. + * KErrConnectionInitializing Connection is still initializing and + * cannot yet process commands. + * KErrConnectionExpired Connection is expired and needs to be + * renewed. + * KErrSubmitting An internal error has occurred. + * KErrNoMemory Not enough memory to process the + * message. + * Other error codes are system-wide Symbian error codes. + */ + virtual TInt SendL(RFile& aFileHandle) = 0; + + /* + * Submits a RFile Handle to the service. This is a synchronous call, + * returning a SOAP envelope that was received from the service. + * There are two default frameworks available: + * @param aResponseTo This is a ref-to-pointer where response + * from the service will be allocated. If the + * complete server messages mode is set to OFF, + * then only element will be returned, + * otherwise a complete SOAP envelope. + * The ownership of aResponse is transfered to + * the caller. + * @return status/error code + * Status codes: + * KErrNone ok + * Error codes: + * KErrSenNotInitialized Connection has not been initialized. + * KErrSenServiceConnectionBusy Connection is already busy with another + * request. + * KErrConnectionInitializing Connection is still initializing and + * cannot yet process commands. + * KErrConnectionExpired Connection is expired and needs to be + * renewed. + * KErrSubmitting An internal error has occurred. + * KErrNoMemory Not enough memory to process the + * message. + * KErrArgument RFile handle is NULL ( Specified file doesnot exist) + * KErrSenInternal Internal state is invalid. + * Other error codes are system-wide Symbian error codes. + */ + virtual TInt SubmitL(RFile& aFileHandle, HBufC8*& aResponseTo) = 0; + protected: /**