private void validateTicksize(Instrument instrument, double price) { TickType ts = instrument.getTickscale(); if (ts.canVerifyPrice()) { if (!ts.isValid(price)) { delim().append(INVALID_PRICE); ts.writeError(price, _err); } } else { ReusableString msg = TLC.instance().pop(); msg.append(MISSING_TICK).append(instrument.getRIC()); _log.warn(msg); TLC.instance().pushback(msg); } }
@Override public void handleExecutionException(Exception ex) { final NonBlockingSession sess = _curSessW._session; if (_curMsg != null && sess != null) { _log.warn( "SessionThreadedDispatcher " + getComponentId() + ", msgSeqNum=" + _curMsg.getMsgSeqNum() + ", sess=" + sess.getComponentId() + " exception " + ex.getMessage()); } flush(_curSessW); // some problem, possibly disconnect, poke controller to wake up anything waiting on controller // passive lock _ctl.statusChange(); // Mem barrier }