00001
00002
00003
00004
00005
00006
00007
00008 #ifndef _CONNECTIONMANAGER_H
00009 #define _CONNECTIONMANAGER_H
00010
00011 #include "upnpservice.h"
00012
00018 enum eConnectionStatus {
00019 OK,
00020 CONTENT_FORMAT_MISMATCH,
00021 INSUFFICIENT_BANDWIDTH,
00022 UNRELIABLE_CHANNEL,
00023 UNKNOWN
00024 };
00025
00032 enum eDirection {
00033 OUTPUT,
00034 INPUT
00035 };
00036
00042 class cVirtualConnection : public cListObject {
00043 friend class cConnectionManager;
00044 private:
00045 cString mRemoteProtocolInfo;
00046 cString mRemoteConnectionManager;
00047 eDirection mDirection;
00048 int mRemoteConnectionID;
00049 int mConnectionID;
00050 int mAVTransportID;
00051 const int mRcsID;
00052 eConnectionStatus mStatus;
00053 cVirtualConnection();
00054 static const char* getStatusString(eConnectionStatus Status);
00055 static const char* getDirectionString(eDirection Direction);
00056 static int getDirection(const char* Direction);
00057 static int getConnectionStatus(const char* ConnectionStatus);
00058 };
00059
00066 class cConnectionManager : public cUpnpService {
00067 public:
00074 cConnectionManager(
00075 UpnpDevice_Handle DeviceHandle
00076 );
00077 virtual ~cConnectionManager();
00079 virtual int subscribe(Upnp_Subscription_Request* Request);
00081 virtual int execute(Upnp_Action_Request* Request);
00083 virtual void setError(Upnp_Action_Request* Request, int Error);
00084 private:
00085 virtual void setError(Upnp_Action_Request* Request, int Error);
00086 int getProtocolInfo(Upnp_Action_Request* Request);
00087 int getCurrentConnectionIDs(Upnp_Action_Request* Request);
00088 int getCurrentConnectionInfo(Upnp_Action_Request* Request);
00089 int prepareForConnection(Upnp_Action_Request* Request);
00090 int connectionComplete(Upnp_Action_Request* Request);
00091 cVirtualConnection* createVirtualConnection(const char* RemoteProtocolInfo = NULL, const char* RemoteConnectionManager = NULL, int RemoteConnectionID = -1, eDirection Direction = OUTPUT);
00092 bool destroyVirtualConnection(int ConnectionID);
00093 const char* getConnectionIDsCVS();
00094 cVirtualConnection* mDefaultConnection;
00095 cList<cVirtualConnection>* mVirtualConnections;
00096 cString mSupportedProtocols;
00097 };
00098
00099 #endif
00100