diff -r f1578314b8da -r 505ad3f0ce5c Msrp/MsrpServer/inc/MMSRPConnection.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Msrp/MsrpServer/inc/MMSRPConnection.h Sat Jun 12 14:30:11 2010 +0530 @@ -0,0 +1,143 @@ +/* +* Copyright (c) 2009-2010 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: +* MSRP Implementation +* +*/ + +#ifndef MMMSRPCONNECTION_H +#define MMMSRPCONNECTION_H + +// INCLUDES +#include +#include +#include "MMSRPConnectionManager.h" +#include "MMSRPConnectionObserver.h" +#include "MMSRPWriterObserver.h" + +// FORWARD DECLARATIONS +class MMSRPConnectionObserver; +class MMSRPWriterObserver; +class MMSRPConnectionManager; + +// CLASS DECLARATIONS + + + +class MMSRPConnection + { +public: + //move to CMSRPConn + enum TMSRPConnectionState + { + EError = -1, + ENotConnected = 0, + EConnecting, + EListening, + //EListenConnected, + EConnected, + EListenTimedOut, + EConnectTimedOut, + EDisconnecting, //cancel issued on connecting socket + EDisconnected//EConnectCancelling/ed + //EListenConnected (as opposed to connect connected)//validation to be taken care by session + //EListenValidated (received bodiless msg) //per session basis, hence these 2 states not needed + }; +// + inline virtual ~MMSRPConnection(){} + + /** + * Connect to remote address + */ + virtual TInt ConnectL(MMSRPConnectionObserver& aSubsession) = 0; + + /** + * Listen to remote address + * add observer and start listener, if not started + * if new conn object i.e. single observer conn then + * update listen count + */ + virtual TInt ListenL(MMSRPConnectionObserver& aSubsession) = 0; + + + virtual TInt getConnectionState()=0; + + + /** + * Cancel the connect request if pending, else disconnect subsession + */ + //virtual void ConnectCancel(MMSRPConnectionObserver& aSubsession) = 0; //state == not connected means error + //connecting : issue cancel connect on socket if only subsession pending + //if connected: disconnect if only subsession pending + //else listening, panic client + /** + * Cancel the listen request if pending, else disconnect subsession + */ + //virtual void ListenCancel(MMSRPConnectionObserver& aSubsession) = 0; + + /** + * The particular subsession wishes to cease using the connection/ disconnect + */ + virtual void ReleaseConnection(MMSRPConnectionObserver& aSubsession) = 0; + + + /** + * Sends the buffer content + * the observer cud be implemented by msg or subsession + * connection observer deemed unnecessary in send call + */ + virtual void SendL( MMSRPWriterObserver& aMsg ) = 0; + + + /** + * use case unknown : connection failure detected, parse error on the connection + * Send failed , goes directly to subsession. + * In that scenario, subession could ask mngr to close connection itself as part of error recovery + */ + /** + * mngr/server decides to close all subsessions on connection + */ + //virtual void CloseConnection() = 0; + + + /*move to CMSrpConn*/ + virtual TBool CheckConnection(TInetAddr& aRemoteAddr, TBool aOnlyListen) = 0; + + /** + * connection observer is available with every request + * NewL used to get a reference to connection mgr, + * call delete connection entry in conn mngr on disconnect + */ + //virtual MMSRPConnection* NewL( TInetAddr& aRemoteAddr, MMSRPConnectionManager& aConnMngr) = 0; + + /** + * called on listen complete by connection manager + */ + virtual void ConnectionEstablishedL( TInt aNewState, RSocket* aSocket, TInt aStatus ) = 0; + + + /** + * Cancel the send + */ + //Send called on subsession with message + //Send cancel should be called on message (subsession with message id) + //msg state modified to cancel next fetch of message by writer + //but if the writer is sending same msg currently and send abort is issued then socket will need to be + //shutdown with stopoutput and then restarted + //Things cud get complicated , support not really necessary + //virtual void SendCancel( MMSRPConnectionObserver& aSubsession, MsgPTr, TDesC8& aBuf ) = 0; + + }; + +#endif // MMMSRPCONNECTION_H + +// End of file