@Override public void publishTo(Object inData) { emitterSupport.send(inData); } /**
/** * Create a new DataRequester instance. * * @param inEmitterSupport a <code>DataEmitterSupport</code> value * @param inRequestType an <code>OutputType</code> value */ private DataRequester(DataEmitterSupport inEmitterSupport, OutputType inRequestType) { assert(inEmitterSupport != null); assert(inEmitterSupport.getRequestID() != null); emitterSupport = inEmitterSupport; requestType = inRequestType; } /**
@Override public void requestData(DataRequest inRequest, DataEmitterSupport inSupport) throws RequestDataException { dataSupport.put(inSupport.getFlowID(), inSupport); } /* (non-Javadoc)
mSupport.dataEmitError(new I18NBoundMessage1P( Messages.INSUFFICIENT_DATA, rows == null mSupport.send(createMap(rows[0], rows[i])); mSupport.send(createMap(rows[0], rows[i])); mSupport.dataEmitError(Messages.NO_MORE_DATA,true); } catch (Throwable e) { mSupport.dataEmitError(new I18NBoundMessage1P( Messages.UNEXPECTED_ERROR, e.getLocalizedMessage()), true);
if(!requestData.resubmitting) { requestsByRequestId.remove(messageWrapper.getRequestId()); requestsByDataFlowId.remove(requestData.getDataEmitterSupport().getFlowID()); I18NBoundMessage errorMessage; if(message.isSetField(quickfix.field.Text.FIELD)) { errorMessage = new I18NBoundMessage0P(Messages.MARKETDATA_REJECT_WITHOUT_MESSAGE); requestData.getDataEmitterSupport().dataEmitError(errorMessage, true);
@Override public void receiveData(DataFlowID inFlowID, Object inData) throws ReceiveDataException { DataEmitterSupport dataEmitterSupport = dataSupport.get(inFlowID); if(dataEmitterSupport != null) { dataEmitterSupport.send(inData); } } /* (non-Javadoc)
@Override public void requestData(DataRequest inRequest, DataEmitterSupport inSupport) throws RequestDataException { mRequests.put(inSupport.getRequestID(), inSupport); }
@Override public void requestData(DataRequest inRequest, DataEmitterSupport inSupport) throws RequestDataException { synchronized(dataSupport) { dataSupport.put(inSupport.getFlowID(), inSupport); } } /* (non-Javadoc)
/** * This method is invoked when an object is received from the remote * receiver. * <p> * The received object is delivered to all the data flows sequentially. * * @param inObject the received object. */ @Override public void receiveData(Object inObject) { for(DataEmitterSupport support: mRequests.values()) { support.send(inObject); } }
@Override public void run() { requests.put(token, inSupport.getRequestID()); } });
/** * Adds the flow handler for the data flow the table of requests and flows. * * @param inSupport the data flow support instance for the flow. * @param inFlowHandler the flow handler for the flow. */ private void addFlow(DataEmitterSupport inSupport, DataFlowHandler inFlowHandler) { mFlows.put(inSupport.getFlowID(), inFlowHandler); }
@Override public void receiveExecutionReport(ExecutionReport inReport) { SLF4JLoggerProxy.debug(this, "Emitting Report {}", //$NON-NLS-1$ inReport); mSupport.send(inReport); }
/** * Subscribes the given data requester to the data flow indicated by the request type. * * @param inRequest an <code>OutputType</code> value * @param inSupport a <code>DataEmitterSupport</code> value */ private void subscribe(OutputType inRequest, DataEmitterSupport inSupport) { synchronized(subscribers) { DataRequester requester = new DataRequester(inSupport, inRequest); requester.subscribe(); subscribers.put(inSupport.getRequestID(), requester); } } /**
/** * Create a new RequestData instance. * * @param inRequestMessage a <code>Message</code> value * @param inDataEmitterSupport a <code>DataEmitterSupport</code> value * @param inRequestId a <code>String</code> value * @param inMarketDataRequest a <code>MarketDataRequest</code> value * @param inRequestedInstruments a <code>List<Instrument></code> value */ private RequestData(Message inRequestMessage, DataEmitterSupport inDataEmitterSupport, String inRequestId, MarketDataRequest inMarketDataRequest, List<Instrument> inRequestedInstruments) { requestMessage = inRequestMessage; dataEmitterSupport = inDataEmitterSupport; description = RequestData.class.getSimpleName() + " [" + inDataEmitterSupport.getFlowID() + "]"; //$NON-NLS-1$ //$NON-NLS-2$ requestId = inRequestId; requestedInstruments = inRequestedInstruments; marketDataRequest = inMarketDataRequest; } /**
@Override public void receiveCancelReject(OrderCancelReject inReport) { SLF4JLoggerProxy.debug(this, "Emitting Cancel Reject {}", //$NON-NLS-1$ inReport); mSupport.send(inReport); }
mRequests.put(inSupport.getRequestID(), future); } catch (MalformedURLException e) { throw new IllegalRequestParameterValue(getURN(), obj, e);
requestsByRequestId.put(id, requestData); requestsByDataFlowId.put(inSupport.getFlowID(), requestData); if(!Session.sendToTarget(marketDataRequest, sessionId)) { requestsByRequestId.remove(id); requestsByDataFlowId.remove(inSupport.getFlowID()); throw new StopDataFlowException(new I18NBoundMessage1P(Messages.CANNOT_REQUEST_DATA, marketDataRequest));
@Override public void run() { try { //Run until interrupted while(true) { mEmitterSupport.send(mDataQueue.take()); } } catch (InterruptedException e) { SLF4JLoggerProxy.debug(this, e, "Data publishing interrupted. Discarding {} undelivered items", //$NON-NLS-1$ mDataQueue.size()); } }
@Override public void requestData(DataRequest inRequest, final DataEmitterSupport inSupport) throws RequestDataException { //No request parameters are supported. //All reports received are emitted. //Verify no request parameters are specified if(inRequest.getData() != null) { throw new IllegalRequestParameterValue( Messages.REQUEST_PARAMETER_SPECIFIED); } try { ReportListener listener = new ReportListenerEmitter(inSupport); getClient().addReportListener(listener); mRequestTable.put(inSupport.getRequestID(), listener); } catch (ClientInitException e) { throw new RequestDataException(e, Messages.REQUEST_CLIENT_NOT_INITIALIZED); } }
/** Map the incoming data to some type, find the list of all {@link DataEmitterSupport} objects * and send the data on its way there * Ignore the flowID * This is a very inefficient implementation - just iterate over all known requests * and if we find a match send the data that way */ @Override public void receiveData(DataFlowID inFlowID, Object inData) throws ReceiveDataException { if(inData != null) { for (Pair<Class<?>, DataEmitterSupport> classEmitterPair : mRequestMap.values()) { if(classEmitterPair.getFirstMember().isAssignableFrom(inData.getClass())) { classEmitterPair.getSecondMember().send(inData); } } } //ignore null data }