package com.activequant.interfaces.trading; import com.activequant.domainmodel.TimeStamp; import com.activequant.domainmodel.exceptions.IncompleteOrderInstructions; import com.activequant.domainmodel.exceptions.NoSuchOrderBook; import com.activequant.domainmodel.exceptions.UnsupportedOrderType; import com.activequant.domainmodel.streaming.StreamEvent; import com.activequant.domainmodel.trade.order.Order; public interface IExchange { public abstract TimeStamp currentExchangeTime(); public abstract IOrderTracker prepareOrder(Order order) throws UnsupportedOrderType, IncompleteOrderInstructions; /** * May, but does not have to be implemented. * * @param orderId * @return */ public abstract IOrderTracker getOrderTracker(String orderId); public abstract IOrderBook<?> getOrderBook(String tradeableInstrumentId) throws NoSuchOrderBook; public abstract void processStreamEvent(StreamEvent se); }