Exemple #1
0
        public void HandleEnter()
        {
            IListenerSocket  listener = null;
            IConnectedSocket client   = null;
            var connectEndpoint       = networkingProxy.CreateEndPoint(clusteringConfiguration.Address, clusteringConfiguration.Port);
            var hostAllowed           = !clusteringConfiguration.ClusteringRole.HasFlag(ClusteringRole.GuestOnly) && IPAddress.IsLoopback(clusteringConfiguration.Address);
            var guestAllowed          = !clusteringConfiguration.ClusteringRole.HasFlag(ClusteringRole.HostOnly);

            while (listener == null && client == null)
            {
                if (hostAllowed && TryCreateHostListener(clusteringConfiguration, out listener))
                {
                    break;
                }
                if (guestAllowed && TryCreateGuestSocket(connectEndpoint, out client))
                {
                    break;
                }
                logger.Warn("Unable to either listen/connect to port " + clusteringConfiguration.Port);
                threadingProxy.Sleep(kRetryInterval);
            }

            if (listener != null)
            {
                clusteringPhaseManager.Transition(clusteringPhaseFactory.CreateHostPhase(localServiceContainer, listener));
            }
            else
            {
                clusteringPhaseManager.Transition(clusteringPhaseFactory.CreateGuestPhase(localServiceContainer, client));
            }
            phaseTransitionedLatch.Release(int.MaxValue);
        }
Exemple #2
0
 private void HandleDispatcherShutdown()
 {
     clusteringPhaseManager.Transition(clusteringPhaseFactory.CreateIndeterminatePhase(localServiceContainer));
 }