diff -r 6a20128ce557 -r ebfee66fde93 mmsengine/mmscodec/inc/mmscodecdatasink.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsengine/mmscodec/inc/mmscodecdatasink.h Fri Jun 04 10:25:39 2010 +0100 @@ -0,0 +1,86 @@ +/* +* Copyright (c) 2005-2007 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: Data sink API for chunked receiving of large messages +* +*/ + + + +#ifndef MMMSCODECDATASINK_H +#define MMMSCODECDATASINK_H + +#include + + +/** + * Defines the interface for chunked data supply + * + * When MMS messages are sent in chunks this provides the interface + * that can be called to get next encoded data chunk + * + * @since v3.1 + */ +class MMmsCodecDataSink + { + +public: + + /** + * Gives the next data part to be decoded. + * Decoding is synchronous. When the code returns, data can be released. + * + * @since v3.1 + * @param aBuffer flat buffer containing the data to be decoded. + * @param aPosition start of data to be decoded. + * Decoding will start from aPosition. + * At return aPosition will point to the data that has not been + * decoded yet (in case data ends with an incomplete header) or + * past the end of data if everything has been decoded. + * The caller can discard the beginning of data up to aPosition. + * If there is data left in the buffer it must be shifted to the + * beginning of buffer and new data appended to the end to allow + * an incomplete header to be decoded at next round. + * @param aLastChunk ETrue if the data chunk in the buffer is the last one. + * @return error code, KErrNone if decoding succeeds + * If returns some other error, transaction must be cancelled. + */ + virtual TInt NextDataPart( + CBufFlat& aBuffer, + TInt& aPosition, + TBool aLastDataChunk ) = 0; + + /** + * Release data sink and free any resources + * This function must be called after last data chunk has been processed + * This function must also be called if the process is terminated by an error + * + * @since v3.1 + */ + virtual void RelaseDataSink() = 0; + + /** + * Reset data sink. + * Delete all attachments from current message. + * Reset MMS headers + * Start message decoding from the beginning + * + * This function must be called if transaction is interrupted and restarted + * + * @since v3.1 + */ + virtual void ResetDataSink() = 0; + + }; + +#endif // MMMSCODECDATASINK_H