Esempio n. 1
0
        //------------------------------------------------------------------------------------------------------------------------
        #endregion

        #region Constructor
        //------------------------------------------------------------------------------------------------------------------------
        public NodeDiscoverManager(Node Node, int YPCPort = DefaultYPCPort)
        {
            this.Node    = Node;
            this.YPCPort = YPCPort;

            //build flags
            var flags = NodeFlags.None;

            if (Node.CanSolveGraphs)
            {
                flags |= NodeFlags.CanSolveGraphs;
            }

            //create outgoing message
#if NETFX
            var version = Assembly.GetExecutingAssembly().GetName().Version;
            DiscoveryMessage = new DiscoveryMessage()
            {
                ProtocolVersion = Protocol.Version,
                MajorVersion    = version.Major,
                MinorVersion    = version.Minor,
                BuildVersion    = version.Build,
                Flags           = (int)flags,
            };
#else
            DiscoveryMessage = new DiscoveryMessage()
            {
                ProtocolVersion = Protocol.Version,
                MajorVersion    = Package.Current.Id.Version.Major,
                MinorVersion    = Package.Current.Id.Version.Minor,
                BuildVersion    = Package.Current.Id.Version.Build,
                Flags           = (int)flags,
            };
#endif

            //create discoverer
            Discoverer = new YPChannel.Transport.Sockets.LANDiscoverer(DiscoveryMessage, BroadcastPort: BroadcastPort);
            Discoverer.OnEndpointMsgRx   += Discoverer_OnEndpointMsgRx;
            Discoverer.OnEndpointTimeout += Discoverer_OnEndpointTimeout;

            //hook event for shutdown
            YPChannel.Channel.OnSystemShutDownRequest.Add(Yodiwo.WeakAction <object> .Create(Deinitialize));
        }
Esempio n. 2
0
        //------------------------------------------------------------------------------------------------------------------------
        #endregion

        #region Constructor
        //------------------------------------------------------------------------------------------------------------------------
        public NodeDiscoverManager(Node Node, int YPCPort = DefaultYPCPort)
        {
            this.Node = Node;
            this.YPCPort = YPCPort;

            //build flags
            var flags = NodeFlags.None;
            if (Node.CanSolveGraphs) flags |= NodeFlags.CanSolveGraphs;

            //create outgoing message
#if NETFX
            var version = Assembly.GetExecutingAssembly().GetName().Version;
            DiscoveryMessage = new DiscoveryMessage()
            {
                ProtocolVersion = Protocol.Version,
                MajorVersion = version.Major,
                MinorVersion = version.Minor,
                BuildVersion = version.Build,
                Flags = (int)flags,
            };
#else
            DiscoveryMessage = new DiscoveryMessage()
            {
                ProtocolVersion = Protocol.Version,
                MajorVersion = Package.Current.Id.Version.Major,
                MinorVersion = Package.Current.Id.Version.Minor,
                BuildVersion = Package.Current.Id.Version.Build,
                Flags = (int)flags,
            };
#endif

            //create discoverer
            Discoverer = new YPChannel.Transport.Sockets.LANDiscoverer(DiscoveryMessage, BroadcastPort: BroadcastPort);
            Discoverer.OnEndpointMsgRx += Discoverer_OnEndpointMsgRx;
            Discoverer.OnEndpointTimeout += Discoverer_OnEndpointTimeout;

            //hook event for shutdown
            YPChannel.Channel.OnSystemShutDownRequest.Add(Yodiwo.WeakAction<object>.Create(Deinitialize));
        }
Esempio n. 3
0
 //------------------------------------------------------------------------------------------------------------------------
 private void Discoverer_OnEndpointTimeout(LANDiscoverer.RemoteEndpointInfo endpoint)
 {
     try
     {
         var remInfo = RemoteNodes.TryGetOrDefault(endpoint.ID);
         if (remInfo != null)
         {
             remInfo._disconnect();
             RemoteNodes.Remove(endpoint.ID);
         }
     }
     catch (Exception ex) { DebugEx.TraceError(ex, "Discoverer_OnEndpointTimeout error"); }
 }