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#
140 lines
3.5 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|