Example #1
0
        static void Heartbeat(ServiceToBeat serviceType)
        {
            Thread.Sleep(TimeSpan.FromSeconds(10));
            var rnd = new System.Random();

            while (true)
            {
                try
                {
                    // todo : heartbeat for each service in config

                    if (serviceType == ServiceToBeat.Executor)
                    {
                        var executor = new ExecutionBrokerService.ExecutionBrokerServiceClient();
                        try
                        {

                            //Console.Write("{0} - ", DateTime.Now.ToString(TIME_FORMAT));
                            Indicators.IsBeating = true;
                            executor.Update();
                            Indicators.IsBeating = false;
                            //Console.WriteLine(DateTime.Now.ToString(TIME_FORMAT));

                            executor.Close();
                        }
                        catch
                        {
                            Indicators.IsBeating = false;

                            executor.Abort();
                            throw;
                        }
                    }
                    else
                    if (serviceType == ServiceToBeat.ResourceBase)
                    {
                        var resourceBase = new ResourceBaseService.ResourceBaseServiceClient();
                        try
                        {
                            resourceBase.GetResourceNames(); // only need to call to refresh resources, no need in result
                            resourceBase.Close();
                        }
                        catch
                        {
                            resourceBase.Abort();
                            throw;
                        }
                    }
                }
                catch (Exception e)
                {
                    //Indicators.IsBeating = false;
                    LogToConsole(e);
                    Thread.Sleep(5000);
                }
                finally
                {
                    //Indicators.IsBeating = false;
                    Thread.Sleep(rnd.Next(TICK, TACK));
                }
            }
        }