Экономия - разные экземпляры обработчика для каждого сокета

Я разрабатываю «прокси-сервер» в Thrift. Моя проблема в том, что каждое соединение, входящее в прокси-сервер, использует один и тот же экземпляр обработчика. Клиентская реализация прокси находится в обработчике, поэтому все клиенты общаются через одно и то же соединение с конечным сервером.

У меня есть: n клиентов -> n сокетов -> 1 обработчик -> 1 сокет -> 1 сервер Что я хочу реализовать: n клиентов -> n сокетов -> n обработчиков -> n сокетов -> 1 сервер

Теперь проблема в том, что если клиент изменяет «локальный» параметр (то, что определяется для каждого клиента независимо ) на сервере, другие клиенты также будут работать с измененной средой.

shared_ptr<CassProxyHandler> handler(new CassProxyHandler(adr_s,port_s,keyspace));
shared_ptr<TProcessor> processor(new CassandraProcessor(handler));
shared_ptr<TServerTransport> serverTransport(new TServerSocket(port));
shared_ptr<TTransportFactory> transportFactory(new TFramedTransportFactory());
shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());
TThreadedServer server(processor, serverTransport, transportFactory, protocolFactory);
server.serve();

Есть ли способ реализовать сервер, который создает новый экземпляр обработчика для каждого сокета сервера вместо использования того же обработчика?

Спасибо за любые предложения или помощь, @

5
задан Lendvay András 8 July 2011 в 09:45
поделиться