Imported from previous forum
hi ,
i am new to Fix protocol.i face one problem while communicating initiator and acceptor programs.initially i receive the data from keyborad.that data will be send it to acceptor program.data willbe send successfully.now the problem comes i am not receving the response from acceptor.here exception arises.i am sending my sample code.pls check it.and suggest me .
here is my sample code
acceptor program
import biz.onixs.fixforge.engine.*;
import static biz.onixs.fixforge.engine.FIX42.Tag;
import biz.onixs.fixforge.engine.util.PropertyBasedSettings;
import java.util.concurrent.CountDownLatch;
/**
-
Processes incoming messages.
*/
public class s2 implements Session.InboundApplicationMsgEventHandler,Session.StateChangeEventHandler,
Session.ErrorEventHandler, Session.WarningEventHandler {
CountDownLatch disconnectedEventLatch = new CountDownLatch(1);
int orderCounter;
Version fixversion;
void run() {
try {
Engine.init(4000);
fixversion = Version.getByNumber(“4.2”);
Session sn = new Session(“2”,“1”,fixversion);
sn.setInboundApplicationMsgEventHandler(this);
sn.setStateChangeEventHandler(this);
sn.setErrorEventHandler(this);
sn.setWarningEventHandler(this);
sn.logonAsAcceptor();
System.out.println(“Awaiting session-initiator…”);
disconnectedEventLatch.await();
} catch (Exception ex) {
System.out.println("Exception: " + ex);
}
}
public void onInboundApplicationMsg(Object sender, Session.InboundApplicationMsgEventArgs e) {
System.out.println(“Incoming application-level message:\n” + e.getMsg());
try {
e.getMsg().validate();
Message reply = null;
if (e.getMsg().getType().equals(“D”)) {
++orderCounter;
Message order = e.getMsg();
Message execReport = new Message(“8”, fixversion);
execReport.set(Tag.OrderID, order.get(Tag.ClOrdID));
execReport.set(Tag.ExecID, “ExecID_” + orderCounter);
execReport.set(Tag.ExecTransType, “0”); // New
execReport.set(Tag.OrdStatus, “0”); // New
execReport.set(Tag.Symbol, order.get(Tag.Symbol));
execReport.set(Tag.Side, order.get(Tag.Side));
execReport.set(Tag.OrderQty, order.get(Tag.OrderQty));
execReport.set(Tag.CumQty, order.get(Tag.OrderQty));
execReport.set(Tag.OrdType, order.get(Tag.OrdType));
//execReport.set(Tag.Shares,order.get(Tag.Shares));
/execReport.set(Tag.Username,order.get(Tag.Username));
execReport.set(Tag.Password,order.get(Tag.Password));/
execReport.set(Tag.AvgPx, “100.0”);
execReport.set(Tag.TransactTime, order.get(Tag.TransactTime));
reply = execReport;
System.out.println(“i am in if”);
} else {
System.out.println(“i am i else”);
Message email = new Message(“C”, fixversion);
email.set(Tag.EmailType, “0”);
/Group group = email.setGroup(Tag.NoLinesOfText, 1);
group.set(Tag.Text, 0, “The message with MsgType=” + e.getMsg().get(Tag.MsgType) + " was sent to the client");/
reply = email;
}
Session sn = (Session) sender;
System.out.println(“am i reaching here”);
sn.send(reply);
System.out.println(“am i reaching here”);
System.out.println(“Sent to the counterparty:\n” + reply);
} catch (Exception ex) {
System.out.println(ex);
System.out.println(“i am in catch”);
Message email = new Message(“C”, fixversion);
email.set(Tag.EmailType, “0”);
/*Group group = email.setGroup(Tag.NoLinesOfText, 1);final String errorMsg = "Exception during the processing of incoming message: " + ex; group.set(Tag.Text, 0, errorMsg); Session sn = (Session) sender; sn.send(email); System.out.println(errorMsg);*/ }}
public void onStateChange(Object sender, Session.StateChangeEventArgs e) {
System.out.println("New session state: " + e.getNewState());
if (e.getNewState() == Session.SessionState.DISCONNECTED) {
disconnectedEventLatch.countDown();
}
}public void onError(Object sender, Session.ErrorEventArgs e) {
System.out.println("Error condition: " + e);
}public void onWarning(Object sender, Session.WarningEventArgs e) {
System.out.println("Warning condition: " + e);
}public static void main(String[] args) {
s2 ser = new s2();
ser.run();
}
}
now initiator program
import biz.onixs.fixforge.engine.Session;
import biz.onixs.fixforge.engine.Message;
import biz.onixs.fixforge.engine.Engine;
import biz.onixs.fixforge.engine.Version;
import biz.onixs.fixforge.engine.util.PropertyBasedSettings;
import static biz.onixs.fixforge.engine.FIX42.Tag;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class c2 implements Session.InboundApplicationMsgEventHandler,Session.StateChangeEventHandler
{ Message order;
void shore()
{BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
String st=null;
try
{
Engine engine =Engine.init();
Version fixversion=Version.getByNumber(“4.2”);
Session sn=new Session(“1”,“2”,fixversion);
sn.setInboundApplicationMsgEventHandler(this);
sn.setStateChangeEventHandler(this);
sn.logonAsInitiator(“localhost”,4000);
System.out.println(“kishore”);
order = new Message(“D”,fixversion);
order.set(Tag.HandlInst, “1”);
order.set(Tag.ClOrdID, “Unique identifier for Order”);
System.out.println(“Enter Company Symbol”);
st=br.readLine();
order.set(Tag.Symbol,st);
System.out.println(“Enter tag side(1 or 2)”);
st=br.readLine();
order.set(Tag.Side,st);
order.set(Tag.OrderQty, 1000);
System.out.println(“Enter orfder Type”);
st=br.readLine();
order.set(Tag.OrdType,st);
order.set(Tag.TransactTime,100);
//order.set(Tag.Shares,100);
sn.send(order);
System.out.println(“hi welcome to fix protocol”);
/order.set(Tag.Username, “kishore”);
order.set(Tag.Password, “kumar”);/
System.out.println(“The order (” + order + “) was sent”);
System.out.println("\nPress 'Enter' to disconnect the sesssion and terminate the application.\n");
(new BufferedReader(new InputStreamReader(System.in))).readLine();
sn.logout("The session is disconnected by BuySide");
sn.dispose(false); // 'true' - to terminate the FIX session, 'false' - to keep sequence numbers.
engine.shutdown();
} catch (Exception ex) {
System.out.println("Exception: " + ex);
}
}
public void onInboundApplicationMsg(Object sender, Session.InboundApplicationMsgEventArgs e) {
try{
System.out.println(“Incoming application-level message:\n” + e.getMsg());
String ClOrdID = order.get(35);
System.out.println(ClOrdID);
String side= order.get(54);
System.out.println(side);
if(side.equals(“1”))
{
System.out.println(“users choice is to buy”);
} else if(side.equals(“2”))
{
System.out.println(“users choice is sell”);
}
String symbol= order.get(55);
System.out.println(symbol);
String shares=order.get(53);
System.out.println(shares);
System.out.println(" Processing of the application-level incoming message …");
}catch(Exception e1){System.out.println(e1);}
}
public void onStateChange(Object sender, Session.StateChangeEventArgs e) {
System.out.println("New session state: " + e.getNewState());
}
public static void main(String[] args) {
c2 fix = new c2();
fix.shore();
}
}
Thanks&Regards
kishore
kishore,
What exception are you getting ? Please post further details of the exception.
Regards,
K. Mahesh
hi , i am new to Fix protocol.i face one problem while communicating
initiator and acceptor programs.initially i receive the data from
keyborad.that data will be send it to acceptor program.data willbe send
successfully.now the problem comes i am not receving the response from
acceptor.here exception arises.i am sending my sample code.pls check
it.and suggest me . here is my sample code
Thanks&Regards kishore