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(); }
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); } }