00001
#ifndef PROXYCLIENTWRAPPERFACTORY_H
00002
#define PROXYCLIENTWRAPPERFACTORY_H
00003
00004
#include "MNString.h"
00005
#include "ProxyClientWrapper.h"
00006
#include "RTSPProxySession.h"
00007
#include <map>
00008
00009
class ServerSideReflectorGM;
00014 class ProxyClientWrapperFactory
00015 {
00016
private:
00017
static ProxyClientWrapperFactory* _instance;
00018 std::multimap<MNString, ProxyClientWrapper*> _reflectingSessions;
00019 std::map<RTSPProxySession*, ProxyClientWrapper*> _nonReflectingSessions;
00020
00021
00022
protected:
00023
ProxyClientWrapperFactory();
00024
00025
public:
00026
static ProxyClientWrapperFactory*
getInstance();
00027
virtual ~ProxyClientWrapperFactory();
00028
00033
ProxyClientWrapper*
getProxyClientWrapper(
RTSPProxySession* session,
MNString url,
00034
MNSelector& selector, ProxyServer* proxyServer,
00035
bool dynReflection);
00036
00040
ProxyClientWrapper*
getDynReflectionProxyClient(
RTSPProxySession* session,
MNString url,
00041
MNSelector& selector, ProxyServer* proxyServer,
00042
int presentationTime,
bool& isNew);
00043
00045
ProxyClientWrapper*
getAssociatedProxyClientWrapper(ProxyClient* pc);
00046
00051
void releaseProxyClientWrapper(
ProxyClientWrapper* pcw);
00052
00054
unsigned int getSessionMemberCount(
MNString url);
00055
00056
private:
00057
ProxyClientWrapper* getProxyClientWrapperWithTime(
ProxyClientWrapper* oldPcw,
MNString& url,
int presentationTime);
00058
bool isPresentationAtThatTime(
ProxyClientWrapper* pcw,
int presentationTime);
00059 };
00060
00061
#endif