@Override public String toString () { return ("CI(" + broker.getUsername() + "): p1=" + balanceChargeP1 + ", p2=" + balanceChargeP2); } }
/** * Processes a market transaction by ensuring that the market position * will be sent to the broker. * Actual transaction posting is deferred to delivery time */ public void processTransaction(MarketTransaction tx, ArrayList<Object> messages) { MarketPosition mkt = tx.getBroker().findMarketPositionByTimeslot(tx.getTimeslotIndex()); if (!messages.contains(mkt)) messages.add(mkt); }
private void logBrokerStats () { StringBuffer buf = new StringBuffer(); buf.append("Final balance (brokername:balance) ["); for (String brokerName : competition.getBrokers()) { Broker broker = brokerRepo.findByUsername(brokerName); buf.append(" \"").append(brokerName).append("\":"); buf.append(broker.getCashBalance()); } buf.append(" ]"); log.info(buf.toString()); }
if (!broker.isEnabled()) { if (broker.isLocal()) { broker.receiveMessage(messageObject); " to " + broker.getUsername()); log.debug("sending text: \n" + text); final String queueName = broker.toQueueName();
private void detectAndKillHangingQueues() { Set<String> badQueues = jmsManagementService.processQueues(); if (badQueues != null && badQueues.size() > 0) { for (Broker broker : brokerRepo.list()) { if (badQueues.contains(broker.toQueueName())) { // disable broker and revoke all its tariffs log.warn("Disabling unresponsive broker " + broker.getUsername()); broker.setEnabled(false); } } if (badQueues.contains(visualizerProxyService.getVisualizerQueueName())) { visualizerProxyService.setRemoteVisualizer(false); } } }
log.debug("broker username=" + username); Broker broker = brokerRepo.findByUsername(username); if (broker.getKey().equals(prefix)) { log.debug("message id: " + idValue); int idPrefix = IdGenerator.extractPrefix(idValue); if (broker.getIdPrefix() == idPrefix) { return message.substring(realMsg);
"broker " + username + ", queue " + authorizedBrokerMap.get(username)); if (null == broker) { broker = new Broker(username); brokerRepo.add(broker); broker.setEnabled(true); if (!broker.isLocal()) { broker.setQueueName(authorizedBrokerMap.get(username)); jmsManagementService.createQueue(queueName); computeBrokerKey(broker); broker.setIdPrefix(prefix); log.info("Broker " + broker.getUsername() + " key: " + broker.getKey() + ", prefix: " + prefix); brokerProxyService.sendMessage(broker, new BrokerAccept(prefix, broker.getKey()));
" has unknown broker " + tx.getBroker().getUsername()); double cash = broker.getCashBalance(); if (cash >= 0.0) { broker.updateCash(interest); brokerMsg.get(broker).add(txFactory.makeCashPosition(broker, broker.getCashBalance())); log.info("Broker {} balance = {}", broker.getUsername(), broker.getCashBalance()); log.info("Sending " + brokerMsg.get(broker).size() + " messages to " + broker.getUsername()); brokerProxyService.sendMessages(broker, brokerMsg.get(broker));
private void updateBrokerMarketPosition(MarketTransaction tx) { Broker broker = tx.getBroker(); MarketPosition mkt = broker.findMarketPositionByTimeslot(tx.getTimeslotIndex()); if (mkt == null) { mkt = new MarketPosition(broker, tx.getTimeslot(), tx.getMWh()); log.debug("New MarketPosition(" + broker.getUsername() + ", " + tx.getTimeslot().getSerialNumber() + "): " + mkt.getId()); broker.addMarketPosition(mkt, tx.getTimeslotIndex()); } else { mkt.updateBalance(tx.getMWh()); } }
/** * Gets the net market position for the current timeslot. This only works on * processed transactions, but it can be used before activation in case there * can be no new market transactions for the current timeslot. This is the * normal case. The value will be positive if the broker is importing power * during the current timeslot. */ @Override public synchronized double getCurrentMarketPosition(Broker broker) { Timeslot current = timeslotRepo.currentTimeslot(); log.debug("current timeslot: " + current.getSerialNumber()); MarketPosition position = broker.findMarketPositionByTimeslot(current.getSerialNumber()); if (position == null) { log.debug("null position for ts " + current.getSerialNumber()); return 0.0; } log.info("market position for " + broker.getUsername() + ": " + position.getOverallBalance()); return position.getOverallBalance(); }
try { broker = (Broker)PropertyUtils.getSimpleProperty(message, "broker"); username = broker.getUsername(); if (byPassed || (broker != null && broker.isEnabled())) { log.debug("route(Object) - routing " + message.getClass().getSimpleName() + " from " + username); Set<Object> targets = registrations.get(message.getClass());
private void constrainMarketPositions (List<OrderWrapper> bids, int ts) { HashMap<Broker, Double>remainingPosn = new HashMap<>(); for (OrderWrapper bid: bids) { if (bid.getBroker().isWholesale()) // Don't limit wholesale entities continue; double remaining = getRemaining(bid.getBroker(), remainingPosn, ts); remaining -= bid.getMWh(); if (remaining < 0.0) { // adjust bid double qty = bid.getMWh() + remaining; remaining = 0.0; log.info("Adjusting bid of {} from {} to {}", bid.getBroker().getUsername(), bid.getMWh(), qty); bid.setMWh(qty); } remainingPosn.put(bid.getBroker(), remaining); } }
public String getBrokerName () { return broker.getUsername(); }
private String composeBrokerStats () { StringBuffer buf = new StringBuffer(); String delimiter = ""; for (String brokerName : competition.getBrokers()) { Broker broker = brokerRepo.findByUsername(brokerName); buf.append(delimiter).append(brokerName).append(":"); buf.append(broker.getCashBalance()); delimiter = ","; } return buf.toString(); }
private double getRemaining (Broker broker, HashMap<Broker, Double> posns, int ts) { Double result = posns.get(broker); if (null == result) { MarketPosition posn = broker.findMarketPositionByTimeslot(ts); // offset is zero for final ts int offset = ts - timeslotRepo.currentSerialNumber(); double limit = mktPosnLimitFinal; if (enabledTimeslots.size() > 1) { limit -= (offset * (mktPosnLimitFinal - mktPosnLimitInitial) / (enabledTimeslots.size() - 1)); } result = Math.max(0.0, limit - posn.getOverallBalance()); posns.put(broker, result); } return result; }
/** * Get a prefix based on the list of brokers * Default broker (not in the list) must have prefix == 1 */ private int getBrokerPrefix (Broker broker) { int posn = brokerNames.indexOf(broker.getUsername()); if (-1 == posn) log.error("Broker {} not found in brokerNames", broker.getUsername()); return posn + 1; }
@Override public void handleNewObject (Object thing) { Broker broker = (Broker)thing; log.info("add broker " + broker.getUsername()); brokerRepo.add(broker); } }
/** * Returns the net balancing result for a given broker. Valid only after * service activation within a given timeslot. */ @Override public double getRegulation (Broker broker) { ChargeInfo ci = balancingResults.get(broker); if (null == ci) { log.error("Null balancing result for broker " + broker.getUsername()); return 0.0; } return ci.getCurtailment(); }
/** * Allows a broker to request a pause. It may or may not be allowed. * If allowed, then the pause will take effect when the current simulation * cycle has finished, or immediately if no simulation cycle is currently * in progress. */ public synchronized void handleMessage (PauseRequest msg) { if (!brokerPauseAllowed) { log.info("Pause request by " + msg.getBroker().getUsername() + " disallowed"); return; } if (pauseRequester != null) { log.info("Pause request by " + msg.getBroker().getUsername() + " rejected; already paused by " + pauseRequester); return; } pauseRequester = msg.getBroker().getUsername(); log.info("Pause request by " + msg.getBroker().getUsername()); clock.requestPause(); }
/** * Releases a broker-initiated pause. After the clock is re-started, the * resume() method will be called to communicate a new start time. */ public synchronized void handleMessage (PauseRelease msg) { if (pauseRequester == null) { log.info("Release request by " + msg.getBroker().getUsername() + ", but no pause currently requested"); return; } if (pauseRequester != msg.getBroker().getUsername()) { log.info("Release request by " + msg.getBroker().getUsername() + ", but pause request was by " + pauseRequester); return; } log.info("Pause released by " + msg.getBroker().getUsername()); clock.releasePause(); pauseRequester = null; }