quickfix-developers Mailing List for QuickFIX (Page 132)
Brought to you by:
orenmnero
You can subscribe to this list here.
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 |
Jan
|
Feb
(5) |
Mar
(16) |
Apr
(15) |
May
(17) |
Jun
(33) |
Jul
(35) |
Aug
(34) |
Sep
(19) |
Oct
(40) |
Nov
(51) |
Dec
(43) |
| 2003 |
Jan
(45) |
Feb
(79) |
Mar
(124) |
Apr
(121) |
May
(132) |
Jun
(77) |
Jul
(110) |
Aug
(57) |
Sep
(48) |
Oct
(83) |
Nov
(60) |
Dec
(40) |
| 2004 |
Jan
(67) |
Feb
(72) |
Mar
(74) |
Apr
(87) |
May
(70) |
Jun
(96) |
Jul
(75) |
Aug
(147) |
Sep
(128) |
Oct
(83) |
Nov
(67) |
Dec
(42) |
| 2005 |
Jan
(110) |
Feb
(84) |
Mar
(68) |
Apr
(55) |
May
(51) |
Jun
(192) |
Jul
(111) |
Aug
(100) |
Sep
(79) |
Oct
(127) |
Nov
(73) |
Dec
(112) |
| 2006 |
Jan
(95) |
Feb
(120) |
Mar
(138) |
Apr
(127) |
May
(124) |
Jun
(97) |
Jul
(103) |
Aug
(88) |
Sep
(138) |
Oct
(91) |
Nov
(112) |
Dec
(57) |
| 2007 |
Jan
(55) |
Feb
(35) |
Mar
(56) |
Apr
(16) |
May
(20) |
Jun
(77) |
Jul
(43) |
Aug
(47) |
Sep
(29) |
Oct
(54) |
Nov
(39) |
Dec
(40) |
| 2008 |
Jan
(69) |
Feb
(79) |
Mar
(122) |
Apr
(106) |
May
(114) |
Jun
(76) |
Jul
(83) |
Aug
(71) |
Sep
(53) |
Oct
(75) |
Nov
(54) |
Dec
(43) |
| 2009 |
Jan
(32) |
Feb
(31) |
Mar
(64) |
Apr
(48) |
May
(38) |
Jun
(43) |
Jul
(35) |
Aug
(15) |
Sep
(52) |
Oct
(62) |
Nov
(62) |
Dec
(21) |
| 2010 |
Jan
(44) |
Feb
(10) |
Mar
(47) |
Apr
(22) |
May
(5) |
Jun
(54) |
Jul
(19) |
Aug
(54) |
Sep
(16) |
Oct
(15) |
Nov
(7) |
Dec
(8) |
| 2011 |
Jan
(18) |
Feb
(9) |
Mar
(5) |
Apr
(5) |
May
(41) |
Jun
(40) |
Jul
(29) |
Aug
(17) |
Sep
(12) |
Oct
(23) |
Nov
(22) |
Dec
(11) |
| 2012 |
Jan
(8) |
Feb
(24) |
Mar
(5) |
Apr
(5) |
May
(6) |
Jun
(5) |
Jul
(5) |
Aug
(5) |
Sep
(2) |
Oct
(9) |
Nov
(2) |
Dec
(18) |
| 2013 |
Jan
(25) |
Feb
(16) |
Mar
(8) |
Apr
(2) |
May
(16) |
Jun
(17) |
Jul
(2) |
Aug
(13) |
Sep
(3) |
Oct
(4) |
Nov
(1) |
Dec
|
| 2014 |
Jan
(2) |
Feb
|
Mar
(22) |
Apr
(9) |
May
(3) |
Jun
(1) |
Jul
(5) |
Aug
(11) |
Sep
(18) |
Oct
(4) |
Nov
(4) |
Dec
(3) |
| 2015 |
Jan
(2) |
Feb
|
Mar
|
Apr
(3) |
May
(4) |
Jun
(37) |
Jul
|
Aug
(4) |
Sep
(6) |
Oct
(1) |
Nov
(4) |
Dec
(2) |
| 2016 |
Jan
(9) |
Feb
(3) |
Mar
(7) |
Apr
(1) |
May
(8) |
Jun
|
Jul
|
Aug
|
Sep
(7) |
Oct
(3) |
Nov
(16) |
Dec
|
| 2017 |
Jan
(1) |
Feb
(15) |
Mar
(2) |
Apr
(12) |
May
(4) |
Jun
(7) |
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
(23) |
Dec
(8) |
| 2018 |
Jan
(2) |
Feb
(4) |
Mar
(2) |
Apr
(8) |
May
(3) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2019 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(5) |
Nov
(3) |
Dec
|
| 2020 |
Jan
|
Feb
(4) |
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
(12) |
Aug
(5) |
Sep
(3) |
Oct
(1) |
Nov
|
Dec
(1) |
| 2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2025 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2026 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Sean K. <sea...@pi...> - 2006-09-20 13:31:08
|
Hello Everyone,
I'm having an issue with a server I recently ugraded to 1.12.1. It =
appears that when multiple clients are logging on the crash occurs. =
Here is the stack trace:
#0 0x00b78cdf in raise () from /lib/tls/libc.so.6
#1 0x00b7a4e5 in abort () from /lib/tls/libc.so.6
#2 0x0050a8ed in YDaemonT::OnSignal () from =
/home/exa/sys/lib/libylib.so
#3 0x00509e1c in YDaemonT::SigHandler () from =
/home/exa/sys/lib/libylib.so
#4 <signal handler called>
#5 0x00bc9503 in strlen () from /lib/tls/libc.so.6
#6 0x0808457d in _STL::char_traits<char>::length ()
#7 0x080bc45d in _STL::basic_ostream<char, _STL::char_traits<char> =
>::_M_put_nowiden ()
#8 0x008e2f91 in FIX::SocketAcceptor::onConnect (this=3D0x9292038, =
server=3D@0x96e8970, a=3D11, s=3D18)
at /usr/local/include/stlport/stl/_ostream.h:300
#9 0x008d6c3c in FIX::ServerWrapper::onEvent (this=3D0x38dd9c0, =
monitor=3D@0x96e8988, socket=3D11)
at SocketServer.cpp:58
#10 0x008e8fda in FIX::SocketMonitor::processReadSet (this=3D0x96e8988, =
strategy=3D@0x38dd9c0,
readSet=3D@0x38dd8f0) at SocketMonitor.cpp:278
#11 0x008e8ea4 in FIX::SocketMonitor::block (this=3D0x96e8988, =
strategy=3D@0x38dd9c0, poll=3Dfalse)
at SocketMonitor.cpp:234
#12 0x008d5fdc in FIX::SocketServer::block (this=3D0x96e8970, =
strategy=3D@0x0, poll=3Dfalse)
at SocketServer.cpp:169
#13 0x008e2bb0 in FIX::SocketAcceptor::onStart (this=3D0x9292038) at =
Acceptor.h:78
#14 0x008db533 in FIX::Acceptor::startThread (p=3D0x0) at =
Acceptor.cpp:244
#15 0x00278de8 in start_thread () from /lib/tls/libpthread.so.0
#16 0x00c2d93a in clone () from /lib/tls/libc.so.6
Any idea what is causing this?
Thanks,
--Sean
Disclaimer: Any references to Pipeline performance contained herein are =
based on historic performance levels which Pipeline expects to maintain =
or exceed but nevertheless does not guarantee. Congested networks, price =
volatility, or other extraordinary events may impede future trading =
activities and degrade performance statistics.
|
|
From: Sean K. <sea...@pi...> - 2006-09-20 13:29:44
|
Hi Everyone, I'm trying to drop in 1.12.4 to my test environment, but at link time = I'm getting a bunch of undefined references. Has something changed that = would cause these errors? --Sean undefined reference to `FIX::Session::sendToTarget(FIX::Message&, = _STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> = > const&)' undefined reference to `FIX::operator>>(_STL::basic_istream<char, = _STL::char_traits<char> >&, FIX::SessionSettings&)' undefined reference to = `FIX::Dictionary::getBool(_STL::basic_string<char, = _STL::char_traits<char>, _STL::allocator<char> > const&) const' undefined reference to = `FIX::Dictionary::getBool(_STL::basic_string<char, = _STL::char_traits<char>, _STL::allocator<char> > const&) const' undefined reference to `FIX::Message::setString(_STL::basic_string<char, = _STL::char_traits<char>, _STL::allocator<char> > const&, bool, = FIX::DataDictionary const*)' undefined reference to `FIX::Message::Message(_STL::basic_string<char, = _STL::char_traits<char>, _STL::allocator<char> > const&, bool)' undefined reference to `FIX::Message::Message(_STL::basic_string<char, = _STL::char_traits<char>, _STL::allocator<char> > const&, bool)' undefined reference to `FIX::Message::Message(_STL::basic_string<char, = _STL::char_traits<char>, _STL::allocator<char> > const&, bool)' Disclaimer: Any references to Pipeline performance contained herein are = based on historic performance levels which Pipeline expects to maintain = or exceed but nevertheless does not guarantee. Congested networks, price = volatility, or other extraordinary events may impede future trading = activities and degrade performance statistics. |
|
From: Ananth <ana...@in...> - 2006-09-20 09:50:37
|
Hi, We are developing FIX server which will maintain connections with multiple Exchanges. We have designed such that whenever clients logs into sever then server will load Client Exchange Login info from database and sends it to Exchange. Then after receiving login status it will transmit it to Client with the Exchange status. Can anybody recommend any FIX message to report this Exchange status information to the client or I need to create new custom FIX message format for this functionality. Thanks in Advance Regards, Ananth |
|
From: Oren M. <or...@qu...> - 2006-09-19 17:09:58
|
You should pass in a log factory to get feedback about what is happening. --oren > I am using C# & QuickFix Initiator to Connect to FIX Gateway. but it does not > connect to the Gateway i think b/c OnLogout() Triggers as soon as this code > starts. There is no Exception. How can i see if socket s connected with FIX > Gateway b/c here it looks that Initiator Socket is not connected to =46IX > Gateway. whenever i telnet FixGateway it got connected also i tried it with > my own socket application & it connects easily. Why Initiator is not > connecting. Can anybody guide me on that? |
|
From: Irfan <irf...@ya...> - 2006-09-19 15:34:20
|
I am using C# & QuickFix Initiator to Connect to FIX Gateway. but it does not
connect to the Gateway i think b/c OnLogout() Triggers as soon as this code
starts. There is no Exception. How can i see if socket s connected with FIX
Gateway b/c here it looks that Initiator Socket is not connected to FIX
Gateway. whenever i telnet FixGateway it got connected also i tried it with
my own socket application & it connects easily. Why Initiator is not
connecting. Can anybody guide me on that?
public class FixConnector: MessageCracker, QuickFix.Application
{
private SocketInitiator initiator;
private SessionID sessionId;
private Thread fixThread;
public FixConnector()
{
}
public void InitSession()
{
try
{
SessionSettings settings = new SessionSettings("session.txt");
FileStoreFactory storeFactory = new FileStoreFactory( settings );
MessageFactory messageFactory = new DefaultMessageFactory();
initiator = new SocketInitiator(this, storeFactory, settings,
messageFactory );
initiator.start();
SendLogonRequest();
}
catch(Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
}
public void Start()
{
try
{
}
catch(Exception ex){Console.WriteLine(ex.StackTrace);}
}
public void Stop()
{
try
{
initiator.stop();
}
catch(Exception ex){Console.WriteLine(ex.StackTrace);}
}
public void onCreate( SessionID sessionID )
{
Console.WriteLine("Create " + sessionID);
sessionId = sessionID;
SendLogonRequest();
}
public void onLogon( SessionID sessionID )
{
//this.sessionId = sessionID;
Console.WriteLine("Logon -->" + sessionID);
}
public void onLogout( SessionID sessionID )
{
Console.WriteLine("Logout -->" + sessionID);
}
public void toAdmin( Message message, SessionID sessionID )
{
Console.WriteLine("toAdmin Message-->" + message);
}
public void toApp( Message message, SessionID sessionID )
{
Console.WriteLine("toApp Message-->" + message);
}
public void fromAdmin( Message message, SessionID sessionID )
{
Console.WriteLine("from Admin Message-->" + message);
}
public void fromApp(Message message, SessionID sessionID)
{
crack(message, sessionID);
}
public override void onMessage(QuickFix42.ExecutionReport
execrpt,SessionID sessionId)
{
}
public override void onMessage(QuickFix42.Heartbeat heartBeat, SessionID
sessionId)
{
Console.WriteLine(heartBeat.getTestReqID());
}
public override void onMessage(QuickFix42.Logon logonResp, SessionID
sessionId)
{
string rawData = logonResp.getRawData().getValue();
string[] rawDataArray = rawData.Split('|');
int errorCode = int.Parse(rawDataArray[0]);
string message = rawDataArray[1];
Console.WriteLine("Logon Response-->"+message);
}
public override void onMessage(QuickFix42.Logout logoutResp, SessionID
sessionId)
{
string rawData = logoutResp.getText().getValue();
Console.WriteLine("Logout Response from Server-->"+rawData);
}
public void SendLogonRequest()
{
QuickFix42.Logon logonReq = new QuickFix42.Logon();
string loginData = "77001,1090,oms.123,oms.123";
logonReq.set(new QuickFix.EncryptMethod(0));
logonReq.set(new QuickFix.RawData(loginData));
logonReq.set(new QuickFix.ResetSeqNumFlag(true));
//Session.sendToTarget(logonReq, sessionId);
Session.sendToTarget(logonReq, "TRUST", "DGCXFIX");
}
}
# default settings for sessions
[DEFAULT]
ConnectionType=initiator
ReconnectInterval=60
FileStorePath=store
FileLogPath=log
SocketConnectPort=9887
SocketConnectHost=10.168.76.10
SenderCompID=TRUST
# session definition
[SESSION]
# inherit ConnectionType, ReconnectInterval and SenderCompID from default
BeginString=FIX.4.2
TargetCompID=DGCXFIX
SocketConnectPort=9887
SocketConnectHost=10.168.76.10
StartTime=12:30:00
EndTime=23:30:00
HeartBtInt=20
DataDictionary=FIX42.xml
Irfan
--
View this message in context: http://www.nabble.com/Initiator-Does%27nt-Connect-tf2299205.html#a6388730
Sent from the QuickFIX - Dev mailing list archive at Nabble.com.
|
|
From: H. S. <st...@pa...> - 2006-09-16 16:56:24
|
Oren, sorry for answering late, your mail was catched by our spam filter. I upgraded to 1.12.4 and using gcc 4.2 the error is not longer present. thanks for helping out! cheers, heri > E-Mail-Nachricht-Anlage, "original message before SpamAssassin" > > -------- Weitergeleitete Nachricht -------- > > Von: Oren Miller <or...@qu...> > > An: H. Steuer <st...@pa...> > > Kopie: qui...@li... > > Betreff: Re: [Quickfix-developers] crashes with latest versions, > > sample code attached ... > > Datum: Fri, 15 Sep 2006 10:17:05 -0500 > > > > > Oren, > > > > > > thanks for your email. > > > Unfortunately I used gcc gcc4 which also resulted in a crash. Any > > ideas? > > > What gcc version do you recommend? > > > > > Did you upgrade to 1.12.4? We released it with a fix for this. > > > > --oren > > -- Heribert Steuer PATRONAS Financial Systems GmbH Wiesentalstr. 50 79115 Freiburg fon +49 (0)761 400688-11 fax +49 (0)761 400688-50 mob +49 (0)171 215 2530 st...@pa... http://www.patronas.de This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. |
|
From: Oren M. <or...@qu...> - 2006-09-15 15:17:15
|
> Oren, >=20 > thanks for your email. > Unfortunately I used gcc gcc4 which also resulted in a crash. Any ideas? > What gcc version do you recommend? >=20 Did you upgrade to 1.12.4? We released it with a fix for this. --oren |
|
From: H. S. <st...@pa...> - 2006-09-15 14:38:03
|
Oren,
thanks for your email.
Unfortunately I used gcc gcc4 which also resulted in a crash. Any ideas?
What gcc version do you recommend?
Using built-in specs.
Target: i386-portbld-freebsd6.1
Configured with: ./..//gcc-4.2-20060708/configure --disable-nls
--with-system-zlib --with-libiconv-prefix=/usr/local --program-suffix=42
--libdir=/usr/local/lib/gcc-4.2.0
--with-gxx-include-dir=/usr/local/lib/gcc-4.2.0/include/c++/
--infodir=/usr/local/info/gcc42 --disable-rpath --prefix=/usr/local
i386-portbld-freebsd6.1
Thread model: posix
gcc version 4.2.0 20060708 (experimental)
#0 0x282190ee in __gnu_cxx::__pool<true>::_M_reclaim_block ()
from /usr/local/lib/gcc-4.2.0/libstdc++.so.6
#1 0x280c9014 in __gnu_cxx::__mt_alloc<std::_Rb_tree_node<std::pair<int
const, FIX::FieldBase> >,
__gnu_cxx::__common_pool_policy<__gnu_cxx::__pool, true> >::deallocate
(this=0xbfbfe674, __p=0x8058140, __n=1) at mt_allocator.h:720
#2 0x280c92d5 in std::_Rb_tree<int, std::pair<int const,
FIX::FieldBase>, std::_Select1st<std::pair<int const, FIX::FieldBase> >,
FIX::message_order, __gnu_cxx::__mt_alloc<std::pair<int const,
FIX::FieldBase>, __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool,
true> > >::_M_erase (this=0xbfbfe674, __x=0x8058140)
at stl_tree.h:371
#3 0x280c92ae in std::_Rb_tree<int, std::pair<int const,
FIX::FieldBase>, std::_Select1st<std::pair<int const, FIX::FieldBase> >,
FIX::message_order, __gnu_cxx::__mt_alloc<std::pair<int const,
FIX::FieldBase>, __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool,
true> > >::_M_erase (this=0xbfbfe674, __x=0x8058100)
at stl_tree.h:1323
#4 0x2815102e in FIX::FieldMap::clear (this=0xbfbfe670) at
stl_tree.h:711
#5 0x281513d6 in ~FieldMap (this=0xbfbfe670) at FieldMap.cpp:35
#6 0x08049f8d in FIX::Message::~Message ()
#7 0x0804a062 in FIX42::Message::~Message ()
#8 0x080492c9 in main ()
Am Wednesday, den 13.09.2006, 12:45 -0500 schrieb Oren Miller:
> Some more information from the gcc bugtracker:
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14579
>
> This is from the 3.5 tree, so the bug was certainly in 3.4.4 (which I
> believe is about when mt_allocator was introduced in gcc).
>
> --oren
>
> > backtrace:
> >
> > #0 0x280b6484 in
> __gnu_cxx::__mt_alloc<std::_Rb_tree_node<std::pair<int
> > const, FIX::FieldBase> > >::deallocate (this=0xbfbfe698,
> __p=0x8058100,
> > __n=0)
> > at mt_allocator.h:430
>
--
Heribert Steuer
PATRONAS Financial Systems GmbH
Wiesentalstr. 50
79115 Freiburg
fon +49 (0)761 400688-11
fax +49 (0)761 400688-50
mob +49 (0)171 215 2530
st...@pa...
http://www.patronas.de
This e-mail may contain confidential and/or privileged information.
If you are not the intended recipient (or have received this e-mail in
error) please notify the sender immediately and destroy this e-mail. Any
unauthorized copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.
|
|
From: John H. <jr...@ya...> - 2006-09-15 13:32:51
|
Brenda,
Please look at the following code snippet (from VB 2005). It successfully returns to me the Logon Status of each of the sessions defined in my .cfg file. I think it might help you with what you are trying to do.
Dim allSessions As ArrayList = mySessionSettings.getSessions
Dim obj As SessionID
For Each obj In allSessions
Dim mySession As Session = Session.lookupSession(obj)
MsgBox(obj.getTargetCompID & ", IsLoggedOn = " & mySession.isLoggedOn)
Next
Regards,
John
------------------------------------------------
Hi,
One of our application use QuickFix to connect to Bloomberg fix server. Sometimes, after calling initiator.start(), event onLogon(SessionID sessionID)was trigger, but function initiator.isLoggedOn() still return false. I wonder which is the right way to determine initiator has logged on Fix server successfully.
Thanks,
Brenda
|
|
From: Oren M. <or...@qu...> - 2006-09-15 00:18:02
|
> Python will complain that we are not passing enough parameters to the __init__ call of SocketInitiator.=20 Thanks. We'll fix this in the repository. > SWIG wrapper does not seem to generate a Python object > for the Dictionary class. I'm not too sure why. This is because the quickfix.i file is not exposing Dictionary.h. Adding it to the interface file should do the trick. > 3. SWIG output does not compile under Visual Studio There is a bigger problem then the ones you have outlined. Visual Studio is just not capable of compiling the 6MB source file generated by SWIG. I'm not really sure what to do about this. This is why there isn't a visual studio project for the Python or Ruby API. I also explored generating the Java and .NET APIs with swig some time back but ran into the same barrier. SWIG doesn't support splitting up the source file and is not very efficient about preserving size in its generator. It may be possible to exclude enough things to bring the file size down, but I'm not sure how small we would need to get it. Perhaps building the bindings under Cygwin would be a more feasable. |
|
From: Oren M. <or...@qu...> - 2006-09-15 00:17:59
|
You generally should not be sending ResendRequest messages yourself. It's not really what you think it is. The purpose isn't to arbitrarily request messages, it is designed to fill in gaps. This is why it is an administrative message. The engine does a check against the last received sequence number to verify if the message has already been processed. If it has, your application won't see it. This is what should happen according to the =46IX standard. Messages are guaranteed to be delivered in order, and delivered only once. If you really really really want to do this (it really shouldn't be necessary), then you have to trick the engine by lowering your sequence numbers. I wouldn't really recommend this. If you want to access old messages, it's best to store them so you can access them later. --oren > I've noticed that if I send a ResendRequest message and the message > returned has already been processed by the engine, the message is not > bubbled up to the calling application - I assume there is more to the > logic than the existance of field tag 43 (PossDupFlag) being set to "Y" > - what exactly is being checked to determine that this message has > already been delievered to the application? |
|
From: Oren M. <or...@qu...> - 2006-09-15 00:17:58
|
Where are you checking for isLoggedOn()? The code for the callback is
literally this:
if ( isLoggedOn() )
m_application.onLogon( m_sessionID );
So by definition, isLoggedOn has to return true for the onLogon event to
be triggered. Are you sure you are not logging in then getting logged
off before your check? Are you monitoring the onLogout method?
--oren
> One of our application use QuickFix to connect to Bloomberg fix
server.=20
> Sometimes, after calling initiator.start(), event onLogon(SessionID=20
> sessionID)was trigger, but function initiator.isLoggedOn() still
return=20
> false. I wonder which is the right way to determine initiator has
logged=20
> on Fix server successfully.
|
|
From: Jeff B. <jef...@ya...> - 2006-09-14 22:12:32
|
I'm using Quickfix with Python and I've found a few issues:
1. overloading __init__
In the quickfix.i SWIG interface file, at the bottom, there is code to control the overloading of the constructors for both SocketInitiator and SocketAcceptor. However, Python doesn't allow the __init__ operator to be overloaded. As a result, the following code will fail:
file = sys.argv[1]
settings = fix.SessionSettings( file )
application = Application()
storeFactory = fix.FileStoreFactory( settings )
initiator = fix.SocketInitiator( application, storeFactory, settings ) # No logFactory present
Python will complain that we are not passing enough parameters to the __init__ call of SocketInitiator. So, the code in quickfix.i should be changed as follows:
class SocketInitiator(SocketInitiatorBase):
application = 0
storeFactory = 0
setting = 0
logFactory = 0
def __init__(self, application, storeFactory, settings, logFactory=None):
if logFactory == None:
SocketInitiatorBase.__init__(self, application, storeFactory, settings)
else:
SocketInitiatorBase.__init__(self, application, storeFactory, settings, logFactory)
self.application = application
self.storeFactory = storeFactory
self.settings = settings
self.logFactory = logFactory
<The same changes should be made to SocketAcceptor as well>
2. Programmatically configuring SessionSettings
I'm trying to programatically configure the
SessionSettings using Python:
settings = fix.SessionSettings()
defaults[fix.CONNECTION_TYPE] = "initiator"
defaults[fix.HEARTBTINT] = "30"
defaults[fix.FILE_STORE_PATH] = "store"
...
settings.set( settings, defaults )
When I attempt to execute the "set" function, I get the
following error:
NotImplementedError: No matching function for
overloaded 'SessionSettings_set' by the SWIG code in
the function *_wrap_SessionSettings_get().
Not too sure, but I'm guessing the libraries want a
Dictionary type for the second argument to SessionSettings::set. However, the
SWIG wrapper does not seem to generate a Python object
for the Dictionary class. I'm not too sure why.
3. SWIG output does not compile under Visual Studio
This has been mentioned on the mailing list before, but I thought I would bring it up again. In general, most of the code compiles. However, in the C++ code, there are typedefs for CHAR, INT and BOOLEAN all of which are already defined by Windows. This leads to ambiguity errors. The typedefs in FieldTypes.h should probably have QF_ prepended or something (so QF_CHAR, rather than CHAR).
Besides the ambiguity errors, there are other problems popping up as well that seem to prevent the SWIG code from building. Not too sure how to fix those.
Thanks,
Jeff Bartley
---------------------------------
Do you Yahoo!?
Everyone is raving about the all-new Yahoo! Mail. |
|
From: Andrew C. <And...@Tw...> - 2006-09-14 21:33:02
|
I've noticed that if I send a ResendRequest message and the message returned has already been processed by the engine, the message is not bubbled up to the calling application - I assume there is more to the logic than the existance of field tag 43 (PossDupFlag) being set to "Y" - what exactly is being checked to determine that this message has already been delievered to the application? Thanks. Andrew Culross TwoFour Systems (914) 220-8849 www.TwoFour.Com The views and opinions expressed in this e-mail message are the sender's own and do not necessarily represent the views and opinions of {TwoFour Systems, LLC or F-O-R Software, LLC} |
|
From: <bre...@am...> - 2006-09-14 20:52:18
|
Hi, One of our application use QuickFix to connect to Bloomberg fix server. Sometimes, after calling initiator.start(), event onLogon(SessionID sessionID)was trigger, but function initiator.isLoggedOn() still return false. I wonder which is the right way to determine initiator has logged on Fix server successfully. Thanks, Brenda This message and any attachments (the "message") is intended solely for the addressees and is confidential. If you receive this message in error, please delete it and immediately notify the sender. Any use not in accord with its purpose, any dissemination or disclosure, either whole or partial, is prohibited except formal approval. The internet can not guarantee the integrity of this message. BNP PARIBAS (and its subsidiaries) shall (will) not therefore be liable for the message if modified. |
|
From: Andrew C. <And...@Tw...> - 2006-09-14 18:37:02
|
Of course I don't have control of the message being sent to me :) I'll see if FXAll is willing to correct their messages - sometimes they have the info, sometimes not. Has repeating group info =20 8=3DFIX.4.2=019=3D340=0135=3D8=0149=3DFXALL=0156=3Dfimatna=0134=3D165=015= 2=3D20060914-18:23:36=0137=3D 1187804=0176=3DBANK1=0117=3D1187804=0120=3D0=01150=3D2=0139=3D2=011=3Duse= r1@fimatna=0164=3D20060918=01 55=3DEUR/USD=0154=3D1=0138=3D1000000=0115=3DEUR=0132=3D1000000=0131=3D1.2= 738=01194=3D1.2738=01195=3D0. =0114=3D1000000=016=3D1.2738=0175=3D20060914=01119=3D1273800.=01120=3DUSD= =01 6977=3D1=016978=3DBANK1=016979=3D1.2737=016980=3D0.00=016981=3D1.2737=016= 982=3D1.2738=016983=3D0.0 0=016984=3D1.2738=0110=3D080=01 Does not have repeating group info - why? =20 8=3DFIX.4.2=019=3D261=0135=3D8=0149=3DFXALL=0156=3Dfimatna=0134=3D166=015= 2=3D20060914-18:23:36=0137=3D 1187805=0176=3DBANK1=0117=3D1187805=0120=3D0=01150=3D2=0139=3D2=011=3Duse= r1@fimatna=0164=3D20060918=01 55=3DEUR/USD=0154=3D2=0138=3D1000000=0115=3DEUR=0132=3D1000000=0131=3D1.2= 737=01194=3D1.2737=01195=3D0. =0114=3D1000000=016=3D1.2737=0175=3D20060914=01119=3D1273700.=01120=3DUSD= =01 6977=3D1=0110=3D019=01 Associated rejections message =20 8=3DFIX.4.2=019=3D129=0135=3D3=0134=3D134=0149=3Dfimatna=0152=3D20060914-= 18:23:35.747=0156=3DFXALL =0145=3D166=0158=3DIncorrect NumInGroup count for repeating group=01371=3D6977=01372=3D8=0110=3D037=01 -----Original Message----- From: Oren Miller [mailto:or...@qu...]=20 Sent: Thursday, September 14, 2006 2:22 PM To: And...@Tw... Cc: qui...@li... Subject: Re: [Quickfix-developers] QuickFix sending reject messages on my execution reports because of missing repeating group information The message is bad. If there is no repeating group info, then the 6971 field should not be present. A case could possibly be made that it you could send it with a value of 0, but 1 is definately wrong. Do you have the power to change how that message is being sent or is it out of your control? We don't currently have a setting for turning off this validation, but it could potentially be added. --oren > Thanks in advance - couple of examples below - a good execution report > (notice 6977=3D2 and we have repeating group info - I get this message = > passed up to my app), a bad execution report (notice 6977=3D1, no=20 > repeating group info, QuickFix sends the reject message automatically |
|
From: Oren M. <or...@qu...> - 2006-09-14 18:22:16
|
The message is bad. If there is no repeating group info, then the 6971 field should not be present. A case could possibly be made that it you could send it with a value of 0, but 1 is definately wrong. Do you have the power to change how that message is being sent or is it out of your control? We don't currently have a setting for turning off this validation, but it could potentially be added. --oren > Thanks in advance - couple of examples below - a good execution report > (notice 6977=3D2 and we have repeating group info - I get this message > passed up to my app), a bad execution report (notice 6977=3D1, no > repeating group info, QuickFix sends the reject message automatically=20 |
|
From: Oren M. <or...@qu...> - 2006-09-14 17:50:38
|
sendToTarget will return false if it is unable to pass the message to the session for some reason (database failure for instance). The session not being logged on is not an error condition since the message would be potentially resent at the next available time. You can check to see if the session is logged on by looking up the session and calling isLoggedOn(). Since FIX is an asynchronous protocol, you can never be 100% sure that a transaction can/has/will go through. Even if you are logged on when the message is sent, if the sequence numbers are out of sync, there is no way to know when the counterparty will process the message, if they process it at all. In any case you can certainly positively identify when a session is not logged on and re-route appropriately. You just will not be able to assume success until the counterparty responds with an ExecutionReport. --oren > What's the safest/best way to test that a session is logged on and available? Does SendToTarget return an error code if the=20 > target is not available? Is there a Session Logon status I can query prior to calling SendToTarget? Any suggestions would be=20 > greatly appreciated. |
|
From: Oren M. <or...@qu...> - 2006-09-14 17:36:41
|
You need to specify the session you want to get settings for. 1.12.4
has a getSessions method that will return to you all the available
sessions.
--oren
> I have tried reading a setting using following instruction, but only=20
> parameters in [DEFAULT] section are found, when I tried to read a
setting=20
> from section [SESSION] an exception ocurred with message
"Configuration=20
> failed: TargetSubID not defined"
>=20
> Dim sUser As String =3D
qSettings.get().getString("TargetSubID",=20
> False)
|
|
From: Oren M. <or...@qu...> - 2006-09-14 17:05:59
|
The MessageStore keeps the minimal amount of information required to function. Only outgoing messages are required because they are the ones you will need to resend if requested. This file can also be reset at any time, so it is not intended as a record of transactions. You need to create a OdbcLogFactory in order to write to the to the log tables. This gets passed into the initiator as the last parameter (it is optional). I'm not sure about the values in the messages table, but I'm guess your query tool is actually truncating the real value due to the SOH. --oren > My question is twofold- First off, in the .body file, it's seems to be only=20 > saving the outgoing messages and none of the incoming ones. Is there=20 > additional config that needs to be done to save incoming messages? >=20 > Second involves using the ODBC to store things. It was compiled with ODBC=20 > support, some of tradeclient.cpp was altered. Currently the 'sessions'=20 > table is being written to, as is the table 'messages', although the=20 > 'message' column in the 'messages' table only has '8=3DFIX.4.2' for a value. =20 > None of the sent orders are showing up anywhere, nor are any reports from=20 > the server. > The tables 'event_log' and 'messages_log' never get written to. > What needs to be done to write to the two _log tables, log incoming=20 > messages, and log the entirety of the messages (not just the header)? |
|
From: Oren M. <or...@qu...> - 2006-09-14 16:48:23
|
QuickFIX 1.12.4 is available at http://www.quickfixengine.org Release notes at http://www.quickfixengine.org/NEWS Primary purpose of this release is to fix some severe stability problems that were present in 1.12.3 in both the .NET and gcc builds. These problems are addressed in this release. I've taken 1.12.3 out of distribution because I believe the bugs are serious enough that this version is not adequate for production use. We also added some extra protection in the .NET API. When calling Dispose on an Initiator/Acceptor, stop will be called first. This will make disposing on an object that is still running less tragic. There are also some fixes in here for the Ruby API repeating group support. The .NET api now supports getSessions on the SessionSettings object. SessionSettings objects can also be output as a string. The output will be in the same format as a typical QuickFIX config file. This allows you to generate a config file based off of a programatically created SessionSettings object. Several other minor issues are addressed in this release. See the notes for more details. --oren |
|
From: Joerg T. <Joe...@ma...> - 2006-09-14 07:28:35
|
On 09/13/06 10:45, Ananth wrote:
> As per FIX document "Recommended Practices for Book Management" there
> are additional fields which are MDPriceLevel Tag No. 1021 and MDBookTyp=
e
> Tag No. 1023. These fields are very useful for processing the Market
> Data Incremental Refresh message. I cannot find these fields in QuickFi=
x
> FIX44 xml file.
Did you check FIX 4.4 specs first. If the tags are there, then it is a bu=
g if they are missing in=20
the data dictionary. Otherwise, they are just not part of FIX 4.4. Maybe =
they are planned to be=20
added in the next time. Please ask on the forums on the FPL site.
> Are they custom fields which I need to add in the xml
> file and respective classes to use them? Or is there any better way?
For incoming messages, the data dictionary is used for checking. Therefor=
e, the tags have to be=20
added there (and published to possible clients). Please use the user defi=
ned range 5000...9999 if=20
the tags are not in FIX 4.4. Check the user defined fields repository on =
the FPL site.
For outgoing messages, you could define your own field class. Just use an=
y standard QF field class=20
as a template. Then you can use the general setter method of the Message =
and Group class (ie=20
FieldBase base class).
Cheers, J=F6rg
--=20
Joerg Thoennes
http://macd.com
Tel.: +49 (0)241 44597-24 Macdonald Associates GmbH
Fax : +49 (0)241 44597-10 Lothringer Str. 52, D-52070 Aachen
|
|
From: Oren M. <or...@qu...> - 2006-09-13 23:10:47
|
I looked into this more deeply. Turns out the problem is with the deployment. The compiled library is using one Allocator, however the header files included by your application does not have the correct #defines and was using a different one. This resulted in objects being allocated with one allocator, and deallocated with a different one (mt alloc). This gave the appearance of an mt_alloc bug. I've corrected this problem and will put it out in the upcoming release. --oren > i came accross some weired segfaults using the quickfix library. below > you can see a simple code snippet which crashes versions 1.12.2, 1.12.3 > as well as current svn. the versions up to 1.12.1 work ok. |
|
From: Oren M. <or...@qu...> - 2006-09-13 22:18:11
|
You've run out of file descriptors. Presumably you are using linux. This document provides some options on steps you can take: http://bcr2.uwaterloo.ca/~brecht/servers/openfiles.html --oren > I put the code between a try...catch, debug it, and so on... and found that > the exception is raised imediatelly after the 127th session initialization . >=20 > So, 127 sessions is a limit or a magic number? |
|
From: Alex <al...@ec...> - 2006-09-13 22:03:25
|
In my acceptor application I'm loading SessionSettings programatically. When
I set a small number of Sessions, everything works fine. But, as soon as I
raise the session number to 200, an exception is throwed. This happens when
calling SocketAcceptor acceptor = new SocketAcceptor(...):
--- BEGIN EXCEPTION ---
QuickFix.ConfigError: Configuration failed: Could not open header file:
store\\FIX.4.4-SERVER1-CLIENT33.header\r\n at
QuickFix.SocketAcceptor..ctor(Application application, MessageStoreFactory
factory, SessionSettings settings, LogFactory logFactory, MessageFactory
messageFactory)\r\n at BI.Fix.Acceptor.FormAcceptor..ctor()
--- END EXCEPTION ---
I put the code between a try...catch, debug it, and so on... and found that
the exception is raised imediatelly after the 127th session initialization .
So, 127 sessions is a limit or a magic number?
Thanks,
Alex
--- BEGIN SNIPPET ---
string fixConfigFile =
Path.Combine(System.Windows.Forms.Application.StartupPath, @"Acceptor.cfg");
SessionSettings settings = new SessionSettings(fixConfigFile);
for ( int x = 1; x <= 200; x++ )
settings.set(new SessionID("FIX.4.4", "SERVER1", "CLIENT" +
x.ToString()), new Dictionary());
FixAcceptorEngine application = new FixAcceptorEngine();
FileStoreFactory storeFactory = new FileStoreFactory(settings);
ScreenLogFactory logFactory = new ScreenLogFactory(settings);
MessageFactory messageFactory = new DefaultMessageFactory();
SocketAcceptor acceptor = new SocketAcceptor(application, storeFactory,
settings, logFactory, messageFactory);
--- END SNIPPET ---
--- BEGIN CONFIG FILE ---
[DEFAULT]
ConnectionType=acceptor
SocketAcceptPort=5002
FileStorePath=store
FileLogPath=log
StartTime=00:00:00
EndTime=00:00:00
DataDictionary=FIX44.xml
SenderCompID=SERVER1
ResetOnLogout=Y
ResetOnDisconnect=Y
--- END CONFIG FILE ---
|