You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
3.5 KiB
C#

9 months ago
using NetMQ.Zyre;
using NetMQ.Zyre.ZyreEvents;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace POSV.Utils
{
public class ZyreUtils
{
private static Logger logger = NLog.LogManager.GetCurrentClassLogger();
private static object _lock = new object();
private static ZyreUtils _instance = null;
private string _name;
private Guid _uuid;
private Zyre _zyre;
private string _endpoint;
public static ZyreUtils Instance
{
get
{
if (_instance == null)
{
lock (_lock)
{
_instance = new ZyreUtils();
_instance.InitZyre();
}
}
return _instance;
}
}
private void InitZyre()
{
try
{
string name = string.Format("pos_{0}",Global.Instance.Authc.PosNo);
this._zyre = new Zyre(name, true, ZyreLogger);
this._name = this._zyre.Name();
this._uuid = this._zyre.Uuid();
this._zyre.EnterEvent += ZyreEnterEvent;
this._zyre.StopEvent += ZyreStopEvent;
this._zyre.ExitEvent += ZyreExitEvent;
this._zyre.EvasiveEvent += ZyreEvasiveEvent;
this._zyre.JoinEvent += ZyreJoinEvent;
this._zyre.LeaveEvent += ZyreLeaveEvent;
this._zyre.WhisperEvent += ZyreWhisperEvent;
this._zyre.ShoutEvent += ZyreShoutEvent;
}
catch (Exception ex)
{
logger.Error(ex, "加载沽清数据异常");
}
finally
{
}
}
/// <summary>
/// 启动任务
/// </summary>
public void Startup()
{
this._zyre.Start();
this._endpoint = _zyre.EndPoint();
}
/// <summary>
/// 停止任务
/// </summary>
public void Stop()
{
this._zyre.Stop();
this._endpoint = null;
}
private void ZyreShoutEvent(object sender, ZyreEventShout e)
{
}
private void ZyreWhisperEvent(object sender, ZyreEventWhisper e)
{
}
private void ZyreJoinEvent(object sender, ZyreEventJoin e)
{
}
private void ZyreLeaveEvent(object sender, ZyreEventLeave e)
{
logger.Info($"POS Leave: {0} {1}", e.SenderName, e.SenderUuid.ToShortString6());
}
private void ZyreEvasiveEvent(object sender, ZyreEventEvasive e)
{
logger.Info($"POS Evasive: {0} {1}", e.SenderName, e.SenderUuid.ToShortString6());
}
private void ZyreEnterEvent(object sender, ZyreEventEnter e)
{
logger.Info($"发现POS接入局域网: {0} {1} at {2}", e.SenderName, e.SenderUuid.ToShortString6(), e.Address);
}
private void ZyreStopEvent(object sender, ZyreEventStop e)
{
logger.Info($"POS服务关闭: {0} {1}", e.SenderName, e.SenderUuid.ToShortString6());
}
private void ZyreExitEvent(object sender, ZyreEventExit e)
{
logger.Info($"POS退出: {0} {1}", e.SenderName, e.SenderUuid.ToShortString6());
}
private void ZyreLogger(string message)
{
logger.Info(message);
}
}
}