示例#1
0
        ///// <summary>
        ///// Broadcast a message
        ///// </summary>
        ///// <param name="message">message to be broadcast</param>
        //private void Broadcast(Messages.MessageBase message)
        //{
        //    IPEndPoint e = new IPEndPoint(DiscoveryAddress, Port);
        //    Send(message, e);
        //}

        /// <summary>
        /// Raise the SearchReceived event
        /// </summary>
        /// <param name="e">arguments for the event</param>
        protected void OnSearchReceived(Events.SearchReceivedEventArgs e)
        {
            if (SearchReceived != null)
            {
                SearchReceived(this, e);
            }

            var content = OnSearchResponding(new Events.SearchRespondingEventArgs(Content, e.Sender));

            var response = new Messages.DiscoveryResponseMessage();

            response.Service = Services.FirstOrDefault(x => x.ServiceType == e.ServiceType);

            try
            {
                DelaySearchResponse(e.MaxWaitTime);
                response.Content = content;
                Send(response, e.Sender);

                OnSearchResponded();
            }
            catch (Exception ex)
            {
                throw new DiscoveryException("Exception sending search response", ex);
            }
        }
示例#2
0
        ///// <summary>
        ///// Broadcast a message
        ///// </summary>
        ///// <param name="message">message to be broadcast</param>
        //private void Broadcast(Messages.MessageBase message)
        //{
        //    IPEndPoint e = new IPEndPoint(DiscoveryAddress, Port);
        //    Send(message, e);
        //}
        /// <summary>
        /// Raise the SearchReceived event
        /// </summary>
        /// <param name="e">arguments for the event</param>
        protected void OnSearchReceived(Events.SearchReceivedEventArgs e)
        {
            if (SearchReceived != null)
                SearchReceived(this, e);

            var content = OnSearchResponding(new Events.SearchRespondingEventArgs(Content, e.Sender));

            var response = new Messages.DiscoveryResponseMessage();
            response.Service = Services.FirstOrDefault(x => x.ServiceType == e.ServiceType);

            try
            {
                DelaySearchResponse(e.MaxWaitTime);
                response.Content = content;
                Send(response, e.Sender);

                OnSearchResponded();
            }
            catch (Exception ex)
            {
                throw new DiscoveryException("Exception sending search response", ex);
            }
        }
示例#3
0
 internal DiscoveryReceivedEventArgs(Messages.DiscoveryResponseMessage message)
 {
     Sender  = new IPEndPoint(IPAddress.Parse(message.Host), message.Port);
     Service = message.Service;
 }