mirror of https://github.com/ogoun/Zero.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.5 KiB
90 lines
2.5 KiB
using System;
|
|
using System.Net;
|
|
using System.Threading;
|
|
using ZeroLevel;
|
|
using ZeroLevel.Network;
|
|
using ZeroLevel.Services.Applications;
|
|
|
|
namespace Source
|
|
{
|
|
public class SourceService
|
|
: BaseZeroService
|
|
{
|
|
protected override void StartAction()
|
|
{
|
|
ReadServiceInfo();
|
|
AutoregisterInboxes(UseHost());
|
|
|
|
Exchange.RoutesStorage.Set("test.processor", new IPEndPoint(IPAddress.Loopback, 8801));
|
|
|
|
/*Sheduller.RemindEvery(TimeSpan.FromMilliseconds(100), () =>
|
|
{
|
|
if (Exchange.Send("test.processor", "handle", Environment.TickCount))
|
|
{
|
|
Interlocked.Increment(ref _proceed);
|
|
}
|
|
});*/
|
|
|
|
try
|
|
{
|
|
using (var waiter = new ManualResetEventSlim(false))
|
|
{
|
|
while (true)
|
|
{
|
|
try
|
|
{
|
|
var ir = Exchange.GetConnection("test.processor")?.Request<long, bool>("handle"
|
|
, Environment.TickCount
|
|
, s =>
|
|
{
|
|
Interlocked.Increment(ref _proceed);
|
|
waiter.Set();
|
|
});
|
|
if (ir == null || ir == false)
|
|
{
|
|
Thread.Sleep(300);
|
|
waiter.Set();
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
Thread.Sleep(300);
|
|
waiter.Set();
|
|
}
|
|
waiter.Wait(5000);
|
|
waiter.Reset();
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
Thread.Sleep(300);
|
|
}
|
|
}
|
|
|
|
protected override void StopAction()
|
|
{
|
|
}
|
|
|
|
[ExchangeReplierWithoutArg("meta")]
|
|
public ZeroServiceInfo GetCounter(ISocketClient client)
|
|
{
|
|
return ServiceInfo;
|
|
}
|
|
|
|
private long _proceed = 0;
|
|
|
|
[ExchangeReplierWithoutArg("Proceed")]
|
|
public long GetProceedItemsCount(ISocketClient client)
|
|
{
|
|
return _proceed;
|
|
}
|
|
|
|
[ExchangeReplierWithoutArg("ping")]
|
|
public bool Ping(ISocketClient client)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|