te
This commit is contained in:
parent
01151e679b
commit
57b2f0400e
265 changed files with 22828 additions and 6 deletions
83
Unused/Decal.Adapter.Messages/AdapterMessageEventArgs.cs
Normal file
83
Unused/Decal.Adapter.Messages/AdapterMessageEventArgs.cs
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Decal.Adapter.Messages;
|
||||
|
||||
/// <summary>
|
||||
/// The base from which Adapter messages derive
|
||||
/// </summary>
|
||||
[CLSCompliant(true)]
|
||||
public class AdapterMessageEventArgs : EventArgs
|
||||
{
|
||||
private EventHandler<AdapterMessageResponseEventArgs> responder;
|
||||
|
||||
private List<object> handlers;
|
||||
|
||||
private bool canAddHandlers;
|
||||
|
||||
internal bool CanAddHandlers
|
||||
{
|
||||
get
|
||||
{
|
||||
return canAddHandlers;
|
||||
}
|
||||
set
|
||||
{
|
||||
canAddHandlers = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fires for each handler that completes processing of the message
|
||||
/// </summary>
|
||||
public event EventHandler<AdapterMessageResponseEventArgs> MessageComplete
|
||||
{
|
||||
add
|
||||
{
|
||||
responder = (EventHandler<AdapterMessageResponseEventArgs>)Delegate.Combine(responder, value);
|
||||
}
|
||||
remove
|
||||
{
|
||||
responder = (EventHandler<AdapterMessageResponseEventArgs>)Delegate.Remove(responder, value);
|
||||
}
|
||||
}
|
||||
|
||||
internal AdapterMessageEventArgs()
|
||||
{
|
||||
handlers = new List<object>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Acknowledges that the object intends to process the message
|
||||
/// </summary>
|
||||
/// <param name="obj">The object that will do the processing</param>
|
||||
public void AddHandler(object obj)
|
||||
{
|
||||
if (!CanAddHandlers)
|
||||
{
|
||||
throw new InvalidOperationException("Unable to add handlers at this time");
|
||||
}
|
||||
if (obj != null)
|
||||
{
|
||||
handlers.Add(obj);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Signals completion of message processing
|
||||
/// </summary>
|
||||
/// <param name="handler">The object that handled the message</param>
|
||||
/// <param name="e">The message response</param>
|
||||
public void SetComplete(object handler, AdapterMessageResponseEventArgs e)
|
||||
{
|
||||
handlers.Remove(handler);
|
||||
if (handlers.Count == 0)
|
||||
{
|
||||
e.Complete = true;
|
||||
}
|
||||
if (responder != null)
|
||||
{
|
||||
responder(this, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
|
||||
namespace Decal.Adapter.Messages;
|
||||
|
||||
/// <summary>
|
||||
/// Defines a response to a message request
|
||||
/// </summary>
|
||||
[CLSCompliant(true)]
|
||||
public class AdapterMessageResponseEventArgs : EventArgs
|
||||
{
|
||||
private bool success;
|
||||
|
||||
private bool complete;
|
||||
|
||||
/// <summary>
|
||||
/// Whether or not the actions take due to the message succeeded
|
||||
/// </summary>
|
||||
public bool Succeeded => success;
|
||||
|
||||
/// <summary>
|
||||
/// Whether or not all handlers have completed processing
|
||||
/// </summary>
|
||||
public bool Complete
|
||||
{
|
||||
get
|
||||
{
|
||||
return complete;
|
||||
}
|
||||
internal set
|
||||
{
|
||||
complete = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create a new AdapterMessageResponse
|
||||
/// </summary>
|
||||
/// <param name="success">Did these actions succeed?</param>
|
||||
protected AdapterMessageResponseEventArgs(bool success)
|
||||
{
|
||||
this.success = success;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue