2017-07-17 21:42:36 +02:00
|
|
|
|
using System;
|
2017-06-19 15:42:10 +02:00
|
|
|
|
using System.Net;
|
|
|
|
|
using System.Net.Sockets;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
2017-07-17 21:42:36 +02:00
|
|
|
|
using Newtonsoft.Json;
|
2017-10-13 06:14:54 +02:00
|
|
|
|
using NadekoBot.Core.Services;
|
2017-06-19 15:42:10 +02:00
|
|
|
|
|
2017-07-17 21:42:36 +02:00
|
|
|
|
namespace NadekoBot.Common.ShardCom
|
2017-06-19 15:42:10 +02:00
|
|
|
|
{
|
2017-10-10 00:04:02 +02:00
|
|
|
|
public class ShardComServer
|
2017-06-19 15:42:10 +02:00
|
|
|
|
{
|
2017-10-10 00:04:02 +02:00
|
|
|
|
private readonly IDataCache _cache;
|
2017-06-25 06:09:23 +02:00
|
|
|
|
|
2017-10-10 00:04:02 +02:00
|
|
|
|
public ShardComServer(IDataCache cache)
|
2017-06-25 06:09:23 +02:00
|
|
|
|
{
|
2017-10-10 00:04:02 +02:00
|
|
|
|
_cache = cache;
|
2017-06-25 06:09:23 +02:00
|
|
|
|
}
|
2017-06-19 15:42:10 +02:00
|
|
|
|
|
|
|
|
|
public void Start()
|
|
|
|
|
{
|
2017-10-10 00:04:02 +02:00
|
|
|
|
var sub = _cache.Redis.GetSubscriber();
|
|
|
|
|
sub.SubscribeAsync("shardcoord_send", (ch, data) =>
|
2017-06-19 15:42:10 +02:00
|
|
|
|
{
|
2017-10-10 00:04:02 +02:00
|
|
|
|
var _ = OnDataReceived(JsonConvert.DeserializeObject<ShardComMessage>(data));
|
|
|
|
|
}, StackExchange.Redis.CommandFlags.FireAndForget);
|
2017-06-19 15:42:10 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public event Func<ShardComMessage, Task> OnDataReceived = delegate { return Task.CompletedTask; };
|
|
|
|
|
}
|
|
|
|
|
}
|