quickfix-developers Mailing List for QuickFIX (Page 62)
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: Alexey Z. <ale...@in...> - 2009-01-26 14:33:32
|
I would make a change to populate the map from the header file only during the resend request. The binary format for header could speed up the resend process, but I don't think it's really matter. Regards, Alexey Zubko Djalma Rosa dos Santos Filho wrote: > Yes, this is a pseudo memory leak. > > Keeping all outbound sequence numbers in maps wasn't a smart solution > for the FileStore. > > To avoid development effort, you can use the other available store > factories with their pros and cons (memory, MySQL, ODBC etc). > > But, what sounds to me as a solution to save the current FileStore > from this problem is the .header file in a binary format (a sequence > of fixed blocks / serialized structs). In this file QF would append > and seek on demmand the seqnum's position data (offset | message > length) in corresponding .body file (additionally a cache for the LRU > would be nice, but not all data in memory). > > On Wed, Jan 21, 2009 at 5:42 PM, Alexey Zubko > <ale...@in... > <mailto:ale...@in...>> wrote: > > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > That's probably the maps keeping messages for resend (store factory). > Take a look into the /PersistMessages /configuration parameter. > As alternative you can write your own store factory. > > Regards, > Alexey Zubko > > > > > > Michele Chitson wrote: > > Hi I've seen previous threads similar to this but not seen what the > > fix is. I am currently using Quickfix 1.12.4, when i stress the > > system, i.e send about 20000 trades through QF, my application > memory > > grows very rapidly. Anybody experienced the same thing? > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by: > SourcForge Community > SourceForge wants to tell your story. > http://p.sf.net/sfu/sf-spreadtheword > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > <mailto:Qui...@li...> > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > > |
From: Djalma R. d. S. F. <drs...@gm...> - 2009-01-24 02:30:24
|
Yes, this is a pseudo memory leak. Keeping all outbound sequence numbers in maps wasn't a smart solution for the FileStore. To avoid development effort, you can use the other available store factories with their pros and cons (memory, MySQL, ODBC etc). But, what sounds to me as a solution to save the current FileStore from this problem is the .header file in a binary format (a sequence of fixed blocks / serialized structs). In this file QF would append and seek on demmand the seqnum's position data (offset | message length) in corresponding .body file (additionally a cache for the LRU would be nice, but not all data in memory). On Wed, Jan 21, 2009 at 5:42 PM, Alexey Zubko < ale...@in...> wrote: > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > That's probably the maps keeping messages for resend (store factory). > Take a look into the /PersistMessages /configuration parameter. > As alternative you can write your own store factory. > > Regards, > Alexey Zubko > > > > > > Michele Chitson wrote: > > Hi I've seen previous threads similar to this but not seen what the > > fix is. I am currently using Quickfix 1.12.4, when i stress the > > system, i.e send about 20000 trades through QF, my application memory > > grows very rapidly. Anybody experienced the same thing? > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by: > SourcForge Community > SourceForge wants to tell your story. > http://p.sf.net/sfu/sf-spreadtheword > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
From: Djalma R. d. S. F. <drs...@gm...> - 2009-01-24 02:13:31
|
Yes, this is a pseudo memory leak. Keeping all outbound sequence numbers in maps wasn't a smart solution for the FileStore. To avoid development effort, you can use the other available store factories with their pros and cons (memory, MySQL, ODBC etc). But, what sounds to me as a solution to save the current FileStore from this problem is the .header file in a binary format (a sequence of fixed blocks / serialized structs). In this file QF would append and seek on demmand the seqnum's position data (offset | message length) in corresponding .body file (additionally a cache for the LRU would be nice, but not all data in memory). On Wed, Jan 21, 2009 at 5:42 PM, Alexey Zubko < ale...@in...> wrote: > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > That's probably the maps keeping messages for resend (store factory). > Take a look into the /PersistMessages /configuration parameter. > As alternative you can write your own store factory. > > Regards, > Alexey Zubko > > > > > > Michele Chitson wrote: > > Hi I've seen previous threads similar to this but not seen what the > > fix is. I am currently using Quickfix 1.12.4, when i stress the > > system, i.e send about 20000 trades through QF, my application memory > > grows very rapidly. Anybody experienced the same thing? > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by: > SourcForge Community > SourceForge wants to tell your story. > http://p.sf.net/sfu/sf-spreadtheword > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
From: Djalma R. d. S. F. <drs...@gm...> - 2009-01-24 00:56:52
|
This error occurs because the .NET runtime sometimes moves the objects in memory to compact the GC Heap, this cheats the unmanaged code and leads to an access violation. The solution is pinning the objects involved. void addGroup( Group* group ) { QF_STACK_TRY if ( !group ) { throw new System::ArgumentNullException(); } Group __pin *pThis = this; Group __pin *pGroup = group; pThis->unmanaged().addGroup( pGroup->unmanaged() ); QF_STACK_CATCH } On Thu, Jan 22, 2009 at 5:44 PM, Gehani, Neeraj <nee...@ci...>wrote: > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > Here is the log of exception this threw. > > This is the first time this problem has surfaced. App has been used for > almost half year. Any Ideas. > > 2009-01-22 13:30:06,515 [35] FATAL TradeManager - Attempted to read or > write protected memory. This is often an indication that other memory is > corrupt. at FIX.FieldMap.addGroup(FieldMap* , Int32 , FieldMap* , > Boolean ) > at QuickFix.Message.addGroup(Group group) > at FixUtil.createNewOrderList(FixRequestDetails frd) > at Communicator.SendNewOrderList(FixRequestDetails frd) > at TradeManager.Execute(Queue`1 queue) > at TradeManager.Manage(Object state) > > Code statements > > int listSeqNo = 0; > > QuickFix44.NewOrderList newOrderList = new > QuickFix44.NewOrderList(); > Hashtable listsCache = null; > > QuickFix.ListID listID = null; > > listsCache = > PortfolioManager.Instance.getListsCache(frd.PortfolioID); > > listID = new ListID("ABC"); > newOrderList.setField(listID); > > QuickFix.BidType bidType = new > QuickFix.BidType(QuickFix.BidType.DISCLOSED_STYLE); > newOrderList.setField(bidType); > > QuickFix44.NewOrderList.NoOrders sequenceGroup = null; > > foreach (Order order in orders.Values) > { > > sequenceGroup = new > QuickFix44.NewOrderList.NoOrders(); > SoupLogger.getLogger().InfoFormat("Processing > Frd={0} Order {1}", frd.getTag66(),order.ToString()); > sequenceGroup.setField(new > QuickFix.Account(order.ActMnc)); > sequenceGroup.setField(new > QuickFix.ClOrdID(order.OrderId)); > sequenceGroup.setField(new > QuickFix.ListSeqNo(++listSeqNo)); > sequenceGroup.setField(new > QuickFix.Symbol(order.Ticker)); > if (order.TickerSuff != null && > order.TickerSuff.Length != 0 ) sequenceGroup.setField(new > QuickFix.SymbolSfx(order.TickerSuff)); > > if (order.Side == OMConstants.BUY) > { > sequenceGroup.setField(new > QuickFix.Side(QuickFix.Side.BUY)); > } > else if (order.Side == OMConstants.SELL) > { > sequenceGroup.setField(new > QuickFix.Side(QuickFix.Side.SELL)); > } > else if (order.Side == OMConstants.SELLSHORT) > { > sequenceGroup.setField(new > QuickFix.Side(QuickFix.Side.SELL_SHORT)); > } > else if (order.Side == OMConstants.SELLSHORTEXEMPT) > { > sequenceGroup.setField(new > QuickFix.Side(QuickFix.Side.SELL_SHORT_EXEMPT)); > } > > string[] locateIdArr = order.LocateIds.Split(':'); > > sequenceGroup.setField(FixConstants.LOCATEBROKERNAME, locateIdArr[0]); > > sequenceGroup.setField(FixConstants.LOCATEBROKERID, locateIdArr[1]); > > > sequenceGroup.setField(new > QuickFix.OrderQty(order.Quantity)); > sequenceGroup.setField(FixConstants.SUBLISTID, > order.ListId); > sequenceGroup.setField(FixConstants.TRADERSOEID, > order.ClientName); > sequenceGroup.setField(new > IntField(FixConstants.SRCSYSTEMID,srcSystemId)); > sequenceGroup.setField(new > IntField(FixConstants.AGGUNIT, 999); > > sequenceGroup.setField(new > QuickFix.SenderCompID(senderCompId)); > sequenceGroup.setField(new > QuickFix.TargetCompID(targetCompId)); > sequenceGroup.setField(new > QuickFix.OrderID(order.OrderId)); > sequenceGroup.setField(new > QuickFix.TimeInForce(TimeInForce.DAY)); > sequenceGroup.setField(new > QuickFix.OrderCapacity(OrderCapacity.AGENCY)); > sequenceGroup.setField(new > QuickFix.UtcTimeStampField( FixConstants.ORDERFLOWENTRYTIME, > DateTime.UtcNow)); > > > > newOrderList.addGroup(sequenceGroup); > } > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by: > SourcForge Community > SourceForge wants to tell your story. > http://p.sf.net/sfu/sf-spreadtheword > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
From: Gehani, N. <nee...@ci...> - 2009-01-22 20:25:02
|
Here is the log of exception this threw. This is the first time this problem has surfaced. App has been used for almost half year. Any Ideas. 2009-01-22 13:30:06,515 [35] FATAL TradeManager - Attempted to read or write protected memory. This is often an indication that other memory is corrupt. at FIX.FieldMap.addGroup(FieldMap* , Int32 , FieldMap* , Boolean ) at QuickFix.Message.addGroup(Group group) at FixUtil.createNewOrderList(FixRequestDetails frd) at Communicator.SendNewOrderList(FixRequestDetails frd) at TradeManager.Execute(Queue`1 queue) at TradeManager.Manage(Object state) Code statements int listSeqNo = 0; QuickFix44.NewOrderList newOrderList = new QuickFix44.NewOrderList(); Hashtable listsCache = null; QuickFix.ListID listID = null; listsCache = PortfolioManager.Instance.getListsCache(frd.PortfolioID); listID = new ListID("ABC"); newOrderList.setField(listID); QuickFix.BidType bidType = new QuickFix.BidType(QuickFix.BidType.DISCLOSED_STYLE); newOrderList.setField(bidType); QuickFix44.NewOrderList.NoOrders sequenceGroup = null; foreach (Order order in orders.Values) { sequenceGroup = new QuickFix44.NewOrderList.NoOrders(); SoupLogger.getLogger().InfoFormat("Processing Frd={0} Order {1}", frd.getTag66(),order.ToString()); sequenceGroup.setField(new QuickFix.Account(order.ActMnc)); sequenceGroup.setField(new QuickFix.ClOrdID(order.OrderId)); sequenceGroup.setField(new QuickFix.ListSeqNo(++listSeqNo)); sequenceGroup.setField(new QuickFix.Symbol(order.Ticker)); if (order.TickerSuff != null && order.TickerSuff.Length != 0 ) sequenceGroup.setField(new QuickFix.SymbolSfx(order.TickerSuff)); if (order.Side == OMConstants.BUY) { sequenceGroup.setField(new QuickFix.Side(QuickFix.Side.BUY)); } else if (order.Side == OMConstants.SELL) { sequenceGroup.setField(new QuickFix.Side(QuickFix.Side.SELL)); } else if (order.Side == OMConstants.SELLSHORT) { sequenceGroup.setField(new QuickFix.Side(QuickFix.Side.SELL_SHORT)); } else if (order.Side == OMConstants.SELLSHORTEXEMPT) { sequenceGroup.setField(new QuickFix.Side(QuickFix.Side.SELL_SHORT_EXEMPT)); } string[] locateIdArr = order.LocateIds.Split(':'); sequenceGroup.setField(FixConstants.LOCATEBROKERNAME, locateIdArr[0]); sequenceGroup.setField(FixConstants.LOCATEBROKERID, locateIdArr[1]); sequenceGroup.setField(new QuickFix.OrderQty(order.Quantity)); sequenceGroup.setField(FixConstants.SUBLISTID, order.ListId); sequenceGroup.setField(FixConstants.TRADERSOEID, order.ClientName); sequenceGroup.setField(new IntField(FixConstants.SRCSYSTEMID,srcSystemId)); sequenceGroup.setField(new IntField(FixConstants.AGGUNIT, 999); sequenceGroup.setField(new QuickFix.SenderCompID(senderCompId)); sequenceGroup.setField(new QuickFix.TargetCompID(targetCompId)); sequenceGroup.setField(new QuickFix.OrderID(order.OrderId)); sequenceGroup.setField(new QuickFix.TimeInForce(TimeInForce.DAY)); sequenceGroup.setField(new QuickFix.OrderCapacity(OrderCapacity.AGENCY)); sequenceGroup.setField(new QuickFix.UtcTimeStampField( FixConstants.ORDERFLOWENTRYTIME, DateTime.UtcNow)); newOrderList.addGroup(sequenceGroup); } |
From: Alexey Z. <ale...@in...> - 2009-01-21 19:42:57
|
That's probably the maps keeping messages for resend (store factory). Take a look into the /PersistMessages /configuration parameter. As alternative you can write your own store factory. Regards, Alexey Zubko Michele Chitson wrote: > Hi I've seen previous threads similar to this but not seen what the > fix is. I am currently using Quickfix 1.12.4, when i stress the > system, i.e send about 20000 trades through QF, my application memory > grows very rapidly. Anybody experienced the same thing? |
From: Michele C. <mch...@gm...> - 2009-01-21 18:44:32
|
Hi I've seen previous threads similar to this but not seen what the fix is. I am currently using Quickfix 1.12.4, when i stress the system, i.e send about 20000 trades through QF, my application memory grows very rapidly. Anybody experienced the same thing? |
From: Romman, G. <GR...@ep...> - 2009-01-21 16:00:38
|
Hi Nikhil, Is it possible the server requires logon credentials such as userid and password? The documention FAQ provides a sample of how to add fields to a logon message. Here also is a working snippet: class YourApplication : Application public void toAdmin(QuickFix.Message message, SessionID sessionID) { // Add custom fields if this is a logon message QuickFix.Message.Header hdr = message.getHeader(); if (hdr.getField(MsgType.FIELD).Equals(MsgType.LOGON)) { message.setField(new Username("userid")); message.setField(new Password("password")); } } Regards, Greg -----Original Message----- From: Nikhil Chitnis [mailto:nik...@gm...] Sent: Wednesday, January 21, 2009 4:20 AM To: qui...@li... Subject: [Quickfix-developers] Unable to connect to Server using QuickFixfor .Net QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX Support: http://www.quickfixengine.org/services.html This email contains confidential information that is proprietary to EPCOR and its subsidiary companies in all respects. This information is intended only for the person(s) named in the destination address. Unauthorized distribution, copying or disclosure is strictly prohibited. If you receive this e-mail in error please delete it immediately. |
From: Nikhil C. <nik...@gm...> - 2009-01-21 11:20:10
|
Hi, I am unable to connect to the server using QuickFix for .Net. Following is the code I am using - static void Main(string[] args) { try { SessionSettings settings = new SessionSettings(@"C:\TestFIX\Test.cfg"); Application application = new Application(); FileStoreFactory storeFactory = new FileStoreFactory( settings ); ScreenLogFactory logFactory = new ScreenLogFactory( settings ); MessageFactory messageFactory = new DefaultMessageFactory(); SocketInitiator testcos = new SocketInitiator(application, storeFactory, settings, logFactory, messageFactory); testcos.start(); bool bl = testcos.isLoggedOn(); Console.Clear(); Console.WriteLine("press <enter> to quit"); Console.Read(); testcos.stop(); } catch (ConfigError e) { Console.WriteLine(e); } } When I run the application, I am getting following on the console - <20090121-10:38:52, FIX.4.2:LTINTTEST->ONYX, outgoing> (8=FIX.4.2☺9=69☺35=A☺34=10☺49=LTINTTEST☺52=20090121-10:38:52.222☺56=ONYX☺98=0☺108=30☺10=068☺) <20090121-10:38:52, FIX.4.2:LTINTTEST->ONYX, event> (Initiated logon request) <20090121-10:38:52, FIX.4.2:LTINTTEST->ONYX, event> (Socket Error: Connection reset by peer.) <20090121-10:38:52, FIX.4.2:LTINTTEST->ONYX, event> (Disconnecting) <20090121-10:38:52, FIX.4.2:LTINTTEST->ONYX, event> (Connecting to 66.150.110.105 on port 4759) <20090121-10:38:53, FIX.4.2:LTINTTEST->ONYX, outgoing> (8=FIX.4.2☺9=69☺35=A☺34=11☺49=LTINTTEST☺52=20090121-10:38:53.222☺56=ONYX☺98=0☺108=30☺10=070☺) <20090121-10:38:53, FIX.4.2:LTINTTEST->ONYX, event> (Initiated logon request) <20090121-10:38:56, FIX.4.2:LTINTTEST->ONYX, event> (Socket Error: Connection reset by peer.) <20090121-10:38:56, FIX.4.2:LTINTTEST->ONYX, event> (Disconnecting) Can anyone help me in this? Thanks in advance. Nikhil |
From: Alexey Z. <ale...@in...> - 2009-01-19 18:09:36
|
Is quickfix bug tracker down? Where I can open issues? -- Regards, Alexey Zubko |
From: V. K. <vk...@el...> - 2009-01-17 00:36:41
|
Thanks for the replies. Creating multiple "spinning/waiting" threads doesn't sound very appealing. Microsoft have a neat solution with their Parallel Extensions Framework (PFX) that's currently in CTP (a part of .NET 4.0 according to the VS2010 CTP). Parallel.ForEach(acceptor.getSessions(), session => { Session.SendToTarget(message,session); } I haven't measured the speed increase (if any) but I hope MS make this idea work for us .NET programmers. nisbus |
From: V. K. <vk...@el...> - 2009-01-17 00:08:33
|
Hi, I just tried building quickfix using VS8. 1. downloaded the source 2. edited the quickfix\src\config_windows.h file to include "#define HAVE_MSSQL 1" (per instructions from the documentation http://www.quickfixengine.org/quickfix/doc/html/building.html). 3. opened quickfix_v8.sln from the quickfix directory. (was asked to convert the project since it was created with an earlier version of VS). 4. built the solution successfully. If I run the sample executor I get the following error: System.BadImageFormatException was unhandled Message="Could not load file or assembly 'quickfix_net, Version=1.0.3303.42637, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format." Source="executor_csharp" FileName="quickfix_net, Version=1.0.3303.42637, Culture=neutral, PublicKeyToken=null" FusionLog="=== Pre-bind state information ===\r\nLOG: User = ****\r\nLOG: DisplayName = quickfix_net, Version=1.0.3303.42637, Culture=neutral, PublicKeyToken=null\n (Fully-specified)\r\nLOG: Appbase = file:///C:/Users/***/Documents/quickfix/bin/debug/executor_csharp/\r\nLOG: Initial PrivatePath = NULL\r\nCalling assembly : executor_csharp, Version=1.0.3303.43050, Culture=neutral, PublicKeyToken=null.\r\n===\r\nLOG: This bind starts in default load context.\r\nLOG: No application configuration file found.\r\nLOG: Using machine configuration file from C:\\Windows\\Microsoft.NET\\Framework64\\v2.0.50727\\config\\machine.config. \r\nLOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).\r\nLOG: Attempting download of new URL file:///C:/Users/***/Documents/quickfix/bin/debug/executor_csharp/quickfix_n et.DLL.\r\nERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated.\r\n" StackTrace: at executor_csharp.Executor.Main(String[] args) at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException: Stack trace: at executor_csharp.Executor.Main(String[] args) at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() I also tried creating a new console project that referenced quickfix\src\.NET\debug\vs8\quickfix_net.dll but the same error appeared. I'm running on Vista 64bit and was wondering if I need to make so special consessions for that? I tried building the executor as a 64bit app and changed it to .NET v3.5 but the same error. Anyone else tried this? Thanks, nisbus |
From: Vincent P. <vpr...@ph...> - 2009-01-14 02:50:39
|
When my test program sends 50,000 FIX trades, some of the execution report messages get lost on the return trip. This doesn't happen when the test size is smaller, like 20,000 trades. Some ERs appear to be lost and my theory is that the quickfix buffer is overflowing. I am using the file store. How can I increase the size of the buffer, or guarantee that messages won't be dropped? I am setting PersistMessages in my .cfg file of both the initiator and the acceptor ( attached ). Still, I am losing messages. Is there something else I need to do? -- Vincent [DEFAULT] ConnectionType=initiator HeartBtInt=30 ReconnectInterval=1 FileStorePath=sellerstore FileLogPath=log StartTime=00:00:00 EndTime=00:00:00 UseDataDictionary=N SocketConnectHost=localhost PersistMessages=Y [DEFAULT] ConnectionType=acceptor SocketAcceptPort=8003 SocketReuseAddress=Y StartTime=00:00:00 EndTime=00:00:00 PersistMessages=Y |
From: V. K. <vk...@el...> - 2009-01-14 01:10:00
|
Hi, I just started using the .NET quickfix lib and finding it surprisingly simple to use. I have an acceptor that my clients connect to. The acceptor is getting data from an exchange and then needs to forward the messages to all logged on clients (the exchange isn't using FIX). When I convert messages from the exchange to FIX and the acceptor picks it up it seems to me that I would have to loop through the sessions and send the message to each client. This seems like an unnecessarily arduous task so I wondering if there is a way to have the acceptor broadcast messages to all connected clients? this is how I'm doing this now: ArrayList sessions = acceptor.GetSessions(); for (int i=0; i< sessions.Count;i++) { Session.sendMessageToTargets(msg,((SessionID)sessions[i])); } I would like to be able to just call acceptor.SendAll(msg); instead. Thanks, nisbus |
From: Andrei G. <an...@gm...> - 2009-01-09 16:20:57
|
On Fri, Jan 9, 2009 at 1:54 AM, Wilhelm Thomas <th...@cu...> wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > hello > > Happy new year to all! > > I'm using the .net api > > I'm working on a gateway, I receive a message from my acceptor function > > fromApp( > > Message message, SessionID sessionID) > > 1) I basically need to change some fields from this message and forward back the message to my Initiator > > I'm basically doing this: > > > message.removeField((int)49); > message.removeField(56); > Console.Out.WriteLine(">>>> m=" + message.ToString()); > message.setField(49, "MAXP2"); // SenderCompID > message.setField(56, "MAX2PRICE"); // TargetCompID > Console.Out.WriteLine(">>>> m=" + message.ToString()); > message.setString(49, "MAXP2"); // SenderCompID > message.setString(56, "MAX2PRICE"); // TargetCompID > Console.Out.WriteLine(">>>> m=" + message.ToString()); > > > but when I call some ,remove, replace, setField, setString, nothing change the > fields 49 and 56? You are setting header fields into the body. This is a no-no. The correct way to do it would be: message.getHeader().setString(49, "MAXP2"); // SenderCompID message.getHeader().setString(56, "MAX2PRICE"); // TargetCompID Anyway, keep in mind that if you want to send this message via QuickFIX (i.e. SendToTarget), MAXP2-MAX2PRICE must be a valid session defined in your coniguration file. > > 2) I also try to loop over the fields and create a new message but I do not get the correct field > > System.Collections. > > IEnumerator enum_ = message.GetEnumerator(); > QuickFix.Field key = null; > while(enum_.MoveNext()){ > key = (Field)enum_.Current; > message2.setField(key.getField(), (string)key.getObject()); > } > > Here is what I see once this while execute: > > + message {8=FIX.4.2 9=225 35=V 34=2 49=BLABLA 52=20090109-03:49:01.464 56=GATEWAY146=1 55=6E Sep08 48=6E012008090000003232 167=FUT 200=200809 202=0 207=TTSIM 262=1/8/2009 7:49:01 PM172 263=1 264=10 265=1 266=Y 267=3 269=0 269=1 269=2 10=192 } QuickFix.Message {QuickFix42.MarketDataRequest} > > + message2 {8=FIX.4.2 9=69 35=V 146=1 262=1/8/2009 7:49:01 PM172 263=1 264=10 265=1 266=Y 267=3 10=251 } QuickFix42.MarketDataRequest > > Which is weird as message2 isn't at all like message? > > Any idea why? 1) You are not iterating over header/trailer fields. 2) You won't get fields in repeating group, as they are kept in separate structures. |
From: Peter P. <pet...@ho...> - 2009-01-09 15:37:07
|
Dear Wilhem, I'm new to QuickFix but maybe I can help? As someone coming new to it, I also found that Quickfix was very tricky to use; it displays truly bizarre behaviour at times! I do not believe that you can build a message manually in this way, because Quickfix wants to understand the structure of what you are building (with repeating groups etc) and will probably just throw out things that it does not like. When I needed to do what you are trying, I decided to build a new message by knowing what fields should be present in the incoming message and getting those values explicitly then rebuilding the groups using the QF-standard way, not by simply setting fields manually. Yours, Dan Date: Thu, 8 Jan 2009 19:54:41 -0800 From: th...@cu... To: qui...@li... Subject: [Quickfix-developers] How do I change the field of a message from the .net api? hello Happy new year to all! I'm using the .net api I'm working on a gateway, I receive a message from my acceptor function fromApp(Message message, SessionID sessionID) 1) I basically need to change some fields from this message and forward back the message to my Initiator I'm basically doing this: message.removeField((int)49); message.removeField(56); Console.Out.WriteLine(">>>> m=" + message.ToString()); message.setField(49, "MAXP2"); // SenderCompID message.setField(56, "MAX2PRICE"); // TargetCompID Console.Out.WriteLine(">>>> m=" + message.ToString()); message.setString(49, "MAXP2"); // SenderCompID message.setString(56, "MAX2PRICE"); // TargetCompID Console.Out.WriteLine(">>>> m=" + message.ToString()); but when I call some ,remove, replace, setField, setString, nothing change the fields 49 and 56? 2) I also try to loop over the fields and create a new message but I do not get the correct field System.Collections.IEnumerator enum_ = message.GetEnumerator(); QuickFix.Field key = null; while(enum_.MoveNext()){ key = (Field)enum_.Current; message2.setField(key.getField(), (string)key.getObject()); } Here is what I see once this while execute: + message {8=FIX.4.29=22535=V34=249=BLABLA52=20090109-03:49:01.46456=GATEWAY146=155=6E Sep0848=6E012008090000003232167=FUT200=200809202=0207=TTSIM262=1/8/2009 7:49:01 PM172263=1264=10265=1266=Y267=3269=0269=1269=210=192} QuickFix.Message {QuickFix42.MarketDataRequest} + message2 {8=FIX.4.29=6935=V146=1262=1/8/2009 7:49:01 PM172263=1264=10265=1266=Y267=310=251} QuickFix42.MarketDataRequest Which is weird as message2 isn't at all like message? Any idea why? thanks a lot for your help Wilhem _________________________________________________________________ Choose the perfect PC or mobile phone for you http://clk.atdmt.com/UKM/go/130777504/direct/01/ |
From: Peter P. <pet...@ho...> - 2009-01-09 15:21:11
|
I have three applications that want to talk to each other in a chain. Because they are three separate applications (not three DLLs in the same process), all three instances of Quickfix should be completely independent. So, I have an initiator A that connects to a hybrid (acceptor+initiator) application B, that connects to an acceptor-only application C If I start them all in quick succession on the same Windows machine (e.g. by running a batch file), B successfully connects to C, but A never manages to connect to B. I get the admin notification in A saying that it sent the Logon message, but nothing in B to say that it received it. If I start C, then pause for a few seconds, then start B, then pause for a few seconds, then start A, the logons all work properly. If I enable file logging, to see what events are being posted. Absolutely *no* events get posted when I do the batch version but the slow-and-steady version posts events and logs on. Has anyone else seen behaviour like this? Is Quickfix known to be a bit sensitive (flaky even?) when starting up? Thanks, Dan _________________________________________________________________ Imagine a life without walls. See the possibilities http://clk.atdmt.com/UKM/go/122465943/direct/01/ |
From: Wilhelm T. <th...@cu...> - 2009-01-09 04:43:21
|
hello Happy new year to all! I'm using the .net api I'm working on a gateway, I receive a message from my acceptor function fromApp(Message message, SessionID sessionID) 1) I basically need to change some fields from this message and forward back the message to my Initiator I'm basically doing this: message.removeField((int)49); message.removeField(56); Console.Out.WriteLine(">>>> m=" + message.ToString()); message.setField(49, "MAXP2"); // SenderCompID message.setField(56, "MAX2PRICE"); // TargetCompID Console.Out.WriteLine(">>>> m=" + message.ToString()); message.setString(49, "MAXP2"); // SenderCompID message.setString(56, "MAX2PRICE"); // TargetCompID Console.Out.WriteLine(">>>> m=" + message.ToString()); but when I call some ,remove, replace, setField, setString, nothing change the fields 49 and 56? 2) I also try to loop over the fields and create a new message but I do not get the correct field System.Collections.IEnumerator enum_ = message.GetEnumerator(); QuickFix.Field key = null; while(enum_.MoveNext()){ key = (Field)enum_.Current; message2.setField(key.getField(), (string)key.getObject()); } Here is what I see once this while execute: + message {8=FIX.4.29=22535=V34=249=BLABLA52=20090109-03:49:01.46456=GATEWAY146=155=6E Sep0848=6E012008090000003232167=FUT200=200809202=0207=TTSIM262=1/8/2009 7:49:01 PM172263=1264=10265=1266=Y267=3269=0269=1269=210=192} QuickFix.Message {QuickFix42.MarketDataRequest} + message2 {8=FIX.4.29=6935=V146=1262=1/8/2009 7:49:01 PM172263=1264=10265=1266=Y267=310=251} QuickFix42.MarketDataRequest Which is weird as message2 isn't at all like message? Any idea why? thanks a lot for your help Wilhem |
From: Edward_Cao <Cha...@gl...> - 2009-01-09 02:09:02
|
I've compiled the DLL in vc but got a crash in java when using jni Error Log file: # # An unexpected error has been detected by Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x100b0926, pid=2848, tid=3824 # # Java VM: Java HotSpot(TM) Client VM (11.0-b16 mixed mode windows-x86) # Problematic frame: # C [quickfix_jni.dll+0xb0926] # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # --------------- T H R E A D --------------- Current thread (0x003b6c00): JavaThread "main" [_thread_in_native, id=3824, stack(0x008c0000,0x00910000)] siginfo: ExceptionCode=0xc0000005, reading address 0x00000008 Registers: EAX=0x00000004, EBX=0x06b95648, ECX=0x00000004, EDX=0x0090f3f8 ESP=0x0090f23c, EBP=0x0090f314, ESI=0x0090f3e8, EDI=0x0090f314 EIP=0x100b0926, EFLAGS=0x00010216 Top of Stack: (sp=0x0090f23c) 0x0090f23c: 0090f3cc 0090f3e8 06b95648 cccccccc 0x0090f24c: cccccccc cccccccc cccccccc cccccccc 0x0090f25c: cccccccc cccccccc cccccccc cccccccc 0x0090f26c: cccccccc cccccccc cccccccc cccccccc 0x0090f27c: cccccccc cccccccc cccccccc cccccccc 0x0090f28c: cccccccc cccccccc cccccccc cccccccc 0x0090f29c: cccccccc cccccccc cccccccc cccccccc 0x0090f2ac: cccccccc cccccccc cccccccc cccccccc Instructions: (pc=0x100b0926) 0x100b0916: 00 00 b8 cc cc cc cc f3 ab 59 89 4d f8 8b 45 f8 0x100b0926: 8b 48 04 51 e8 e4 60 fd ff 83 c4 04 5f 5e 5b 81 Stack: [0x008c0000,0x00910000], sp=0x0090f23c, free space=316k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [quickfix_jni.dll+0xb0926] C [quickfix_jni.dll+0x116986] C [quickfix_jni.dll+0x115f7a] C [quickfix_jni.dll+0x115314] C [quickfix_jni.dll+0x114526] C [quickfix_jni.dll+0x162cfd] C [quickfix_jni.dll+0x13f9f6] C [quickfix_jni.dll+0x13f78e] C [quickfix_jni.dll+0xd3c1e] j quickfix.SessionSettings.create(Ljava/io/InputStream;)V+0 j quickfix.SessionSettings.<init>(Ljava/io/InputStream;)V+6 j MyClass.main([Ljava/lang/String;)V+31 v ~StubRoutines::call_stub Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j quickfix.SessionSettings.create(Ljava/io/InputStream;)V+0 j quickfix.SessionSettings.<init>(Ljava/io/InputStream;)V+6 j MyClass.main([Ljava/lang/String;)V+31 v ~StubRoutines::call_stub --------------- P R O C E S S --------------- Java Threads: ( => current thread ) 0x0aadc000 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=1308, stack(0x0ae90000,0x0aee0000)] 0x0aad9c00 JavaThread "CompilerThread0" daemon [_thread_blocked, id=1724, stack(0x0ae40000,0x0ae90000)] 0x0aacc400 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=932, stack(0x0adf0000,0x0ae40000)] 0x0aacac00 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=2780, stack(0x0ada0000,0x0adf0000)] 0x0aac8400 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=380, stack(0x0ad50000,0x0ada0000)] 0x0aabd400 JavaThread "Attach Listener" daemon [_thread_blocked, id=1964, stack(0x0ac70000,0x0acc0000)] 0x0aabc000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2464, stack(0x0ac20000,0x0ac70000)] 0x0aaac400 JavaThread "Finalizer" daemon [_thread_blocked, id=3776, stack(0x0abd0000,0x0ac20000)] 0x0aaa7800 JavaThread "Reference Handler" daemon [_thread_blocked, id=2104, stack(0x0ab80000,0x0abd0000)] =>0x003b6c00 JavaThread "main" [_thread_in_native, id=3824, stack(0x008c0000,0x00910000)] Other Threads: 0x0aaa2c00 VMThread [stack: 0x0ab30000,0x0ab80000] [id=2704] 0x0aadd800 WatcherThread [stack: 0x0aee0000,0x0af30000] [id=2068] VM state:not at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread: None Heap def new generation total 960K, used 362K [0x02990000, 0x02a90000, 0x02e70000) eden space 896K, 40% used [0x02990000, 0x029eaa40, 0x02a70000) from space 64K, 0% used [0x02a70000, 0x02a70000, 0x02a80000) to space 64K, 0% used [0x02a80000, 0x02a80000, 0x02a90000) tenured generation total 4096K, used 0K [0x02e70000, 0x03270000, 0x06990000) the space 4096K, 0% used [0x02e70000, 0x02e70000, 0x02e70200, 0x03270000) compacting perm gen total 12288K, used 2071K [0x06990000, 0x07590000, 0x0a990000) the space 12288K, 16% used [0x06990000, 0x06b95d70, 0x06b95e00, 0x07590000) No shared spaces configured. Dynamic libraries: 0x00400000 - 0x00424000 C:\Program Files\Java\jre6\bin\javaw.exe 0x7c900000 - 0x7c9b0000 C:\WINDOWS\system32\ntdll.dll 0x7c800000 - 0x7c8f4000 C:\WINDOWS\system32\kernel32.dll 0x77dd0000 - 0x77e6b000 C:\WINDOWS\system32\ADVAPI32.dll 0x77e70000 - 0x77f01000 C:\WINDOWS\system32\RPCRT4.dll 0x77d40000 - 0x77dd0000 C:\WINDOWS\system32\USER32.dll 0x77f10000 - 0x77f58000 C:\WINDOWS\system32\GDI32.dll 0x76390000 - 0x763ad000 C:\WINDOWS\system32\IMM32.DLL 0x629c0000 - 0x629c9000 C:\WINDOWS\system32\LPK.DLL 0x74d90000 - 0x74dfb000 C:\WINDOWS\system32\USP10.dll 0x77c10000 - 0x77c68000 C:\WINDOWS\system32\msvcrt.dll 0x7c340000 - 0x7c396000 C:\Program Files\Java\jre6\bin\msvcr71.dll 0x6d800000 - 0x6da56000 C:\Program Files\Java\jre6\bin\client\jvm.dll 0x76b40000 - 0x76b6d000 C:\WINDOWS\system32\WINMM.dll 0x6d280000 - 0x6d288000 C:\Program Files\Java\jre6\bin\hpi.dll 0x76bf0000 - 0x76bfb000 C:\WINDOWS\system32\PSAPI.DLL 0x6d370000 - 0x6d399000 C:\Program Files\Java\jre6\bin\jdwp.dll 0x6d6a0000 - 0x6d6a6000 C:\Program Files\Java\jre6\bin\npt.dll 0x6d7b0000 - 0x6d7bc000 C:\Program Files\Java\jre6\bin\verify.dll 0x6d320000 - 0x6d33f000 C:\Program Files\Java\jre6\bin\java.dll 0x6d7f0000 - 0x6d7ff000 C:\Program Files\Java\jre6\bin\zip.dll 0x6d1f0000 - 0x6d1f7000 C:\Program Files\Java\jre6\bin\dt_socket.dll 0x71ab0000 - 0x71ac7000 C:\WINDOWS\system32\WS2_32.dll 0x71aa0000 - 0x71aa8000 C:\WINDOWS\system32\WS2HELP.dll 0x71a50000 - 0x71a8f000 C:\WINDOWS\System32\mswsock.dll 0x76f20000 - 0x76f47000 C:\WINDOWS\system32\DNSAPI.dll 0x76fb0000 - 0x76fb8000 C:\WINDOWS\System32\winrnr.dll 0x76f60000 - 0x76f8c000 C:\WINDOWS\system32\WLDAP32.dll 0x76fc0000 - 0x76fc6000 C:\WINDOWS\system32\rasadhlp.dll 0x662b0000 - 0x66308000 C:\WINDOWS\system32\hnetcfg.dll 0x71a90000 - 0x71a98000 C:\WINDOWS\System32\wshtcpip.dll 0x10000000 - 0x101d2000 C:\quickfix\lib\debug\quickfix_jni.dll 0x774e0000 - 0x7761c000 C:\WINDOWS\system32\ole32.dll 0x77120000 - 0x771ac000 C:\WINDOWS\system32\OLEAUT32.dll 0x10480000 - 0x1053c000 C:\WINDOWS\system32\MSVCP71D.dll 0x10200000 - 0x10287000 C:\WINDOWS\system32\MSVCR71D.dll VM Arguments: jvm_args: -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:3533 -Dfile.encoding=Cp1252 java_command: MyClass conf.ini Launcher Type: SUN_STANDARD Environment Variables: JAVA_HOME=C:\Java\jdk1.6.0_11 CLASSPATH=.;C:\Java\jdk1.6.0_11\lib;C:\Java\jdk1.6.0_11\lib\debug PATH=C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\GL Tools\apitools\bin;C:\GL Tools\apitools\tools;C:\apache-ant-1.7.1\bin;C:\Java\jdk1.6.0_11\bin;c:\quickfix\lib;c:\quickfix\lib\debug USERNAME=ccao OS=Windows_NT PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 3, GenuineIntel --------------- S Y S T E M --------------- OS: Windows XP Build 2600 Service Pack 2 CPU:total 2 (1 cores per cpu, 2 threads per core) family 15 model 4 stepping 3, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ht Memory: 4k page, physical 1046620k(232180k free), swap 2517564k(1845796k free) vm_info: Java HotSpot(TM) Client VM (11.0-b16) for windows-x86 JRE (1.6.0_11-b03), built on Nov 10 2008 02:15:12 by "java_re" with MS VC++ 7.1 time: Thu Jan 08 17:38:35 2009 elapsed time: 0 seconds -- View this message in context: http://www.nabble.com/Could-any-one-help-me--Can%27t-start-QF-in-java-tp21347178p21347178.html Sent from the QuickFIX - Dev mailing list archive at Nabble.com. |
From: Antonio C. <ant...@ga...> - 2009-01-07 18:50:47
|
Hello, Oren. First of all let me wish A Happy New Year to you and all the people in this newsgroup. In your email message below dated Jan. 2008 you proposed a possible date of 2nd half 2008 for QuickFIX supporting FIX 5.0. So, are we close to a release date ? Best regards, AntonioCaroselli www.gatelab.com Oren Miller wrote: > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > FIX 5.0 should be available by then. I can't promise the same for > FAST however. > > --oren > > On Jan 10, 2008, at 12:34 PM, Scott Mitchell wrote: > >> QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/ >> html/index.html >> QuickFIX Support: http://www.quickfixengine.org/services.html >> >> Greetings, >> >> Is there any update available on QuickFIX support for FIX 5.0 and/or >> FAST? >> >> We are going to need both for various projects in the second half of >> this year and I need to decide if we will be able to stick with >> QuickFIX >> (which we're currently extremely happy with) or if I need to start >> investigating alternatives. >> >> Cheers, >> >> Scott >> >> ---------------------------------------------------------------------- >> --- >> Check out the new SourceForge.net Marketplace. >> It's the best place to buy or sell services for >> just about anything Open Source. >> http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/ >> marketplace >> _______________________________________________ >> Quickfix-developers mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfix-developers >> > > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace > > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
From: Alexey Z. <ale...@in...> - 2009-01-07 17:40:50
|
There is a bug in version 1.12.4 revision 1906: pInitiator->getLog() could return NULL (initiator without log factory). I got exception at least in one place, may be there are other files: THREAD_PROC ThreadedSocketInitiator::socketThread( void* p ) { QF_STACK_TRY ..... if( !pConnection->connect() ) { // exception is here: pInitiator->getLog()->onEvent( "Connection failed" ); -- Regards, Alexey Zubko Head Of The Core Development Infinium Capital Corp, 106 Front Street East, Suite 200, Toronto, ON M5A 1E1 Phone: (416) 360-5228 |
From: Francis G. <fr...@at...> - 2009-01-07 04:07:18
|
Douglas, Did you install the C++ libraries on your server? vcredist_x86 (SP1).exe Francis |
From: Alexey Z. <ale...@in...> - 2009-01-06 22:18:40
|
Oren, Quickfix developers, I used to modify the settings parameters before running initiator/acceptor, but the new feature (revision 1966) throws ConfigError exception breaks that completely. That could be nice to have such a feature to modify parameters. Is there are chance to get a non const Dictionary& get() method or something? For example, I append the current date to the file paths, so the files are put into the write directory: m_settings = new FIX::SessionSettings(config_file); time_t ltime = time(0); struct tm *newtime = gmtime(<ime); const int DTSTRSIZE = 50; char timestr[DTSTRSIZE+1]; strftime(timestr, DTSTRSIZE, "\\%Y%m%d", newtime); typedef std::set<FIX::SessionID> TSessionsSet; TSessionsSet TheSet = m_settings->getSessions(); for(TSessionsSet::iterator it = TheSet.begin(); it != TheSet.end(); it++) { FIX::SessionID SessionID = *it; // that could be nice to get reference to the Dictionary instead here: FIX::Dictionary Dictionary = m_settings->get(SessionID); std::string path = Dictionary.getString(FIX::FILE_LOG_PATH); FIX::file_mkdir(path.c_str()); path += timestr; if(suffix) { path += suffix; } Dictionary.setString(FIX::FILE_LOG_PATH, path); path = Dictionary.getString(FIX::FILE_STORE_PATH); FIX::file_mkdir(path.c_str()); path += timestr; if(suffix) { path += suffix; } Dictionary.setString(FIX::FILE_STORE_PATH, path); // here is I got the exception :( m_settings->set(SessionID, Dictionary); } } m_factory = new FIX::QFMyFileStoreFactory(*m_settings); m_logFactory = new FIX::FileLogFactory(*m_settings); m_initiator = new FIX::ThreadedSocketInitiator(*this, *m_factory, *m_settings, *m_logFactory); ...... Thank you in advance. -- Regards, Alexey Zubko |
From: Malinka R. <ael...@gm...> - 2009-01-06 17:19:54
|
Thank you for the response, and you're exactly right that is what was happening however I was able to fix it by moving my cleanup to a slightly different situation. You're right it is very frustrating that windows provides a DllMain call which could be very useful for Initialization and Cleanup but then cripple it with things like the threading restrictions, and not being able to call into other (even windows) libraries. On Tue, Jan 6, 2009 at 09:14, Peter Piper <pet...@ho...> wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > > I don't know about the internals of QuickFix but it is not legal to start and stop threads from within the initialisation and shutdown routines of a DLL (DllMain). You may not be doing this explicitly but QuickFix may be trying to clear up its threads when the DLL is unloaded and its static data is deleted automatically. The same effect does not happen when you put the Quickfix code into an EXE rather than a DLL - it is a frustrating limitation of Windows DLLs. > > Are you explicitly starting and stopping Quickfix, or do you assume that it will just clean itself up when your main EXE shuts down? If you are not doing so already, you might try creating, initializing and starting the Quickfix objects (Application etc) with an explicit call to the constructor (new CMyApplication etc), and doing the same thing to stop(), shutdown, delete everything explicitly before you unload the DLL or exit your program. > > I do not know that this would solve the problem but I have found that threads and DLLs do not mix very happily and doing this might remove the cause of your deadlocks. > > Dan > >> Date: Fri, 26 Dec 2008 17:25:26 -0500 >> From: ael...@gm... >> To: qui...@li... >> Subject: [Quickfix-developers] WaitForSingleObject deadlock >> >> QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html >> QuickFIX Support: http://www.quickfixengine.org/services.html >> >> while doing some improvements to one of our QF systems, i was running >> into some deadlocks. one group of which seem to be related to the >> Windows API call to WaitForSingleObject as a thread join mechanism. >> however for some reason in this situation, which is unfortunately >> fairly complicated as I am attempting to extend the functionality of >> another application by creating a DLL and implementing call backs for >> the Application to call into and using an API to call into of the >> applications, which requires that I use the Visual Studio 6 C/C++ >> compiler to create this DLL, it seems this call is not behaving itself >> where instead of returning successfully when the thread function >> returns, it's never returning when called with an INFINITE for the >> timeout and returns with a timeout error when specified with a >> timeout, even though the thread in question is returning (logged just >> before return happens and same exact set of codes works where instead >> of calling WaitForSingleObject instead at the end of the thread >> function i set a flag to true signifying completion of thread and then >> check that flag with a threaded sleep instead of calling >> WaitForSingleObject). >> >> The above solution of course was applied to my application side logic >> where threading was used, however Quickfix is attempting to make use >> of the same Windows API call in Utility.cpp in the thread_join >> function which of course with the above situation is causing any calls >> to thread_join to hang indefinitely. Does anyone have any ideas why >> this could be happening and a proper way to solve it? >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> Quickfix-developers mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfix-developers > > ________________________________ > Take your friends with you with Mobile Messenger. Click Here! > ------------------------------------------------------------------------------ > > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
From: Peter P. <pet...@ho...> - 2009-01-06 14:14:19
|
I don't know about the internals of QuickFix but it is not legal to start and stop threads from within the initialisation and shutdown routines of a DLL (DllMain). You may not be doing this explicitly but QuickFix may be trying to clear up its threads when the DLL is unloaded and its static data is deleted automatically. The same effect does not happen when you put the Quickfix code into an EXE rather than a DLL - it is a frustrating limitation of Windows DLLs. Are you explicitly starting and stopping Quickfix, or do you assume that it will just clean itself up when your main EXE shuts down? If you are not doing so already, you might try creating, initializing and starting the Quickfix objects (Application etc) with an explicit call to the constructor (new CMyApplication etc), and doing the same thing to stop(), shutdown, delete everything explicitly before you unload the DLL or exit your program. I do not know that this would solve the problem but I have found that threads and DLLs do not mix very happily and doing this might remove the cause of your deadlocks. Dan > Date: Fri, 26 Dec 2008 17:25:26 -0500 > From: ael...@gm... > To: qui...@li... > Subject: [Quickfix-developers] WaitForSingleObject deadlock > > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > while doing some improvements to one of our QF systems, i was running > into some deadlocks. one group of which seem to be related to the > Windows API call to WaitForSingleObject as a thread join mechanism. > however for some reason in this situation, which is unfortunately > fairly complicated as I am attempting to extend the functionality of > another application by creating a DLL and implementing call backs for > the Application to call into and using an API to call into of the > applications, which requires that I use the Visual Studio 6 C/C++ > compiler to create this DLL, it seems this call is not behaving itself > where instead of returning successfully when the thread function > returns, it's never returning when called with an INFINITE for the > timeout and returns with a timeout error when specified with a > timeout, even though the thread in question is returning (logged just > before return happens and same exact set of codes works where instead > of calling WaitForSingleObject instead at the end of the thread > function i set a flag to true signifying completion of thread and then > check that flag with a threaded sleep instead of calling > WaitForSingleObject). > > The above solution of course was applied to my application side logic > where threading was used, however Quickfix is attempting to make use > of the same Windows API call in Utility.cpp in the thread_join > function which of course with the above situation is causing any calls > to thread_join to hang indefinitely. Does anyone have any ideas why > this could be happening and a proper way to solve it? > > ------------------------------------------------------------------------------ > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers _________________________________________________________________ Are you a PC? Upload your PC story and show the world http://clk.atdmt.com/UKM/go/122465942/direct/01/ |