<?xml version="1.0" encoding="UTF-8"?>
<project name="fix_new_order_single" default="all">
    <dirname property="base.dir" file="${ant.file}"/>
    <import file="${base.dir}/fix_common.xml"/>

    <!-- ================================================= -->
    <target name="all" depends="clean, init, test, stop">
    </target>
    <!-- ================================================= -->

    <target name="init">
        <mkdir dir="${test.log.dir}"/>
        <echo>Creating FIX Initiator...</echo>
        <fixInitiator settingsfile="./settings/FIXInitiator.properties" id="main_initiator"/>
        <echo>Creating FIX Aceptor...</echo>
        <fixAcceptor settingsfile="./settings/FIXAcceptor.properties" id="main_acceptor"/>
        <echo>Starting Initiator &amp; Acceptor...</echo>
        <fixStart refid="main_initiator"/>
        <fixStart refid="main_acceptor"/>
        <echo>Waiting for initiator to establish connection...</echo>
        <fixWaitForLogin refid="main_initiator" timeout="30"/>
    </target>
    <!-- ================================================= -->

    <target name="stop">
        <echo>Stopping FIX Initiator...</echo>
        <fixStop refid="main_initiator"/>
        <sleep seconds="1"/>
        <echo>Stopping FIX Acceptor...</echo>
        <fixStop refid="main_acceptor"/>
        <sleep seconds="1"/>
    </target>
    <!-- ================================================= -->

  <target name="test" depends="clean">

    <tstamp>
      <format property="new_order_trn_time" pattern="yyyyMMdd-hh:mm:ss.SSS" locale="en,US" offset="-5" unit="hour" />
    </tstamp>

    <echo>Creating New Order Single request...</echo>
    <fixMessage id="new_order_single">
      <field name="MsgType" value="D" />
      <field name="HandlInst" value="1" />
      <field name="Symbol" value="ZXZZT" />
      <field name="Side" value="1" />
      <field name="OrderQty" value="20000" />
      <field name="OrdType" value="2" />
      <field name="ClOrdID" value="Order#1" />
      <field name="Price" value="34.7" />
      <field name="TransactTime" value="${new_order_trn_time}" />
    </fixMessage>

    <echo>Generating transact time...</echo>
    <echo>Transact time is ${new_order_trn_time}</echo>

    <fixField refid="new_order_single" action="set" name="TransactTime" property="new_order_trn_time" />

    <echo>Sending New Order Single requests</echo>
    <fixSend refid="main_initiator" repeat="1" count="1" repeatDelay="0" sendDelay="0">
      <fixMessage source="new_order_single" />
    </fixSend>

    <fixField refid="new_order_single" action="set" name="ClOrdID" value="Order#2" />
    <fixField refid="new_order_single" action="set" name="OrderQty" value="150" />

    <fixSend refid="main_initiator" repeat="1" count="1" repeatDelay="0" sendDelay="0">
      <fixMessage source="new_order_single" />
    </fixSend>

    <echo>Waiting for New Order Single messages to be received...</echo>
    <fixReceive refid="main_acceptor" timeout="10" repeat="1" count="1">
      <fixMessage>
        <field name="MsgType" value="D" />
        <field name="HandlInst" value="1" />
        <field name="Symbol" value="ZXZZT" />
        <field name="Side" value="1" />
        <field name="OrderQty" value="20000" />
        <field name="OrdType" value="2" />
        <field name="ClOrdID" value="Order#1" />
        <field name="Price" value="34.7" />
      </fixMessage>

      <fixMessage>
        <field name="MsgType" value="D" />
        <field name="HandlInst" value="1" />
        <field name="Symbol" value="ZXZZT" />
        <field name="Side" value="1" />
        <field name="OrderQty" value="150" />
        <field name="OrdType" value="2" />
        <field name="ClOrdID" value="Order#2" />
        <field name="Price" value="34.7" />
      </fixMessage>
    </fixReceive>
  </target>

</project>
