protected override void ProcessRecord()
 {
     base.ProcessRecord();
     try
     {
         client?.Dispose();
         int timeout = GetPreferredTimeout();
         WriteDebug($"Cmdlet Timeout : {timeout} milliseconds.");
         client = new AnnouncementClient(AuthProvider, new Oci.Common.ClientConfiguration
         {
             RetryConfiguration = retryConfig,
             TimeoutMillis      = timeout,
             ClientUserAgent    = PSUserAgent
         });
         string region = GetPreferredRegion();
         if (region != null)
         {
             WriteDebug("Choosing Region:" + region);
             client.SetRegion(region);
         }
         if (Endpoint != null)
         {
             WriteDebug("Choosing Endpoint:" + Endpoint);
             client.SetEndpoint(Endpoint);
         }
     }
     catch (Exception ex)
     {
         TerminatingErrorDuringExecution(ex);
     }
 }
Exemple #2
0
        private void btnBye_Click(object sender, EventArgs e)
        {
            AnnouncementClient client = AnnouncementClient();

            client.AnnounceOffline(GetAnnouncementSettings());
            client.Close();
        }
 public AnnouncementController(IOptions <AnnouncementsApiUrl> apiConfig, IUrlHelper urlHelper, AnnouncementClient announcementClient, IHostingEnvironment hostingEnvironment)
 {
     _apiConfig          = apiConfig;
     _urlHelper          = urlHelper;
     _announcementClient = announcementClient;
     _hostingEnvironment = hostingEnvironment;
 }
Exemple #4
0
        AnnouncementClient AnnouncementClient()
        {
            AnnouncementClient      anouncementClient;
            UdpAnnouncementEndpoint endpoint = new UdpAnnouncementEndpoint(SelectedVersion);

            anouncementClient = new AnnouncementClient(endpoint);

            return(anouncementClient);
        }
Exemple #5
0
        public void Open(string announcementConnectionUri, int announcementTimerSec, bool enableAnnouncement)
        {
            try
            {
                ServiceDiscoveryBehavior serviceDiscoveryBehavior = new ServiceDiscoveryBehavior();

                EndpointDiscoveryBehavior endpointDiscoveryBehavior = new EndpointDiscoveryBehavior();

                XElement endpointMetadata = new XElement("Root", new XElement(_metaDataElement, _metaDataElementValue));
                XElement aliasMetadata    = new XElement("Root", new XElement(_metaDataAlias, _metaDataAliasValue));
                XElement LoginMetadata    = new XElement("Root", new XElement(_metaDataLogIn, _metaDataLogInValue));

                endpointDiscoveryBehavior.Extensions.Add(endpointMetadata);
                endpointDiscoveryBehavior.Extensions.Add(aliasMetadata);
                endpointDiscoveryBehavior.Extensions.Add(LoginMetadata);

                _netTcpEndpoint.Behaviors.Add(endpointDiscoveryBehavior);

                _serviceHost.Description.Behaviors.Add(serviceDiscoveryBehavior);
                _serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint());

                _serviceHost.Open();

                if (enableAnnouncement)
                {
                    Uri             announcementEndpointUri     = new Uri(announcementConnectionUri);
                    EndpointAddress announcementEndpointAddress = new EndpointAddress(announcementEndpointUri);
                    NetTcpBinding   binding = new NetTcpBinding();
                    binding.Security.Mode = SecurityMode.None;
                    _announcementEndpoint = new AnnouncementEndpoint(binding, announcementEndpointAddress);

                    _announcementClient        = new AnnouncementClient(_announcementEndpoint);
                    _endpointDiscoveryMetadata = EndpointDiscoveryMetadata.FromServiceEndpoint(_netTcpEndpoint);

                    //Start a timer that send announcement message
                    _announcementTimer           = new Timer(announcementTimerSec * 1000);
                    _announcementTimer.AutoReset = true;
                    _announcementTimer.Elapsed  += new ElapsedEventHandler(_announcementTimer_Elapsed);
                    _announcementTimer.Start();

                    _announcementClient.Open();
                }

                IsRunning = true;
            }
            catch (EndpointNotFoundException ex)
            {
                //this error occurs when announcement endpoint is not on the network
            }
            catch (CommunicationException ex)
            {
                _serviceHost.Abort();
                // customize this exception to be more specific
                throw;
            }
        }
Exemple #6
0
        public void AnnonceOnlineOfflineNoBinding()
        {
            var ac = new AnnouncementClient(new AnnouncementEndpoint()
            {
                Address = new EndpointAddress("http://localhost:37564")
            });
            var edm = new EndpointDiscoveryMetadata();

            ac.AnnounceOnline(edm);
            // attempt to close the client causes another CommunicationObjectFaultedException - looks like it fails to allow Close() at faulted state unlike other objects.
        }
Exemple #7
0
        public void DefaultValues()
        {
            // default constructor causes IOE unless there is default configuration...
            var ac = new AnnouncementClient(new AnnouncementEndpoint());

            Assert.AreEqual(ac.ChannelFactory.Endpoint, ac.Endpoint, "#1");
            Assert.AreEqual("http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01", ac.Endpoint.Contract.Namespace, "#2");
            Assert.AreEqual(2, ac.Endpoint.Contract.Operations.Count, "#2-2");
            Assert.IsTrue(ac.Endpoint.Contract.Operations.Any(od => od.Messages.Any(md => md.Action == "http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/Hello")), "#2-3");
            Assert.IsTrue(ac.Endpoint.Contract.Operations.Any(od => od.Messages.Any(md => md.Action == "http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/Bye")), "#2-4");
            Assert.IsNull(ac.Endpoint.Binding, "#3");
            Assert.IsNull(ac.Endpoint.Address, "#4");
        }
Exemple #8
0
        public void AnnonceOnlineOfflineNoEndpointAddress()
        {
            var ac = new AnnouncementClient(new AnnouncementEndpoint()
            {
                Binding = new BasicHttpBinding()
            });
            var edm = new EndpointDiscoveryMetadata();

            try {
                ac.AnnounceOnline(edm);
            } finally {
                ac.Close();
            }
        }
Exemple #9
0
        public void AnnonceOnlineOfflineAddressSchemeMismatch2()
        {
            var ac = new AnnouncementClient(new AnnouncementEndpoint()
            {
                Binding = new BasicHttpBinding(), Address = new EndpointAddress("soap.udp://localhost:37564")
            });
            var edm = new EndpointDiscoveryMetadata();

            try {
                ac.AnnounceOnline(edm);
            } finally {
                ac.Close();
            }
        }
Exemple #10
0
        // looks like EndpointAddress is *ignored*
        public void AnnonceOnlineOfflineAddressSchemeMismatch()
        {
            var ac = new AnnouncementClient(new UdpAnnouncementEndpoint()
            {
                Address = new EndpointAddress("http://localhost:37564")
            });
            var edm = new EndpointDiscoveryMetadata();

            try {
                ac.AnnounceOnline(edm);
                ac.AnnounceOffline(edm);
            } finally {
                ac.Close();
            }
        }
Exemple #11
0
        public void AnnonceOnlineOfflineHttpMessageVersionMismatch()
        {
            var ac = new AnnouncementClient(new AnnouncementEndpoint()
            {
                Binding = new BasicHttpBinding()
                {
                    SendTimeout = TimeSpan.FromSeconds(10), ReceiveTimeout = TimeSpan.FromSeconds(10)
                }, Address = http_address
            });
            var edm = new EndpointDiscoveryMetadata();

            try {
                ac.AnnounceOnline(edm);
            } finally {
                ac.Close();
            }
        }
Exemple #12
0
        public void AnnonceOnlineOfflineHttpWSA10()
        {
            var binding = new CustomBinding(new HttpTransportBindingElement())
            {
                SendTimeout = TimeSpan.FromSeconds(10), ReceiveTimeout = TimeSpan.FromSeconds(10)
            };
            var ac = new AnnouncementClient(new AnnouncementEndpoint()
            {
                Binding = binding, Address = http_address
            });
            var edm = new EndpointDiscoveryMetadata();

            try {
                ac.AnnounceOnline(edm);
            } finally {
                ac.Close();
            }
        }
Exemple #13
0
 private void _announcementTimer_Elapsed(object sender, ElapsedEventArgs e)
 {
     try
     {
         _announcementClient.AnnounceOnline(_endpointDiscoveryMetadata);
     }
     catch (EndpointNotFoundException ex)
     {
         //this error occurs when announcement endpoint is not on the network
     }
     catch (CommunicationException ex)
     {
         _announcementClient.InnerChannel.Abort();
         _announcementClient = new AnnouncementClient(_announcementEndpoint);
     }
     catch (Exception exp)
     {
     }
 }
 public static Task AnnounceOnlineTaskAsync(this AnnouncementClient source, EndpointDiscoveryMetadata discoveryMetadata)
 {
     return(Task.Factory.FromAsync <EndpointDiscoveryMetadata>(new Func <EndpointDiscoveryMetadata, AsyncCallback, object, IAsyncResult>(source.BeginAnnounceOnline), new Action <IAsyncResult>(source.EndAnnounceOnline), discoveryMetadata, null));
 }