public void ReplyEnergyRequest(RemoteEndProposalMessage message) { if (OnRemoteEnergyReply != null) { OnRemoteEnergyReply(message); } }
void ForwardEnergyReply(EndProposalMessage message) { RemoteConnection conn = GetConnectionByMessageID(message.header.MessageID, ConnectionType.Incoming); XMLLogger.WriteRemoteActivity("Forwarding Remote Response about message: " + message.header.MessageID + " Status = " + message.endStatus); XMLLogger.WriteRemoteActivity("Message ID: " + message.header.MessageID); if (conn != null) { //Header re-handling conn.requests[message.header.MessageID].localePeerName = message.header.Sender; conn.requests[message.header.MessageID].energy = message.energy; message.header.Receiver = conn.requests[message.header.MessageID].remotePeerName; #region Creating Channel NetTcpBinding tcpBinding = new NetTcpBinding(); EndpointAddress remoteEndpoint = new EndpointAddress(conn.remoteResolver.netAddress); tcpBinding.Security.Mode = SecurityMode.None; ChannelFactory <IRemote> cf = new ChannelFactory <IRemote>(tcpBinding, remoteEndpoint); IRemote tChannel = cf.CreateChannel(); #endregion RemoteEndProposalMessage remoteEndMessage = (MessageFactory.createRemoteEndProposalMessage(message, conn.remoteResolver.name, this.name, Tools.getLocalIP(), Tools.getResolverServicePort())); try { tChannel.ReplyEnergyRequest(remoteEndMessage); } catch (Exception e) { XMLLogger.WriteErrorMessage(this.GetType().FullName.ToString(), "Error in Forwarding Energy Reply Message: " + e.ToString()); } } else { XMLLogger.WriteErrorMessage(this.GetType().FullName.ToString(), "Could not find the following message: " + message.header.MessageID); } }
void ManageRemoteEnergyReply(RemoteEndProposalMessage message) { string localBuilding = message.endProposalMessage.header.Receiver; string remoteBuilding = message.endProposalMessage.header.Sender; float energyBought = message.endProposalMessage.energy; if (message.endProposalMessage.endStatus == true) { RemoteConnection oC; oC = GetConnection(message.IP, message.port, ConnectionType.Outgoing); if (oC == null) { oC = new RemoteConnection() { type = ConnectionType.Outgoing, remoteResolver = new RemoteHost() { name = message.header.Sender, IP = message.IP, port = message.port, netAddress = @"net.tcp://" + message.IP + ":" + message.port + @"/Remote" } }; oC.requests.Add(message.endProposalMessage.header.MessageID, new RemoteRequest() { localePeerName = localBuilding, remotePeerName = remoteBuilding, energy = energyBought }); _remoteConnections.Add(oC); } else { oC.requests.Add(message.endProposalMessage.header.MessageID, new RemoteRequest() { localePeerName = localBuilding, remotePeerName = remoteBuilding, energy = energyBought }); } XMLLogger.WriteRemoteActivity("Received Remote Energy Reply from: " + remoteBuilding + "@" + message.header.Sender); XMLLogger.WriteRemoteActivity("Message ID: " + message.endProposalMessage.header.MessageID); Connector.channel.endProposal(message.endProposalMessage); } else //No Energy From this remote resolver..Go with the next { Connector.channel.endProposal(message.endProposalMessage); lock (_counterLock) { _nHostIndex++; } } }