package com.activequant.trading.virtual;
import com.activequant.domainmodel.trade.event.OrderEvent;
import com.activequant.domainmodel.trade.event.OrderSubmittedEvent;
import com.activequant.domainmodel.trade.order.Order;
import com.activequant.interfaces.trading.IExchange;
import com.activequant.interfaces.trading.IOrderTracker;
import com.activequant.interfaces.utils.IEventListener;
import com.activequant.interfaces.utils.IEventSource;
import com.activequant.utils.events.Event;
class VirtualOrderTracker implements IOrderTracker {
private final IExchange exchange;
private final Order order;
private final Event<OrderEvent> event = new Event<OrderEvent>();
private final String venueAssignedId;
private OrderEvent lastState;
VirtualOrderTracker(IExchange exchange, String venueAssignedId, Order order) {
this.exchange = exchange;
this.order = order;
this.venueAssignedId = venueAssignedId;
event.addEventListener(new IEventListener<OrderEvent>() {
@Override
public void eventFired(OrderEvent event) {
lastState = event;
}
});
}
@Override
public Order getOrder() {
return order;
}
@Override
public String getVenueAssignedId() {
return venueAssignedId;
}
@Override
public void submit() {
OrderEvent oe = new OrderSubmittedEvent();
oe.setTimeStamp(exchange.currentExchangeTime());
event.fire(oe);
//
}
@Override
public void update(Order newOrder) {
// this.order.set = newOrder;
}
@Override
public void cancel() {
}
@Override
public IEventSource<OrderEvent> getOrderEventSource() {
return event;
}
public OrderEvent lastState() {
return lastState;
}
}