On 11/12/2010 02:25 AM, George Porter wrote:
Hello everyone,
I had a sortof newbe question that I was hoping you might be able to answer.
I've implemented the server side of an RPC server in CPP, by
implementing the various methods that were autogenerated by the thrift
compiler.
From what I can tell, those methods are "stateless", in that there is
no way to get information about which client you are executing the
method on behalf of, or what their IP address is, or that type of
thing. Is this true?
Thanks,
George
Hi George,
I was also willing to access client information from the server (like, for
example IP address / port), and associate some context with connexions.
A while ago i asked similar questions on the mailing list and the answers from
thrift developers were that:
- the protocol must not be tied to a specific transport -> accessing IP address
for example would tie the protocol to a TCP/IP transport
- stateless is better than statefull
Don't take me wrong, I completely agree with these arguments.
But for various reasons, i had to associate state with each connexion, and
access some connexion data. I found no way to do it using regular thrift, but i
was able to hack my twisted python thrift server to do it (basically: there is
in my server a thrift protocol instance for each connexion, instead of a global
one). I guess you need to do the same kind of hacking with your C++ server (i
don't know if its doable!).
my 0.02€...
--
Matthieu