int testFileStoreNewOrderSingle( int count ) { FIX::BeginString beginString( FIX::BeginString_FIX42 ); FIX::SenderCompID senderCompID( "SENDER" ); FIX::TargetCompID targetCompID( "TARGET" ); FIX::SessionID id( beginString, senderCompID, targetCompID ); FIX::ClOrdID clOrdID( "ORDERID" ); FIX::HandlInst handlInst( '1' ); FIX::Symbol symbol( "LNUX" ); FIX::Side side( FIX::Side_BUY ); FIX::TransactTime transactTime; FIX::OrdType ordType( FIX::OrdType_MARKET ); FIX42::NewOrderSingle message ( clOrdID, handlInst, symbol, side, transactTime, ordType ); message.getHeader().set( FIX::MsgSeqNum( 1 ) ); std::string messageString = message.toString(); FIX::FileStore store( "store", id ); store.reset(); count = count - 1; int start = GetTickCount(); for ( int i = 0; i <= count; ++i ) { store.set( ++i, messageString ); } int end = GetTickCount(); store.reset(); return end - start; }
void Application::updateOrder( const Order& order, char status ) { FIX::TargetCompID targetCompID( order.getOwner() ); FIX::SenderCompID senderCompID( order.getTarget() ); FIX42::ExecutionReport fixOrder ( FIX::OrderID ( order.getClientID() ), FIX::ExecID ( m_generator.genExecutionID() ), FIX::ExecTransType ( FIX::ExecTransType_NEW ), FIX::ExecType ( status ), FIX::OrdStatus ( status ), FIX::Symbol ( order.getSymbol() ), FIX::Side ( convert( order.getSide() ) ), FIX::LeavesQty ( order.getOpenQuantity() ), FIX::CumQty ( order.getExecutedQuantity() ), FIX::AvgPx ( order.getAvgExecutedPrice() ) ); fixOrder.set( FIX::ClOrdID( order.getClientID() ) ); fixOrder.set( FIX::OrderQty( order.getQuantity() ) ); if ( status == FIX::OrdStatus_FILLED || status == FIX::OrdStatus_PARTIALLY_FILLED ) { fixOrder.set( FIX::LastShares( order.getLastExecutedQuantity() ) ); fixOrder.set( FIX::LastPx( order.getLastExecutedPrice() ) ); } try { FIX::Session::sendToTarget( fixOrder, senderCompID, targetCompID ); } catch ( FIX::SessionNotFound& ) {}}
Session* Acceptor::getSession ( const std::string& msg, Responder& responder ) { Message message; if ( !message.setStringHeader( msg ) ) return 0; BeginString beginString; SenderCompID clSenderCompID; TargetCompID clTargetCompID; MsgType msgType; try { message.getHeader().getField( beginString ); message.getHeader().getField( clSenderCompID ); message.getHeader().getField( clTargetCompID ); message.getHeader().getField( msgType ); if ( msgType != "A" ) return 0; SenderCompID senderCompID( clTargetCompID ); TargetCompID targetCompID( clSenderCompID ); SessionID sessionID( beginString, senderCompID, targetCompID ); Sessions::iterator i = m_sessions.find( sessionID ); if ( i != m_sessions.end() ) { i->second->setResponder( &responder ); return i->second; } } catch ( FieldNotFound& ) {} return 0; }
void Application::rejectOrder ( const FIX::SenderCompID& sender, const FIX::TargetCompID& target, const FIX::ClOrdID& clOrdID, const FIX::Symbol& symbol, const FIX::Side& side, const std::string& message ) { FIX::TargetCompID targetCompID( sender.getValue() ); FIX::SenderCompID senderCompID( target.getValue() ); FIX42::ExecutionReport fixOrder ( FIX::OrderID ( clOrdID.getValue() ), FIX::ExecID ( m_generator.genExecutionID() ), FIX::ExecTransType ( FIX::ExecTransType_NEW ), FIX::ExecType ( FIX::ExecType_REJECTED ), FIX::OrdStatus ( FIX::ExecType_REJECTED ), symbol, side, FIX::LeavesQty( 0 ), FIX::CumQty( 0 ), FIX::AvgPx( 0 ) ); fixOrder.set( clOrdID ); fixOrder.set( FIX::Text( message ) ); try { FIX::Session::sendToTarget( fixOrder, senderCompID, targetCompID ); } catch ( FIX::SessionNotFound& ) {}}