Thread: [Quickfix-developers] QuickFIX/J status update
Brought to you by:
orenmnero
|
From: Steve B. <st...@te...> - 2005-06-07 17:37:07
|
Hello RK, The QuickFIX/J code is in the QuickFIX CVS repository. The module name is 'quickfixj'. The code is available under the same license as the C++ QF (open source, but not PD). Briefly, the current status is that we are passing almost all the acceptance tests (see QF bug tracker for details). Running the OpenFIX certification tests is somewhat time consuming but almost all the FIX 4.2 tests are passing at this point. We'll be running the certification tests against other FIX versions as well. We are currently preparing for a beta release (no date set at this time). With the release, we intend to have the documentation to support broader developer contribution. The initial release will implement almost exactly the same API as the Java bindings for the C++ QF. The intent is to make the transition to the pure Java QF as painless as possible for existing Java applications. Our plans for future versions include improved performance, possible migration to Java 5, JMX instrumentation, application server integration, and so on. QuickFIX/J is currently being used for real trading on some small applications. Steve > -----Original Message----- > From: VP Marketing IT Asset Enterprise Technologies > [mailto:ass...@gm...] > Sent: Tuesday, June 07, 2005 11:34 AM > To: Steve Bate > Subject: Re: [Quickfix-developers] OrigSendingTime on messages with > PossDup=Y > > Hi Steve > > Do you have an estimated completion or release date for the pure java > implementation. > > We also faced serious problems with QF within JBOSS. So we are trying > to develop pure java quickfix. If you are planning to release it in PD > then > we do not have to do that. > > Please let us know. Thank you Steve. This is leadership initiative. > -- > RK > > On 6/6/05, Steve Bate <st...@te...> wrote: > > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > > QuickFIX FAQ: > http://www.quickfixengine.org/wikifix/index.php?QuickFixFAQ > > QuickFIX Support: http://www.quickfixengine.org/services.html > > > > Hello, > > > > I'm working on OpenFIX certification for the pure Java QuickFIX > > implementation. One test that's giving me problems involves a > > message with PossDup=Y and no OrigSendingTime. I notice that the > > session implementation only validates the PossDup-related fields > > when when the target sequence number is lower than expected > > (doPossDup() is only called from doTargetTooLow()). The OpenFIX > > test (FIX 4.2) is sending a message with PossDup=Y and > > a proper sequence number so the PossDup verification code is not > > being called. > > > > It seems a bit strange that PossDup=Y in this scenario (normal > > sequence numbers)? Is this a problem with QuickFIX or the > > OpenFIX test? Comments? > > > > Steve > > > > > > > > > > ------------------------------------------------------- > > This SF.Net email is sponsored by: NEC IT Guy Games. How far can you > shotput > > a projector? How fast can you ride your desk chair down the office luge > track? > > If you want to score the big prize, get to know the little guy. > > Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20 > > _______________________________________________ > > Quickfix-developers mailing list > > Qui...@li... > > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > > |
|
From: VP M. IT A. E. T. <ass...@gm...> - 2005-06-08 19:18:47
|
This is very good news. I will attempt to migrate over this week and let you know. On 6/7/05, Steve Bate <st...@te...> wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/i= ndex.html > QuickFIX FAQ: http://www.quickfixengine.org/wikifix/index.php?QuickFixFAQ > QuickFIX Support: http://www.quickfixengine.org/services.html >=20 > Hello RK, >=20 > The QuickFIX/J code is in the QuickFIX CVS repository. The module > name is 'quickfixj'. The code is available under the same license > as the C++ QF (open source, but not PD). Briefly, the current > status is that we are passing almost all the acceptance tests > (see QF bug tracker for details). Running the OpenFIX > certification tests is somewhat time consuming but almost all > the FIX 4.2 tests are passing at this point. We'll be running > the certification tests against other FIX versions as well. >=20 > We are currently preparing for a beta release (no date set at > this time). With the release, we intend to have the documentation > to support broader developer contribution. >=20 > The initial release will implement almost exactly the same API > as the Java bindings for the C++ QF. The intent is to make the > transition to the pure Java QF as painless as possible for existing > Java applications. >=20 > Our plans for future versions include improved performance, > possible migration to Java 5, JMX instrumentation, application > server integration, and so on. >=20 > QuickFIX/J is currently being used for real trading on some small > applications. >=20 > Steve >=20 > > -----Original Message----- > > From: VP Marketing IT Asset Enterprise Technologies > > [mailto:ass...@gm...] > > Sent: Tuesday, June 07, 2005 11:34 AM > > To: Steve Bate > > Subject: Re: [Quickfix-developers] OrigSendingTime on messages with > > PossDup=3DY > > > > Hi Steve > > > > Do you have an estimated completion or release date for the pure java > > implementation. > > > > We also faced serious problems with QF within JBOSS. So we are trying > > to develop pure java quickfix. If you are planning to release it in PD > > then > > we do not have to do that. > > > > Please let us know. Thank you Steve. This is leadership initiative. > > -- > > RK > > > > On 6/6/05, Steve Bate <st...@te...> wrote: > > > QuickFIX Documentation: > > http://www.quickfixengine.org/quickfix/doc/html/index.html > > > QuickFIX FAQ: > > http://www.quickfixengine.org/wikifix/index.php?QuickFixFAQ > > > QuickFIX Support: http://www.quickfixengine.org/services.html > > > > > > Hello, > > > > > > I'm working on OpenFIX certification for the pure Java QuickFIX > > > implementation. One test that's giving me problems involves a > > > message with PossDup=3DY and no OrigSendingTime. I notice that the > > > session implementation only validates the PossDup-related fields > > > when when the target sequence number is lower than expected > > > (doPossDup() is only called from doTargetTooLow()). The OpenFIX > > > test (FIX 4.2) is sending a message with PossDup=3DY and > > > a proper sequence number so the PossDup verification code is not > > > being called. > > > > > > It seems a bit strange that PossDup=3DY in this scenario (normal > > > sequence numbers)? Is this a problem with QuickFIX or the > > > OpenFIX test? Comments? > > > > > > Steve > > > > > > > > > > > > > > > ------------------------------------------------------- > > > This SF.Net email is sponsored by: NEC IT Guy Games. How far can you > > shotput > > > a projector? How fast can you ride your desk chair down the office lu= ge > > track? > > > If you want to score the big prize, get to know the little guy. > > > Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=3D2= 0 > > > _______________________________________________ > > > Quickfix-developers mailing list > > > Qui...@li... > > > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > > > >=20 >=20 >=20 > ------------------------------------------------------- > This SF.Net email is sponsored by: NEC IT Guy Games. How far can you sho= tput > a projector? How fast can you ride your desk chair down the office luge t= rack? > If you want to score the big prize, get to know the little guy. > Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=3D20 > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
|
From: VP M. IT A. E. T. <ass...@gm...> - 2005-06-28 15:41:55
|
quickfix.ConfigError: no initiators in settings
at quickfix.netty.AbstractSocketInitiator.initialize(AbstractSocket=
Initiator.java:178)
at quickfix.netty.AbstractSocketInitiator.start(AbstractSocketIniti=
ator.java:117)
at FixGwy.<init>(Unknown Source)
at FixGwy.main(Unknown Source)
I am getting this error.
Here is what I have done:
I got the j CVS distribution and did the build using build.xml. All the tes=
ts
ran fine.
Then I integrated with my application which had been built on quickfix
distribution.
I removed the lines which loaded the quickfix_jni library.
I did not do any other change.=20
I included the /build/classes/product directory and a couple of jars
from j/lib directory. I am getting the above exception.
Here is the contents of my settings file:
[DEFAULT]
ConnectionType=3Dinitiator
HeartBtInt=3D30
FileStorePath=3Dstore
StartTime=3D00:00:00
EndTime=3D00:00:00
UseDataDictionary=3DY
SocketConnectHost=3D199.53.16.226
SocketConnectPort=3D5545
ReconnectInterval=3D1
[SESSION]
BeginString=3DFIX.4.2
SenderCompID=3DFMCPTEST
TargetCompID=3DCSFBTEST
DataDictionary=3D/home/rkannan/FIX/dist/quickfix/spec/FIX42.xml
Right after I hit the send button I am going to look at cfg for Banzai
and try to mimic that.
BTW,
I have a SharedBlockedQueue which uses one other class SharedCounter
which implements thread safe get and put with and without time to wait.
All my sockets IO is feeding this Queue and all my Object reads are blocked
or unblocked as needed. If you would like to look at the
implementation please let me know. I am looking forward to
implementing some stuff for quickfixj
right after I get this project out of my plate.
Bye
On 6/8/05, VP Marketing IT Asset Enterprise Technologies
<ass...@gm...> wrote:
> This is very good news. I will attempt to migrate over this week
> and let you know.
>=20
> On 6/7/05, Steve Bate <st...@te...> wrote:
> > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html=
/index.html
> > QuickFIX FAQ: http://www.quickfixengine.org/wikifix/index.php?QuickFixF=
AQ
> > QuickFIX Support: http://www.quickfixengine.org/services.html
> >
> > Hello RK,
> >
> > The QuickFIX/J code is in the QuickFIX CVS repository. The module
> > name is 'quickfixj'. The code is available under the same license
> > as the C++ QF (open source, but not PD). Briefly, the current
> > status is that we are passing almost all the acceptance tests
> > (see QF bug tracker for details). Running the OpenFIX
> > certification tests is somewhat time consuming but almost all
> > the FIX 4.2 tests are passing at this point. We'll be running
> > the certification tests against other FIX versions as well.
> >
> > We are currently preparing for a beta release (no date set at
> > this time). With the release, we intend to have the documentation
> > to support broader developer contribution.
> >
> > The initial release will implement almost exactly the same API
> > as the Java bindings for the C++ QF. The intent is to make the
> > transition to the pure Java QF as painless as possible for existing
> > Java applications.
> >
> > Our plans for future versions include improved performance,
> > possible migration to Java 5, JMX instrumentation, application
> > server integration, and so on.
> >
> > QuickFIX/J is currently being used for real trading on some small
> > applications.
> >
> > Steve
> >
> > > -----Original Message-----
> > > From: VP Marketing IT Asset Enterprise Technologies
> > > [mailto:ass...@gm...]
> > > Sent: Tuesday, June 07, 2005 11:34 AM
> > > To: Steve Bate
> > > Subject: Re: [Quickfix-developers] OrigSendingTime on messages with
> > > PossDup=3DY
> > >
> > > Hi Steve
> > >
> > > Do you have an estimated completion or release date for the pure java
> > > implementation.
> > >
> > > We also faced serious problems with QF within JBOSS. So we are trying
> > > to develop pure java quickfix. If you are planning to release it in P=
D
> > > then
> > > we do not have to do that.
> > >
> > > Please let us know. Thank you Steve. This is leadership initiative.
> > > --
> > > RK
> > >
> > > On 6/6/05, Steve Bate <st...@te...> wrote:
> > > > QuickFIX Documentation:
> > > http://www.quickfixengine.org/quickfix/doc/html/index.html
> > > > QuickFIX FAQ:
> > > http://www.quickfixengine.org/wikifix/index.php?QuickFixFAQ
> > > > QuickFIX Support: http://www.quickfixengine.org/services.html
> > > >
> > > > Hello,
> > > >
> > > > I'm working on OpenFIX certification for the pure Java QuickFIX
> > > > implementation. One test that's giving me problems involves a
> > > > message with PossDup=3DY and no OrigSendingTime. I notice that the
> > > > session implementation only validates the PossDup-related fields
> > > > when when the target sequence number is lower than expected
> > > > (doPossDup() is only called from doTargetTooLow()). The OpenFIX
> > > > test (FIX 4.2) is sending a message with PossDup=3DY and
> > > > a proper sequence number so the PossDup verification code is not
> > > > being called.
> > > >
> > > > It seems a bit strange that PossDup=3DY in this scenario (normal
> > > > sequence numbers)? Is this a problem with QuickFIX or the
> > > > OpenFIX test? Comments?
> > > >
> > > > Steve
> > > >
> > > >
> > > >
> > > >
> > > > -------------------------------------------------------
> > > > This SF.Net email is sponsored by: NEC IT Guy Games. How far can y=
ou
> > > shotput
> > > > a projector? How fast can you ride your desk chair down the office =
luge
> > > track?
> > > > If you want to score the big prize, get to know the little guy.
> > > > Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=
=3D20
> > > > _______________________________________________
> > > > Quickfix-developers mailing list
> > > > Qui...@li...
> > > > https://lists.sourceforge.net/lists/listinfo/quickfix-developers
> > > >
> >
> >
> >
> > -------------------------------------------------------
> > This SF.Net email is sponsored by: NEC IT Guy Games. How far can you s=
hotput
> > a projector? How fast can you ride your desk chair down the office luge=
track?
> > If you want to score the big prize, get to know the little guy.
> > Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=3D20
> > _______________________________________________
> > Quickfix-developers mailing list
> > Qui...@li...
> > https://lists.sourceforge.net/lists/listinfo/quickfix-developers
> >
>
|
|
From: Steve B. <st...@te...> - 2005-06-28 16:47:56
|
Was there an earlier exception that may have caused the session to not be configured? For example, not finding the dictionary could have this effect. I write a simple application using your config file and I got the exception you reported before I changed the DataDictionary setting to a data dictionary on my local computer. After that change, the application started with no problem. I'm not saying the data dictionary setting is the problem on your system. It could be something else. The code is written so that an exception during initializing a particular session will not cause the socket initiator class to stop processing other session definitions. If users prefer to have the socket initiator die if any specific can't be initiated, I'd be happy to make that change. Let me know. Steve > -----Original Message----- > From: VP Marketing IT Asset Enterprise Technologies > [mailto:ass...@gm...] > Sent: Tuesday, June 28, 2005 10:41 AM > To: Steve Bate > Cc: qui...@li... > Subject: I have a question about QF-J > > quickfix.ConfigError: no initiators in settings > at > quickfix.netty.AbstractSocketInitiator.initialize(AbstractSocketInitiator. > java:178) > at > quickfix.netty.AbstractSocketInitiator.start(AbstractSocketInitiator.java: > 117) > at FixGwy.<init>(Unknown Source) > at FixGwy.main(Unknown Source) > > I am getting this error. > Here is what I have done: > I got the j CVS distribution and did the build using build.xml. All the > tests > ran fine. > Then I integrated with my application which had been built on quickfix > distribution. > I removed the lines which loaded the quickfix_jni library. > I did not do any other change. > I included the /build/classes/product directory and a couple of jars > from j/lib directory. I am getting the above exception. > > Here is the contents of my settings file: > > [DEFAULT] > ConnectionType=initiator > HeartBtInt=30 > FileStorePath=store > StartTime=00:00:00 > EndTime=00:00:00 > UseDataDictionary=Y > SocketConnectHost=199.53.16.226 > SocketConnectPort=5545 > ReconnectInterval=1 > > [SESSION] > BeginString=FIX.4.2 > SenderCompID=FMCPTEST > TargetCompID=CSFBTEST > DataDictionary=/home/rkannan/FIX/dist/quickfix/spec/FIX42.xml > > Right after I hit the send button I am going to look at cfg for Banzai > and try to mimic that. > BTW, > > I have a SharedBlockedQueue which uses one other class SharedCounter > which implements thread safe get and put with and without time to wait. > All my sockets IO is feeding this Queue and all my Object reads are > blocked > or unblocked as needed. If you would like to look at the > implementation please let me know. I am looking forward to > implementing some stuff for quickfixj > right after I get this project out of my plate. > > Bye > |
|
From: Oren M. <or...@qu...> - 2005-06-28 16:59:34
|
That's how the C++/JNI wrapper work. Running under jni you would have gotten an error message like this: quickfix.ConfigError: Configuration failed: /directory/ MyMissingFile.xml: Could not parse data dictionary file There it just short circuits and breaks out of any other initialization. --oren On Jun 28, 2005, at 11:45 AM, Steve Bate wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/ > html/index.html > QuickFIX FAQ: http://www.quickfixengine.org/wikifix/index.php? > QuickFixFAQ > QuickFIX Support: http://www.quickfixengine.org/services.html > > Was there an earlier exception that may have caused the session > to not be configured? For example, not finding the dictionary could > have this effect. I write a simple application using your config > file and I got the exception you reported before I changed the > DataDictionary setting to a data dictionary on my local computer. > After that change, the application started with no problem. I'm > not saying the data dictionary setting is the problem on your system. > It could be something else. > > The code is written so that an exception during initializing a > particular session will not cause the socket initiator class to > stop processing other session definitions. If users prefer to have > the socket initiator die if any specific can't be initiated, I'd > be happy to make that change. Let me know. > > Steve > > >> -----Original Message----- >> From: VP Marketing IT Asset Enterprise Technologies >> [mailto:ass...@gm...] >> Sent: Tuesday, June 28, 2005 10:41 AM >> To: Steve Bate >> Cc: qui...@li... >> Subject: I have a question about QF-J >> >> quickfix.ConfigError: no initiators in settings >> at >> quickfix.netty.AbstractSocketInitiator.initialize >> (AbstractSocketInitiator. >> java:178) >> at >> quickfix.netty.AbstractSocketInitiator.start >> (AbstractSocketInitiator.java: >> 117) >> at FixGwy.<init>(Unknown Source) >> at FixGwy.main(Unknown Source) >> >> I am getting this error. >> Here is what I have done: >> I got the j CVS distribution and did the build using build.xml. >> All the >> tests >> ran fine. >> Then I integrated with my application which had been built on >> quickfix >> distribution. >> I removed the lines which loaded the quickfix_jni library. >> I did not do any other change. >> I included the /build/classes/product directory and a couple of jars >> from j/lib directory. I am getting the above exception. >> >> Here is the contents of my settings file: >> >> [DEFAULT] >> ConnectionType=initiator >> HeartBtInt=30 >> FileStorePath=store >> StartTime=00:00:00 >> EndTime=00:00:00 >> UseDataDictionary=Y >> SocketConnectHost=199.53.16.226 >> SocketConnectPort=5545 >> ReconnectInterval=1 >> >> [SESSION] >> BeginString=FIX.4.2 >> SenderCompID=FMCPTEST >> TargetCompID=CSFBTEST >> DataDictionary=/home/rkannan/FIX/dist/quickfix/spec/FIX42.xml >> >> Right after I hit the send button I am going to look at cfg for >> Banzai >> and try to mimic that. >> BTW, >> >> I have a SharedBlockedQueue which uses one other class SharedCounter >> which implements thread safe get and put with and without time to >> wait. >> All my sockets IO is feeding this Queue and all my Object reads are >> blocked >> or unblocked as needed. If you would like to look at the >> implementation please let me know. I am looking forward to >> implementing some stuff for quickfixj >> right after I get this project out of my plate. >> >> Bye >> >> > > > > ------------------------------------------------------- > SF.Net email is sponsored by: Discover Easy Linux Migration Strategies > from IBM. Find simple to follow Roadmaps, straightforward articles, > informative Webcasts and more! Get everything you need to get up to > speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > > |
|
From: VP M. IT A. E. T. <ass...@gm...> - 2005-06-28 17:35:13
|
I switched to an executor in the LAN and it worked fine. You are correct
the trouble earlier was with the settings file...
The file is there. But there is only one session and that is with an extern=
al
party and it could be failing for a number of reasons.
The error (console) output did not indicate that. It misdirects to an
initiator not
being there.
We can talk about how to structure a generic Error control and communicatio=
n=20
exception hierarchy.
Consider the following three classes:
class QuickfixJErrorList
{
final String error_string[] =3D
{
"ILLEGAL ARGUMENT/INTERNAL ERROR",
"CONFIG FILE NOT READABLE",
"CONFIG NOT ACCORDING TO SPECIFICATION", // somethign simpler may be
"SESSION COULD NOT BE INITIALIZED",
};
final int base_error=3D1300;
final int error_no[] =3D {1300,1301,1302, 1303} ; // this coudl be
base_error, base_error+1, etc
static public String getErrorMessage(int code) {
return error_string[(code>base_error&&(code<(base_error+error_no.length)))?=
code:0);
}
static public String getErrorMessage(String code){
try {
return getErrorMessage(Integer.parseInt(code.trim()));
} catch(Exception e) { }
return getErrorMessage(0); =20
}
}
class QuickfixException extends Exception
{
QuickfixException (String msgCode)
{
super(QuickfixJErrorList.getErrorMessage(msg);
}
}
And we can implement the JErrorList in XML and load the DOM=20
or put it on HSQLDB or some such thing and manage it from anywhere.
instead of being static class...
I am hacking as I am writing this email.. the idea may be clearer...
I can do this..if you send me a specification what you want.
--
rk
|
|
From: VP M. IT A. E. T. <ass...@gm...> - 2005-06-28 18:41:51
|
Here is what I see happening
F (my company) sends a 35=3DA to C the client
Client sends 35=3DA
QF does not like tag 52...do not know why yet...
and it tries to reject that message before login occurs
so an exception is thrown and then we know the rest...
I guess the same thing happened yesterday with Quickfix.
This is with QuickfixJ.
Oren, now I am going to do the cvs up command see if the updates help
me nudge along.
( I am guessing the CVS up is shorthand for CVS update...I am severely
handicapped with C++, CVS and windows)
I hope am not being taken for high maintenance user
--
RK
<20050628-18:28:04, FIX.4.2:FTEST->CTEST, outgoing>
(8=3DFIX.4.29=3D7135=3DA34=3D149=3DFTEST52=3D20050628-18:28:04.33156=3DCTES=
T98=3D0108=3D3010=3D197)
<20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Initiated logon request)
<20050628-18:28:04, FIX.4.2:FTEST->CTEST, outgoing>
(8=3DFIX.4.29=3D7135=3DA34=3D149=3DFTEST52=3D20050628-18:28:04.33156=3DCTES=
T98=3D0108=3D3010=3D197)
<20050628-18:28:04, FIX.4.2:FTEST->CTEST, incoming>
(8=3DFIX.4.29=3D8735=3DA49=3DCTEST56=3DFTEST34=3D0000198=3D052=3D20050628-1=
8:27:49108=3D60141=3DN383=3D5600010=3D203)
<20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (error while receiving mes=
sage
quickfix.SessionException: Tried to send a reject while not logged on:
Tag specified out of required order (field 52)
at quickfix.Session.generateReject(Session.java:753)
at quickfix.Session.next(Session.java:508)
at quickfix.netty.AbstractSocketInitiator.processMessage(AbstractSo=
cketInitiator.java:210)
at quickfix.SocketInitiator.onMessage(SocketInitiator.java:94)
at quickfix.netty.AbstractSocketInitiator$SessionConnection$NettySe=
ssionListener.messageReceived(AbstractSocketInitiator.java:380)
at net.gleamynode.netty2.Session.fireMessageReceived(Session.java:7=
33)
at net.gleamynode.netty2.LowLatencyEventDispatcher.flush(LowLatency=
EventDispatcher.java:67)
at net.gleamynode.netty2.ReadController.processEvent(ReadController=
.java:360)
at net.gleamynode.netty2.IoProcessor.process(IoProcessor.java:334)
at net.gleamynode.netty2.IoProcessor.access$500(IoProcessor.java:73=
)
at net.gleamynode.netty2.IoProcessor$Worker.run(IoProcessor.java:36=
4)
)
<20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Dropped Connection)
FIX.4.2:FTEST->CTEST is LOGGED OUT <20050628-18:28:04,
FIX.4.2:FTEST->CTEST, outgoing>
(8=3DFIX.4.29=3D7135=3DA34=3D249=3DFTEST52=3D20050628-18:28:04.63356=3DCTES=
T98=3D0108=3D3010=3D203)
<20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Initiated logon request)
On 6/28/05, VP Marketing IT Asset Enterprise Technologies
<ass...@gm...> wrote:
> I switched to an executor in the LAN and it worked fine. You are correct
> the trouble earlier was with the settings file...
>=20
> The file is there. But there is only one session and that is with an exte=
rnal
> party and it could be failing for a number of reasons.
>=20
> The error (console) output did not indicate that. It misdirects to an
> initiator not
> being there.
>=20
> We can talk about how to structure a generic Error control and communicat=
ion
> exception hierarchy.
>=20
> Consider the following three classes:
>=20
> class QuickfixJErrorList
> {
> final String error_string[] =3D
> {
> "ILLEGAL ARGUMENT/INTERNAL ERROR",
> "CONFIG FILE NOT READABLE",
> "CONFIG NOT ACCORDING TO SPECIFICATION", // somethign simpler may be
> "SESSION COULD NOT BE INITIALIZED",
>=20
> };
> final int base_error=3D1300;
> final int error_no[] =3D {1300,1301,1302, 1303} ; // this coudl be
> base_error, base_error+1, etc
>=20
> static public String getErrorMessage(int code) {
> return error_string[(code>base_error&&(code<(base_error+error_no.length))=
)?code:0);
> }
> static public String getErrorMessage(String code){
> try {
> return getErrorMessage(Integer.parseInt(code.trim()));
> } catch(Exception e) { }
> return getErrorMessage(0);
> }
> }
> class QuickfixException extends Exception
> {
> QuickfixException (String msgCode)
> {
> super(QuickfixJErrorList.getErrorMessage(msg);
> }
> }
>=20
> And we can implement the JErrorList in XML and load the DOM
> or put it on HSQLDB or some such thing and manage it from anywhere.
> instead of being static class...
>=20
> I am hacking as I am writing this email.. the idea may be clearer...
> I can do this..if you send me a specification what you want.
> --
> rk
>
|
|
From: Steve B. <st...@te...> - 2005-06-28 21:28:30
|
> Here is what I see happening
> F (my company) sends a 35=A to C the client
> Client sends 35=A
> QF does not like tag 52...do not know why yet...
> and it tries to reject that message before login occurs
> so an exception is thrown and then we know the rest...
>
> I guess the same thing happened yesterday with Quickfix.
>
> This is with QuickfixJ.
Ah, a good compatibility test. ;-)
What is the value of tag 52 in the logon response (assuming
the tag exists)?
Steve
> Oren, now I am going to do the cvs up command see if the updates help
> me nudge along.
> ( I am guessing the CVS up is shorthand for CVS update...I am severely
> handicapped with C++, CVS and windows)
> I hope am not being taken for high maintenance user
> --
> RK
>
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, outgoing>
> (8=FIX.4.29=7135=A34=149=FTEST52=20050628-
> 18:28:04.33156=CTEST98=0108=3010=197)
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Initiated logon request)
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, outgoing>
> (8=FIX.4.29=7135=A34=149=FTEST52=20050628-
> 18:28:04.33156=CTEST98=0108=3010=197)
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, incoming>
> (8=FIX.4.29=8735=A49=CTEST56=FTEST34=0000198=052=20050628-
> 18:27:49108=60141=N383=5600010=203)
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (error while receiving
> message
> quickfix.SessionException: Tried to send a reject while not logged on:
> Tag specified out of required order (field 52)
> at quickfix.Session.generateReject(Session.java:753)
> at quickfix.Session.next(Session.java:508)
> at
> quickfix.netty.AbstractSocketInitiator.processMessage(AbstractSocketInitia
> tor.java:210)
> at quickfix.SocketInitiator.onMessage(SocketInitiator.java:94)
> at
> quickfix.netty.AbstractSocketInitiator$SessionConnection$NettySessionListe
> ner.messageReceived(AbstractSocketInitiator.java:380)
> at
> net.gleamynode.netty2.Session.fireMessageReceived(Session.java:733)
> at
> net.gleamynode.netty2.LowLatencyEventDispatcher.flush(LowLatencyEventDispa
> tcher.java:67)
> at
> net.gleamynode.netty2.ReadController.processEvent(ReadController.java:360)
> at net.gleamynode.netty2.IoProcessor.process(IoProcessor.java:334)
> at
> net.gleamynode.netty2.IoProcessor.access$500(IoProcessor.java:73)
> at
> net.gleamynode.netty2.IoProcessor$Worker.run(IoProcessor.java:364)
> )
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Dropped Connection)
> FIX.4.2:FTEST->CTEST is LOGGED OUT <20050628-18:28:04,
> FIX.4.2:FTEST->CTEST, outgoing>
> (8=FIX.4.29=7135=A34=249=FTEST52=20050628-
> 18:28:04.63356=CTEST98=0108=3010=203)
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Initiated logon request)
>
> On 6/28/05, VP Marketing IT Asset Enterprise Technologies
> <ass...@gm...> wrote:
> > I switched to an executor in the LAN and it worked fine. You are correct
> > the trouble earlier was with the settings file...
> >
> > The file is there. But there is only one session and that is with an
> external
> > party and it could be failing for a number of reasons.
> >
> > The error (console) output did not indicate that. It misdirects to an
> > initiator not
> > being there.
> >
> > We can talk about how to structure a generic Error control and
> communication
> > exception hierarchy.
> >
> > Consider the following three classes:
> >
> > class QuickfixJErrorList
> > {
> > final String error_string[] =
> > {
> > "ILLEGAL ARGUMENT/INTERNAL ERROR",
> > "CONFIG FILE NOT READABLE",
> > "CONFIG NOT ACCORDING TO SPECIFICATION", // somethign simpler may be
> > "SESSION COULD NOT BE INITIALIZED",
> >
> > };
> > final int base_error=1300;
> > final int error_no[] = {1300,1301,1302, 1303} ; // this coudl be
> > base_error, base_error+1, etc
> >
> > static public String getErrorMessage(int code) {
> > return
> error_string[(code>base_error&&(code<(base_error+error_no.length)))?code:0
> );
> > }
> > static public String getErrorMessage(String code){
> > try {
> > return getErrorMessage(Integer.parseInt(code.trim()));
> > } catch(Exception e) { }
> > return getErrorMessage(0);
> > }
> > }
> > class QuickfixException extends Exception
> > {
> > QuickfixException (String msgCode)
> > {
> > super(QuickfixJErrorList.getErrorMessage(msg);
> > }
> > }
> >
> > And we can implement the JErrorList in XML and load the DOM
> > or put it on HSQLDB or some such thing and manage it from anywhere.
> > instead of being static class...
> >
> > I am hacking as I am writing this email.. the idea may be clearer...
> > I can do this..if you send me a specification what you want.
> > --
> > rk
> >
|
|
From: VP M. IT A. E. T. <ass...@gm...> - 2005-06-28 23:11:25
|
52=3D20050628-18:27:49 The solution however was simple...changed datadictionary=3DY to N and it worked fine after that. On 6/28/05, Steve Bate <st...@te...> wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/i= ndex.html > QuickFIX FAQ: http://www.quickfixengine.org/wikifix/index.php?QuickFixFAQ > QuickFIX Support: http://www.quickfixengine.org/services.html >=20 > > Here is what I see happening > > F (my company) sends a 35=3DA to C the client > > Client sends 35=3DA > > QF does not like tag 52...do not know why yet... > > and it tries to reject that message before login occurs > > so an exception is thrown and then we know the rest... > > > > I guess the same thing happened yesterday with Quickfix. > > > > This is with QuickfixJ. >=20 > Ah, a good compatibility test. ;-) >=20 > What is the value of tag 52 in the logon response (assuming > the tag exists)? >=20 > Steve >=20 > > Oren, now I am going to do the cvs up command see if the updates help > > me nudge along. > > ( I am guessing the CVS up is shorthand for CVS update...I am severely > > handicapped with C++, CVS and windows) > > I hope am not being taken for high maintenance user > > -- > > RK > > > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, outgoing> > > (8=3DFIX.4.29=3D7135=3DA34=3D149=3DFTEST52=3D20050628- > > 18:28:04.33156=3DCTEST98=3D0108=3D3010=3D197) > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Initiated logon reque= st) > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, outgoing> > > (8=3DFIX.4.29=3D7135=3DA34=3D149=3DFTEST52=3D20050628- > > 18:28:04.33156=3DCTEST98=3D0108=3D3010=3D197) > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, incoming> > > (8=3DFIX.4.29=3D8735=3DA49=3DCTEST56=3DFTEST34=3D0000198=3D052=3D200506= 28- > > 18:27:49108=3D60141=3DN383=3D5600010=3D203) > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (error while receiving > > message > > quickfix.SessionException: Tried to send a reject while not logged on: > > Tag specified out of required order (field 52) > > at quickfix.Session.generateReject(Session.java:753) > > at quickfix.Session.next(Session.java:508) > > at > > quickfix.netty.AbstractSocketInitiator.processMessage(AbstractSocketIni= tia > > tor.java:210) > > at quickfix.SocketInitiator.onMessage(SocketInitiator.java:94) > > at > > quickfix.netty.AbstractSocketInitiator$SessionConnection$NettySessionLi= ste > > ner.messageReceived(AbstractSocketInitiator.java:380) > > at > > net.gleamynode.netty2.Session.fireMessageReceived(Session.java:733) > > at > > net.gleamynode.netty2.LowLatencyEventDispatcher.flush(LowLatencyEventDi= spa > > tcher.java:67) > > at > > net.gleamynode.netty2.ReadController.processEvent(ReadController.java:3= 60) > > at net.gleamynode.netty2.IoProcessor.process(IoProcessor.java:3= 34) > > at > > net.gleamynode.netty2.IoProcessor.access$500(IoProcessor.java:73) > > at > > net.gleamynode.netty2.IoProcessor$Worker.run(IoProcessor.java:364) > > ) > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Dropped Connection) > > FIX.4.2:FTEST->CTEST is LOGGED OUT <20050628-18:28:04, > > FIX.4.2:FTEST->CTEST, outgoing> > > (8=3DFIX.4.29=3D7135=3DA34=3D249=3DFTEST52=3D20050628- > > 18:28:04.63356=3DCTEST98=3D0108=3D3010=3D203) > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Initiated logon reque= st) > > > > On 6/28/05, VP Marketing IT Asset Enterprise Technologies > > <ass...@gm...> wrote: > > > I switched to an executor in the LAN and it worked fine. You are corr= ect > > > the trouble earlier was with the settings file... > > > > > > The file is there. But there is only one session and that is with an > > external > > > party and it could be failing for a number of reasons. > > > > > > The error (console) output did not indicate that. It misdirects to an > > > initiator not > > > being there. > > > > > > We can talk about how to structure a generic Error control and > > communication > > > exception hierarchy. > > > > > > Consider the following three classes: > > > > > > class QuickfixJErrorList > > > { > > > final String error_string[] =3D > > > { > > > "ILLEGAL ARGUMENT/INTERNAL ERROR", > > > "CONFIG FILE NOT READABLE", > > > "CONFIG NOT ACCORDING TO SPECIFICATION", // somethign simpler may be > > > "SESSION COULD NOT BE INITIALIZED", > > > > > > }; > > > final int base_error=3D1300; > > > final int error_no[] =3D {1300,1301,1302, 1303} ; // this coudl be > > > base_error, base_error+1, etc > > > > > > static public String getErrorMessage(int code) { > > > return > > error_string[(code>base_error&&(code<(base_error+error_no.length)))?cod= e:0 > > ); > > > } > > > static public String getErrorMessage(String code){ > > > try { > > > return getErrorMessage(Integer.parseInt(code.trim())); > > > } catch(Exception e) { } > > > return getErrorMessage(0); > > > } > > > } > > > class QuickfixException extends Exception > > > { > > > QuickfixException (String msgCode) > > > { > > > super(QuickfixJErrorList.getErrorMessage(msg); > > > } > > > } > > > > > > And we can implement the JErrorList in XML and load the DOM > > > or put it on HSQLDB or some such thing and manage it from anywhere. > > > instead of being static class... > > > > > > I am hacking as I am writing this email.. the idea may be clearer... > > > I can do this..if you send me a specification what you want. > > > -- > > > rk > > > >=20 >=20 >=20 > ------------------------------------------------------- > SF.Net email is sponsored by: Discover Easy Linux Migration Strategies > from IBM. Find simple to follow Roadmaps, straightforward articles, > informative Webcasts and more! Get everything you need to get up to > speed, fast. http://ads.osdn.com/?ad_id=3D7477&alloc_id=3D16492&op=3Dclic= k > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
|
From: VP M. IT A. E. T. <ass...@gm...> - 2005-06-30 13:40:21
|
The config file for QF-J appears to be not the standard QF settings file.
Here is an example:
[DEFAULT]
ConnectionType=3Dinitiator
HeartBtInt=3D30
FileStorePath=3Dstore
StartTime=3D00:00:00
EndTime=3D00:00:00
UseDataDictionary=3DN
SocketConnectHost=3D0.0.0.0
SocketConnectPort=3D7379
ReconnectInterval=3D1
[SESSION]
BeginString=3DFIX.4.2
SenderCompID=3DCTEST
TargetCompID=3DTTEST
---------
The java app. fails complaining about=20
quickfix.ConfigError: no initiators in settings
at quickfix.netty.AbstractSocketInitiator.initialize(AbstractSocket=
Initiator.java:178)
at quickfix.netty.AbstractSocketInitiator.start(AbstractSocketIniti=
ator.java:117)
at FixGwy.<init>(Unknown Source)
at FixGwy.main(Unknown Source)
----
If I remove=20
ConnectionType=3Dinitiator
the stack works fine.
FYI
--
Raman
IMHO: the same settings file should work. We should strive for that.
Except for loading the jni nothing else should be different.
I have one class QuickfixLoader
--------
public class QuickfixLoader {
static Object guard =3D new Object();
static boolean loaded =3D false;
static public boolean isLoaded() { return loaded ; }
static {
synchronized (guard)=20
{
// boolean loaded =3D false;
if (!loaded) {
loaded =3D true;
try {System.loadLibrary("quickfix_jni");}=20
catch(UnsatisfiedLinkError e) {
loaded =3D false;
System.out.println("Could not load
quickfix_jni library" +
e.toString());
}
if ( loaded )=20
{
System.out.println("Loaded library quickfix_jni=
");
}
} // if !loaded
} // synchronized=20
} // static=20
} // class=20
------------------
and one line in my application...
//static { QuickfixLoader loader =3D new QuickfixLoader() ;}
------------------
Uncomment this line and build to create C++ based app.
Comment this line and build to create Pure Java based app.
On 6/28/05, VP Marketing IT Asset Enterprise Technologies
<ass...@gm...> wrote:
> 52=3D20050628-18:27:49
>=20
> The solution however was simple...changed datadictionary=3DY to N
> and it worked fine after that.
>=20
>=20
> On 6/28/05, Steve Bate <st...@te...> wrote:
> > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html=
/index.html
> > QuickFIX FAQ: http://www.quickfixengine.org/wikifix/index.php?QuickFixF=
AQ
> > QuickFIX Support: http://www.quickfixengine.org/services.html
> >
> > > Here is what I see happening
> > > F (my company) sends a 35=3DA to C the client
> > > Client sends 35=3DA
> > > QF does not like tag 52...do not know why yet...
> > > and it tries to reject that message before login occurs
> > > so an exception is thrown and then we know the rest...
> > >
> > > I guess the same thing happened yesterday with Quickfix.
> > >
> > > This is with QuickfixJ.
> >
> > Ah, a good compatibility test. ;-)
> >
> > What is the value of tag 52 in the logon response (assuming
> > the tag exists)?
> >
> > Steve
> >
> > > Oren, now I am going to do the cvs up command see if the updates help
> > > me nudge along.
> > > ( I am guessing the CVS up is shorthand for CVS update...I am severel=
y
> > > handicapped with C++, CVS and windows)
> > > I hope am not being taken for high maintenance user
> > > --
> > > RK
> > >
> > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, outgoing>
> > > (8=3DFIX.4.29=3D7135=3DA34=3D149=3DFTEST52=3D20050628-
> > > 18:28:04.33156=3DCTEST98=3D0108=3D3010=3D197)
> > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Initiated logon req=
uest)
> > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, outgoing>
> > > (8=3DFIX.4.29=3D7135=3DA34=3D149=3DFTEST52=3D20050628-
> > > 18:28:04.33156=3DCTEST98=3D0108=3D3010=3D197)
> > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, incoming>
> > > (8=3DFIX.4.29=3D8735=3DA49=3DCTEST56=3DFTEST34=3D0000198=3D052=3D2005=
0628-
> > > 18:27:49108=3D60141=3DN383=3D5600010=3D203)
> > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (error while receivi=
ng
> > > message
> > > quickfix.SessionException: Tried to send a reject while not logged on=
:
> > > Tag specified out of required order (field 52)
> > > at quickfix.Session.generateReject(Session.java:753)
> > > at quickfix.Session.next(Session.java:508)
> > > at
> > > quickfix.netty.AbstractSocketInitiator.processMessage(AbstractSocketI=
nitia
> > > tor.java:210)
> > > at quickfix.SocketInitiator.onMessage(SocketInitiator.java:94=
)
> > > at
> > > quickfix.netty.AbstractSocketInitiator$SessionConnection$NettySession=
Liste
> > > ner.messageReceived(AbstractSocketInitiator.java:380)
> > > at
> > > net.gleamynode.netty2.Session.fireMessageReceived(Session.java:733)
> > > at
> > > net.gleamynode.netty2.LowLatencyEventDispatcher.flush(LowLatencyEvent=
Dispa
> > > tcher.java:67)
> > > at
> > > net.gleamynode.netty2.ReadController.processEvent(ReadController.java=
:360)
> > > at net.gleamynode.netty2.IoProcessor.process(IoProcessor.java=
:334)
> > > at
> > > net.gleamynode.netty2.IoProcessor.access$500(IoProcessor.java:73)
> > > at
> > > net.gleamynode.netty2.IoProcessor$Worker.run(IoProcessor.java:364)
> > > )
> > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Dropped Connection)
> > > FIX.4.2:FTEST->CTEST is LOGGED OUT <20050628-18:28:04,
> > > FIX.4.2:FTEST->CTEST, outgoing>
> > > (8=3DFIX.4.29=3D7135=3DA34=3D249=3DFTEST52=3D20050628-
> > > 18:28:04.63356=3DCTEST98=3D0108=3D3010=3D203)
> > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Initiated logon req=
uest)
> > >
> > > On 6/28/05, VP Marketing IT Asset Enterprise Technologies
> > > <ass...@gm...> wrote:
> > > > I switched to an executor in the LAN and it worked fine. You are co=
rrect
> > > > the trouble earlier was with the settings file...
> > > >
> > > > The file is there. But there is only one session and that is with a=
n
> > > external
> > > > party and it could be failing for a number of reasons.
> > > >
> > > > The error (console) output did not indicate that. It misdirects to =
an
> > > > initiator not
> > > > being there.
> > > >
> > > > We can talk about how to structure a generic Error control and
> > > communication
> > > > exception hierarchy.
> > > >
> > > > Consider the following three classes:
> > > >
> > > > class QuickfixJErrorList
> > > > {
> > > > final String error_string[] =3D
> > > > {
> > > > "ILLEGAL ARGUMENT/INTERNAL ERROR",
> > > > "CONFIG FILE NOT READABLE",
> > > > "CONFIG NOT ACCORDING TO SPECIFICATION", // somethign simpler may b=
e
> > > > "SESSION COULD NOT BE INITIALIZED",
> > > >
> > > > };
> > > > final int base_error=3D1300;
> > > > final int error_no[] =3D {1300,1301,1302, 1303} ; // this coudl be
> > > > base_error, base_error+1, etc
> > > >
> > > > static public String getErrorMessage(int code) {
> > > > return
> > > error_string[(code>base_error&&(code<(base_error+error_no.length)))?c=
ode:0
> > > );
> > > > }
> > > > static public String getErrorMessage(String code){
> > > > try {
> > > > return getErrorMessage(Integer.parseInt(code.trim()));
> > > > } catch(Exception e) { }
> > > > return getErrorMessage(0);
> > > > }
> > > > }
> > > > class QuickfixException extends Exception
> > > > {
> > > > QuickfixException (String msgCode)
> > > > {
> > > > super(QuickfixJErrorList.getErrorMessage(msg);
> > > > }
> > > > }
> > > >
> > > > And we can implement the JErrorList in XML and load the DOM
> > > > or put it on HSQLDB or some such thing and manage it from anywhere.
> > > > instead of being static class...
> > > >
> > > > I am hacking as I am writing this email.. the idea may be clearer..=
.
> > > > I can do this..if you send me a specification what you want.
> > > > --
> > > > rk
> > > >
> >
> >
> >
> > -------------------------------------------------------
> > SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
> > from IBM. Find simple to follow Roadmaps, straightforward articles,
> > informative Webcasts and more! Get everything you need to get up to
> > speed, fast. http://ads.osdn.com/?ad_id=3D7477&alloc_id=3D16492&op=3Dcl=
ick
> > _______________________________________________
> > Quickfix-developers mailing list
> > Qui...@li...
> > https://lists.sourceforge.net/lists/listinfo/quickfix-developers
> >
>
|
|
From: Steve B. <st...@te...> - 2005-06-30 18:25:06
|
Hi, Yes, I found the bug in the SessionFactory object. I've added a unit test for the problem and fixed it. The factory was defaulting to an initiator if the connection type was unspecified. The change should=20 be available in the anonymous CVS repository soon (if it's not=20 already there). Thanks for reporting this.=20 Steve > -----Original Message----- > From: qui...@li... = [mailto:quickfix- > dev...@li...] On Behalf Of VP Marketing IT = Asset > Enterprise Technologies > Sent: Thursday, June 30, 2005 8:40 AM > To: Steve Bate > Cc: qui...@li... > Subject: Re: [Quickfix-developers] Java Exception reveals the problem = with > TAG 52 >=20 > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX FAQ: = http://www.quickfixengine.org/wikifix/index.php?QuickFixFAQ > QuickFIX Support: http://www.quickfixengine.org/services.html >=20 > The config file for QF-J appears to be not the standard QF settings = file. >=20 > Here is an example: > [DEFAULT] > ConnectionType=3Dinitiator > HeartBtInt=3D30 > FileStorePath=3Dstore > StartTime=3D00:00:00 > EndTime=3D00:00:00 > UseDataDictionary=3DN > SocketConnectHost=3D0.0.0.0 > SocketConnectPort=3D7379 > ReconnectInterval=3D1 >=20 > [SESSION] > BeginString=3DFIX.4.2 > SenderCompID=3DCTEST > TargetCompID=3DTTEST >=20 > --------- > The java app. fails complaining about >=20 > quickfix.ConfigError: no initiators in settings > at > = quickfix.netty.AbstractSocketInitiator.initialize(AbstractSocketInitiator= . > java:178) > at > = quickfix.netty.AbstractSocketInitiator.start(AbstractSocketInitiator.java= : > 117) > at FixGwy.<init>(Unknown Source) > at FixGwy.main(Unknown Source) >=20 > ---- >=20 > If I remove >=20 > ConnectionType=3Dinitiator >=20 > the stack works fine. >=20 > FYI > -- > Raman >=20 > IMHO: the same settings file should work. We should strive for that. > Except for loading the jni nothing else should be different. >=20 >=20 > I have one class QuickfixLoader > -------- > public class QuickfixLoader { > static Object guard =3D new Object(); > static boolean loaded =3D false; > static public boolean isLoaded() { return loaded ; } > static { > synchronized (guard) > { > // boolean loaded =3D false; > if (!loaded) { > loaded =3D true; > try {System.loadLibrary("quickfix_jni");} > catch(UnsatisfiedLinkError e) { > loaded =3D false; > System.out.println("Could not load > quickfix_jni library" + > e.toString()); > } > if ( loaded ) > { > System.out.println("Loaded library > quickfix_jni"); > } > } // if !loaded > } // synchronized > } // static > } // class > ------------------ > and one line in my application... > //static { QuickfixLoader loader =3D new QuickfixLoader() ;} > ------------------ > Uncomment this line and build to create C++ based app. > Comment this line and build to create Pure Java based app. >=20 >=20 > On 6/28/05, VP Marketing IT Asset Enterprise Technologies > <ass...@gm...> wrote: > > 52=3D20050628-18:27:49 > > > > The solution however was simple...changed datadictionary=3DY to N > > and it worked fine after that. > > > > > > On 6/28/05, Steve Bate <st...@te...> wrote: > > > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > > > QuickFIX FAQ: > http://www.quickfixengine.org/wikifix/index.php?QuickFixFAQ > > > QuickFIX Support: http://www.quickfixengine.org/services.html > > > > > > > Here is what I see happening > > > > F (my company) sends a 35=3DA to C the client > > > > Client sends 35=3DA > > > > QF does not like tag 52...do not know why yet... > > > > and it tries to reject that message before login occurs > > > > so an exception is thrown and then we know the rest... > > > > > > > > I guess the same thing happened yesterday with Quickfix. > > > > > > > > This is with QuickfixJ. > > > > > > Ah, a good compatibility test. ;-) > > > > > > What is the value of tag 52 in the logon response (assuming > > > the tag exists)? > > > > > > Steve > > > > > > > Oren, now I am going to do the cvs up command see if the updates > help > > > > me nudge along. > > > > ( I am guessing the CVS up is shorthand for CVS update...I am > severely > > > > handicapped with C++, CVS and windows) > > > > I hope am not being taken for high maintenance user > > > > -- > > > > RK > > > > > > > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, outgoing> > > > > (8=3DFIX.4.29=3D7135=3DA34=3D149=3DFTEST52=3D20050628- > > > > 18:28:04.33156=3DCTEST98=3D0108=3D3010=3D197) > > > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Initiated = logon > request) > > > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, outgoing> > > > > (8=3DFIX.4.29=3D7135=3DA34=3D149=3DFTEST52=3D20050628- > > > > 18:28:04.33156=3DCTEST98=3D0108=3D3010=3D197) > > > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, incoming> > > > > = (8=3DFIX.4.29=3D8735=3DA49=3DCTEST56=3DFTEST34=3D0000198=3D052=3D20050628= - > > > > 18:27:49108=3D60141=3DN383=3D5600010=3D203) > > > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (error while > receiving > > > > message > > > > quickfix.SessionException: Tried to send a reject while not = logged > on: > > > > Tag specified out of required order (field 52) > > > > at quickfix.Session.generateReject(Session.java:753) > > > > at quickfix.Session.next(Session.java:508) > > > > at > > > > > = quickfix.netty.AbstractSocketInitiator.processMessage(AbstractSocketIniti= a > > > > tor.java:210) > > > > at > quickfix.SocketInitiator.onMessage(SocketInitiator.java:94) > > > > at > > > > > = quickfix.netty.AbstractSocketInitiator$SessionConnection$NettySessionList= e > > > > ner.messageReceived(AbstractSocketInitiator.java:380) > > > > at > > > > = net.gleamynode.netty2.Session.fireMessageReceived(Session.java:733) > > > > at > > > > > = net.gleamynode.netty2.LowLatencyEventDispatcher.flush(LowLatencyEventDisp= a > > > > tcher.java:67) > > > > at > > > > > = net.gleamynode.netty2.ReadController.processEvent(ReadController.java:360= ) > > > > at > net.gleamynode.netty2.IoProcessor.process(IoProcessor.java:334) > > > > at > > > > = net.gleamynode.netty2.IoProcessor.access$500(IoProcessor.java:73) > > > > at > > > > = net.gleamynode.netty2.IoProcessor$Worker.run(IoProcessor.java:364) > > > > ) > > > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Dropped > Connection) > > > > FIX.4.2:FTEST->CTEST is LOGGED OUT <20050628-18:28:04, > > > > FIX.4.2:FTEST->CTEST, outgoing> > > > > (8=3DFIX.4.29=3D7135=3DA34=3D249=3DFTEST52=3D20050628- > > > > 18:28:04.63356=3DCTEST98=3D0108=3D3010=3D203) > > > > <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Initiated = logon > request) > > > > > > > > On 6/28/05, VP Marketing IT Asset Enterprise Technologies > > > > <ass...@gm...> wrote: > > > > > I switched to an executor in the LAN and it worked fine. You = are > correct > > > > > the trouble earlier was with the settings file... > > > > > > > > > > The file is there. But there is only one session and that is = with > an > > > > external > > > > > party and it could be failing for a number of reasons. > > > > > > > > > > The error (console) output did not indicate that. It = misdirects to > an > > > > > initiator not > > > > > being there. > > > > > > > > > > We can talk about how to structure a generic Error control and > > > > communication > > > > > exception hierarchy. > > > > > > > > > > Consider the following three classes: > > > > > > > > > > class QuickfixJErrorList > > > > > { > > > > > final String error_string[] =3D > > > > > { > > > > > "ILLEGAL ARGUMENT/INTERNAL ERROR", > > > > > "CONFIG FILE NOT READABLE", > > > > > "CONFIG NOT ACCORDING TO SPECIFICATION", // somethign simpler = may > be > > > > > "SESSION COULD NOT BE INITIALIZED", > > > > > > > > > > }; > > > > > final int base_error=3D1300; > > > > > final int error_no[] =3D {1300,1301,1302, 1303} ; // this = coudl be > > > > > base_error, base_error+1, etc > > > > > > > > > > static public String getErrorMessage(int code) { > > > > > return > > > > > = error_string[(code>base_error&&(code<(base_error+error_no.length)))?code:= 0 > > > > ); > > > > > } > > > > > static public String getErrorMessage(String code){ > > > > > try { > > > > > return getErrorMessage(Integer.parseInt(code.trim())); > > > > > } catch(Exception e) { } > > > > > return getErrorMessage(0); > > > > > } > > > > > } > > > > > class QuickfixException extends Exception > > > > > { > > > > > QuickfixException (String msgCode) > > > > > { > > > > > super(QuickfixJErrorList.getErrorMessage(msg); > > > > > } > > > > > } > > > > > > > > > > And we can implement the JErrorList in XML and load the DOM > > > > > or put it on HSQLDB or some such thing and manage it from > anywhere. > > > > > instead of being static class... > > > > > > > > > > I am hacking as I am writing this email.. the idea may be > clearer... > > > > > I can do this..if you send me a specification what you want. > > > > > -- > > > > > rk > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > SF.Net email is sponsored by: Discover Easy Linux Migration = Strategies > > > from IBM. Find simple to follow Roadmaps, straightforward = articles, > > > informative Webcasts and more! Get everything you need to get up = to > > > speed, fast. = http://ads.osdn.com/?ad_id=3D7477&alloc_id=3D16492&op=3Dclick > > > _______________________________________________ > > > Quickfix-developers mailing list > > > Qui...@li... > > > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > > > > > >=20 >=20 > ------------------------------------------------------- > SF.Net email is sponsored by: Discover Easy Linux Migration Strategies > from IBM. Find simple to follow Roadmaps, straightforward articles, > informative Webcasts and more! Get everything you need to get up to > speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id=16492&op=3Dick > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers |
|
From: VP M. IT A. E. T. <ass...@gm...> - 2005-06-28 18:49:52
|
All of this with QF-J implementation.
Later I will try C++ version and update the list.
Thanks for all your help.
--
RK
On 6/28/05, VP Marketing IT Asset Enterprise Technologies
<ass...@gm...> wrote:
> I switched to an executor in the LAN and it worked fine. You are correct
> the trouble earlier was with the settings file...
>=20
> The file is there. But there is only one session and that is with an exte=
rnal
> party and it could be failing for a number of reasons.
>=20
> The error (console) output did not indicate that. It misdirects to an
> initiator not
> being there.
>=20
> We can talk about how to structure a generic Error control and communicat=
ion
> exception hierarchy.
>=20
> Consider the following three classes:
>=20
> class QuickfixJErrorList
> {
> final String error_string[] =3D
> {
> "ILLEGAL ARGUMENT/INTERNAL ERROR",
> "CONFIG FILE NOT READABLE",
> "CONFIG NOT ACCORDING TO SPECIFICATION", // somethign simpler may be
> "SESSION COULD NOT BE INITIALIZED",
>=20
> };
> final int base_error=3D1300;
> final int error_no[] =3D {1300,1301,1302, 1303} ; // this coudl be
> base_error, base_error+1, etc
>=20
> static public String getErrorMessage(int code) {
> return error_string[(code>base_error&&(code<(base_error+error_no.length))=
)?code:0);
> }
> static public String getErrorMessage(String code){
> try {
> return getErrorMessage(Integer.parseInt(code.trim()));
> } catch(Exception e) { }
> return getErrorMessage(0);
> }
> }
> class QuickfixException extends Exception
> {
> QuickfixException (String msgCode)
> {
> super(QuickfixJErrorList.getErrorMessage(msg);
> }
> }
>=20
> And we can implement the JErrorList in XML and load the DOM
> or put it on HSQLDB or some such thing and manage it from anywhere.
> instead of being static class...
>=20
> I am hacking as I am writing this email.. the idea may be clearer...
> I can do this..if you send me a specification what you want.
> --
> rk
>
|
|
From: Steve B. <st...@te...> - 2005-06-28 21:25:38
|
I'll look into some better error messages for the session configuration. For the initial release of QFJ we are being careful to maintain API upward compatibility with the JNI version. However, we may be able to implement your suggestion by only adding to the existing API, which doesn't break compatibility. Steve > -----Original Message----- > From: qui...@li... [mailto:quickfix- > dev...@li...] On Behalf Of VP Marketing IT Asset > Enterprise Technologies > Sent: Tuesday, June 28, 2005 12:35 PM > To: Steve Bate > Cc: qui...@li... > Subject: Re: [Quickfix-developers] RE: I have a question about QF-J > > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX FAQ: http://www.quickfixengine.org/wikifix/index.php?QuickFixFAQ > QuickFIX Support: http://www.quickfixengine.org/services.html > > I switched to an executor in the LAN and it worked fine. You are correct > the trouble earlier was with the settings file... > > The file is there. But there is only one session and that is with an > external > party and it could be failing for a number of reasons. > > The error (console) output did not indicate that. It misdirects to an > initiator not > being there. > > We can talk about how to structure a generic Error control and > communication > exception hierarchy. > > Consider the following three classes: > > class QuickfixJErrorList > { > final String error_string[] = > { > "ILLEGAL ARGUMENT/INTERNAL ERROR", > "CONFIG FILE NOT READABLE", > "CONFIG NOT ACCORDING TO SPECIFICATION", // somethign simpler may be > "SESSION COULD NOT BE INITIALIZED", > > }; > final int base_error=1300; > final int error_no[] = {1300,1301,1302, 1303} ; // this coudl be > base_error, base_error+1, etc > > static public String getErrorMessage(int code) { > return > error_string[(code>base_error&&(code<(base_error+error_no.length)))?code:0 > ); > } > static public String getErrorMessage(String code){ > try { > return getErrorMessage(Integer.parseInt(code.trim())); > } catch(Exception e) { } > return getErrorMessage(0); > } > } > class QuickfixException extends Exception > { > QuickfixException (String msgCode) > { > super(QuickfixJErrorList.getErrorMessage(msg); > } > } > > And we can implement the JErrorList in XML and load the DOM > or put it on HSQLDB or some such thing and manage it from anywhere. > instead of being static class... > > I am hacking as I am writing this email.. the idea may be clearer... > I can do this..if you send me a specification what you want. > -- > rk > > > ------------------------------------------------------- > SF.Net email is sponsored by: Discover Easy Linux Migration Strategies > from IBM. Find simple to follow Roadmaps, straightforward articles, > informative Webcasts and more! Get everything you need to get up to > speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id 492&op=ick > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers |
|
From: Barry K. <gr...@me...> - 2005-06-08 15:36:11
|
FYI, we are using (testing really) quickfixj on a blackbox trading system. When we perform load testing (placing orders against a simulator at roughly 50ms intervals, where the simulator responds almost immediatly) we get buffer underuns originating in the netty library (see stack trace below). Also, I ran the quickfixj test suite using the latest netty (1.9.2). All tests fail due to a buffer overflow on login. We are in the process of swapping in the C++ quickfix in an attempt to determine if it might our code that is causing the error. So, some questions Steve: 1) I see when I run the test suite messages begining with "load: ...". What is the nature of these load tests? Can I tune them to heat things up? 2) During some of the tests (well,quite a few actually) exceptions are printed (eg, "quickfix.InvalidMessage: Field not found: 9") but the tests do not fail. Is this the expected behavior. I saw that in the latest series of commits you converted lots of e.printStackTraces to log. Are these messages due to e.printStackTraces that are really errors but the tests don't get to fail, or is the test generating the message as part of logging. (Steve, if this ain't clear, give me a buzz. Or just give a buzz anyway :-) -barry --- net.gleamynode.netty2.MessageParseException: (Hexdump: 38 3D 46 49 58 2E 34 2E 32 01 39 3D 32 37 37 01 33 35 3D 38 01 34 39 3D 52 54 5A 41 01 35 36 3D 48 4C 54 4E 01 33 34 3D 31 33 32 34 01 35 32 3D 32 30 30 35 30 36 30 38 2D 31 33 3A 35 39 3A 35 30 01 35 37 3D 42 42 4F 58 01 31 3D 73 69 6D 2D 62 6B 61 70 6C 61 6E 01 33 37 3D 73 69 6D 2D 62 6B 61 70 6C 61 6E 2E 32 30 30 35 30 36 30 38 2E 65 71 75 69 74 79 2E 49 4E 54 43 2E 33 32 30 01 31 39 38 3D 30 30 31 34 33 31 38 38 01 31 31 3D 49 4E 54 43 2D 31 31 31 38 32 33 39 31 38 35 31 31 30 01 33 39 3D 30 01 31 35 30 3D 36 01 32 30 3D 30 01 31 37 3D 73 69 6D 2D 62 6B 61 70 6C 61 6E 2E 32 30 30 35 30 36 30 38 2E 65 71 75 69 74 79 2E 49 4E 54 43 2E 33 32 30 2E 37 01 35 35 3D 49 4E 54 43 01 35 34 3D 31 01 35 38 3D 63 31 38 32 33 39 31 38 35 33 32 37 01 37 36 3D 53 49 4D 40 31 01 31 35 31 3D 31 30 30 01 33 31 3D 30 01 33 32 3D 30 01 36 3D 30 01 31 34 3D 30 01 33 38 3D 31 30 30 01 31 30 3D) at quickfix.netty.FIXMessageData.read(FIXMessageData.java:174) at net.gleamynode.netty2.ReadController.doRead(ReadController.java:502) at net.gleamynode.netty2.ReadController.processEvent(ReadController.java:332) at net.gleamynode.netty2.IoProcessor.process(IoProcessor.java:334) at net.gleamynode.netty2.IoProcessor.access$500(IoProcessor.java:73) at net.gleamynode.netty2.IoProcessor$Worker.run(IoProcessor.java:364) Caused by: java.nio.BufferUnderflowException at java.nio.DirectByteBuffer.get(Unknown Source) at java.nio.ByteBuffer.get(Unknown Source) at quickfix.netty.FIXMessageData.read(FIXMessageData.java:164) ... 5 more |