1+ require 'quickfix_ruby'
2+
3+ class Application < Quickfix ::Application
4+
5+ def initiatlize
6+ @orderIDs = Hash . new
7+ end
8+
9+ def onCreate ( sessionID )
10+ reset ( )
11+ session = Quickfix ::Session . lookupSession ( sessionID )
12+ session . reset ( ) if session != nil
13+ end
14+
15+ def onLogon ( sessionID )
16+ end
17+
18+ def onLogout ( sessionID )
19+ reset ( )
20+ end
21+
22+ def toAdmin ( sessionID , message )
23+ end
24+
25+ def fromAdmin ( sessionID , message )
26+ end
27+
28+ def toApp ( sessionID , message )
29+ end
30+
31+ def fromApp ( message , sessionID )
32+ msgType = message . getHeader ( ) . getField ( Quickfix ::MsgType . new )
33+ if ( msgType . getString ( ) == Quickfix ::MsgType_NewOrderSingle ( ) )
34+ echo = Quickfix ::Message . new ( message )
35+ possResend = Quickfix ::PossResend . new ( false )
36+ if ( message . getHeader ( ) . isSetField ( possResend ) )
37+ message . getHeader ( ) . getField ( possResend )
38+ end
39+
40+ clOrdID = Quickfix ::ClOrdID . new
41+ message . getField ( clOrdID )
42+
43+ if ( possResend . getValue ( ) )
44+ if ( @orderIDs . has_key? ( [ clOrdID . getString ( ) , sessionID . toString ( ) ] ) )
45+ return
46+ end
47+ end
48+ @orderIDs [ [ clOrdID . getString ( ) , sessionID . toString ( ) ] ] = [ clOrdID . getString ( ) , sessionID . toString ( ) ]
49+ Quickfix ::Session ::sendToTarget ( echo , sessionID )
50+ elsif ( msgType . getString ( ) == Quickfix ::MsgType_SecurityDefinition ( ) )
51+ echo = Quickfix ::Message . new ( message )
52+ Quickfix ::Session ::sendToTarget ( echo , sessionID )
53+ else
54+ raise Quickfix ::UnsupportedMessageType . new
55+ end
56+ end
57+
58+ def reset
59+ @orderIDs = Hash . new
60+ end
61+
62+ end
0 commit comments