using System; using System.Net; using System.Threading; using ZeroLevel; using ZeroLevel.Network; using ZeroLevel.Services.Applications; namespace TestApp { public class MyService : BaseZeroService { public MyService() : base() { } protected override void StartAction() { Log.Info("Started"); ReadServiceInfo(); AutoregisterInboxes(UseHost()); int counter = 0; Sheduller.RemindEvery(TimeSpan.FromSeconds(1), () => { Log.Info($"RPS: {counter}"); Interlocked.Exchange(ref counter, 0); }); while(true) { try { Exchange.GetConnection("test.app")?.Request("counter", s => Interlocked.Add(ref counter, s)); } catch { Thread.Sleep(300); } } /* Sheduller.RemindEvery(TimeSpan.FromSeconds(1), () => { var client = Exchange.GetConnection("test.app"); client.Send("pum"); client.Send(BaseSocket.DEFAULT_MESSAGE_INBOX, "'This is message'"); client.Request("d2s", DateTime.Now, s => Log.Info($"Response: {s}")); client.Request(BaseSocket.DEFAULT_REQUEST_INBOX, new IPEndPoint(NetUtils.GetNonLoopbackAddress(), NetUtils.GetFreeTcpPort()), s => Log.Info($"Response: {s}")); client.Request("now", s => Log.Info($"Response date: {s}")); client.Request(BaseSocket.DEFAULT_REQUEST_WITHOUT_ARGS_INBOX, s => Log.Info($"Response ip: {s}")); }); */ /*Sheduller.RemindEvery(TimeSpan.FromSeconds(3), () => { Exchange.Request("test.app", "metainfo", info => { var si = new StringBuilder(); si.AppendLine(info.Name); si.AppendLine(info.ServiceKey); si.AppendLine(info.Version); Log.Info("Service info:\r\n{0}", si.ToString()); }); });*/ } [ExchangeReplierWithoutArg("counter")] public int GetCounter(ISocketClient client) { return 1; } protected override void StopAction() { Log.Info("Stopped"); } } }