fixed for PR 121. Called UnhandledEvent, allows you see events that you aren't currently subscribed
This commit is contained in:
parent
6c6f327606
commit
0f61e78fe6
2 changed files with 13 additions and 13 deletions
|
@ -874,7 +874,7 @@ namespace AsterNET
|
||||||
|
|
||||||
#region RegisterEventHandler(Dictionary<int, Action<ManagerEvent>> list, Type eventType, Action<ManagerEvent> action)
|
#region RegisterEventHandler(Dictionary<int, Action<ManagerEvent>> list, Type eventType, Action<ManagerEvent> action)
|
||||||
|
|
||||||
internal static void RegisterEventHandler(Dictionary<int, Action<ManagerEvent>> list, Type eventType, Action<ManagerEvent> action)
|
internal static void RegisterEventHandler(Dictionary<int, Func<ManagerEvent, bool>> list, Type eventType, Func<ManagerEvent, bool> action)
|
||||||
{
|
{
|
||||||
var eventTypeName = eventType.Name;
|
var eventTypeName = eventType.Name;
|
||||||
int eventHash = eventTypeName.GetHashCode();
|
int eventHash = eventTypeName.GetHashCode();
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using AsterNET.Manager.Action;
|
using AsterNET.Manager.Action;
|
||||||
|
@ -7,11 +6,9 @@ using AsterNET.Manager.Event;
|
||||||
using AsterNET.Manager.Response;
|
using AsterNET.Manager.Response;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Net.Sockets;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using AsterNET.IO;
|
using AsterNET.IO;
|
||||||
using AsterNET.Util;
|
|
||||||
|
|
||||||
namespace AsterNET.Manager
|
namespace AsterNET.Manager
|
||||||
{
|
{
|
||||||
|
@ -58,7 +55,7 @@ namespace AsterNET.Manager
|
||||||
private int reconnectCount;
|
private int reconnectCount;
|
||||||
|
|
||||||
private Dictionary<int, ConstructorInfo> registeredEventClasses;
|
private Dictionary<int, ConstructorInfo> registeredEventClasses;
|
||||||
private Dictionary<int, Action<ManagerEvent>> registeredEventHandlers;
|
private Dictionary<int, Func<ManagerEvent, bool>> registeredEventHandlers;
|
||||||
private event EventHandler<ManagerEvent> internalEvent;
|
private event EventHandler<ManagerEvent> internalEvent;
|
||||||
private bool fireAllEvents = false;
|
private bool fireAllEvents = false;
|
||||||
private Thread callerThread;
|
private Thread callerThread;
|
||||||
|
@ -446,7 +443,7 @@ namespace AsterNET.Manager
|
||||||
|
|
||||||
Helper.RegisterBuiltinEventClasses(registeredEventClasses);
|
Helper.RegisterBuiltinEventClasses(registeredEventClasses);
|
||||||
|
|
||||||
registeredEventHandlers = new Dictionary<int, Action<ManagerEvent>>();
|
registeredEventHandlers = new Dictionary<int, Func<ManagerEvent, bool>>();
|
||||||
|
|
||||||
#region Event mapping table
|
#region Event mapping table
|
||||||
Helper.RegisterEventHandler(registeredEventHandlers, typeof(AgentCallbackLoginEvent), arg => fireEvent(AgentCallbackLogin, arg));
|
Helper.RegisterEventHandler(registeredEventHandlers, typeof(AgentCallbackLoginEvent), arg => fireEvent(AgentCallbackLogin, arg));
|
||||||
|
@ -630,12 +627,10 @@ namespace AsterNET.Manager
|
||||||
if (registeredEventHandlers.ContainsKey(eventHash))
|
if (registeredEventHandlers.ContainsKey(eventHash))
|
||||||
{
|
{
|
||||||
var currentEvent = registeredEventHandlers[eventHash];
|
var currentEvent = registeredEventHandlers[eventHash];
|
||||||
currentEvent(e);
|
if (currentEvent(e))
|
||||||
return;
|
{
|
||||||
}
|
return;
|
||||||
else
|
}
|
||||||
{
|
|
||||||
fireEvent(UnhandledEvent, e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fireAllEvents)
|
if (fireAllEvents)
|
||||||
|
@ -1900,10 +1895,15 @@ namespace AsterNET.Manager
|
||||||
/// <typeparam name="T">EventHandler argument</typeparam>
|
/// <typeparam name="T">EventHandler argument</typeparam>
|
||||||
/// <param name="asterEvent">Event delegate</param>
|
/// <param name="asterEvent">Event delegate</param>
|
||||||
/// <param name="arg">ManagerEvent or inherited class. Argument of eventHandler.</param>
|
/// <param name="arg">ManagerEvent or inherited class. Argument of eventHandler.</param>
|
||||||
private void fireEvent<T>(EventHandler<T> asterEvent, ManagerEvent arg) where T : ManagerEvent
|
private bool fireEvent<T>(EventHandler<T> asterEvent, ManagerEvent arg) where T : ManagerEvent
|
||||||
{
|
{
|
||||||
if (asterEvent != null)
|
if (asterEvent != null)
|
||||||
|
{
|
||||||
asterEvent(this, (T)arg);
|
asterEvent(this, (T)arg);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue