quickfix-developers Mailing List for QuickFIX (Page 60)
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
|
From: Grant B. <gbi...@co...> - 2009-03-03 21:27:23
|
At the very bottom of this email you'll find this link: https://lists.sourceforge.net/lists/listinfo/quickfix-developers Sayonara! On Tue, Mar 3, 2009 at 2:41 PM, Craig Hammon <fir...@ho...> wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > Can someone tell me how to unsubscribe? > Ive looked everywhere for a link etc. > > >> Date: Tue, 3 Mar 2009 14:03:24 -0600 >> From: BH...@Pe... >> To: qui...@li... >> Subject: Re: [Quickfix-developers] StartDay/EndDay parameters question >> >> QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html >> QuickFIX Support: http://www.quickfixengine.org/services.html >> >> We experienced the same problem. It is a bug in QuickFIX. I had to >> patch QuickFIX to support session start and stop on the same day. >> >> >> ------------------------------ >> >> Message: 7 >> Date: Wed, 25 Feb 2009 09:43:43 -0500 >> From: "Andrew Culross" <And...@Tw...> >> Subject: [Quickfix-developers] StartDay/EndDay parameters question >> To: <qui...@li...> >> Cc: 'Stephen Darcy' <ste...@tw...> >> Message-ID: <004b01c99757$76401570$62c04050$@Cu...@Tw...> >> Content-Type: text/plain; charset="us-ascii" >> >> I'm trying to set-up a week long session that starts/stops on the same >> day >> so I have something like: >> >> >> >> [SESSION] >> >> <blah blah> >> >> StartDay=su >> >> StartTime=12:00:00 >> >> EndDay=su >> >> EndTime=11:00:00 >> >> >> >> So I'm expecting the session to be down for an hour a week from 11 to 12 >> UTC. >> >> >> >> It restarts each night instead. >> >> >> >> I've used StartDay/EndDay parameters before with different days without >> any >> issue. (below works great) >> >> >> >> [SESSION] >> >> <blah blah> >> >> StartDay=fr >> >> StartTime=22:15:00 >> >> EndTime=14:10:00 >> >> EndDay=su >> >> >> >> >> >> Any idea what I'm doing wrong? I saw something about timezones in nabble >> - >> should I be specifying a timezone with StartDay/EndDay ? >> >> >> >> Thanks ! >> >> >> >> Andrew Culross >> >> Direct +1 (914) 220-8849 >> >> >> ------------------------------------------------------------------------------ >> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA >> -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise >> -Strategies to boost innovation and cut costs with open source participation >> -Receive a $600 discount off the registration fee with the source code: SFAD >> http://p.sf.net/sfu/XcvMzF8H >> _______________________________________________ >> Quickfix-developers mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfix-developers > > ________________________________ > Express your personality in color! Preview and select themes for Hotmail®. See how. > ------------------------------------------------------------------------------ > Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA > -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise > -Strategies to boost innovation and cut costs with open source participation > -Receive a $600 discount off the registration fee with the source code: SFAD > http://p.sf.net/sfu/XcvMzF8H > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
From: Craig H. <fir...@ho...> - 2009-03-03 20:41:28
|
Can someone tell me how to unsubscribe? Ive looked everywhere for a link etc. > Date: Tue, 3 Mar 2009 14:03:24 -0600 > From: BH...@Pe... > To: qui...@li... > Subject: Re: [Quickfix-developers] StartDay/EndDay parameters question > > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > We experienced the same problem. It is a bug in QuickFIX. I had to > patch QuickFIX to support session start and stop on the same day. > > > ------------------------------ > > Message: 7 > Date: Wed, 25 Feb 2009 09:43:43 -0500 > From: "Andrew Culross" <And...@Tw...> > Subject: [Quickfix-developers] StartDay/EndDay parameters question > To: <qui...@li...> > Cc: 'Stephen Darcy' <ste...@tw...> > Message-ID: <004b01c99757$76401570$62c04050$@Cu...@Tw...> > Content-Type: text/plain; charset="us-ascii" > > I'm trying to set-up a week long session that starts/stops on the same > day > so I have something like: > > > > [SESSION] > > <blah blah> > > StartDay=su > > StartTime=12:00:00 > > EndDay=su > > EndTime=11:00:00 > > > > So I'm expecting the session to be down for an hour a week from 11 to 12 > UTC. > > > > It restarts each night instead. > > > > I've used StartDay/EndDay parameters before with different days without > any > issue. (below works great) > > > > [SESSION] > > <blah blah> > > StartDay=fr > > StartTime=22:15:00 > > EndTime=14:10:00 > > EndDay=su > > > > > > Any idea what I'm doing wrong? I saw something about timezones in nabble > - > should I be specifying a timezone with StartDay/EndDay ? > > > > Thanks ! > > > > Andrew Culross > > Direct +1 (914) 220-8849 > > > ------------------------------------------------------------------------------ > Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA > -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise > -Strategies to boost innovation and cut costs with open source participation > -Receive a $600 discount off the registration fee with the source code: SFAD > http://p.sf.net/sfu/XcvMzF8H > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers _________________________________________________________________ Express your personality in color! Preview and select themes for Hotmail®. http://www.windowslive-hotmail.com/LearnMore/personalize.aspx?ocid=TXT_MSGTX_WL_HM_express_032009#colortheme |
From: Brian H. <BH...@Pe...> - 2009-03-03 20:20:44
|
I had to modify QuickFIX to add this functionality and make it configurable via the settings file. ------------------------------ Message: 3 Date: Fri, 20 Feb 2009 02:35:02 -0600 From: Karsten Str?b?k <ks...@cf...> Subject: [Quickfix-developers] Rolling file log To: <qui...@li...> Message-ID: <7CD29711D8DF224395DAEA10C842BC05057E7C4B@34093-EVS2C2.exchange.rackspac e.com> Content-Type: text/plain; charset="iso-8859-1" Hi, Does anyone know if it is possible to configure Quickfix to use rolling log files? I would be nice to have the "raw" fix messages for each day in a file of its own. Thank you. Karsten |
From: Brian H. <BH...@Pe...> - 2009-03-03 20:20:40
|
We experienced the same problem. It is a bug in QuickFIX. I had to patch QuickFIX to support session start and stop on the same day. ------------------------------ Message: 7 Date: Wed, 25 Feb 2009 09:43:43 -0500 From: "Andrew Culross" <And...@Tw...> Subject: [Quickfix-developers] StartDay/EndDay parameters question To: <qui...@li...> Cc: 'Stephen Darcy' <ste...@tw...> Message-ID: <004b01c99757$76401570$62c04050$@Cu...@Tw...> Content-Type: text/plain; charset="us-ascii" I'm trying to set-up a week long session that starts/stops on the same day so I have something like: [SESSION] <blah blah> StartDay=su StartTime=12:00:00 EndDay=su EndTime=11:00:00 So I'm expecting the session to be down for an hour a week from 11 to 12 UTC. It restarts each night instead. I've used StartDay/EndDay parameters before with different days without any issue. (below works great) [SESSION] <blah blah> StartDay=fr StartTime=22:15:00 EndTime=14:10:00 EndDay=su Any idea what I'm doing wrong? I saw something about timezones in nabble - should I be specifying a timezone with StartDay/EndDay ? Thanks ! Andrew Culross Direct +1 (914) 220-8849 |
From: Ariel P. <ari...@gm...> - 2009-03-03 19:16:12
|
I have made a dispose for all messages 2009/3/3 Brian Erst <azz...@ya...> > - Mostrar texto citado - > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > It looks like it would be better to have m_groupOrder be implemented as a > std::map instead of as an array. > > - Brian Erst > Thynk Software, Inc. > > ------------------------------ > *From:* "Bristotti, Fernando" <fer...@cr...> > *To:* qui...@li... > *Sent:* Tuesday, March 3, 2009 10:23:56 AM > *Subject:* Re: [Quickfix-developers] C# Memory growing fast > > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > Shane, > > The problem is in the way C++ allocates memory for keeping field order ( > struct message_order ): > > quickfix\src\C++\MessageSorters.cpp: > > void message_order::setOrder( int size, const int order[] ) > { QF_STACK_PUSH(message_order::operator=) > > if(size < 1) return; > m_largest = m_delim = order[0]; > > int* fields = new int[ size + 1 ]; > fields[ 1 ] = m_delim; > // collect all fields and find the largest field number > int i; > for ( i = 2; i <= size; ++i ) > { > int field = order[i-1]; > m_largest = m_largest > field ? m_largest : field; > fields[ i ] = field; > } > > // populate array with field number as key and position as value > m_groupOrder = new int[ m_largest + 1 ]; > memset( m_groupOrder, 0, ( m_largest + 1 ) * sizeof( int ) ); > for ( i = 1; i <= size; ++i ) > m_groupOrder[ fields[ i ] ] = i; > delete [] fields; > > QF_STACK_POP > } > > Let's suppose that you have a group with only two custom fields ( 10000, > 10001 ) in a give fix message. To me, it doesn't make any sence to allocate > a int[] vector size of the largest field (10001 in this case) for each entry > of this group. Memory will grow really fast!!!!! > > Fernando Bristotti > > ------------------------------ > *From:* Shane Trotter [mailto:str...@co...] > *Sent:* Tuesday, March 03, 2009 12:15 PM > *To:* Bristotti, Fernando > *Cc:* qui...@li... > *Subject:* Re: [Quickfix-developers] C# Memory growing fast > > I believe with the .NET version you must dispose each message after you > have used it. Is it a requirement in your application to maintain a > reference to all 35,000 trade messages? > > -- > Shane Trotter > Connamara Systems, LLC > > On Tue, Mar 3, 2009 at 9:06 AM, Bristotti, Fernando < > fer...@cr...> wrote: > >> QuickFIX Documentation: >> http://www.quickfixengine.org/quickfix/doc/html/index.html >> QuickFIX Support: http://www.quickfixengine.org/services.html >> >> >> Hi, >> >> I am currently using QuickFIX 1.12.4. Memory grows fast when QuickFIX >> process a market data snapshot message, for instance the day I've received a >> snapshot with about 35000 trades (attached), memory grows to about 1.0G and >> my application crashes. >> >> Taking a look on QuickFIX source code I could see that struct message_order >> ( MessageSorters.cpp ) allocates for each group a vector int[] size of >> the largest field in the group even if the group contains only two fields. >> The largest field in NoMDEntry group for BM&F market data is a custom field >> = 6032, thus for processing the message above QuickFIX allocates 6032 x ( >> 35000 trades ) x ( 4 bytes ). >> >> I have changed the code in order to allocate a vector int[] size of the >> number of fields in the group, any suggestion? >> >> Thanks, >> Fernando >> >> ============================================================================== >> Please access the attached hyperlink for an important electronic communications disclaimer: >> >> http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html >> ============================================================================== >> >> >> >> ------------------------------------------------------------------------------ >> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, >> CA >> -OSBC tackles the biggest issue in open source: Open Sourcing the >> Enterprise >> -Strategies to boost innovation and cut costs with open source >> participation >> -Receive a $600 discount off the registration fee with the source code: >> SFAD >> http://p.sf.net/sfu/XcvMzF8H >> _______________________________________________ >> Quickfix-developers mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfix-developers >> > > ============================================================================== > Please access the attached hyperlink for an important electronic communications disclaimer: > > http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html > ============================================================================== > > > > ------------------------------------------------------------------------------ > Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, > CA > -OSBC tackles the biggest issue in open source: Open Sourcing the > Enterprise > -Strategies to boost innovation and cut costs with open source > participation > -Receive a $600 discount off the registration fee with the source code: > SFAD > http://p.sf.net/sfu/XcvMzF8H > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
From: Brian E. <azz...@ya...> - 2009-03-03 19:01:29
|
It looks like it would be better to have m_groupOrder be implemented as a std::map instead of as an array. - Brian Erst Thynk Software, Inc. ________________________________ From: "Bristotti, Fernando" <fer...@cr...> To: qui...@li... Sent: Tuesday, March 3, 2009 10:23:56 AM Subject: Re: [Quickfix-developers] C# Memory growing fast QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX Support: http://www.quickfixengine.org/services.html Shane, The problem is in the way C++ allocates memory for keeping field order ( struct message_order ): quickfix\src\C++\MessageSorters.cpp: void message_order::setOrder( int size, const int order[] ) { QF_STACK_PUSH(message_order::operator=) if(size < 1) return; m_largest = m_delim = order[0]; int* fields = new int[ size + 1 ]; fields[ 1 ] = m_delim; // collect all fields and find the largest field number int i; for ( i = 2; i <= size; ++i ) { int field = order[i-1]; m_largest = m_largest > field ? m_largest : field; fields[ i ] = field; } // populate array with field number as key and position as value m_groupOrder = new int[ m_largest + 1 ]; memset( m_groupOrder, 0, ( m_largest + 1 ) * sizeof( int ) ); for ( i = 1; i <= size; ++i ) m_groupOrder[ fields[ i ] ] = i; delete [] fields; QF_STACK_POP } Let's suppose that you have a group with only two custom fields ( 10000, 10001 ) in a give fix message. To me, it doesn't make any sence to allocate a int[] vector size of the largest field (10001 in this case) for each entry of this group. Memory will grow really fast!!!!! FernandoBristotti ________________________________ From: Shane Trotter [mailto:str...@co...] Sent: Tuesday, March 03, 2009 12:15 PM To: Bristotti, Fernando Cc: qui...@li... Subject: Re: [Quickfix-developers] C# Memory growing fast I believe with the .NET version you must dispose each message after you have used it. Is it a requirement in your application to maintain a reference to all 35,000 trade messages? -- Shane Trotter Connamara Systems, LLC On Tue, Mar 3, 2009 at 9:06 AM, Bristotti, Fernando <fer...@cr...> wrote: QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX Support: http://www.quickfixengine.org/services.html Hi, I am currently using QuickFIX 1.12.4. Memory grows fast when QuickFIX process a market data snapshot message, for instance the day I've received a snapshot with about 35000 trades (attached), memory grows to about 1.0G and my application crashes. Taking a look on QuickFIX source code I could see that struct message_order ( MessageSorters.cpp ) allocates for each group a vector int[] size of the largest field in the group even if the group contains only two fields. The largest field in NoMDEntry group for BM&F market data is a custom field = 6032, thus for processing the message above QuickFIX allocates 6032 x ( 35000 trades ) x ( 4 bytes ). I have changed the code in order to allocate a vector int[] size of the number of fields in the group, any suggestion? Thanks, Fernando ============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ============================================================================== ------------------------------------------------------------------------------ Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H _______________________________________________ Quickfix-developers mailing list Qui...@li... https://lists.sourceforge.net/lists/listinfo/quickfix-developers ============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ============================================================================== |
From: Malinka R. <ael...@gm...> - 2009-03-03 18:54:17
|
Sorry just got a good read of your original post, and your problem is that you're storing the messages, QF stores a lot of information about a message not just what the message is in ascii but also way to effectively grab the specific data you need out, so yes if you store the entire fix message through your programs normal processing your going to notice some ineffeciences, you shouldn't be store the entire message, you should just be storing what you need need pulled from the message outside of the message. On Tue, Mar 3, 2009 at 13:43, Bristotti, Fernando <fer...@cr...> wrote: > Malinka, > > The problem occurs also when I process the message with C++ code only. > > Dispose() has been called on ALL messages. > > Just to be clear, my problem is high memory cosuming, not leak of memory. > > Thanks, > Fernando Bristotti > > -----Original Message----- > From: Malinka Rellikwodahs [mailto:ael...@gm...] > Sent: Tuesday, March 03, 2009 3:24 PM > To: Ariel Piñeiro > Cc: Bristotti, Fernando; qui...@li... > Subject: Re: [Quickfix-developers] C# Memory growing fast > > In order to solve youre memory leaks you need to make sure that on ALL messages when you are done processing them you call .dispose(). > Because of the way managed C++ and C# integrate in QF there's no way for the the C# garbage collector to know when it needs to reclaim the messages because it doesn't know what size they are, if you look through the mailing list archives you can see this discussed before > > On Tue, Mar 3, 2009 at 12:50, Ariel Piñeiro <ari...@gm...> wrote: >> QuickFIX Documentation: >> http://www.quickfixengine.org/quickfix/doc/html/index.html >> QuickFIX Support: http://www.quickfixengine.org/services.html >> >> >> have the same problem and I do not know how to fix it!!!!!!!!!!!!!!! >> >> Memory leaks problem. >> >> 2009/3/3 Bristotti, Fernando <fer...@cr...> >>> >>> - Mostrar texto citado - >>> QuickFIX Documentation: >>> http://www.quickfixengine.org/quickfix/doc/html/index.html >>> QuickFIX Support: http://www.quickfixengine.org/services.html >>> >>> >>> Shane, >>> >>> The problem is in the way C++ allocates memory for keeping field order ( struct message_order ): >>> >>> quickfix\src\C++\MessageSorters.cpp: >>> >>> void message_order::setOrder( int size, const int order[] ) { >>> QF_STACK_PUSH(message_order::operator=) >>> >>> if(size < 1) return; >>> m_largest = m_delim = order[0]; >>> >>> int* fields = new int[ size + 1 ]; >>> fields[ 1 ] = m_delim; >>> // collect all fields and find the largest field number >>> int i; >>> for ( i = 2; i <= size; ++i ) >>> { >>> int field = order[i-1]; >>> m_largest = m_largest > field ? m_largest : field; >>> fields[ i ] = field; >>> } >>> >>> // populate array with field number as key and position as value >>> m_groupOrder = new int[ m_largest + 1 ]; >>> memset( m_groupOrder, 0, ( m_largest + 1 ) * sizeof( int ) ); >>> for ( i = 1; i <= size; ++i ) >>> m_groupOrder[ fields[ i ] ] = i; >>> delete [] fields; >>> >>> QF_STACK_POP >>> } >>> >>> Let's suppose that you have a group with only two custom fields ( 10000, 10001 ) in a give fix message. To me, it doesn't make any sence to allocate a int[] vector size of the largest field (10001 in this case) for each entry of this group. Memory will grow really fast!!!!! >>> >>> Fernando Bristotti >>> ________________________________ >>> From: Shane Trotter [mailto:str...@co...] >>> Sent: Tuesday, March 03, 2009 12:15 PM >>> To: Bristotti, Fernando >>> Cc: qui...@li... >>> Subject: Re: [Quickfix-developers] C# Memory growing fast >>> >>> I believe with the .NET version you must dispose each message after you have used it. Is it a requirement in your application to maintain a reference to all 35,000 trade messages? >>> >>> -- >>> Shane Trotter >>> Connamara Systems, LLC >>> >>> On Tue, Mar 3, 2009 at 9:06 AM, Bristotti, Fernando <fer...@cr...> wrote: >>>> >>>> QuickFIX Documentation: >>>> http://www.quickfixengine.org/quickfix/doc/html/index.html >>>> QuickFIX Support: http://www.quickfixengine.org/services.html >>>> >>>> >>>> Hi, >>>> >>>> I am currently using QuickFIX 1.12.4. Memory grows fast when QuickFIX process a market data snapshot message, for instance the day I've received a snapshot with about 35000 trades (attached), memory grows to about 1.0G and my application crashes. >>>> >>>> Taking a look on QuickFIX source code I could see that struct message_order ( MessageSorters.cpp ) allocates for each group a vector int[] size of the largest field in the group even if the group contains only two fields. The largest field in NoMDEntry group for BM&F market data is a custom field = 6032, thus for processing the message above QuickFIX allocates 6032 x ( 35000 trades ) x ( 4 bytes ). >>>> >>>> I have changed the code in order to allocate a vector int[] size of the number of fields in the group, any suggestion? >>>> >>>> Thanks, >>>> Fernando >>>> >>>> ==================================================================== >>>> ========== Please access the attached hyperlink for an important >>>> electronic communications disclaimer: >>>> >>>> http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html >>>> ==================================================================== >>>> ========== >>>> >>>> -------------------------------------------------------------------- >>>> ---------- Open Source Business Conference (OSBC), March 24-25, >>>> 2009, San Francisco, CA -OSBC tackles the biggest issue in open >>>> source: Open Sourcing the Enterprise -Strategies to boost innovation >>>> and cut costs with open source participation -Receive a $600 >>>> discount off the registration fee with the source code: SFAD >>>> http://p.sf.net/sfu/XcvMzF8H >>>> _______________________________________________ >>>> Quickfix-developers mailing list >>>> Qui...@li... >>>> https://lists.sourceforge.net/lists/listinfo/quickfix-developers >>> >>> ===================================================================== >>> ========= Please access the attached hyperlink for an important >>> electronic communications disclaimer: >>> >>> http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html >>> ===================================================================== >>> ========= >>> >>> --------------------------------------------------------------------- >>> --------- Open Source Business Conference (OSBC), March 24-25, 2009, >>> San Francisco, CA -OSBC tackles the biggest issue in open source: >>> Open Sourcing the Enterprise -Strategies to boost innovation and cut >>> costs with open source participation -Receive a $600 discount off the >>> registration fee with the source code: SFAD >>> http://p.sf.net/sfu/XcvMzF8H >>> _______________________________________________ >>> Quickfix-developers mailing list >>> Qui...@li... >>> https://lists.sourceforge.net/lists/listinfo/quickfix-developers >> >> >> ---------------------------------------------------------------------- >> -------- Open Source Business Conference (OSBC), March 24-25, 2009, >> San Francisco, CA -OSBC tackles the biggest issue in open source: Open >> Sourcing the Enterprise -Strategies to boost innovation and cut costs >> with open source participation -Receive a $600 discount off the >> registration fee with the source code: SFAD >> http://p.sf.net/sfu/XcvMzF8H >> _______________________________________________ >> Quickfix-developers mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfix-developers >> > > > ============================================================================== > Please access the attached hyperlink for an important electronic communications disclaimer: > > http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html > ============================================================================== > > |
From: Bristotti, F. <fer...@cr...> - 2009-03-03 18:44:11
|
Malinka, The problem occurs also when I process the message with C++ code only. Dispose() has been called on ALL messages. Just to be clear, my problem is high memory cosuming, not leak of memory. Thanks, Fernando Bristotti -----Original Message----- From: Malinka Rellikwodahs [mailto:ael...@gm...] Sent: Tuesday, March 03, 2009 3:24 PM To: Ariel Piñeiro Cc: Bristotti, Fernando; qui...@li... Subject: Re: [Quickfix-developers] C# Memory growing fast In order to solve youre memory leaks you need to make sure that on ALL messages when you are done processing them you call .dispose(). Because of the way managed C++ and C# integrate in QF there's no way for the the C# garbage collector to know when it needs to reclaim the messages because it doesn't know what size they are, if you look through the mailing list archives you can see this discussed before On Tue, Mar 3, 2009 at 12:50, Ariel Piñeiro <ari...@gm...> wrote: > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > have the same problem and I do not know how to fix it!!!!!!!!!!!!!!! > > Memory leaks problem. > > 2009/3/3 Bristotti, Fernando <fer...@cr...> >> >> - Mostrar texto citado - >> QuickFIX Documentation: >> http://www.quickfixengine.org/quickfix/doc/html/index.html >> QuickFIX Support: http://www.quickfixengine.org/services.html >> >> >> Shane, >> >> The problem is in the way C++ allocates memory for keeping field order ( struct message_order ): >> >> quickfix\src\C++\MessageSorters.cpp: >> >> void message_order::setOrder( int size, const int order[] ) { >> QF_STACK_PUSH(message_order::operator=) >> >> if(size < 1) return; >> m_largest = m_delim = order[0]; >> >> int* fields = new int[ size + 1 ]; >> fields[ 1 ] = m_delim; >> // collect all fields and find the largest field number >> int i; >> for ( i = 2; i <= size; ++i ) >> { >> int field = order[i-1]; >> m_largest = m_largest > field ? m_largest : field; >> fields[ i ] = field; >> } >> >> // populate array with field number as key and position as value >> m_groupOrder = new int[ m_largest + 1 ]; >> memset( m_groupOrder, 0, ( m_largest + 1 ) * sizeof( int ) ); >> for ( i = 1; i <= size; ++i ) >> m_groupOrder[ fields[ i ] ] = i; >> delete [] fields; >> >> QF_STACK_POP >> } >> >> Let's suppose that you have a group with only two custom fields ( 10000, 10001 ) in a give fix message. To me, it doesn't make any sence to allocate a int[] vector size of the largest field (10001 in this case) for each entry of this group. Memory will grow really fast!!!!! >> >> Fernando Bristotti >> ________________________________ >> From: Shane Trotter [mailto:str...@co...] >> Sent: Tuesday, March 03, 2009 12:15 PM >> To: Bristotti, Fernando >> Cc: qui...@li... >> Subject: Re: [Quickfix-developers] C# Memory growing fast >> >> I believe with the .NET version you must dispose each message after you have used it. Is it a requirement in your application to maintain a reference to all 35,000 trade messages? >> >> -- >> Shane Trotter >> Connamara Systems, LLC >> >> On Tue, Mar 3, 2009 at 9:06 AM, Bristotti, Fernando <fer...@cr...> wrote: >>> >>> QuickFIX Documentation: >>> http://www.quickfixengine.org/quickfix/doc/html/index.html >>> QuickFIX Support: http://www.quickfixengine.org/services.html >>> >>> >>> Hi, >>> >>> I am currently using QuickFIX 1.12.4. Memory grows fast when QuickFIX process a market data snapshot message, for instance the day I've received a snapshot with about 35000 trades (attached), memory grows to about 1.0G and my application crashes. >>> >>> Taking a look on QuickFIX source code I could see that struct message_order ( MessageSorters.cpp ) allocates for each group a vector int[] size of the largest field in the group even if the group contains only two fields. The largest field in NoMDEntry group for BM&F market data is a custom field = 6032, thus for processing the message above QuickFIX allocates 6032 x ( 35000 trades ) x ( 4 bytes ). >>> >>> I have changed the code in order to allocate a vector int[] size of the number of fields in the group, any suggestion? >>> >>> Thanks, >>> Fernando >>> >>> ==================================================================== >>> ========== Please access the attached hyperlink for an important >>> electronic communications disclaimer: >>> >>> http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html >>> ==================================================================== >>> ========== >>> >>> -------------------------------------------------------------------- >>> ---------- Open Source Business Conference (OSBC), March 24-25, >>> 2009, San Francisco, CA -OSBC tackles the biggest issue in open >>> source: Open Sourcing the Enterprise -Strategies to boost innovation >>> and cut costs with open source participation -Receive a $600 >>> discount off the registration fee with the source code: SFAD >>> http://p.sf.net/sfu/XcvMzF8H >>> _______________________________________________ >>> Quickfix-developers mailing list >>> Qui...@li... >>> https://lists.sourceforge.net/lists/listinfo/quickfix-developers >> >> ===================================================================== >> ========= Please access the attached hyperlink for an important >> electronic communications disclaimer: >> >> http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html >> ===================================================================== >> ========= >> >> --------------------------------------------------------------------- >> --------- Open Source Business Conference (OSBC), March 24-25, 2009, >> San Francisco, CA -OSBC tackles the biggest issue in open source: >> Open Sourcing the Enterprise -Strategies to boost innovation and cut >> costs with open source participation -Receive a $600 discount off the >> registration fee with the source code: SFAD >> http://p.sf.net/sfu/XcvMzF8H >> _______________________________________________ >> Quickfix-developers mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfix-developers > > > ---------------------------------------------------------------------- > -------- Open Source Business Conference (OSBC), March 24-25, 2009, > San Francisco, CA -OSBC tackles the biggest issue in open source: Open > Sourcing the Enterprise -Strategies to boost innovation and cut costs > with open source participation -Receive a $600 discount off the > registration fee with the source code: SFAD > http://p.sf.net/sfu/XcvMzF8H > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > ============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ============================================================================== |
From: Bristotti, F. <fer...@cr...> - 2009-03-03 18:25:18
|
Ariel, I've changed the code as follow: (1 month and everthing is going fine) quickfix\src\C++\MessageSorters.cpp: /**************************************************************************** ** Copyright (c) quickfixengine.org All rights reserved. ** ** This file is part of the QuickFIX FIX Engine ** ** This file may be distributed under the terms of the quickfixengine.org ** license as defined by quickfixengine.org and appearing in the file ** LICENSE included in the packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.quickfixengine.org/LICENSE for licensing information. ** ** Contact as...@qu... if any conditions of this licensing are ** not clear to you. ** ****************************************************************************/ #ifdef _MSC_VER #include "stdafx.h" #else #include "config.h" #endif #include "CallStack.h" #include "MessageSorters.h" namespace FIX { message_order::message_order( int first, ... ) : m_mode( group ), m_delim( 0 ), m_dictionaryOrder( 0 ) { int field = first; int size = 0; va_list arguments; va_start( arguments, first ); while( field != 0 ) { size++; field = va_arg( arguments, int ); } va_start( arguments, first ); int* order = new int[size]; order[0] = first; for ( int i = 1; i < size; ++i ) order[ i ] = va_arg( arguments, int ); setOrder(size, order); delete [] order; va_end( arguments ); } message_order::message_order( const int order[] ) : m_mode( group ), m_delim( 0 ), m_dictionaryOrder( 0 ) { int size = 0; while( order[size] != 0 ) { ++size; } setOrder(size, order); } message_order& message_order::operator=( const message_order& rhs ) { QF_STACK_PUSH(message_order::operator=) m_mode = rhs.m_mode; m_delim = rhs.m_delim; if( rhs.m_dictionaryOrder ) { if( m_dictionaryOrder ) delete [] m_dictionaryOrder; m_dictionaryOrderSize = rhs.m_dictionaryOrderSize; m_dictionaryOrder = new int[ m_dictionaryOrderSize + 1]; memcpy( m_dictionaryOrder, rhs.m_dictionaryOrder, ( m_dictionaryOrderSize + 1 ) * sizeof( int ) ); } return *this; QF_STACK_POP } void message_order::setOrder( int size, const int order[] ) { QF_STACK_PUSH(message_order::operator=) if(size < 1) return; m_delim = order[0]; m_dictionaryOrderSize = size; m_dictionaryOrder = new int[ m_dictionaryOrderSize + 1 ]; memset( m_dictionaryOrder, 0, ( m_dictionaryOrderSize + 1 ) * sizeof( int ) ); for( int i = 0; i < m_dictionaryOrderSize; i++ ) m_dictionaryOrder[ i ] = order[ i ]; QF_STACK_POP } } quickfix\src\C++\MessageSorters.h /* -*- C++ -*- */ /**************************************************************************** ** Copyright (c) quickfixengine.org All rights reserved. ** ** This file is part of the QuickFIX FIX Engine ** ** This file may be distributed under the terms of the quickfixengine.org ** license as defined by quickfixengine.org and appearing in the file ** LICENSE included in the packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.quickfixengine.org/LICENSE for licensing information. ** ** Contact as...@qu... if any conditions of this licensing are ** not clear to you. ** ****************************************************************************/ #ifndef FIX_MESSAGESORTERS_H #define FIX_MESSAGESORTERS_H #ifdef _MSC_VER #pragma warning( disable : 4503 4355 4786 4290 ) #endif #include "FieldNumbers.h" #include <stdarg.h> #include <functional> #include <map> namespace FIX { /// Sorts fields in correct header order. struct header_order { static bool compare( const int& x, const int& y ) { int orderedX = getOrderedPosition( x ); int orderedY = getOrderedPosition( y ); if ( orderedX && orderedY ) return orderedX < orderedY; else if ( orderedX ) return true; else if ( orderedY ) return false; else return x < y; } static int getOrderedPosition( const int& field ) { switch ( field ) { case FIELD::BeginString: return 1; case FIELD::BodyLength: return 2; case FIELD::MsgType: return 3; default: return 0; }; } }; /// Sorts fields in correct trailer order. struct trailer_order { static bool compare( const int x, const int y ) { if ( x == FIELD::CheckSum ) return false; else if ( y == FIELD::CheckSum ) return true; else return x < y; } }; /// Sorts fields in correct group order struct group_order { static bool compare( const int x, const int y, int* order, int largest ) { if ( x <= largest && y <= largest ) { int iX = order[ x ]; int iY = order[ y ]; if ( iX == 0 && iY == 0 ) return x < y; else if ( iX == 0 ) return false; else if ( iY == 0 ) return true; else return iX < iY; } else if ( x <= largest ) return true; else if ( y <= largest ) return false; else return x < y; } }; struct dictionaryGroup_order { static bool compare( const int x, const int y, int* order, int orderSize ) { if(x == y) return false; for(int i = 0; i < orderSize; i++) { if(order[ i ] == x) return true; if(order[ i ] == y) return false; } return x < y; } }; typedef std::less < int > normal_order; /** * Sorts fields in header, normal, or trailer order. * * Used as a dynamic sorter to create Header, Trailer, and Message * FieldMaps while maintaining the same base type. */ struct message_order { public: enum cmp_mode { header, trailer, normal, group }; message_order( cmp_mode mode = normal ) : m_mode( mode ), m_dictionaryOrder( 0 ) {} message_order( int first, ... ); message_order( const int order[] ); message_order( const message_order& copy ) : m_dictionaryOrder( 0 ) { *this = copy; } virtual ~message_order() { if( m_dictionaryOrder ) delete [] m_dictionaryOrder; } bool operator() ( const int& x, const int& y ) const { switch ( m_mode ) { case header: return header_order::compare( x, y ); case trailer: return trailer_order::compare( x, y ); case group: return dictionaryGroup_order::compare(x, y, m_dictionaryOrder, m_dictionaryOrderSize); case normal: default: return x < y; } } message_order& operator=( const message_order& rhs ); private: void setOrder( int size, const int order[] ); cmp_mode m_mode; int m_delim; int* m_dictionaryOrder; int m_dictionaryOrderSize; }; } #endif //FIX_MESSAGESORTERS_H Fernando Bristotti ________________________________ From: Ariel Piñeiro [mailto:ari...@gm...] Sent: Tuesday, March 03, 2009 2:50 PM To: Bristotti, Fernando Cc: qui...@li... Subject: Re: [Quickfix-developers] C# Memory growing fast have the same problem and I do not know how to fix it!!!!!!!!!!!!!!! Memory leaks problem. 2009/3/3 Bristotti, Fernando <fer...@cr...> - Mostrar texto citado - QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX Support: http://www.quickfixengine.org/services.html Shane, The problem is in the way C++ allocates memory for keeping field order ( struct message_order ): quickfix\src\C++\MessageSorters.cpp: void message_order::setOrder( int size, const int order[] ) { QF_STACK_PUSH(message_order::operator=) if(size < 1) return; m_largest = m_delim = order[0]; int* fields = new int[ size + 1 ]; fields[ 1 ] = m_delim; // collect all fields and find the largest field number int i; for ( i = 2; i <= size; ++i ) { int field = order[i-1]; m_largest = m_largest > field ? m_largest : field; fields[ i ] = field; } // populate array with field number as key and position as value m_groupOrder = new int[ m_largest + 1 ]; memset( m_groupOrder, 0, ( m_largest + 1 ) * sizeof( int ) ); for ( i = 1; i <= size; ++i ) m_groupOrder[ fields[ i ] ] = i; delete [] fields; QF_STACK_POP } Let's suppose that you have a group with only two custom fields ( 10000, 10001 ) in a give fix message. To me, it doesn't make any sence to allocate a int[] vector size of the largest field (10001 in this case) for each entry of this group. Memory will grow really fast!!!!! Fernando Bristotti ________________________________ From: Shane Trotter [mailto:str...@co...] Sent: Tuesday, March 03, 2009 12:15 PM To: Bristotti, Fernando Cc: qui...@li... Subject: Re: [Quickfix-developers] C# Memory growing fast I believe with the .NET version you must dispose each message after you have used it. Is it a requirement in your application to maintain a reference to all 35,000 trade messages? -- Shane Trotter Connamara Systems, LLC On Tue, Mar 3, 2009 at 9:06 AM, Bristotti, Fernando <fer...@cr...> wrote: QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX Support: http://www.quickfixengine.org/services.html Hi, I am currently using QuickFIX 1.12.4. Memory grows fast when QuickFIX process a market data snapshot message, for instance the day I've received a snapshot with about 35000 trades (attached), memory grows to about 1.0G and my application crashes. Taking a look on QuickFIX source code I could see that struct message_order ( MessageSorters.cpp ) allocates for each group a vector int[] size of the largest field in the group even if the group contains only two fields. The largest field in NoMDEntry group for BM&F market data is a custom field = 6032, thus for processing the message above QuickFIX allocates 6032 x ( 35000 trades ) x ( 4 bytes ). I have changed the code in order to allocate a vector int[] size of the number of fields in the group, any suggestion? Thanks, Fernando ============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ============================================================================== ------------------------------------------------------------------------------ Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H _______________________________________________ Quickfix-developers mailing list Qui...@li... https://lists.sourceforge.net/lists/listinfo/quickfix-developers ============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ============================================================================== ------------------------------------------------------------------------------ Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H _______________________________________________ Quickfix-developers mailing list Qui...@li... https://lists.sourceforge.net/lists/listinfo/quickfix-developers ============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ============================================================================== |
From: Malinka R. <ael...@gm...> - 2009-03-03 18:23:41
|
In order to solve youre memory leaks you need to make sure that on ALL messages when you are done processing them you call .dispose(). Because of the way managed C++ and C# integrate in QF there's no way for the the C# garbage collector to know when it needs to reclaim the messages because it doesn't know what size they are, if you look through the mailing list archives you can see this discussed before On Tue, Mar 3, 2009 at 12:50, Ariel Piñeiro <ari...@gm...> wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > have the same problem and I do not know how to fix it!!!!!!!!!!!!!!! > > Memory leaks problem. > > 2009/3/3 Bristotti, Fernando <fer...@cr...> >> >> - Mostrar texto citado - >> QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html >> QuickFIX Support: http://www.quickfixengine.org/services.html >> >> >> Shane, >> >> The problem is in the way C++ allocates memory for keeping field order ( struct message_order ): >> >> quickfix\src\C++\MessageSorters.cpp: >> >> void message_order::setOrder( int size, const int order[] ) >> { QF_STACK_PUSH(message_order::operator=) >> >> if(size < 1) return; >> m_largest = m_delim = order[0]; >> >> int* fields = new int[ size + 1 ]; >> fields[ 1 ] = m_delim; >> // collect all fields and find the largest field number >> int i; >> for ( i = 2; i <= size; ++i ) >> { >> int field = order[i-1]; >> m_largest = m_largest > field ? m_largest : field; >> fields[ i ] = field; >> } >> >> // populate array with field number as key and position as value >> m_groupOrder = new int[ m_largest + 1 ]; >> memset( m_groupOrder, 0, ( m_largest + 1 ) * sizeof( int ) ); >> for ( i = 1; i <= size; ++i ) >> m_groupOrder[ fields[ i ] ] = i; >> delete [] fields; >> >> QF_STACK_POP >> } >> >> Let's suppose that you have a group with only two custom fields ( 10000, 10001 ) in a give fix message. To me, it doesn't make any sence to allocate a int[] vector size of the largest field (10001 in this case) for each entry of this group. Memory will grow really fast!!!!! >> >> Fernando Bristotti >> ________________________________ >> From: Shane Trotter [mailto:str...@co...] >> Sent: Tuesday, March 03, 2009 12:15 PM >> To: Bristotti, Fernando >> Cc: qui...@li... >> Subject: Re: [Quickfix-developers] C# Memory growing fast >> >> I believe with the .NET version you must dispose each message after you have used it. Is it a requirement in your application to maintain a reference to all 35,000 trade messages? >> >> -- >> Shane Trotter >> Connamara Systems, LLC >> >> On Tue, Mar 3, 2009 at 9:06 AM, Bristotti, Fernando <fer...@cr...> wrote: >>> >>> QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html >>> QuickFIX Support: http://www.quickfixengine.org/services.html >>> >>> >>> Hi, >>> >>> I am currently using QuickFIX 1.12.4. Memory grows fast when QuickFIX process a market data snapshot message, for instance the day I've received a snapshot with about 35000 trades (attached), memory grows to about 1.0G and my application crashes. >>> >>> Taking a look on QuickFIX source code I could see that struct message_order ( MessageSorters.cpp ) allocates for each group a vector int[] size of the largest field in the group even if the group contains only two fields. The largest field in NoMDEntry group for BM&F market data is a custom field = 6032, thus for processing the message above QuickFIX allocates 6032 x ( 35000 trades ) x ( 4 bytes ). >>> >>> I have changed the code in order to allocate a vector int[] size of the number of fields in the group, any suggestion? >>> >>> Thanks, >>> Fernando >>> >>> ============================================================================== >>> Please access the attached hyperlink for an important electronic communications disclaimer: >>> >>> http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html >>> ============================================================================== >>> >>> ------------------------------------------------------------------------------ >>> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA >>> -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise >>> -Strategies to boost innovation and cut costs with open source participation >>> -Receive a $600 discount off the registration fee with the source code: SFAD >>> http://p.sf.net/sfu/XcvMzF8H >>> _______________________________________________ >>> Quickfix-developers mailing list >>> Qui...@li... >>> https://lists.sourceforge.net/lists/listinfo/quickfix-developers >> >> ============================================================================== >> Please access the attached hyperlink for an important electronic communications disclaimer: >> >> http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html >> ============================================================================== >> >> ------------------------------------------------------------------------------ >> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA >> -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise >> -Strategies to boost innovation and cut costs with open source participation >> -Receive a $600 discount off the registration fee with the source code: SFAD >> http://p.sf.net/sfu/XcvMzF8H >> _______________________________________________ >> Quickfix-developers mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfix-developers > > > ------------------------------------------------------------------------------ > Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA > -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise > -Strategies to boost innovation and cut costs with open source participation > -Receive a $600 discount off the registration fee with the source code: SFAD > http://p.sf.net/sfu/XcvMzF8H > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
From: Ariel P. <ari...@gm...> - 2009-03-03 17:50:06
|
have the same problem and I do not know how to fix it!!!!!!!!!!!!!!! Memory leaks problem. 2009/3/3 Bristotti, Fernando <fer...@cr...> > - Mostrar texto citado - > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > Shane, > > The problem is in the way C++ allocates memory for keeping field order ( > struct message_order ): > > quickfix\src\C++\MessageSorters.cpp: > > void message_order::setOrder( int size, const int order[] ) > { QF_STACK_PUSH(message_order::operator=) > > if(size < 1) return; > m_largest = m_delim = order[0]; > > int* fields = new int[ size + 1 ]; > fields[ 1 ] = m_delim; > // collect all fields and find the largest field number > int i; > for ( i = 2; i <= size; ++i ) > { > int field = order[i-1]; > m_largest = m_largest > field ? m_largest : field; > fields[ i ] = field; > } > > // populate array with field number as key and position as value > m_groupOrder = new int[ m_largest + 1 ]; > memset( m_groupOrder, 0, ( m_largest + 1 ) * sizeof( int ) ); > for ( i = 1; i <= size; ++i ) > m_groupOrder[ fields[ i ] ] = i; > delete [] fields; > > QF_STACK_POP > } > > Let's suppose that you have a group with only two custom fields ( 10000, > 10001 ) in a give fix message. To me, it doesn't make any sence to allocate > a int[] vector size of the largest field (10001 in this case) for each entry > of this group. Memory will grow really fast!!!!! > > Fernando Bristotti > > ------------------------------ > *From:* Shane Trotter [mailto:str...@co...] > *Sent:* Tuesday, March 03, 2009 12:15 PM > *To:* Bristotti, Fernando > *Cc:* qui...@li... > *Subject:* Re: [Quickfix-developers] C# Memory growing fast > > I believe with the .NET version you must dispose each message after you > have used it. Is it a requirement in your application to maintain a > reference to all 35,000 trade messages? > > -- > Shane Trotter > Connamara Systems, LLC > > On Tue, Mar 3, 2009 at 9:06 AM, Bristotti, Fernando < > fer...@cr...> wrote: > >> QuickFIX Documentation: >> http://www.quickfixengine.org/quickfix/doc/html/index.html >> QuickFIX Support: http://www.quickfixengine.org/services.html >> >> >> Hi, >> >> I am currently using QuickFIX 1.12.4. Memory grows fast when QuickFIX >> process a market data snapshot message, for instance the day I've received a >> snapshot with about 35000 trades (attached), memory grows to about 1.0G and >> my application crashes. >> >> Taking a look on QuickFIX source code I could see that struct message_order >> ( MessageSorters.cpp ) allocates for each group a vector int[] size of >> the largest field in the group even if the group contains only two fields. >> The largest field in NoMDEntry group for BM&F market data is a custom field >> = 6032, thus for processing the message above QuickFIX allocates 6032 x ( >> 35000 trades ) x ( 4 bytes ). >> >> I have changed the code in order to allocate a vector int[] size of the >> number of fields in the group, any suggestion? >> >> Thanks, >> Fernando >> >> ============================================================================== >> Please access the attached hyperlink for an important electronic communications disclaimer: >> http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html >> ============================================================================== >> >> >> >> ------------------------------------------------------------------------------ >> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, >> CA >> -OSBC tackles the biggest issue in open source: Open Sourcing the >> Enterprise >> -Strategies to boost innovation and cut costs with open source >> participation >> -Receive a $600 discount off the registration fee with the source code: >> SFAD >> http://p.sf.net/sfu/XcvMzF8H >> _______________________________________________ >> Quickfix-developers mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfix-developers >> > > ============================================================================== > Please access the attached hyperlink for an important electronic communications disclaimer: > http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html > ============================================================================== > > > > ------------------------------------------------------------------------------ > Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, > CA > -OSBC tackles the biggest issue in open source: Open Sourcing the > Enterprise > -Strategies to boost innovation and cut costs with open source > participation > -Receive a $600 discount off the registration fee with the source code: > SFAD > http://p.sf.net/sfu/XcvMzF8H > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
From: Bristotti, F. <fer...@cr...> - 2009-03-03 16:24:18
|
Shane, The problem is in the way C++ allocates memory for keeping field order ( struct message_order ): quickfix\src\C++\MessageSorters.cpp: void message_order::setOrder( int size, const int order[] ) { QF_STACK_PUSH(message_order::operator=) if(size < 1) return; m_largest = m_delim = order[0]; int* fields = new int[ size + 1 ]; fields[ 1 ] = m_delim; // collect all fields and find the largest field number int i; for ( i = 2; i <= size; ++i ) { int field = order[i-1]; m_largest = m_largest > field ? m_largest : field; fields[ i ] = field; } // populate array with field number as key and position as value m_groupOrder = new int[ m_largest + 1 ]; memset( m_groupOrder, 0, ( m_largest + 1 ) * sizeof( int ) ); for ( i = 1; i <= size; ++i ) m_groupOrder[ fields[ i ] ] = i; delete [] fields; QF_STACK_POP } Let's suppose that you have a group with only two custom fields ( 10000, 10001 ) in a give fix message. To me, it doesn't make any sence to allocate a int[] vector size of the largest field (10001 in this case) for each entry of this group. Memory will grow really fast!!!!! Fernando Bristotti ________________________________ From: Shane Trotter [mailto:str...@co...] Sent: Tuesday, March 03, 2009 12:15 PM To: Bristotti, Fernando Cc: qui...@li... Subject: Re: [Quickfix-developers] C# Memory growing fast I believe with the .NET version you must dispose each message after you have used it. Is it a requirement in your application to maintain a reference to all 35,000 trade messages? -- Shane Trotter Connamara Systems, LLC On Tue, Mar 3, 2009 at 9:06 AM, Bristotti, Fernando <fer...@cr...> wrote: QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX Support: http://www.quickfixengine.org/services.html Hi, I am currently using QuickFIX 1.12.4. Memory grows fast when QuickFIX process a market data snapshot message, for instance the day I've received a snapshot with about 35000 trades (attached), memory grows to about 1.0G and my application crashes. Taking a look on QuickFIX source code I could see that struct message_order ( MessageSorters.cpp ) allocates for each group a vector int[] size of the largest field in the group even if the group contains only two fields. The largest field in NoMDEntry group for BM&F market data is a custom field = 6032, thus for processing the message above QuickFIX allocates 6032 x ( 35000 trades ) x ( 4 bytes ). I have changed the code in order to allocate a vector int[] size of the number of fields in the group, any suggestion? Thanks, Fernando ======================================================================== ====== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ======================================================================== ====== ------------------------------------------------------------------------ ------ Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H _______________________________________________ Quickfix-developers mailing list Qui...@li... https://lists.sourceforge.net/lists/listinfo/quickfix-developers ============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ============================================================================== |
From: Shane T. <str...@co...> - 2009-03-03 15:37:23
|
I believe with the .NET version you must dispose each message after you have used it. Is it a requirement in your application to maintain a reference to all 35,000 trade messages? -- Shane Trotter Connamara Systems, LLC On Tue, Mar 3, 2009 at 9:06 AM, Bristotti, Fernando < fer...@cr...> wrote: > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > Hi, > > I am currently using QuickFIX 1.12.4. Memory grows fast when QuickFIX > process a market data snapshot message, for instance the day I've received a > snapshot with about 35000 trades (attached), memory grows to about 1.0G and > my application crashes. > > Taking a look on QuickFIX source code I could see that struct message_order > ( MessageSorters.cpp ) allocates for each group a vector int[] size of the > largest field in the group even if the group contains only two fields. The > largest field in NoMDEntry group for BM&F market data is a custom field = > 6032, thus for processing the message above QuickFIX allocates 6032 x ( > 35000 trades ) x ( 4 bytes ). > > I have changed the code in order to allocate a vector int[] size of the > number of fields in the group, any suggestion? > > Thanks, > Fernando > > ============================================================================== > Please access the attached hyperlink for an important electronic communications disclaimer: > http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html > ============================================================================== > > > > ------------------------------------------------------------------------------ > Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, > CA > -OSBC tackles the biggest issue in open source: Open Sourcing the > Enterprise > -Strategies to boost innovation and cut costs with open source > participation > -Receive a $600 discount off the registration fee with the source code: > SFAD > http://p.sf.net/sfu/XcvMzF8H > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
From: Bristotti, F. <fer...@cr...> - 2009-03-03 15:07:18
|
> Hi, > > I am currently using QuickFIX 1.12.4. Memory grows fast when QuickFIX > process a market data snapshot message, for instance the day I've > received a snapshot with about 35000 trades (attached), memory grows > to about 1.0G and my application crashes. > > Taking a look on QuickFIX source code I could see that struct > message_order ( MessageSorters.cpp ) allocates for each group a vector > int[] size of the largest field in the group even if the group > contains only two fields. The largest field in NoMDEntry group for > BM&F market data is a custom field = 6032, thus for processing the > message above QuickFIX allocates 6032 x ( 35000 trades ) x ( 4 bytes > ). > > I have changed the code in order to allocate a vector int[] size of > the number of fields in the group, any suggestion? > > Thanks, > Fernando ============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ============================================================================== |
From: Yasir Z. <yas...@ya...> - 2009-03-03 05:07:41
|
Hi Niks, I have been out of touch from Quick FIX for a quite while but I know one thing making changes to the Fix42.xml file doesn't means that you have that message class in you code even after recompiling. For that you have to change the code of the Quick FIX Solution file. I think you need to add the custom class in 'fix42' directory and also make some changes to "Messages.cpp" and "Messages.h" in project file that need to be changed. After adding all this and re-compiling the new class you will be able to see the Custom class in the dll. For a custom message you need not to made such changes these changes will be helpful if you are sending your configured FIX library to a third party. The other thing you asked was changes made to FIX42.xml file, this file is the data dictionary that only tells the quick fix engine that these are the only messages to support and what are its format. If you are using data dictionary you will get an invalid message error if the engine do not receive any message according to this specification. So the message section you just added will be helpful for the engine to understand the incoming Custom message from other source and you have already done that. (However you can get rid of this verification by Quick FIX engine using the check in the configuration file "usedatadictionary=N". This means your fix engine will not show any error on any sort of custom message received.) Now what you have to do for a Custom Message. 1- Add the XML in your data Dictionary FIX42.xml like you just did OR use the check in configuration file "usedatadictionary=N". I prefer first one to receive the custom message. 2- Add some code to your application class to send the custom message. // Initialize new custom message QuickFix42.Message message42 = new QuickFix42.Message( new MsgType(yourmsgtype) ) // Set all fields you required message42.SetField("key","value"); // Send the message to the target Session.sendToTarget(message42, yoursessionid); Regards, Yasir Zaheer. |
From: Brian E. <azz...@ya...> - 2009-03-02 16:11:55
|
That's curious, as the FIX 4.4 standard (as well as the FIX44.xml file shipped with QF 1.12.4) defines "ClOrdId" as NOT required when part of a NoSides group in the TradeCaptureReport. Did you, perhaps, modify the wrong message? NoSides groups in other messages (NewOrderCross, CrossOrderCancelReplaceRequest) DO require ClOrdId, but that's NOT the case in TradeCaptureReport. None of this should require a recompile - these are run-time checks. Has anyone else in the QF community had this problem? - Brian Erst Thynk Software, Inc. ________________________________ From: Julian <jul...@pr...> To: Brian Erst <azz...@ya...> Sent: Monday, March 2, 2009 8:44:09 AM Subject: RE: [Quickfix-developers] Adding Custom Message Hi Brian, We are having some trouble on the QF validation of a message. We thought there was an unseen error on our procedure, but when I read this on your tutorial I don’t think so: “Second, QuickFIX uses the "required" attribute of tags when generating constructors for message objects. If the required attribute is set to "Y", that field will become part of a constructor. Don't be tempted to set the required attribute to "Y" on the existing fields of an existing message. Even if your counterparty requires the RawData field on a Logon message, this is not the place to force that validation. If you do it here, much of the QuickFIX build will fail, as many of the acceptance tests will not be able to construct message objects that have suddenly gained a required parameter. Once you've built your custom version of QuickFIX, make a copy of your XML files to your deployment environment and modify those copies to make fields required at run-time. Perhaps a future version of QuickFIX could add another attribute that could distinguish between "required for constructors" and "required for run-time validation".” English, as you might see, is my second language; so it’s not much clear to me what you say. Here is our inconvenient: The exchange (acceptor) change a message definition, setting a required field as “not required”, the message is a TradeCaptureReport (35=”AE”) and the field is ClOrdID(tag 11) in the “NoSide”(tag 552). As we’ve done before, we edit the FIX4.4 xml to make it valid: <field name="ClOrdID" required="N" /> In the corresponding message. To our surprise, the error persist (QF reject the message saying “Missing required message field (11)”. Can this have anything to do with what you said? What should we do? Rebuild QF libraries? But we don’t use any Dictionary while building them, the dictionary is added the settings of a new session… Thanks, Julián Mendiola | PSF Developer Leader http://www.prosoftwarefactory.com.ar From:Brian Erst [mailto:azz...@ya...] Sent: Friday, February 27, 2009 1:54 PM To: QuickFix Developers Subject: Re: [Quickfix-developers] Adding Custom Message to Fix42.xml and handling in application This was supposed to be added to the QF documentation, but never was. I put together a tutorial on custom messages a few years back, and as QF hasn't really changed much since then, it should still work fine. http://www.nabble.com/Custom-Messages-Classes-Tutorial-td13495584.html - Brian Erst ________________________________ ________________________________ From:Nikhil Chitnis <nik...@gm...> To: QuickFix Developers <qui...@li...> Sent: Friday, February 27, 2009 3:29:53 AM Subject: [Quickfix-developers] Adding Custom Message to Fix42.xml and handling in application QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX Support: http://www.quickfixengine.org/services.html Hi, I have a specific requirement to add a custom message and handle the response for the same. I have done following so far - In the Fix42.xml I have added following - In the <messages> section,: <!-- ============================== --> <!-- Begin Custom Messages --> <message name="MyCustomPositionReport" msgtype="MCM59" msgcat="app"> <field name="MyCustomPositionRequestId" required="Y" /> <group name="MyCustomPositionGroup" required="N"> <field name="Account" required="Y" /> <field name="SecurityID" required="N" /> <field name="WorkingLong" required="Y"/> <field name="WorkingShort" required="Y"/> <field name="OpenPosition" required="Y"/> <field name="AvgPx" required="N"/> <field name="SecurityExchange" required="N"/> <field name="Symbol" require="N"/> <field name="MaturityMonthYear" required="N"/> </group> </message> <message name="MyCustomPositionRequest" msgtype="MCM60" msgcat="app"> <field name="MyCustomPositionRequestId" required="Y" /> <group name="MyCustomAccountGroup" required="Y"> <field name="Account" required="Y" /> </group> </message> <!-- End Custom Messages --> <!-- ============================ --> and in the fields section I have added following - <!-- ============================== --> <!-- Begin Custom Messages Fields --> <field number="1102400" name="MyCustomPositionGroup" type="INT" /> <field number="1102500" name="MyCustomAccountGroup" type="INT" /> <field number="1102600" name="MyCustomPositionRequestId" type="INT"/> <field number="1101700" name="OpenPosition" type= "INT"/> <field number="1101800" name="WorkingLong" type="INT"/> <field number="1101900" name="WorkingShort" type="INT"/> <!-- End Custom Messages Fields --> <!-- ============================ --> I am using C# (2.0) for development and after making the changes in the xml file, I have rebuild the quickfix solution. When I am using the dll in the project, I am not getting the class for MyCustomPositionReport and request. Is there anything else I have to do so that I will get this working? Thanks in advance, Regards Niks. No virus found in this incoming message. Checked by AVG - www.avg.com Version: 8.0.237 / Virus Database: 270.11.3/1973 - Release Date: 02/27/09 07:05:00 |
From: Matteo B. <mat...@gm...> - 2009-02-28 17:47:08
|
Hello all, I'm an IT manager in a small business company. We are looking for a robust and flexible open source FIX engine: we think Quickfix could be the best choice, but we have some critical doubts: 1) In the next month, we are interesting to develop a FIX framework (for .NET platform) that supports also FIX 5.0 and FAST FIX protocol specifications, but it seems that QF supports only FIX 4.0 - 4.4 protocols. Moreover, we saw that the last stable release (1.12.4) came out on September, 2006. When is planned a new stable release? Will it include also FIX5/FAST support? 2) Is QF library fully .NET 3.5 compatible? Are there any known issues regarding that platform? QF Source code include only .NET 1.1/2.0 VS solution file. 3) Are there any critical issues (eg high performance or memory degradations) using QF on very large amount of market data (more 100,000 orders/hour in production environment)? Your replies are extremely important in order to know if QF is suitable for our system. Thank you very much. Best regards, Matteo Bisi |
From: Dale W. <wi...@oc...> - 2009-02-27 18:45:01
|
** Julian [mailto:jul...@pr...] asked: > I have a weekly session running, it starts en Sunday 17:30 and goes down on Fridays 17:30. I need to know if there is a easy was to know when the QuickFix application starts >(I need to do differ things then). Is there an event or a OnStart() method that could be call on the initiator connection? I know there is an “IsConnected()” but this won’t be very > useful… Andrew Culross wrote: > > You’ll get an event in the OnLogon handler as the logon message is > generated for the new session. You could do something there. > A minor correction. You get a toAdmin callback when the logon message is sent. The onLogon callback comes when the logon process is complete. Andrew is correct, though, the onLogin callback is probably what you are looking for. Dale |
From: Brian E. <azz...@ya...> - 2009-02-27 15:53:37
|
This was supposed to be added to the QF documentation, but never was. I put together a tutorial on custom messages a few years back, and as QF hasn't really changed much since then, it should still work fine. http://www.nabble.com/Custom-Messages-Classes-Tutorial-td13495584.html - Brian Erst ________________________________ ________________________________ From: Nikhil Chitnis <nik...@gm...> To: QuickFix Developers <qui...@li...> Sent: Friday, February 27, 2009 3:29:53 AM Subject: [Quickfix-developers] Adding Custom Message to Fix42.xml and handling in application QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX Support: http://www.quickfixengine.org/services.html Hi, I have a specific requirement to add a custom message and handle the response for the same. I have done following so far - In the Fix42.xml I have added following - In the <messages> section,: <!-- ============================== --> <!-- Begin Custom Messages --> <message name="MyCustomPositionReport" msgtype="MCM59" msgcat="app"> <field name="MyCustomPositionRequestId" required="Y" /> <group name="MyCustomPositionGroup" required="N"> <field name="Account" required="Y" /> <field name="SecurityID" required="N" /> <field name="WorkingLong" required="Y"/> <field name="WorkingShort" required="Y"/> <field name="OpenPosition" required="Y"/> <field name="AvgPx" required="N"/> <field name="SecurityExchange" required="N"/> <field name="Symbol" require="N"/> <field name="MaturityMonthYear" required="N"/> </group> </message> <message name="MyCustomPositionRequest" msgtype="MCM60" msgcat="app"> <field name="MyCustomPositionRequestId" required="Y" /> <group name="MyCustomAccountGroup" required="Y"> <field name="Account" required="Y" /> </group> </message> <!-- End Custom Messages --> <!-- ============================ --> and in the fields section I have added following - <!-- ============================== --> <!-- Begin Custom Messages Fields --> <field number="1102400" name="MyCustomPositionGroup" type="INT" /> <field number="1102500" name="MyCustomAccountGroup" type="INT" /> <field number="1102600" name="MyCustomPositionRequestId" type="INT"/> <field number="1101700" name="OpenPosition" type= "INT"/> <field number="1101800" name="WorkingLong" type="INT"/> <field number="1101900" name="WorkingShort" type="INT"/> <!-- End Custom Messages Fields --> <!-- ============================ --> I am using C# (2.0) for development and after making the changes in the xml file, I have rebuild the quickfix solution. When I am using the dll in the project, I am not getting the class for MyCustomPositionReport and request. Is there anything else I have to do so that I will get this working? Thanks in advance, Regards Niks. |
From: Nikhil C. <nik...@gm...> - 2009-02-27 09:30:00
|
Hi, I have a specific requirement to add a custom message and handle the response for the same. I have done following so far - In the Fix42.xml I have added following - In the <messages> section,: <!-- ============================== --> <!-- Begin Custom Messages --> <message name="MyCustomPositionReport" msgtype="MCM59" msgcat="app"> <field name="MyCustomPositionRequestId" required="Y" /> <group name="MyCustomPositionGroup" required="N"> <field name="Account" required="Y" /> <field name="SecurityID" required="N" /> <field name="WorkingLong" required="Y"/> <field name="WorkingShort" required="Y"/> <field name="OpenPosition" required="Y"/> <field name="AvgPx" required="N"/> <field name="SecurityExchange" required="N"/> <field name="Symbol" require="N"/> <field name="MaturityMonthYear" required="N"/> </group> </message> <message name="MyCustomPositionRequest" msgtype="MCM60" msgcat="app"> <field name="MyCustomPositionRequestId" required="Y" /> <group name="MyCustomAccountGroup" required="Y"> <field name="Account" required="Y" /> </group> </message> <!-- End Custom Messages --> <!-- ============================ --> and in the fields section I have added following - <!-- ============================== --> <!-- Begin Custom Messages Fields --> <field number="1102400" name="MyCustomPositionGroup" type="INT" /> <field number="1102500" name="MyCustomAccountGroup" type="INT" /> <field number="1102600" name="MyCustomPositionRequestId" type="INT"/> <field number="1101700" name="OpenPosition" type= "INT"/> <field number="1101800" name="WorkingLong" type="INT"/> <field number="1101900" name="WorkingShort" type="INT"/> <!-- End Custom Messages Fields --> <!-- ============================ --> I am using C# (2.0) for development and after making the changes in the xml file, I have rebuild the quickfix solution. When I am using the dll in the project, I am not getting the class for MyCustomPositionReport and request. Is there anything else I have to do so that I will get this working? Thanks in advance, Regards Niks. |
From: Andrew C. <And...@Tw...> - 2009-02-25 14:44:02
|
I'm trying to set-up a week long session that starts/stops on the same day so I have something like: [SESSION] <blah blah> StartDay=su StartTime=12:00:00 EndDay=su EndTime=11:00:00 So I'm expecting the session to be down for an hour a week from 11 to 12 UTC. It restarts each night instead. I've used StartDay/EndDay parameters before with different days without any issue. (below works great) [SESSION] <blah blah> StartDay=fr StartTime=22:15:00 EndTime=14:10:00 EndDay=su Any idea what I'm doing wrong? I saw something about timezones in nabble - should I be specifying a timezone with StartDay/EndDay ? Thanks ! Andrew Culross Direct +1 (914) 220-8849 <http://www.twofour.com/emaildisclaimer.aspx> http://www.twofour.com/emaildisclaimer.aspx |
From: EclipseCap <tob...@ec...> - 2009-02-20 16:26:21
|
For posterity here is some code that I use to get from the list of SessionIDs that are strings to an actual QuickFix Session. System.Collections.ArrayList Sessions; Sessions = initiator.getSessions(); SessionID ID = new SessionID(); ID.fromString(Sessions[0].ToString()); Session LookingAt = Session.lookupSession(ID); Ensuring that a session exists at Sessions[0] is an exercise for the user. -- View this message in context: http://www.nabble.com/initiator.getSession-Error-tp3661067p22120791.html Sent from the QuickFIX - Dev mailing list archive at Nabble.com. |
From: EclipseCap <tob...@ec...> - 2009-02-20 16:19:56
|
Both John and Ned were a big help on this. Here is what I have come up with to help those that come behind me. Running two socket initiators running separate configs is possible. However, putting two sessions into a single config will also work. My biggest question I had with the multiple sessions is how to selectively turn one off. With SocketInitiator it by default tries to connect to all sessions that are currently active. Within the config if you set the item "HttpAcceptPort=8080" then point your browser to http://localhost:8080 you have the ability to selectively control one session. -- View this message in context: http://www.nabble.com/Connections-to-multiple-exchanges-in-C--tp22109516p22120536.html Sent from the QuickFIX - Dev mailing list archive at Nabble.com. |
From: EclipseCap <tob...@ec...> - 2009-02-20 14:27:16
|
I got a response that have two socket initiators is the better way to go. The responder also stated that it was possible to load up two initiators from a single config. If anyone could enlighten me on how to do that it would be great. Second question. I have read some conflicting reports. Should I run two socketinitiators or two threaded socketinitiators? My total message volume should be low to moderate if that makes a difference. Thanks, Tim -- View this message in context: http://www.nabble.com/Connections-to-multiple-exchanges-in-C--tp22109516p22120400.html Sent from the QuickFIX - Dev mailing list archive at Nabble.com. |
From: Karsten S. <ks...@cf...> - 2009-02-20 09:35:18
|
Hi, Does anyone know if it is possible to configure Quickfix to use rolling log files? I would be nice to have the "raw" fix messages for each day in a file of its own. Thank you. Karsten |