diff -r 000000000000 -r 71ca22bcf22a mmserv/tms/tmsimpl/inc/tmsstreambodyimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/tms/tmsimpl/inc/tmsstreambodyimpl.h Tue Feb 02 01:08:46 2010 +0200 @@ -0,0 +1,122 @@ +/* + * 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 "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: Telephony Multimedia Service + * + */ + +#ifndef TMS_STREAM_BODY_IMPL_H +#define TMS_STREAM_BODY_IMPL_H + +#include +#include +#include "tmsqueuehandler.h" +#include "tmsstreambody.h" +#include "tmsglobalcontext.h" + +namespace TMS { + +// FORWARD DECLARATIONS +class TMSStreamObserver; +class TMSSource; +class TMSSink; +class TMSForamt; +class TMSEffect; +class TMSCallProxy; +class TMSStream; +class TMSBuffer; +class TMSFormat; + +// TMSStreamBodyImpl class +class TMSStreamBodyImpl : public TMSStreamBody, + public MQueueHandlerObserver + { + enum TQueueType + { + EMsgBufQueue, + EMsgComQueue + }; + +public: + static gint Create(TMSCallType callType, TMSStreamType stype, + TMSCallProxy* proxy, TMSStream& parent, + TMSStreamBody*& bodyimpl); + virtual ~TMSStreamBodyImpl(); + + // From TMSStreamBody + virtual gint AddObserver(TMSStreamObserver& obsrvr, gpointer user_data); + virtual gint RemoveObserver(TMSStreamObserver& obsrvr); + virtual gint AddSource(TMSSource* source); + virtual gint RemoveSource(TMSSource* source); + virtual gint AddSink(TMSSink* sink); + virtual gint RemoveSink(TMSSink* sink); + virtual gint SetFormat(TMSFormat* format); + virtual gint ResetFormat(TMSFormat* format); + virtual gint AddEffect(TMSEffect* effect); + virtual gint RemoveEffect(TMSEffect* effect); + virtual TMSStreamState GetState(); + virtual TMSStreamType GetStreamType(); + virtual gint GetStreamId(); + virtual gint Init(); + virtual gint Pause(); + virtual gint Start(); + virtual gint Stop(); + virtual void Deinit(); + + // From MQueueHandlerObserver + virtual void QueueEvent(TInt aEventType, TInt aError, void* user_data); + +private: + TMSStreamBodyImpl(); + gint PostConstruct(TMSCallType callType, TMSStreamType stype, + TMSCallProxy* proxy, TMSStream& parent); + + gint CreateQueue(const gint aNumSlots); + void ReceiveMsgQHandlerEventsL(); + + gint ValidateStream(); + gint ValidateSource(TMSSource* source); + gint ValidateSink(TMSSink* sink); + gint ValidateFormat(TMSFormat* format); + +private: + TMSCallProxy* iProxy; + TMSStream* iParent; + TMSCallType iCallType; + TMSStreamType iStreamType; + gint iStreamId; + + // Source + TMSSource* iSource; + TMSSink* iSink; + + // Message queue and the handler + RMsgQueue iMsgQueue; + CQueueHandler* iMsgQHandler; + + // Need to make this a list + TMSStreamObserver* iObserver; + + gpointer iUserData; + RPointerArray iEffectsList; + TMSFormat* iFormat; + TMSGlobalContext iContext; + TMSStreamState iStreamState; + TMSStreamState iPrevState; + }; + +} //namespace TMS + +#endif // TMS_STREAM_BODY_IMPL_H + +// End of file