Thanks for your reply Franis. Rewriting the library sounds inefficient and
would most likely create a maintenance hell so I think TLS is the way to go.
Could you perhaps give me some pointers to get me started?
Hannes Baldursson

On Fri, Mar 27, 2009 at 08:49, Franis Sirkovic <[email protected]>wrote:

> Hi.
>
> I am thrift user too (just to warn you). Thrift library will never create
> new instance of HangmanGame. I have the same problem too. I see 2
> solutions.
> First, you can write your own library that will create new processor for
> each client. Or, you can use thread local storage to store data related to
> different clients. I use TLS because I didn't want to rewrite the library.
>
> Best wishes, Franis Sirkovic.
>
> On Fri, Mar 27, 2009 at 7:48 AM, Hannes Baldursson <[email protected]
> >wrote:
>
> > Hi all,
> >
> > I'm trying to create a threaded server for a simple hangman game written
> in
> > C#. It's working fine for a single client but multiple clients seem to
> > share
> > the game instance instead of each having a unique one.
> >
> > The code I use to start the server is:
> >
> >                bool useBufferedSockets = false;
> > >                 int port = 9090;
> > >
> > >
> > >                 // Processor
> > >               *  HangmanHandler hangmanHandler = new HangmanHandler();*
> > >                 HangmanRPC.Processor hangmanProcessor = new
> > > HangmanRPC.Processor(hangmanHandler);
> > >
> > >                 // Transport
> > >                 TServerSocket tServerSocket = new TServerSocket(port,
> 0,
> > > useBufferedSockets);
> > >
> > >                 TServer serverEngine;
> > >
> > >                 // Simple Server
> > >                 //serverEngine = new TSimpleServer(hangmanProcessor,
> > > tServerSocket);
> > >
> > >                 // ThreadPool Server
> > >                 // serverEngine = new TThreadPoolServer(testProcessor,
> > > tServerSocket);
> > >
> > >                 // Threaded Server
> > >                  serverEngine = new TThreadedServer(hangmanProcessor,
> > > tServerSocket);
> > >
> > >                 hangmanHandler.server = serverEngine;
> > >
> > >                 // Run it
> > >                 Console.WriteLine("Starting the server on port " + port
> +
> > > (useBufferedSockets ? " with buffered socket" : "") + "...");
> > >                 serverEngine.Serve();
> > >
> >
> > HangmanRPC is the service generated by the thrift compiler.
> > HangmanHandler is the implementation that responds to the RPC commands
> and
> > contains an object of HangmanGame which is the code for the game
> instance.
> >
> > The problem is that the HangmanGame object is shared between multiple
> > clients. What is the ideal place for HangmanGame so it creates a unique
> > instance for each client?
> >
> >
> > Thanks in advance,
> > Hannes Baldursson
> >
>

Reply via email to