Am 18.09.2013 um 04:53 schrieb Michael Scofield <[email protected]>:
> I strongly recommend Google's Protocol Buffer as the > serialization/deserialization tool. It's fast, convenient and robust. It > directly transform an object to the bytes formation(and vice-versa), so can > be send/recv through zeromq sockets. We are using it in our online game, and > it works well so far. This also reflects my experience. There is no point to be inventive on data formats of this kind, use protobuf and be done with it - learn once, never go back. -- A heads-up for those looking at protobuf versus JSON (which was the other contender for my current project): It turns out protobuf messages can be fully automatically translated to and from JSON without any format-specific code, including full type checking against the protobuf schema, using protobuf reflection Pavel Shramov did the conversion code in C++ and Python which I'm using: https://github.com/shramov/json2pb together with libwebsockets this gives me the capability to send/receive JSON objects from/to a browser and have it automatically interfaced as protobuf objects into my zmq zoo. It is super-convenient to edit a proto file, hit make, and everything else follows (except the Javascipt coding) in my case that even includes protobuf en/decoders which run in a realtime Linux setting, worst case as kernel modules; those are interfaced by a lock-free ringbuffer, also done by Pavel: https://github.com/shramov/ring which hooks into zmq on the userland side - Michael > > On 2013年09月18日 00:27, Riskybiz wrote: >> So, I’ve got a working implementation of a zeromq REQ-REP socket pattern and >> am using it to pass data in the form of character strings between a server >> and several clients, like so: >> Sample comma separated data strings sent as a multipart message (of several >> thousand parts), each line is a complete instruction for the client to draw >> something on screen: >> >> 414,2095,@ESU13,upper,1,1,41528.600694,41528.602778,1679.75000,1679.75000,16776960,3,0,1 >> 415,2095,@ESU13,lower,1,1,41528.600694,41528.602778,1679.50000,1679.50000,16776960,3,0,1 >> 416,2095,@ESU13,marker,1,1,41528.602778,41528.602778,1679.75000,1680.50000,16776960,3,0,0 >> 417,2095,@ESU13,rectangle,1,1,41528.600694,41528.603472,1679.75000,1679.50000,65535,0,0,1 >> 418,2095,@ESU13,label,1,1,41528.600694,1679.50000,ID:2095 0.0149% 5Bars 100D >> 3.00IR,Arial,5.00000,0,0 >> >> My issue is that each of the data strings has to be composed at the server >> and then decoded at the client end to extract the data; this works but is >> not very elegant, I’m sure there is a better and more efficient way……… >> >> I have the notion that I’d like to try encapsulating each line of the data >> to be sent in a custom class object object instance; then serialize each >> object, pass it through the REQ-REP sockets and deserialise to reconstruct >> the object at the client end. The simple class would be in the format like >> so; only comprising data members. >> >> class Instruction >> { >> public: >> //Constructor >> Instruction(const unsigned int &intData, const double &dblData, const >> std::string &strData): IntData(intData), DblData(dblData), StrData(strData) >> { >> } >> >> //Data Members >> const unsigned int IntData; >> const double DblData; >> const std::string StrData; >> };//class >> >> Trouble is I don’t know how to implement this practically. Is anyone able >> to provide a simple example of how to accomplish serialising and >> deserialising a custom object and sending it though a REQ-REP socket pair? >> Or does anyone know of a good online tutorial on this subject? I’m working >> with Visual Studio 2012 Express in C++. >> >> With very many thanks, >> >> Riskybiz. >> >> >> >> >> _______________________________________________ >> zeromq-dev mailing list >> >> [email protected] >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev > > _______________________________________________ > zeromq-dev mailing list > [email protected] > http://lists.zeromq.org/mailman/listinfo/zeromq-dev _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
