diff -r 000000000000 -r b26acd06ea60 sdkcreationmw/sdkruntimes/msgsimulation/MsgRelay/Inc/MsgRelay.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sdkcreationmw/sdkruntimes/msgsimulation/MsgRelay/Inc/MsgRelay.h Mon Mar 08 12:09:11 2010 +0530 @@ -0,0 +1,97 @@ +/* +* Copyright (c) 2004-2005 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: +* +*/ + + +#ifndef MSG_RELAY_H +#define MSG_RELAY_H + +#include +#include +#include +#include "MsgTypes.h" + +class CMessageWriter; +class CRelaySession; + +class CMessageRelay : public CServer2, public MMsvSessionObserver +{ + friend class CRelaySession; + + CArrayFixFlat *iSessions; + CMessageWriter *iWriter; + + CSession2* NewSessionL(const TVersion& aVersion) const; + CSession2* NewSessionL(const TVersion& aVersion, const RMessage2&) const; + + /* Goes through all sessions and returns ETrue, is someone + is listening the given port. */ + TBool IsAnyBodyListening(TUint aPort, TMessageType aType); + + /* Copies the message to inbox. */ + void CopyMessageToSmsInboxL(TPtr8 &aMessage); + + /* Traverses the inbox and sends messages to listeners. */ + void TraverseInboxL(); + +protected: + + IMPORT_C CMessageRelay(); + IMPORT_C void ConstructL(CMessageWriter *aWriter); + +public: + + IMPORT_C static CMessageRelay *NewL(CMessageWriter *aWriter = NULL); + IMPORT_C static CMessageRelay *NewLC(CMessageWriter *aWriter = NULL); + + IMPORT_C ~CMessageRelay(); + + /* Starts the server. */ + IMPORT_C void StartRelayL(); + + /* Call this method when a new message is received to relay it + to possible listeners. Returns ETrue, if the message was + accepted. If the message as not accepted, it must not be + destroyed, but it must be offered again, as soon as there + is a listener for it. */ + IMPORT_C TBool NewMessageL(TPtr8 &aMessage, TMessageType aType); + + /* Sets the message writer. Writers WriteMessageL(...) method + is called when a client wants to send a message. */ + IMPORT_C void SetWriter(CMessageWriter *aWriter); + + void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, + TAny* aArg2, TAny* aArg3); + +}; + +class CMessageWriter +{ + + IMPORT_C void ConstructL(); + +public: + + IMPORT_C static CMessageWriter *NewL(); + IMPORT_C static CMessageWriter *NewLC(); + + IMPORT_C virtual ~CMessageWriter(); + + /* Called when a message is received from client for sending. */ + IMPORT_C virtual void WriteMessageL(TPtr8 &aMessage, TMessageType aType); +}; + +#endif /* MSG_RELAY_H */