private void ProposalAccepted(EnergyAcceptMessage message) { if (message.header.Receiver == _name) { Boolean status = false; float energyCanSell = 0; float enAvailable = getEnergyLevel() - (_enPeak + _enSold); if (enAvailable > 0) { energyCanSell = enAvailable >= message.energy ? message.energy : enAvailable; status = true; _enSold += energyCanSell; XMLLogger.WriteLocalActivity("Ok, " + energyCanSell + " KW/h sold to " + message.header.Sender); EnergyLink link = new EnergyLink(message.peerName, energyCanSell, _price); consumers.Add(link); //Advise the Local Resolver About the energy status change. Connector.channel.updateEnergyStatus(MessageFactory.createUpdateStatusMessage(_resolverName, _name, _enSold, _enBought)); XMLLogger.WriteLocalActivity("Updating Stutus"); XMLLogger.WriteLocalActivity("Peer " + message.header.Sender + " - Energy Sold: " + _enSold); XMLLogger.WriteLocalActivity("Peer " + message.header.Sender + " - Energy Bought: " + _enBought); } EndProposalMessage respMessage = MessageFactory.createEndProposalMessage( message.header.MessageID, message.header.Sender, _name, status, energyCanSell, _price ); if (message.header.Sender == _resolverName) { Connector.channel.forwardEnergyReply(respMessage); } else { Connector.channel.endProposal(respMessage); } } }
private void EvaluateProposal() { var m = (from element in _proposalList orderby element.price ascending select element).First(); XMLLogger.WriteLocalActivity("The lowest price is " + m.price + " provided by " + m.header.Sender); EnergyAcceptMessage respMessage = MessageFactory.createEnergyAcceptMessage( m.header.MessageID, m.header.Sender, _name, this._name, _enPeak - (getEnergyLevel() + _enBought)); Connector.channel.acceptProposal(respMessage); }
private void EvaluateProposal() { var m = (from element in _proposalList orderby element.price ascending select element).First(); EnergyAcceptMessage respMessage = MessageFactory.createEnergyAcceptMessage( m.header.MessageID, m.header.Sender, _name, _originPeerName, _enLookUp); Connector.channel.acceptProposal(respMessage); _proposalList.Clear(); _sem.Release(); }