Estoy desarrollando un servidor 'proxy' en Thrift. Mi problema es que cada conexión que entra al proxy utiliza la misma instancia del controlador. La implementación del proxy por parte del cliente está en el controlador, por lo que todos los clientes se comunican a través de la misma conexión al servidor final.Thrift - instancia diferente de Handler para cada socket
Tengo: n clientes -> n tomas de corriente -> 1 controlador -> 1 socket -> 1 servidor Lo que quiero implementar: n clientes -> n tomas de corriente -> n controladores -> n sockets -> 1 servidor
Ahora el problema es que si un cliente cambia un parámetro de 'local' (algo que se define para cada cliente de forma independiente) en el servidor, otros clientes trabajarán con el nuevo entorno también.
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();
¿Hay una manera de implementar un servidor, que crea una nueva instancia del manejador para cada socket de servidor en lugar de utilizar el mismo controlador?
Gracias por cualquier sugerencia o ayuda, @
¿Alguna vez ha realizado una solicitud de ticket/issue/feature @ apache thrift? Creo que esto también podría usarse para permitir la comunicación full-duplex/bidirectional muy fácilmente. – BatteryBackupUnit