Hi,

I've tried the TFileTransport class a while ago and had the problem described at http://publists.facebook.com/pipermail/thrift/2008-January/000357.html.

I thus wrote a transport class for c++ streams that I just added to the wiki (http://wiki.apache.org/thrift/C++StreamTransport). I extracted the file from one of my project, so if you have trouble to compile it, do not hesitate to contact me or fix the wiki version.

I have no simple example at hand but all classes take a boost::shared_ptr<StreamT> in paramater and can be used as any other thrift transports.

If you have any question on this code, I will be glad to answer,

Alex

Martin Hejnfelt wrote:
Hi,

I'm working on a system that implements Thrift as the main protocol for
connection between the clients and the server, all done in C++.
The thrift service doesn't do much more that give an easy way of moving
some structs to the server.
Now my problem is that I have to find a way to store the information if
the thrift server isn't reachable. I have some structs defined in the
thrift file (which are then mapped to C++ classes) that gets filled with
information and then methods to send these to the server. If the server
is down I'd like to save these classes/thrift-structs  to a file
(serialization I guess), and then load them back into the program, when
the thrift server is back up. First I tried just to use regular istream
and ostream methods of serialization, but as I found out, the success of
this method apparently depends on the compiler (i.e. it doesn't work for
me :). So read in the Thrift whitepaper about this TFileTransport
"option", which seems to be able to do what I need (or maybe I
misunderstood it). It looks like this "layer" is capable of writing
thrift requests to a file, and then actually "replay" it (so I could
replay the requests when the server is back up). However I can't find
any good examples of using it. My question is then (finally :)):
Can someone give me a short example of using this (if a short example is
even possible)?
I guess I "just" need to know how I could add and read events from it,
in order to take an previous event, and "replay" to the client. (I see
it has addEvent and readEvent methods, but how should I use these
compared to/in conjunction with my existing client->DoWhatEverMethod()
calls?

Anyway, any help is appreciated :) Thanks in advance!


Mvh. / Best Regards

Martin Hejnfelt

Reply via email to