Skip to content

Commit

Permalink
Move AgentNetwork to Symu.DNA
Browse files Browse the repository at this point in the history
  • Loading branch information
lmorisse committed Aug 31, 2020
1 parent 0d746ef commit 58c32d3
Show file tree
Hide file tree
Showing 13 changed files with 53 additions and 401 deletions.
96 changes: 2 additions & 94 deletions SourceCode/Symu/Classes/Agents/CognitiveAgent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@
using Symu.Classes.Agents.Models.CognitiveTemplates;
using Symu.Classes.Blockers;
using Symu.Classes.Task.Manager;
using Symu.Common;
using Symu.Common.Interfaces.Agent;
using Symu.Common.Interfaces.Entity;
using Symu.DNA.TwoModesNetworks.Sphere;
using Symu.Environment;
using Symu.Messaging.Messages;
Expand Down Expand Up @@ -263,9 +261,9 @@ protected override void FinalizeModels()
}
}

public override void Dispose()
protected override void Dispose(bool disposing)
{
base.Dispose();
base.Dispose(disposing);
TaskProcessor?.Dispose();
}

Expand All @@ -289,95 +287,5 @@ public override void Start()
}

#endregion

#region Subscribe

private void ActSubscribe(Message message)
{
switch (message.Action)
{
case MessageAction.Remove:
RemoveSubscribe(message);
break;
case MessageAction.Add:
AddSubscribe(message);
break;
}
}

/// <summary>
/// Remove a subscription from the list of subscriptions
/// </summary>
/// <param name="message"></param>
public void RemoveSubscribe(Message message)
{
if (message is null)
{
throw new ArgumentNullException(nameof(message));
}

if (message.HasAttachments)
{
MessageProcessor.Subscriptions.Unsubscribe(message.Sender, (byte) message.Attachments.First);
}
else
{
MessageProcessor.Subscriptions.Unsubscribe(message.Sender);
}
}

/// <summary>
/// Add a subscription from the list of subscriptions
/// </summary>
/// <param name="message"></param>
public void AddSubscribe(Message message)
{
if (message is null)
{
throw new ArgumentNullException(nameof(message));
}

foreach (var subject in message.Attachments.Objects)
{
MessageProcessor.Subscriptions.Subscribe(message.Sender, (byte) subject);
}
}

/// <summary>
/// Send a message to subscribe to the AgentId to the subject
/// </summary>
/// <param name="agentId"></param>
/// <param name="subject"></param>
public void Subscribe(IAgentId agentId, byte subject)
{
var message = new Message(AgentId, agentId, MessageAction.Add, SymuYellowPages.Subscribe, subject);
if (Schedule.Step == 0)
{
// Not sure the receiver exists already
TrySendDelayed(message);
}
else
{
Send(message);
}
}

/// <summary>
/// UnSubscribe to the Message subject
/// </summary>
public void Unsubscribe(IAgentId agentId, byte subject)
{
Send(agentId, MessageAction.Remove, SymuYellowPages.Subscribe, subject);
}

/// <summary>
/// UnSubscribe to all subjects
/// </summary>
public void Unsubscribe(IAgentId agentId)
{
Send(agentId, MessageAction.Remove, SymuYellowPages.Subscribe);
}

#endregion
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ public void Learn(IId knowledgeId, Bits knowledgeBits, float maxRateLearnable, u
return;
}

if (knowledgeId.IsNotNull && knowledgeBits == null)
if (!knowledgeId.IsNull && knowledgeBits == null)
{
throw new ArgumentNullException(nameof(knowledgeBits));
}
Expand Down
28 changes: 17 additions & 11 deletions SourceCode/Symu/Classes/Agents/ReactiveAgent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
using System;
using Symu.Common;
using Symu.Common.Interfaces.Agent;
using Symu.DNA.Agent;
using Symu.Environment;
using Symu.Messaging.Manager;
using Symu.Messaging.Messages;
Expand All @@ -21,17 +22,11 @@

namespace Symu.Classes.Agents
{
public interface IAgent
{
IAgentId AgentId {get;
set;
}
}
/// <summary>
/// An abstract base class for agents.
/// You must define your own agent derived classes derived
/// </summary>
public abstract partial class ReactiveAgent: IAgent
public abstract partial class ReactiveAgent : IAgent
{
/// <summary>
/// constructor for generic new()
Expand Down Expand Up @@ -126,7 +121,14 @@ public void Stop()
{
State = AgentState.Stopping;
}
public virtual void Dispose()

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
MessageProcessor?.Dispose();
}
Expand Down Expand Up @@ -261,7 +263,7 @@ public void AddSubscribe(Message message)
/// </summary>
/// <param name="agentId"></param>
/// <param name="subject"></param>
public void Subscribe(AgentId agentId, byte subject)
public void Subscribe(IAgentId agentId, byte subject)
{
var message = new Message(AgentId, agentId, MessageAction.Add, SymuYellowPages.Subscribe, subject);
if (Schedule.Step == 0)
Expand All @@ -278,19 +280,23 @@ public void Subscribe(AgentId agentId, byte subject)
/// <summary>
/// UnSubscribe to the Message subject
/// </summary>
public void Unsubscribe(AgentId agentId, byte subject)
public void Unsubscribe(IAgentId agentId, byte subject)
{
Send(agentId, MessageAction.Remove, SymuYellowPages.Subscribe, subject);
}

/// <summary>
/// UnSubscribe to all subjects
/// </summary>
public void Unsubscribe(AgentId agentId)
public void Unsubscribe(IAgentId agentId)
{
Send(agentId, MessageAction.Remove, SymuYellowPages.Subscribe);
}

#endregion

/// <summary>Indicates whether a structure is null. This property is read-only.</summary>
/// <returns>true if the value of this object is null. Otherwise, false.</returns>
public bool IsNull => AgentId.IsNull;
}
}
4 changes: 2 additions & 2 deletions SourceCode/Symu/Classes/Task/SymuTask.cs
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,8 @@ public float Weight
/// </summary>
public byte Priority { get; set; }

public bool IsAssigned => Assigned!= null && Assigned.IsNotNull;
public bool HasCreator => Creator != null && Creator.IsNotNull;
public bool IsAssigned => !(Assigned == null || Assigned.IsNull);
public bool HasCreator => !(Creator == null || Creator.IsNull);

public bool IsStarted { get; private set; }
public bool IsToDo => !IsStarted && !IsBlocked && !IsAssigned;
Expand Down
126 changes: 0 additions & 126 deletions SourceCode/Symu/Repository/Networks/Agent/AgentNetwork.cs

This file was deleted.

0 comments on commit 58c32d3

Please sign in to comment.