Esempio n. 1
0
        void serverStatusTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            try
            {
                if (!ServerOnline)
                {
                    serverStatusTimer.Start();
                    return;
                }

                JMMServerBinary.Contract_ServerStatus status = JMMServerVM.Instance.clientBinaryHTTP.GetServerStatus();

                HasherQueueCount  = status.HashQueueCount;
                GeneralQueueCount = status.GeneralQueueCount;

                HasherQueueState  = status.HashQueueState;
                GeneralQueueState = status.GeneralQueueState;

                IsBanned  = status.IsBanned;
                BanReason = status.BanReason;

                HasherQueueRunning  = !HasherQueueState.ToLower().Contains("pause");
                GeneralQueueRunning = !GeneralQueueState.ToLower().Contains("pause");

                ServerStatusEventArgs evt = new ServerStatusEventArgs();
                evt.BanReason           = BanReason;
                evt.GeneralQueueCount   = GeneralQueueCount;
                evt.GeneralQueueRunning = GeneralQueueRunning;
                evt.GeneralQueueState   = GeneralQueueState;
                evt.HasherQueueCount    = HasherQueueCount;
                evt.HasherQueueRunning  = HasherQueueRunning;
                evt.HasherQueueState    = HasherQueueState;

                evt.ImagesQueueCount   = status.ImagesQueueCount;
                evt.ImagesQueueRunning = !status.ImagesQueueState.ToLower().Contains("pause");
                evt.ImagesQueueState   = status.ImagesQueueState;

                evt.IsBanned = IsBanned;

                OnServerStatusEvent(evt);

                string msg = string.Format("JMM Server Status: {0}/{1} -- {2}/{3}", GeneralQueueState, GeneralQueueCount, HasherQueueState, HasherQueueCount);
                //BaseConfig.MyAnimeLog.Write(msg);
            }

            catch { }

            serverStatusTimer.Start();
        }
Esempio n. 2
0
        public bool SetupBinaryClient()
        {
            ServerOnline      = false;
            _clientBinaryHTTP = null;
            ImportFolders.Clear();

            if (!SettingsAreValid())
            {
                return(false);
            }

            try
            {
                AnimePluginSettings settings = new AnimePluginSettings();
                string url = string.Format(@"http://{0}:{1}/JMMServerBinary", settings.JMMServer_Address, settings.JMMServer_Port);
                BaseConfig.MyAnimeLog.Write("JMM Server URL: " + url);

                BinaryMessageEncodingBindingElement encoding = new BinaryMessageEncodingBindingElement();
                encoding.ReaderQuotas.MaxArrayLength         = int.MaxValue;
                encoding.ReaderQuotas.MaxBytesPerRead        = int.MaxValue;
                encoding.ReaderQuotas.MaxDepth               = int.MaxValue;
                encoding.ReaderQuotas.MaxNameTableCharCount  = int.MaxValue;
                encoding.ReaderQuotas.MaxStringContentLength = int.MaxValue;

                HttpTransportBindingElement transport = new HttpTransportBindingElement();
                transport.MaxReceivedMessageSize = int.MaxValue;
                transport.MaxBufferPoolSize      = int.MaxValue;
                transport.MaxBufferSize          = int.MaxValue;
                transport.MaxReceivedMessageSize = int.MaxValue;


                Binding binding = new CustomBinding(encoding, transport);

                binding.SendTimeout    = new TimeSpan(30, 0, 30);
                binding.ReceiveTimeout = new TimeSpan(30, 0, 30);
                binding.OpenTimeout    = new TimeSpan(30, 0, 30);
                binding.CloseTimeout   = new TimeSpan(30, 0, 30);

                EndpointAddress endpoint = new EndpointAddress(new Uri(url));

                var factory = new ChannelFactory <JMMServerBinary.IJMMServerChannel>(binding, endpoint);
                foreach (OperationDescription op in factory.Endpoint.Contract.Operations)
                {
                    var dataContractBehavior = op.Behaviors.Find <DataContractSerializerOperationBehavior>();
                    if (dataContractBehavior != null)
                    {
                        dataContractBehavior.MaxItemsInObjectGraph = int.MaxValue;
                    }
                }

                _clientBinaryHTTP = factory.CreateChannel();

                // try connecting to see if the server is responding
                JMMServerBinary.Contract_ServerStatus status = JMMServerVM.Instance.clientBinaryHTTP.GetServerStatus();
                ServerOnline = true;

                GetServerSettings();
                RefreshImportFolders();

                BaseConfig.MyAnimeLog.Write("JMM Server Status: " + status.GeneralQueueState);

                return(true);
            }
            catch (Exception ex)
            {
                //Utils.ShowErrorMessage(ex);
                BaseConfig.MyAnimeLog.Write(ex.ToString());
                return(false);
            }
        }