Re: [Quickfix-users] custom messages/ message wrappers
Brought to you by:
orenmnero
From: Oren M. <or...@qu...> - 2004-05-07 14:56:20
|
Well in C++ the toString call is not a virtual method, so when it is sent across the wire as a base Message class, it would just end up being sent as a regular FIX message. In order to do what you need, I think these are the steps you would have to take. change the toString call on the Message class. You can check the MsgType to do message specific logic for things like the logon if necessary. change the fromString call so that it can parse these messages. change the Parser so it can correctly read these new message types off the wire. I think if you do all this, you may be able to reuse the rest of the QuickFIX library to communicate with this counterparty. It is important that messages you send with toString can be read back in with fromString, otherwise the message stores will break. On May 6, 2004, at 3:40 PM, Blain Sadler wrote: > Thanks for your quick response! > > To answer your question, the client-side server (I know it's bizzare > sounding :-) talks real fix to the outside world and real fix + the > wrappers and a custom logon message to the inside. The main advantage > it offers is that I can send any version fix message to it and it will > appropriately translate to the version that the message's destination > is talking, so my application need only speak one version of fix. > > Your idea about having a proxy is great, but I don't know if it is > best for this situation, I get into that below. > > The custom logon message is the real problem here. An example: > > <proprietarycompanyname> > <msg msgtype="6" sendercompid="BuySide" targetcompid="SellSide" > username="guest" password="bighexadecimalstring" /> > </proprietarycompanyname> > > So it's really a Fixml (perhaps nonstandard) message. After a little > more peeking into the code it looks like I could (as you suggested) > add a username and password field to the message in the toAdmin > callback, but then I still have the problem of getting quickfix to > format it as per above. > > My guess is that I might be able to overload the toString() method in > the FIX44::Logon class which I think quickfix calls before it sends > the message over the wire. BUT... I don't know if I am going to break > the system or even if it is possible to overload that method at that > level. If I can do this however, I might as well just throw in the > <proprietarycompanyname></proprietarycompanyname> in FIX44::Message > and not worry about the proxy. > > Anyway, if you could give me a little insight into the ramifications > of doing the above that would be fantastic. > > Thanks again for you help, you have a awesome library here, I just > hope I can use it! > > -B > > > or...@qu... wrote: > >> Wow. That's some requirement! Do they have the ability to talk to >> any off the shelf FIX engines? Doesn't >> sound likely. >> The custom logon is easy, you can add on any fields to the outgoing >> logon in the toAdmin callback. Just add >> whatever custom fields you need with setField. If they are sending >> you custom fields, just add them to the >> DataDictionary and you should have no problem pulling them out with >> getField. >> >> Now the <tag></tag> thing is weird! You certainly could hack around >> the code to try to support this strange >> behavior, but what I would probably do instead is to write a small >> proxy to handle this. Essentially just >> write a little server that will take a proper FIX message on one end, >> and add the <tag></tag> before sending to >> the counterparty, and strip them out of messages you receive before >> sending to your application. Another >> advantage of having a proxy is that you could always swap in a new >> FIX engine if you ever wanted to switch. >> >> >>> -------- Original Message -------- >>> Subject: [Quickfix-users] custom messages/ message wrappers >>> From: "Blain Sadler" <bla...@tr...> >>> Date: Thu, May 06, 2004 11:37 am >>> To: qui...@li... >>> >>> Hi all, >>> >>> I am looking at integrating QuickFix as a part of a client >>> application >>> >>> communicating with a proprietary client side fix engine. The main >>> problem that I am encountering is that this particular engine needs >>> a custom logon message, and for all messages to be wrapped in >>> <tag></tag> >>> >>> with the raw fix message encompassed within. >>> >>> Being unfamiliar with the quickfix c++ codebase,My questions to the >>> list are these: >>> 1) Where in the code would I go about tacking on and removing the >>> <tag></tag> pairs for incoming and outgoing messages? >>> 2) How should I go about dealing with the custom logon and logon >>> response messages, subclass FIXxx::Logon? Plug it into the socket's >>> receiving code? >>> >>> My thanks in advance for any help >>> >>> -B >>> >>> >>> >>> >>> ------------------------------------------------------- >>> This SF.Net email is sponsored by Sleepycat Software >>> Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to >>> deliver higher performing products faster, at low TCO. >>> http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3 >>> _______________________________________________ >>> Quickfix-users mailing list >>> Qui...@li... >>> https://lists.sourceforge.net/lists/listinfo/quickfix-users >>> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by Sleepycat Software >> Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to >> deliver higher performing products faster, at low TCO. >> http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3 >> _______________________________________________ >> Quickfix-users mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfix-users >> >> >> >> > > > > |