public void ReplyEnergyRequest(RemoteEndProposalMessage message)
 {
     if (OnRemoteEnergyReply != null)
     {
         OnRemoteEnergyReply(message);
     }
 }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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++;
                }
            }
        }