Exchange actor base class providing the common logic for implementation of exchanges - the actors routing the messages to another actors based on subscriptions.
Exchange actor base class providing the common logic for implementation of exchanges - the actors routing the messages to another actors based on subscriptions.
+
public abstract class ExchangeActor<TSubscription, TSubscriptionMessage, TUnSubscriptionMessage> : Actor
+ where TSubscription: Subscription
+ where TSubscriptionMessage: SubscriptionMessage
+ where TUnSubscriptionMessage: UnSubscriptionMessage
Message handler The subscription/unsubscription messages are handled first, the other messages are matched to the existing subscriptions and distributed to matching subscribers
Checks for the list of existing subscriptions that are to be replaced by the new subscription defined in subscriptionMessage The new subscription can replace the existing subscriptions of other actors.There is no "signaling" to the actors, that their subscription has been replaced (canceled).
Processes the unsubscription message Checks the existing subscriptions of actorRef whether they match the unSubscriptionMessage and removes the matching ones from Subscriptions list.
Message handler The subscription/unsubscription messages are handled first, the other messages are matched to the existing subscriptions and distributed to matching subscribers
Checks for the list of existing subscriptions that are to be replaced by the new subscription defined in subscriptionMessage The new subscription can replace the existing subscriptions of other actors.There is no "signaling" to the actors, that their subscription has been replaced (canceled).
Processes the unsubscription message Checks the existing subscriptions of actorRef whether they match the unSubscriptionMessage and removes the matching ones from Subscriptions list.
+
diff --git a/doc/net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md b/doc/net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md
new file mode 100644
index 0000000..03e7630
--- /dev/null
+++ b/doc/net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md
@@ -0,0 +1,519 @@
+# RAD Actor System Documentation #
+## net.adamec.lib.common.actor.actor.exchanges.@base Namespace ##
+### Classes ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq) | public abstract | Exchange actor base class providing the common logic for implementation of exchanges - the actors routing the messages to another actors based on subscriptions. |
+ | [Subscription](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.subscription__1q5jclm) | public | Base exchange actor subscription |
+ | [SubscriptionMessage](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.subscriptionmessage__1d4egm1) | public | Base exchange actor subscription messages |
+ | [UnSubscriptionMessage](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.unsubscriptionmessage__15gfzkw) | public | Base exchange actor un-subscription message |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage> Class ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.@base](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#n-net.adamec.lib.common.actor.actor.exchanges.base__1g84l6h)
+Assembly: net.adamec.lib.common.actor
+Sources: actor\exchanges\base\ExchangeActor.cs
+
+
+Exchange actor base class providing the common logic for implementation of exchanges - the actors routing the messages to another actors based on subscriptions.
+
+
+
+```csharp
+public abstract class ExchangeActor : Actor
+ where TSubscription: Subscription
+ where TSubscriptionMessage: SubscriptionMessage
+ where TUnSubscriptionMessage: UnSubscriptionMessage
+```
+
+Type parameters
TSubscription
Type of the subscription
TSubscriptionMessage
Type of the subscription message
TUnSubscriptionMessage
Type of the unSubscription message
+Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](net.adamec.lib.common.utils__7vdji9.md#t-net.adamec.lib.common.utils.basedisposable__7s72ps) -> [net.adamec.lib.common.actor.actor.Actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actor__buuxwr)
+Derived: [net.adamec.lib.common.actor.actor.exchanges.single.SingleExchangeActor](net.adamec.lib.common.actor.actor.exchanges.single__6r83x4.md#t-net.adamec.lib.common.actor.actor.exchanges.single.singleexchangeactor__1q6rr7y), [net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeyExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor__1inw5x7), [net.adamec.lib.common.actor.actor.exchanges.typed.TypedMultiExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor__1rgmwat), [net.adamec.lib.common.actor.actor.exchanges.typed.TypedSingleExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor__i752da)
+Implements: IDisposable, [net.adamec.lib.common.actor.actor.IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
+
+
+### Properties ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [Subscriptions](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) | protected | List of subscriptions |
+
+
+
+
+### Constructors ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>(IActorSystem, string)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.-ctor_net.adamec.lib.common.actor.actorsystem.iactorsystem-system.string___x732m3) | protected | CTOR |
+
+
+
+
+### Methods ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [DistributeMessage(Envelope, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscription)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.distributemessage_net.adamec.lib.common.actor.message.envelope--0___10o2gwi) | protected | Distributes the message according to single subscription |
+ | [GetSubscriptionsForMessage(Envelope)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.getsubscriptionsformessage_net.adamec.lib.common.actor.message.envelope___1lba1kc) | protected | Returns the list of subscriptions that match the incoming envelope |
+ | [IsUnSubscribeMatch(ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscription, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TUnSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.isunsubscribematch_-0--2___87gny2) | protected | Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) |
+ | [Receive(Envelope)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.receive_net.adamec.lib.common.actor.message.envelope___k7qhyb) | protected | Message handler The subscription/unsubscription messages are handled first, the other messages are matched to the existing subscriptions and distributed to matching subscribers |
+ | [ReplaceOnSubscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.replaceonsubscribe_net.adamec.lib.common.actor.actor.iactorref--1___16aaybh) | protected | Checks for the list of existing subscriptions that are to be replaced by the new subscription defined in subscriptionMessage The new subscription can replace the existing subscriptions of other actors.There is no "signaling" to the actors, that their subscription has been replaced (canceled). |
+ | [Start()](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.start__1sb73cd) | public | Starts the exchange actor |
+ | [Stop()](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.stop__1wazv35) | public | Stops the exchange actor |
+ | [Subscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscribe_net.adamec.lib.common.actor.actor.iactorref--1___ajhl0) | protected | Processes the subscription message It first checks, whether the new subscription replaces any existing subscription by calling [ReplaceOnSubscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.replaceonsubscribe_net.adamec.lib.common.actor.actor.iactorref--1___16aaybh) . If the returned list is not empty, the replaces subscriptions are removed from the [Subscriptions](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) list. The [SubscriptionFactory(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptionfactory_net.adamec.lib.common.actor.actor.iactorref--1___hz2yob) is called to create the new instance of subscription and the subscription is added to the [Subscriptions](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) list. |
+ | [SubscriptionFactory(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptionfactory_net.adamec.lib.common.actor.actor.iactorref--1___hz2yob) | protected abstract | Creates a new subscription instance based on the subscriptionMessage |
+ | [UnSubscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TUnSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.unsubscribe_net.adamec.lib.common.actor.actor.iactorref--2___198es5m) | protected | Processes the unsubscription message Checks the existing subscriptions of actorRef whether they match the unSubscriptionMessage and removes the matching ones from [Subscriptions](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) list. |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.Subscriptions Property ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.@base](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#n-net.adamec.lib.common.actor.actor.exchanges.base__1g84l6h)
+Assembly: net.adamec.lib.common.actor
+Type: [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
+Sources: actor\exchanges\base\ExchangeActor.cs
+
+
+List of subscriptions
+
+
+
+```csharp
+protected List Subscriptions { get; }
+```
+
+Property value
True if the messages has been handled, otherwise false
Overrides: [Actor.Receive(Envelope)](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.actor.receive_net.adamec.lib.common.actor.message.envelope___lic5c4)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.ReplaceOnSubscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage) Method ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.@base](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#n-net.adamec.lib.common.actor.actor.exchanges.base__1g84l6h)
+Assembly: net.adamec.lib.common.actor
+Type: [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
+Sources: actor\exchanges\base\ExchangeActor.cs
+
+
+Checks for the list of existing subscriptions that are to be replaced by the new subscription defined in subscriptionMessage The new subscription can replace the existing subscriptions of other actors.There is no "signaling" to the actors, that their subscription has been replaced (canceled).
+
+
+
+```csharp
+protected virtual ExchangeActor.TSubscription[] ReplaceOnSubscribe(IActorRef actorRef, ExchangeActor.TSubscriptionMessage subscriptionMessage)
+```
+
+Method parameters
List of existing subscriptions to be removed from the [Subscriptions](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) list
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.Start() Method ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.@base](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#n-net.adamec.lib.common.actor.actor.exchanges.base__1g84l6h)
+Assembly: net.adamec.lib.common.actor
+Type: [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
+Sources: actor\exchanges\base\ExchangeActor.cs
+
+
+Starts the exchange actor
+
+
+
+```csharp
+public virtual void Start()
+```
+
+Return value
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.Subscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage) Method ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.@base](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#n-net.adamec.lib.common.actor.actor.exchanges.base__1g84l6h)
+Assembly: net.adamec.lib.common.actor
+Type: [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
+Sources: actor\exchanges\base\ExchangeActor.cs
+
+
+Processes the subscription message It first checks, whether the new subscription replaces any existing subscription by calling [ReplaceOnSubscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.replaceonsubscribe_net.adamec.lib.common.actor.actor.iactorref--1___16aaybh) . If the returned list is not empty, the replaces subscriptions are removed from the [Subscriptions](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) list. The [SubscriptionFactory(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptionfactory_net.adamec.lib.common.actor.actor.iactorref--1___hz2yob) is called to create the new instance of subscription and the subscription is added to the [Subscriptions](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) list.
+
+
+
+```csharp
+protected virtual void Subscribe(IActorRef actorRef, ExchangeActor.TSubscriptionMessage subscriptionMessage)
+```
+
+Method parameters
public class SingleExchangeActor : ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.@base.Subscription,net.adamec.lib.common.actor.actor.exchanges.@base.SubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.@base.UnSubscriptionMessage>
Exchange Actor with zero or more actors per message type with routing based also on routing key Subscriptions are per actor, type and routing key. Subscription filter gets the all subscriptions where message is instance of filter type or its children and the routing keys match
Exchange Actor with zero or more actors per message type Subscriptions are per actor and type. Subscription filter gets the all subscriptions where message is instance of filter type or its children
Exchange Actor with zero or one actor per message type Subscriptions are per type. Subscription filter gets the exact type match and if not found, then first match where message is instance of filter type or its children
Exchange Actor with zero or more actors per message type with routing based also on routing key Subscriptions are per actor, type and routing key. Subscription filter gets the all subscriptions where message is instance of filter type or its children and the routing keys match
+
public class RoutingKeyExchangeActor : ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeySubscription,net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeySubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeyUnSubscriptionMessage>
Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children and the routing key matches the subscription
Checks whether the message routing key matches the subscription routing key The default implementation is for the exact match, override this method for more complex matching (for example regexp)
Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children and the routing key matches the subscription
Checks whether the message routing key matches the subscription routing key The default implementation is for the exact match, override this method for more complex matching (for example regexp)
Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
Exchange Actor with zero or more actors per message type Subscriptions are per actor and type. Subscription filter gets the all subscriptions where message is instance of filter type or its children
+
public class TypedMultiExchangeActor : ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscription,net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.typed.TypedUnSubscriptionMessage>
Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children
Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children
Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
Exchange Actor with zero or one actor per message type Subscriptions are per type. Subscription filter gets the exact type match and if not found, then first match where message is instance of filter type or its children
+
public class TypedSingleExchangeActor : ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscription,net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.typed.TypedUnSubscriptionMessage>
Returns the list of subscriptions that match the incoming envelope The filter gets the exact type match and if not found, then first match where message is instance of filter type or its children Note: There can be only one subscription per message type
Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
Returns the list of subscriptions that match the incoming envelope The filter gets the exact type match and if not found, then first match where message is instance of filter type or its children Note: There can be only one subscription per message type
Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
+
diff --git a/doc/net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md b/doc/net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md
new file mode 100644
index 0000000..ca635d0
--- /dev/null
+++ b/doc/net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md
@@ -0,0 +1,1084 @@
+# RAD Actor System Documentation #
+## net.adamec.lib.common.actor.actor.exchanges.typed Namespace ##
+### Classes ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [RoutingKeyExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor__1inw5x7) | public | Exchange Actor with zero or more actors per message type with routing based also on routing key Subscriptions are per actor, type and routing key. Subscription filter gets the all subscriptions where message is instance of filter type or its children and the routing keys match |
+ | [RoutingKeySubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription__1t32gw0) | public | Subscription for exchanges that routes the messages based on their type and routing key |
+ | [RoutingKeySubscriptionMessage](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscriptionmessage__1h3lr73) | public | Subscription message for [RoutingKeySubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription__1t32gw0) |
+ | [RoutingKeyUnSubscriptionMessage](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyunsubscriptionmessage__emjdu2) | public | UnSubscription message for [RoutingKeySubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription__1t32gw0) |
+ | [TypedMultiExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor__1rgmwat) | public | Exchange Actor with zero or more actors per message type Subscriptions are per actor and type. Subscription filter gets the all subscriptions where message is instance of filter type or its children |
+ | [TypedSingleExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor__i752da) | public | Exchange Actor with zero or one actor per message type Subscriptions are per type. Subscription filter gets the exact type match and if not found, then first match where message is instance of filter type or its children |
+ | [TypedSubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) | public | Subscription for exchanges that routes the messages based on their type |
+ | [TypedSubscriptionMessage](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscriptionmessage__1hh0wlc) | public | Subscription message for [TypedSubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) |
+ | [TypedUnSubscriptionMessage](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedunsubscriptionmessage__9g51i3) | public | UnSubscription message for [TypedSubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## RoutingKeyExchangeActor Class ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
+Assembly: net.adamec.lib.common.actor
+Sources: actor\exchanges\typed\RoutingKeyExchangeActor.cs
+
+
+Exchange Actor with zero or more actors per message type with routing based also on routing key Subscriptions are per actor, type and routing key. Subscription filter gets the all subscriptions where message is instance of filter type or its children and the routing keys match
+
+
+
+```csharp
+public class RoutingKeyExchangeActor : ExchangeActor
+```
+
+Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](net.adamec.lib.common.utils__7vdji9.md#t-net.adamec.lib.common.utils.basedisposable__7s72ps) -> [net.adamec.lib.common.actor.actor.Actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actor__buuxwr) -> [net.adamec.lib.common.actor.actor.exchanges.@base.ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeySubscription,net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeySubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeyUnSubscriptionMessage>](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
+Implements: IDisposable, [net.adamec.lib.common.actor.actor.IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
+
+
+### Constructors ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [RoutingKeyExchangeActor(IActorSystem, string)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor.-ctor_net.adamec.lib.common.actor.actorsystem.iactorsystem-system.string___17ryw0k) | public | CTOR |
+
+
+
+
+### Methods ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [GetSubscriptionsForMessage(Envelope)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor.getsubscriptionsformessage_net.adamec.lib.common.actor.message.envelope___1iabgbj) | protected | Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children and the routing key matches the subscription |
+ | [IsRoutingKeyMatch(string, string)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor.isroutingkeymatch_system.string-system.string___102orov) | protected | Checks whether the message routing key matches the subscription routing key The default implementation is for the exact match, override this method for more complex matching (for example regexp) |
+ | [IsUnSubscribeMatch(RoutingKeySubscription, RoutingKeyUnSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor.isunsubscribematch_net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyunsubscriptionmessage___1qyhqkr) | protected | Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type |
+ | [ReplaceOnSubscribe(IActorRef, RoutingKeySubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor.replaceonsubscribe_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscriptionmessage___rj17km) | protected | Removes existing subscriptions for actorRef with the same "subscription type" when a new subscription message arrives. |
+ | [SubscriptionFactory(IActorRef, RoutingKeySubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor.subscriptionfactory_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscriptionmessage___3ufphk) | protected | Creates a new net.adamec.lib.common.actor.actor.exchanges.typed.TypedRoutingKeySubscription instance based on the subscriptionMessage |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## RoutingKeyExchangeActor.RoutingKeyExchangeActor(IActorSystem, string) Constructor ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
+Assembly: net.adamec.lib.common.actor
+Type: [RoutingKeyExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor__1inw5x7)
+Sources: actor\exchanges\typed\RoutingKeyExchangeActor.cs
+
+
+CTOR
+
+
+
+```csharp
+public RoutingKeyExchangeActor(IActorSystem actorSystem, string name)
+```
+
+Constructor parameters
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## RoutingKeyExchangeActor.GetSubscriptionsForMessage(Envelope) Method ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
+Assembly: net.adamec.lib.common.actor
+Type: [RoutingKeyExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor__1inw5x7)
+Sources: actor\exchanges\typed\RoutingKeyExchangeActor.cs
+
+
+Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children and the routing key matches the subscription
+
+
+
+```csharp
+protected override RoutingKeySubscription[] GetSubscriptionsForMessage(Envelope envelope)
+```
+
+Method parameters
True when the message routing key matches the subscription routing key, otherwise false
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## RoutingKeyExchangeActor.IsUnSubscribeMatch(RoutingKeySubscription, RoutingKeyUnSubscriptionMessage) Method ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
+Assembly: net.adamec.lib.common.actor
+Type: [RoutingKeyExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor__1inw5x7)
+Sources: actor\exchanges\typed\RoutingKeyExchangeActor.cs
+
+
+Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
+
+
+
+```csharp
+protected override bool IsUnSubscribeMatch(RoutingKeySubscription subscription, RoutingKeyUnSubscriptionMessage unSubscriptionMessage)
+```
+
+Method parameters
Routing key filter (if null, matches all messages)
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## TypedMultiExchangeActor Class ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
+Assembly: net.adamec.lib.common.actor
+Sources: actor\exchanges\typed\TypedMultiExchangeActor.cs
+
+
+Exchange Actor with zero or more actors per message type Subscriptions are per actor and type. Subscription filter gets the all subscriptions where message is instance of filter type or its children
+
+
+
+```csharp
+public class TypedMultiExchangeActor : ExchangeActor
+```
+
+Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](net.adamec.lib.common.utils__7vdji9.md#t-net.adamec.lib.common.utils.basedisposable__7s72ps) -> [net.adamec.lib.common.actor.actor.Actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actor__buuxwr) -> [net.adamec.lib.common.actor.actor.exchanges.@base.ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscription,net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.typed.TypedUnSubscriptionMessage>](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
+Implements: IDisposable, [net.adamec.lib.common.actor.actor.IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
+
+
+### Constructors ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [TypedMultiExchangeActor(IActorSystem, string)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor.-ctor_net.adamec.lib.common.actor.actorsystem.iactorsystem-system.string___1l0lpb0) | public | CTOR |
+
+
+
+
+### Methods ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [GetSubscriptionsForMessage(Envelope)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor.getsubscriptionsformessage_net.adamec.lib.common.actor.message.envelope___9uu8op) | protected | Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children |
+ | [IsUnSubscribeMatch(TypedSubscription, TypedUnSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor.isunsubscribematch_net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription-net.adamec.lib.common.actor.actor.exchanges.typed.typedunsubscriptionmessage___kjj5nt) | protected | Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type |
+ | [ReplaceOnSubscribe(IActorRef, TypedSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor.replaceonsubscribe_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscriptionmessage___1wvem41) | protected | Removes existing subscriptions for actorRef with the same "subscription type" when a new subscription message arrives. |
+ | [SubscriptionFactory(IActorRef, TypedSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor.subscriptionfactory_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscriptionmessage___10dtbmj) | protected | Creates a new [TypedSubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) instance based on the subscriptionMessage |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## TypedMultiExchangeActor.TypedMultiExchangeActor(IActorSystem, string) Constructor ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
+Assembly: net.adamec.lib.common.actor
+Type: [TypedMultiExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor__1rgmwat)
+Sources: actor\exchanges\typed\TypedMultiExchangeActor.cs
+
+
+CTOR
+
+
+
+```csharp
+public TypedMultiExchangeActor(IActorSystem actorSystem, string name)
+```
+
+Constructor parameters
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## TypedMultiExchangeActor.GetSubscriptionsForMessage(Envelope) Method ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
+Assembly: net.adamec.lib.common.actor
+Type: [TypedMultiExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor__1rgmwat)
+Sources: actor\exchanges\typed\TypedMultiExchangeActor.cs
+
+
+Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children
+
+
+
+```csharp
+protected override TypedSubscription[] GetSubscriptionsForMessage(Envelope envelope)
+```
+
+Method parameters
List of subscriptions that match the incoming envelope
Overrides: [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.GetSubscriptionsForMessage(Envelope)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.getsubscriptionsformessage_net.adamec.lib.common.actor.message.envelope___1lba1kc)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## TypedMultiExchangeActor.IsUnSubscribeMatch(TypedSubscription, TypedUnSubscriptionMessage) Method ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
+Assembly: net.adamec.lib.common.actor
+Type: [TypedMultiExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor__1rgmwat)
+Sources: actor\exchanges\typed\TypedMultiExchangeActor.cs
+
+
+Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
+
+
+
+```csharp
+protected override bool IsUnSubscribeMatch(TypedSubscription subscription, TypedUnSubscriptionMessage unSubscriptionMessage)
+```
+
+Method parameters
Overrides: [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.SubscriptionFactory(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptionfactory_net.adamec.lib.common.actor.actor.iactorref--1___hz2yob)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## TypedSingleExchangeActor Class ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
+Assembly: net.adamec.lib.common.actor
+Sources: actor\exchanges\typed\TypedSingleExchangeActor.cs
+
+
+Exchange Actor with zero or one actor per message type Subscriptions are per type. Subscription filter gets the exact type match and if not found, then first match where message is instance of filter type or its children
+
+
+
+```csharp
+public class TypedSingleExchangeActor : ExchangeActor
+```
+
+Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](net.adamec.lib.common.utils__7vdji9.md#t-net.adamec.lib.common.utils.basedisposable__7s72ps) -> [net.adamec.lib.common.actor.actor.Actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actor__buuxwr) -> [net.adamec.lib.common.actor.actor.exchanges.@base.ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscription,net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.typed.TypedUnSubscriptionMessage>](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
+Implements: IDisposable, [net.adamec.lib.common.actor.actor.IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
+
+
+### Constructors ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [TypedSingleExchangeActor(IActorSystem, string)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor.-ctor_net.adamec.lib.common.actor.actorsystem.iactorsystem-system.string___1nv1jk7) | public | CTOR |
+
+
+
+
+### Methods ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [GetSubscriptionsForMessage(Envelope)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor.getsubscriptionsformessage_net.adamec.lib.common.actor.message.envelope___1pc989c) | protected | Returns the list of subscriptions that match the incoming envelope The filter gets the exact type match and if not found, then first match where message is instance of filter type or its children Note: There can be only one subscription per message type |
+ | [IsUnSubscribeMatch(TypedSubscription, TypedUnSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor.isunsubscribematch_net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription-net.adamec.lib.common.actor.actor.exchanges.typed.typedunsubscriptionmessage___zk123g) | protected | Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type |
+ | [ReplaceOnSubscribe(IActorRef, TypedSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor.replaceonsubscribe_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscriptionmessage___azg7e0) | protected | Removes existing subscriptions with the same "subscription type" when a new subscription message arrives. |
+ | [SubscriptionFactory(IActorRef, TypedSubscriptionMessage)](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor.subscriptionfactory_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscriptionmessage___1dxxz9k) | protected | Creates a new [TypedSubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) instance based on the subscriptionMessage |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## TypedSingleExchangeActor.TypedSingleExchangeActor(IActorSystem, string) Constructor ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
+Assembly: net.adamec.lib.common.actor
+Type: [TypedSingleExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor__i752da)
+Sources: actor\exchanges\typed\TypedSingleExchangeActor.cs
+
+
+CTOR
+
+
+
+```csharp
+public TypedSingleExchangeActor(IActorSystem actorSystem, string name)
+```
+
+Constructor parameters
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## TypedSingleExchangeActor.GetSubscriptionsForMessage(Envelope) Method ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
+Assembly: net.adamec.lib.common.actor
+Type: [TypedSingleExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor__i752da)
+Sources: actor\exchanges\typed\TypedSingleExchangeActor.cs
+
+
+Returns the list of subscriptions that match the incoming envelope The filter gets the exact type match and if not found, then first match where message is instance of filter type or its children Note: There can be only one subscription per message type
+
+
+
+```csharp
+protected override TypedSubscription[] GetSubscriptionsForMessage(Envelope envelope)
+```
+
+Method parameters
List of subscriptions that match the incoming envelope
Overrides: [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.GetSubscriptionsForMessage(Envelope)](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.getsubscriptionsformessage_net.adamec.lib.common.actor.message.envelope___1lba1kc)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## TypedSingleExchangeActor.IsUnSubscribeMatch(TypedSubscription, TypedUnSubscriptionMessage) Method ##
+Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
+Assembly: net.adamec.lib.common.actor
+Type: [TypedSingleExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor__i752da)
+Sources: actor\exchanges\typed\TypedSingleExchangeActor.cs
+
+
+Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
+
+
+
+```csharp
+protected override bool IsUnSubscribeMatch(TypedSubscription subscription, TypedUnSubscriptionMessage unSubscriptionMessage)
+```
+
+Method parameters
Reference implementation of IActor that can be simply inherited in own actors. It provides the automatic registration in constructor and de-registration while disposing. The actor reference is published via Self property.
Reference implementation of IActor that can be simply inherited in own actors. It provides the automatic registration in constructor and de-registration while disposing. The actor reference is published via Self property.
+
public abstract class Actor : BaseDisposable, IActor
Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
CTOR Registers the actor into actorSystem using given name Enables the message processing of the actor and sets the ReceiveTarget to Receive(Envelope) method
Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
CTOR Registers the actor into actorSystem using given name Enables the message processing of the actor and sets the ReceiveTarget to Receive(Envelope) method
Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
Message handler - waits for the message of required ResponseType and when arrived, the message envelope is set to Response and the WaitHandle is set to signal the blocked "parent" thread that the response has been received.
Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
Message handler - waits for the message of required ResponseType and when arrived, the message envelope is set to Response and the WaitHandle is set to signal the blocked "parent" thread that the response has been received.
Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
+
diff --git a/doc/net.adamec.lib.common.actor.actor__1ldg5ba.md b/doc/net.adamec.lib.common.actor.actor__1ldg5ba.md
new file mode 100644
index 0000000..d977dc4
--- /dev/null
+++ b/doc/net.adamec.lib.common.actor.actor__1ldg5ba.md
@@ -0,0 +1,1533 @@
+# RAD Actor System Documentation #
+## net.adamec.lib.common.actor.actor Namespace ##
+### Classes ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [Actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actor__buuxwr) | public abstract | Reference implementation of [IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) that can be simply inherited in own actors. It provides the automatic registration in constructor and de-registration while disposing. The actor reference is published via [Self](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actor.self__1kgayjx) property. |
+ | [ActorRefEmpty](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actorrefempty__c8py9n) | public | Reference to empty virtual actor |
+ | [ActorRefInternal](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actorrefinternal__1l1obal) | internal | Internal implementation of actor reference. Encapsulates the mailbox (queue) for the actor |
+ | [ActorRefNameOnly](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actorrefnameonly__eu2rbh) | public abstract | Base class for the virtual actors |
+ | [ActorRefs](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actorrefs__17fr5vh) | public | Common references to virtual actors |
+ | [ActorRefSystem](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actorrefsystem__43zotr) | public | Reference to system virtual actor |
+ | [SyncActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.syncactor__cgt0u6) | internal | Internal actor used in [Ask(IActorRef, object, Type, int, bool)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.ask_net.adamec.lib.common.actor.actor.iactorref-system.object-system.type-system.int32-system.boolean___14ecl67) methods to implement Request-Reply pattern |
+
+
+
+
+### Interfaces ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) | public abstract | Actor interface |
+ | [IActorRef](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactorref__63mbv) | public abstract | Reference to actor |
+
+
+
+
+### Delegates ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [Receive](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.receive__1adwyjn) | public | Delegate describing the recipient target (method processing the messages) |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## Actor Class ##
+Namespace: [net.adamec.lib.common.actor.actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#n-net.adamec.lib.common.actor.actor__1ldg5ba)
+Assembly: net.adamec.lib.common.actor
+Sources: actor\Actor.cs
+
+
+Reference implementation of [IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) that can be simply inherited in own actors. It provides the automatic registration in constructor and de-registration while disposing. The actor reference is published via [Self](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actor.self__1kgayjx) property.
+
+
+
+```csharp
+public abstract class Actor : BaseDisposable, IActor
+```
+
+Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](net.adamec.lib.common.utils__7vdji9.md#t-net.adamec.lib.common.utils.basedisposable__7s72ps)
+Derived: [net.adamec.lib.common.actor.actor.exchanges.@base.ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
+Implements: IDisposable, [net.adamec.lib.common.actor.actor.IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
+
+
+### Properties ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [ActorSystem](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actor.actorsystem__1g6mmur) | protected | Actor system |
+ | [CanReceive](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actor.canreceive__19sq0hk) | public | Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox) |
+ | [DropAllReceive](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actor.dropallreceive__1g3skf2) | protected | Message handler that drops all messages and returns false (unhandled) |
+ | [ReceiveTarget](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actor.receivetarget__rq6a5r) | public | Current method processing the messages (to where the messages are dispatched to) |
+ | [Self](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actor.self__1kgayjx) | public | Actor reference to self |
+
+
+
+
+### Constructors ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [Actor(IActorSystem, string)](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.actor.-ctor_net.adamec.lib.common.actor.actorsystem.iactorsystem-system.string___sft7zm) | protected | CTOR Registers the actor into actorSystem using given name Enables the message processing of the actor and sets the [ReceiveTarget](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actor.receivetarget__rq6a5r) to [Receive(Envelope)](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.actor.receive_net.adamec.lib.common.actor.message.envelope___lic5c4) method |
+
+
+
+
+### Methods ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [Become(Receive)](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.actor.become_net.adamec.lib.common.actor.actor.receive___cfu8bb) | protected | Switches the actor behavior by setting the message handler . When the handler is not set, [DropAllReceive](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actor.dropallreceive__1g3skf2) handler is used. |
+ | [BecomeDefault()](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.actor.becomedefault__gzylss) | protected | Switch the message handler to [Receive(Envelope)](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.actor.receive_net.adamec.lib.common.actor.message.envelope___lic5c4) method |
+ | [DisposeManaged()](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.actor.disposemanaged__m3e4v4) | protected | De-registers the actor from actor system |
+ | [Receive(Envelope)](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.actor.receive_net.adamec.lib.common.actor.message.envelope___lic5c4) | protected | Default message handler. |
+ | [Unhandled(Envelope)](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.actor.unhandled_net.adamec.lib.common.actor.message.envelope___1cb59zm) | protected | Helper for processing unhandled messages, returns false by default |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## Actor.ActorSystem Property ##
+Namespace: [net.adamec.lib.common.actor.actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#n-net.adamec.lib.common.actor.actor__1ldg5ba)
+Assembly: net.adamec.lib.common.actor
+Type: [Actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actor__buuxwr)
+Sources: actor\Actor.cs
+
+
+Actor system
+
+
+
+```csharp
+protected IActorSystem ActorSystem { get; }
+```
+
+Property value
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## Actor.CanReceive Property ##
+Namespace: [net.adamec.lib.common.actor.actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#n-net.adamec.lib.common.actor.actor__1ldg5ba)
+Assembly: net.adamec.lib.common.actor
+Type: [Actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actor__buuxwr)
+Sources: actor\Actor.cs
+
+
+Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
+
+
+
+```csharp
+public bool CanReceive { get; protected set; }
+```
+
+Property value
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## Actor.Actor(IActorSystem, string) Constructor ##
+Namespace: [net.adamec.lib.common.actor.actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#n-net.adamec.lib.common.actor.actor__1ldg5ba)
+Assembly: net.adamec.lib.common.actor
+Type: [Actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actor__buuxwr)
+Sources: actor\Actor.cs
+
+
+CTOR Registers the actor into actorSystem using given name Enables the message processing of the actor and sets the [ReceiveTarget](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actor.receivetarget__rq6a5r) to [Receive(Envelope)](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.actor.receive_net.adamec.lib.common.actor.message.envelope___lic5c4) method
+
+
+
+```csharp
+protected Actor(IActorSystem actorSystem, string name)
+```
+
+Constructor parameters
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## Actor.Become(Receive) Method ##
+Namespace: [net.adamec.lib.common.actor.actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#n-net.adamec.lib.common.actor.actor__1ldg5ba)
+Assembly: net.adamec.lib.common.actor
+Type: [Actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actor__buuxwr)
+Sources: actor\Actor.cs
+
+
+Switches the actor behavior by setting the message handler . When the handler is not set, [DropAllReceive](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actor.dropallreceive__1g3skf2) handler is used.
+
+
+
+```csharp
+protected virtual void Become(Receive handler)
+```
+
+Method parameters
True if handled, false if not handled. The default implementation calls [Unhandled(Envelope)](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.actor.unhandled_net.adamec.lib.common.actor.message.envelope___1cb59zm) method that returns false
The sender of this message. Defaults to [Empty](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actorrefs.empty__6f5cpu) if left to `null` .
Overrides: [ActorRefNameOnly.Name](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actorrefnameonly.name__qk183e)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## SyncActor Class ##
+Namespace: [net.adamec.lib.common.actor.actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#n-net.adamec.lib.common.actor.actor__1ldg5ba)
+Assembly: net.adamec.lib.common.actor
+Sources: actor\SyncActor.cs
+
+
+Internal actor used in [Ask(IActorRef, object, Type, int, bool)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.ask_net.adamec.lib.common.actor.actor.iactorref-system.object-system.type-system.int32-system.boolean___14ecl67) methods to implement Request-Reply pattern
+
+
+
+```csharp
+internal class SyncActor : BaseDisposable, IActor
+```
+
+Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](net.adamec.lib.common.utils__7vdji9.md#t-net.adamec.lib.common.utils.basedisposable__7s72ps)
+Implements: IDisposable, [net.adamec.lib.common.actor.actor.IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
+
+
+### Properties ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [ActorSystem](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.syncactor.actorsystem__1jy3biw) | private | |
+ | [CanReceive](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.syncactor.canreceive__37hi1h) | public | Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox) |
+ | [ReceiveTarget](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.syncactor.receivetarget__fqhb9w) | public | Current method processing the messages (to where the messages are dispatched to) |
+ | [Response](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.syncactor.response__1nj5lt1) | public | Response message envelope |
+ | [ResponseType](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.syncactor.responsetype__13oqz9h) | public | Expected response type |
+ | [Self](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.syncactor.self__7tb7a6) | public | Actor reference to self |
+ | [WaitHandle](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.syncactor.waithandle__8yoz6j) | public | Wait handle used to signal that the response has arrived |
+
+
+
+
+### Constructors ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [SyncActor(IActorSystem, Type, AutoResetEvent)](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.syncactor.-ctor_net.adamec.lib.common.actor.actorsystem.iactorsystem-system.type-system.threading.autoresetevent___2ekqnh) | public | CTOR |
+
+
+
+
+### Methods ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [DisposeManaged()](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.syncactor.disposemanaged__1ldukpd) | protected | Deregisters itself from actor system |
+ | [Receive(Envelope)](net.adamec.lib.common.actor.actor__1ldg5ba.md#m-net.adamec.lib.common.actor.actor.syncactor.receive_net.adamec.lib.common.actor.message.envelope___1adxu0d) | protected | Message handler - waits for the message of required [ResponseType](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.syncactor.responsetype__13oqz9h) and when arrived, the message envelope is set to [Response](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.syncactor.response__1nj5lt1) and the [WaitHandle](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.syncactor.waithandle__8yoz6j) is set to signal the blocked "parent" thread that the response has been received. |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## SyncActor.ActorSystem Property ##
+Namespace: [net.adamec.lib.common.actor.actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#n-net.adamec.lib.common.actor.actor__1ldg5ba)
+Assembly: net.adamec.lib.common.actor
+Type: [SyncActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.syncactor__cgt0u6)
+Sources: actor\SyncActor.cs
+
+
+
+```csharp
+private IActorSystem ActorSystem { get; }
+```
+
+Property value
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## SyncActor.CanReceive Property ##
+Namespace: [net.adamec.lib.common.actor.actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#n-net.adamec.lib.common.actor.actor__1ldg5ba)
+Assembly: net.adamec.lib.common.actor
+Type: [SyncActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.syncactor__cgt0u6)
+Sources: actor\SyncActor.cs
+
+
+Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
+
+
+
+```csharp
+public bool CanReceive { get; }
+```
+
+Property value
Overrides: [BaseDisposable.DisposeManaged()](net.adamec.lib.common.utils__7vdji9.md#m-net.adamec.lib.common.utils.basedisposable.disposemanaged__1ht3p85)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## SyncActor.Receive(Envelope) Method ##
+Namespace: [net.adamec.lib.common.actor.actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#n-net.adamec.lib.common.actor.actor__1ldg5ba)
+Assembly: net.adamec.lib.common.actor
+Type: [SyncActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.syncactor__cgt0u6)
+Sources: actor\SyncActor.cs
+
+
+Message handler - waits for the message of required [ResponseType](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.syncactor.responsetype__13oqz9h) and when arrived, the message envelope is set to [Response](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.syncactor.response__1nj5lt1) and the [WaitHandle](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.syncactor.waithandle__8yoz6j) is set to signal the blocked "parent" thread that the response has been received.
+
+
+
+```csharp
+protected virtual bool Receive(Envelope envelope)
+```
+
+Method parameters
True when message processed (handled) otherwise false
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## IActor Interface ##
+Namespace: [net.adamec.lib.common.actor.actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#n-net.adamec.lib.common.actor.actor__1ldg5ba)
+Assembly: net.adamec.lib.common.actor
+Sources: actor\IActor.cs
+
+
+Actor interface
+
+
+
+```csharp
+public interface IActor
+```
+
+Implemented by: [net.adamec.lib.common.actor.actor.Actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actor__buuxwr), [net.adamec.lib.common.actor.actor.SyncActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.syncactor__cgt0u6), [net.adamec.lib.common.actor.actor.exchanges.@base.ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq), [net.adamec.lib.common.actor.actor.exchanges.single.SingleExchangeActor](net.adamec.lib.common.actor.actor.exchanges.single__6r83x4.md#t-net.adamec.lib.common.actor.actor.exchanges.single.singleexchangeactor__1q6rr7y), [net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeyExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor__1inw5x7), [net.adamec.lib.common.actor.actor.exchanges.typed.TypedMultiExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor__1rgmwat), [net.adamec.lib.common.actor.actor.exchanges.typed.TypedSingleExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor__i752da)
+
+
+
+### Properties ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [CanReceive](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.iactor.canreceive__f9x86f) | public abstract | Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox) |
+ | [ReceiveTarget](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.iactor.receivetarget__n44wdg) | public abstract | Current method processing the messages (to where the messages are dispatched to) |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## IActor.CanReceive Property ##
+Namespace: [net.adamec.lib.common.actor.actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#n-net.adamec.lib.common.actor.actor__1ldg5ba)
+Assembly: net.adamec.lib.common.actor
+Type: [IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
+Sources: actor\IActor.cs
+
+
+Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
+
+
+
+```csharp
+public abstract bool CanReceive { get; }
+```
+
+Property value
The sender of this message. Defaults to [Empty](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actorrefs.empty__6f5cpu) if left to `null` .
The Actor System published interface Provides access to options and system queues, supports the actor (de)registration, dispatcher management (start/stop) as well as message scheduling and synchronous (Request-Reply) messaging.
De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception
Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system.
De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception
Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system.
+
public IActorRef RegisterActor(IActor actor, string name)
Main dispatcher loop (runs within the ExecutorThread ) The loop is active while isActive is set to true, so setting isActive to false forces the loop to exit Each run of the loop enqueue the due scheduled messages (if any) and process mailboxes (actors) with any pending messages. Actor (actor reference) is locked for processing and the task is scheduled in thread pool to process the actor's queue. The actor remains locked until the task is not finished, so it's not picked up by executor again during the processing
Gets the list of scheduled messages that should be enqueued (are due) When the scheduled message is periodic, the next fire time is calculated and a new instance of scheduled message is added to to schedule
Main actor queue processor - scheduled by executor within the thread pool for each eligible actor (actor ref) Processes the batch of the messages for given actor. The messages are being processed sequentially in FIFO order within the loop with following constraints - there are still messages in actor's queue - actor can receive the messages - the batch size (number of messages for single actor processed in one cycle) has not been reached - dispatcher is not stopped The messages are sent to current actor receive target
Schedule one-time message to be sent to recipient at given date and time Creates the ScheduledMessageInfo instance based on the parameters and let it add to the internal list of the scheduled messages
Schedule periodic message to be sent to recipient each period . Creates the ScheduledMessageInfo instance based on the parameters and let it add to the internal list of the scheduled messages
Main dispatcher loop (runs within the ExecutorThread ) The loop is active while isActive is set to true, so setting isActive to false forces the loop to exit Each run of the loop enqueue the due scheduled messages (if any) and process mailboxes (actors) with any pending messages. Actor (actor reference) is locked for processing and the task is scheduled in thread pool to process the actor's queue. The actor remains locked until the task is not finished, so it's not picked up by executor again during the processing
Gets the list of scheduled messages that should be enqueued (are due) When the scheduled message is periodic, the next fire time is calculated and a new instance of scheduled message is added to to schedule
Main actor queue processor - scheduled by executor within the thread pool for each eligible actor (actor ref) Processes the batch of the messages for given actor. The messages are being processed sequentially in FIFO order within the loop with following constraints - there are still messages in actor's queue - actor can receive the messages - the batch size (number of messages for single actor processed in one cycle) has not been reached - dispatcher is not stopped The messages are sent to current actor receive target
Schedule one-time message to be sent to recipient at given date and time Creates the ScheduledMessageInfo instance based on the parameters and let it add to the internal list of the scheduled messages
Schedule periodic message to be sent to recipient each period . Creates the ScheduledMessageInfo instance based on the parameters and let it add to the internal list of the scheduled messages
CTOR for the new instance of scheduled message definition for existing periodic scheduled message Used when creating the definition of each new run of the periodic schedule. Copies the information from current definition and preservers the ID
CTOR for the new instance of scheduled message definition for existing periodic scheduled message Used when creating the definition of each new run of the periodic schedule. Copies the information from current definition and preservers the ID
The Actor System published interface Provides access to options and system queues, supports the actor (de)registration, dispatcher management (start/stop) as well as message scheduling and synchronous (Request-Reply) messaging.
De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception
Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system.
De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception
+
public abstract void DeRegisterActor(IActorRef actorRef)
Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system.
+
public abstract IActorRef RegisterActor(IActor actor, string name)
+
diff --git a/doc/net.adamec.lib.common.actor.actorsystem__1ihx1md.md b/doc/net.adamec.lib.common.actor.actorsystem__1ihx1md.md
new file mode 100644
index 0000000..f876974
--- /dev/null
+++ b/doc/net.adamec.lib.common.actor.actorsystem__1ihx1md.md
@@ -0,0 +1,1956 @@
+# RAD Actor System Documentation #
+## net.adamec.lib.common.actor.actorsystem Namespace ##
+### Classes ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3) | public | Implementation of actor system |
+ | [ActorSystemDispatcher](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe) | internal | Message dispatched used by [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.actorsystem__1osgm3w) |
+ | [ActorSystemOptions](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemoptions__1e8lf7j) | public | User defined configuration of [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3) |
+ | [ScheduledMessageInfo](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) | internal | Scheduled message definition |
+
+
+
+
+### Interfaces ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [IActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs) | public abstract | The Actor System published interface Provides access to options and system queues, supports the actor (de)registration, dispatcher management (start/stop) as well as message scheduling and synchronous (Request-Reply) messaging. |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystem Class ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Sources: actorsystem\ActorSystem.cs
+
+
+Implementation of actor system
+
+
+
+```csharp
+public class ActorSystem : BaseDisposable, IActorSystem
+```
+
+Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](net.adamec.lib.common.utils__7vdji9.md#t-net.adamec.lib.common.utils.basedisposable__7s72ps)
+Implements: IDisposable, [net.adamec.lib.common.actor.actorsystem.IActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs)
+
+
+### Fields ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [Logger](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#f-net.adamec.lib.common.actor.actorsystem.actorsystem.logger__1fhxf7) | internal static | |
+
+
+
+
+### Properties ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [ActorsByRef](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystem.actorsbyref__b06x73) | private | Dictionary of actors by actor reference |
+ | [DeadLetters](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystem.deadletters__1p4w7em) | public | Provides the access to dead letters queue |
+ | [Dispatcher](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystem.dispatcher__16sohre) | private | Reference to dispatcher used by actor system |
+ | [ErrorMessageQueue](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystem.errormessagequeue__kecg1b) | public | Provides the access to error messages queue |
+ | [Options](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystem.options__1qogkkh) | public | Returns the reference to current [ActorSystemOptions](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemoptions__1e8lf7j) |
+
+
+
+
+### Constructors ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [ActorSystem(ActorSystemOptions)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.-ctor_net.adamec.lib.common.actor.actorsystem.actorsystemoptions___1wtfo99) | public | [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3) constructor |
+
+
+
+
+### Methods ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [Ask(IActorRef, object, Type, int, bool)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.ask_net.adamec.lib.common.actor.actor.iactorref-system.object-system.type-system.int32-system.boolean___sxd0yo) | public | Sends a request message to recipient and waits for the response of required responseType . |
+ | [Ask<T>(IActorRef, object, int, bool)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.ask--1_net.adamec.lib.common.actor.actor.iactorref-system.object-system.int32-system.boolean___2dxd0s) | public | Sends a request message to recipient and waits for the response of type . |
+ | [CancelScheduledMessage(string)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.cancelscheduledmessage_system.string___1w85qxn) | public | Cancels the scheduled message with given id - removes the message from list of the scheduled messages |
+ | [CancelScheduledMessages(IActorRef, Type)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.cancelscheduledmessages_net.adamec.lib.common.actor.actor.iactorref-system.type___sfq920) | public | Cancels all messages scheduled for recipient that are of given messageType - removes the messages from list of the scheduled messages |
+ | [DeRegisterActor(IActorRef)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.deregisteractor_net.adamec.lib.common.actor.actor.iactorref___1x86w27) | public | De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception |
+ | [DisposeManaged()](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.disposemanaged__162jz4w) | protected | Stops and disposes the [Dispatcher](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystem.dispatcher__16sohre) |
+ | [GetMailboxesWithMessages()](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.getmailboxeswithmessages__1oiw8zq) | internal | Returns the list of the mailboxes (internal actor references) that have at least one message and the actor is not being already processed |
+ | [RegisterActor(IActor, string)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.registeractor_net.adamec.lib.common.actor.actor.iactor-system.string___o3h1j1) | public | Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system. |
+ | [ScheduleMessage(IActorRef, IActorRef, DateTime, object)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.schedulemessage_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.datetime-system.object___1mc0hrz) | public | Schedule one-time message to be sent to recipient at given date and time |
+ | [ScheduleMessage(IActorRef, IActorRef, TimeSpan, object)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.schedulemessage_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.timespan-system.object___kqn59b) | public | Schedule periodic message to be sent to recipient each period . |
+ | [Start()](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.start__zz3cpm) | public | Starts the message dispatcher (started by default within ActorSystem constructor) |
+ | [Stop()](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.stop__v7scp2) | public | Stops the message dispatcher (can be restarted using [Start()](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystem.start__zz3cpm) method) |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystem.Logger Field ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3)
+Sources: actorsystem\ActorSystem.cs
+
+
+
+```csharp
+internal static ILogger Logger
+```
+
+Field value
True if the message has been found and canceled, false when the message has not been found
Implements: [IActorSystem.CancelScheduledMessage(string)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.cancelscheduledmessage_system.string___bluqps)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystem.CancelScheduledMessages(IActorRef, Type) Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3)
+Sources: actorsystem\ActorSystem.cs
+
+
+Cancels all messages scheduled for recipient that are of given messageType - removes the messages from list of the scheduled messages
+
+
+
+```csharp
+public bool CancelScheduledMessages(IActorRef recipient, Type messageType)
+```
+
+Method parameters
True if at least one message has been found and canceled, false when none has been found
Implements: [IActorSystem.CancelScheduledMessages(IActorRef, Type)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.cancelscheduledmessages_net.adamec.lib.common.actor.actor.iactorref-system.type___c89uf5)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystem.DeRegisterActor(IActorRef) Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3)
+Sources: actorsystem\ActorSystem.cs
+
+
+De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception
+
+
+
+```csharp
+public void DeRegisterActor(IActorRef actorRef)
+```
+
+Method parameters
Overrides: [BaseDisposable.DisposeManaged()](net.adamec.lib.common.utils__7vdji9.md#m-net.adamec.lib.common.utils.basedisposable.disposemanaged__1ht3p85)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystem.GetMailboxesWithMessages() Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3)
+Sources: actorsystem\ActorSystem.cs
+
+
+Returns the list of the mailboxes (internal actor references) that have at least one message and the actor is not being already processed
+
+
+
+```csharp
+internal List GetMailboxesWithMessages()
+```
+
+Return value
List of mailboxes(internal actor references) having the messages for processing
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystem.RegisterActor(IActor, string) Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3)
+Sources: actorsystem\ActorSystem.cs
+
+
+Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system.
+
+
+
+```csharp
+public IActorRef RegisterActor(IActor actor, string name)
+```
+
+Method parameters
[net.adamec.lib.common.actor.actor.IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) actor
Implements: [IActorSystem.Stop()](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.stop__dly8m5)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystemDispatcher Class ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Sources: actorsystem\ActorSystemDispatcher.cs
+
+
+Message dispatched used by [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.actorsystem__1osgm3w)
+
+
+
+```csharp
+internal class ActorSystemDispatcher : BaseDisposable
+```
+
+Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](net.adamec.lib.common.utils__7vdji9.md#t-net.adamec.lib.common.utils.basedisposable__7s72ps)
+Implements: IDisposable
+
+
+### Fields ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [isActive](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.isactive__1g6w74o) | private | |
+ | [Logger](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.logger__1opp49m) | protected static | |
+ | [MessageLogger](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.messagelogger__9fz30j) | protected static | Message logger |
+ | [scheduledMessagesLock](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.scheduledmessageslock__19elh26) | private | |
+
+
+
+
+### Properties ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.actorsystem__1osgm3w) | private | |
+ | [ExecutorThread](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.executorthread__1a9snen) | private | Dispatcher executor thread |
+ | [IsActive](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.isactive__9h4ytm) | public | Flag whether the dispatcher is active (dispatching messages) |
+ | [Options](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.options__glvhoa) | protected | Actor System options |
+ | [ScheduledMessages](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.scheduledmessages__61sfpr) | private | |
+
+
+
+
+### Constructors ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [ActorSystemDispatcher(ActorSystem)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.-ctor_net.adamec.lib.common.actor.actorsystem.actorsystem___bl3uhi) | public | Initialize dispatcher |
+
+
+
+
+### Methods ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [CancelScheduledMessage(string)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.cancelscheduledmessage_system.string___1r5af14) | internal | Cancels the scheduled message with given id - removes the message from list of the scheduled messages |
+ | [CancelScheduledMessages(IActorRef, Type)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.cancelscheduledmessages_net.adamec.lib.common.actor.actor.iactorref-system.type___6bdh5j) | internal | Cancels all messages scheduled for recipient that are of given messageType - removes the messages from list of the scheduled messages |
+ | [DisposeManaged()](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.disposemanaged__121xst9) | protected | Stops the dispatched when disposing |
+ | [Execute(object)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.execute_system.object___q5nu8z) | private | Main dispatcher loop (runs within the [ExecutorThread](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.executorthread__1a9snen) ) The loop is active while [isActive](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.isactive__1g6w74o) is set to true, so setting [isActive](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.isactive__1g6w74o) to false forces the loop to exit Each run of the loop enqueue the due scheduled messages (if any) and process mailboxes (actors) with any pending messages. Actor (actor reference) is locked for processing and the task is scheduled in thread pool to process the actor's queue. The actor remains locked until the task is not finished, so it's not picked up by executor again during the processing |
+ | [GetScheduledMessagesDue()](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.getscheduledmessagesdue__5eu7es) | private | Gets the list of scheduled messages that should be enqueued (are due) When the scheduled message is periodic, the next fire time is calculated and a new instance of scheduled message is added to to schedule |
+ | [ProcessActorQueue(object)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.processactorqueue_system.object___1ifalnd) | private | Main actor queue processor - scheduled by executor within the thread pool for each eligible actor (actor ref) Processes the batch of the messages for given actor. The messages are being processed sequentially in FIFO order within the loop with following constraints - there are still messages in actor's queue - actor can receive the messages - the batch size (number of messages for single actor processed in one cycle) has not been reached - dispatcher is not stopped The messages are sent to current actor receive target |
+ | [ScheduleMessage(IActorRef, IActorRef, DateTime, object)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.schedulemessage_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.datetime-system.object___6k32uw) | internal | Schedule one-time message to be sent to recipient at given date and time Creates the [ScheduledMessageInfo](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) instance based on the parameters and let it add to the internal list of the scheduled messages |
+ | [ScheduleMessage(IActorRef, IActorRef, TimeSpan, object)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.schedulemessage_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.timespan-system.object___vt99rw) | internal | Schedule periodic message to be sent to recipient each period . Creates the [ScheduledMessageInfo](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) instance based on the parameters and let it add to the internal list of the scheduled messages |
+ | [ScheduleMessage(ScheduledMessageInfo)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.schedulemessage_net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo___1xwfair) | private | Get's the given [ScheduledMessageInfo](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) and adds it to internal list of scheduled messages. |
+ | [Start()](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.start__2g0p6j) | public | Starts the dispatcher Creates the executor thread and starts processing the messages |
+ | [Stop()](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.stop__8jn5gr) | public | Stops the dispatcher Finish current processing and "close" the executor thread |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystemDispatcher.isActive Field ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystemDispatcher](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
+Sources: actorsystem\ActorSystemDispatcher.cs
+
+
+
+```csharp
+private volatile bool isActive
+```
+
+Field value
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystemDispatcher.CancelScheduledMessage(string) Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystemDispatcher](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
+Sources: actorsystem\ActorSystemDispatcher.cs
+
+
+Cancels the scheduled message with given id - removes the message from list of the scheduled messages
+
+
+
+```csharp
+internal bool CancelScheduledMessage(string id)
+```
+
+Method parameters
True if the message has been found and canceled, false when the message has not been found
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystemDispatcher.CancelScheduledMessages(IActorRef, Type) Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystemDispatcher](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
+Sources: actorsystem\ActorSystemDispatcher.cs
+
+
+Cancels all messages scheduled for recipient that are of given messageType - removes the messages from list of the scheduled messages
+
+
+
+```csharp
+internal bool CancelScheduledMessages(IActorRef recipient, Type messageType)
+```
+
+Method parameters
Overrides: [BaseDisposable.DisposeManaged()](net.adamec.lib.common.utils__7vdji9.md#m-net.adamec.lib.common.utils.basedisposable.disposemanaged__1ht3p85)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystemDispatcher.Execute(object) Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystemDispatcher](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
+Sources: actorsystem\ActorSystemDispatcher.cs
+
+
+Main dispatcher loop (runs within the [ExecutorThread](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.executorthread__1a9snen) ) The loop is active while [isActive](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.isactive__1g6w74o) is set to true, so setting [isActive](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.isactive__1g6w74o) to false forces the loop to exit Each run of the loop enqueue the due scheduled messages (if any) and process mailboxes (actors) with any pending messages. Actor (actor reference) is locked for processing and the task is scheduled in thread pool to process the actor's queue. The actor remains locked until the task is not finished, so it's not picked up by executor again during the processing
+
+
+
+```csharp
+private void Execute(object actorSystemObj)
+```
+
+Method parameters
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystemDispatcher.GetScheduledMessagesDue() Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystemDispatcher](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
+Sources: actorsystem\ActorSystemDispatcher.cs
+
+
+Gets the list of scheduled messages that should be enqueued (are due) When the scheduled message is periodic, the next fire time is calculated and a new instance of scheduled message is added to to schedule
+
+
+
+```csharp
+private IEnumerable GetScheduledMessagesDue()
+```
+
+Return value
The list of scheduled messages that to be enqueued
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystemDispatcher.ProcessActorQueue(object) Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystemDispatcher](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
+Sources: actorsystem\ActorSystemDispatcher.cs
+
+
+Main actor queue processor - scheduled by executor within the thread pool for each eligible actor (actor ref) Processes the batch of the messages for given actor. The messages are being processed sequentially in FIFO order within the loop with following constraints - there are still messages in actor's queue - actor can receive the messages - the batch size (number of messages for single actor processed in one cycle) has not been reached - dispatcher is not stopped The messages are sent to current actor receive target
+
+
+
+```csharp
+private void ProcessActorQueue(object actorRef)
+```
+
+Method parameters
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystemDispatcher.ScheduleMessage(IActorRef, IActorRef, DateTime, object) Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystemDispatcher](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
+Sources: actorsystem\ActorSystemDispatcher.cs
+
+
+Schedule one-time message to be sent to recipient at given date and time Creates the [ScheduledMessageInfo](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) instance based on the parameters and let it add to the internal list of the scheduled messages
+
+
+
+```csharp
+internal string ScheduleMessage(IActorRef sender, IActorRef recipient, DateTime nextFire, object message)
+```
+
+Method parameters
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystemDispatcher.ScheduleMessage(IActorRef, IActorRef, TimeSpan, object) Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystemDispatcher](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
+Sources: actorsystem\ActorSystemDispatcher.cs
+
+
+Schedule periodic message to be sent to recipient each period . Creates the [ScheduledMessageInfo](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) instance based on the parameters and let it add to the internal list of the scheduled messages
+
+
+
+```csharp
+internal string ScheduleMessage(IActorRef sender, IActorRef recipient, TimeSpan period, object message)
+```
+
+Method parameters
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystemOptions.MaxDispatchMessagesInBatch Property ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystemOptions](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemoptions__1e8lf7j)
+Sources: actorsystem\ActorSystemOptions.cs
+
+
+Defines the maximum number of messages send for processing to single actor during one cycle of ActorDispatcher executor (default 10)
+
+
+
+```csharp
+public int MaxDispatchMessagesInBatch { get; set; }
+```
+
+Property value
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ActorSystemOptions.ActorSystemOptions() Constructor ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ActorSystemOptions](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemoptions__1e8lf7j)
+Sources: actorsystem\ActorSystemOptions.cs
+
+
+Static CTOR - initialize default options instance
+
+
+
+```csharp
+private static ActorSystemOptions()
+```
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ScheduledMessageInfo Class ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Sources: actorsystem\ScheduledMessageInfo.cs
+
+
+Scheduled message definition
+
+
+
+```csharp
+internal class ScheduledMessageInfo
+```
+
+Inheritance: object
+
+
+
+### Properties ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [Id](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.id__d1ho0y) | internal | Unique ID of scheduled message |
+ | [Message](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.message__8wrme2) | internal | Message to be (periodically) sent to the [Recipient](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) |
+ | [NextFire](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.nextfire__16ekkf2) | internal | Date and Time after which the message is enqueued to the [Recipient](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) queue |
+ | [Period](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.period__v8c71e) | internal | Period after which the message is periodically enqueued to the [Recipient](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) queue. Null for non-periodic messages |
+ | [Recipient](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) | internal | Recipient of the message |
+ | [Sender](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.sender__1m7ejeu) | internal | Optional information about the sender, usually used by [Recipient](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) to respond to the [Message](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.message__8wrme2) |
+
+
+
+
+### Constructors ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [ScheduledMessageInfo(IActorRef, IActorRef, DateTime, object)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.-ctor_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.datetime-system.object___d10rbc) | internal | CTOR for one-time scheduled message info |
+ | [ScheduledMessageInfo(IActorRef, IActorRef, TimeSpan, object)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.-ctor_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.timespan-system.object___w2q5fc) | internal | CTOR for periodic scheduled message info |
+ | [ScheduledMessageInfo(ScheduledMessageInfo)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.-ctor_net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo___1cbqekh) | internal | CTOR for the new instance of scheduled message definition for existing periodic scheduled message Used when creating the definition of each new run of the periodic schedule. Copies the information from current definition and preservers the ID |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ScheduledMessageInfo.Id Property ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ScheduledMessageInfo](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5)
+Sources: actorsystem\ScheduledMessageInfo.cs
+
+
+Unique ID of scheduled message
+
+
+
+```csharp
+internal string Id { get; }
+```
+
+Property value
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ScheduledMessageInfo.NextFire Property ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ScheduledMessageInfo](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5)
+Sources: actorsystem\ScheduledMessageInfo.cs
+
+
+Date and Time after which the message is enqueued to the [Recipient](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) queue
+
+
+
+```csharp
+internal DateTime NextFire { get; }
+```
+
+Property value
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ScheduledMessageInfo.Period Property ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ScheduledMessageInfo](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5)
+Sources: actorsystem\ScheduledMessageInfo.cs
+
+
+Period after which the message is periodically enqueued to the [Recipient](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) queue. Null for non-periodic messages
+
+
+
+```csharp
+internal System.TimeSpan? Period { get; }
+```
+
+Property value
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ScheduledMessageInfo.Sender Property ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ScheduledMessageInfo](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5)
+Sources: actorsystem\ScheduledMessageInfo.cs
+
+
+Optional information about the sender, usually used by [Recipient](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) to respond to the [Message](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.message__8wrme2)
+
+
+
+```csharp
+internal IActorRef Sender { get; }
+```
+
+Property value
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ScheduledMessageInfo.ScheduledMessageInfo(ScheduledMessageInfo) Constructor ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [ScheduledMessageInfo](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5)
+Sources: actorsystem\ScheduledMessageInfo.cs
+
+
+CTOR for the new instance of scheduled message definition for existing periodic scheduled message Used when creating the definition of each new run of the periodic schedule. Copies the information from current definition and preservers the ID
+
+
+
+```csharp
+internal ScheduledMessageInfo(ScheduledMessageInfo existingPeriodicScheduledMessageInfo)
+```
+
+Constructor parameters
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## IActorSystem Interface ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Sources: actorsystem\IActorSystem.cs
+
+
+The Actor System published interface Provides access to options and system queues, supports the actor (de)registration, dispatcher management (start/stop) as well as message scheduling and synchronous (Request-Reply) messaging.
+
+
+
+```csharp
+public interface IActorSystem
+```
+
+Implemented by: [net.adamec.lib.common.actor.actorsystem.ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3)
+
+
+
+### Properties ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [DeadLetters](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.iactorsystem.deadletters__82oxzl) | public abstract | Provides the access to dead letters queue |
+ | [ErrorMessageQueue](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.iactorsystem.errormessagequeue__v9i6fy) | public abstract | Provides the access to error messages queue |
+ | [Options](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.iactorsystem.options__logleg) | public abstract | Returns the reference to current [ActorSystemOptions](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemoptions__1e8lf7j) |
+
+
+
+
+### Methods ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [Ask(IActorRef, object, Type, int, bool)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.ask_net.adamec.lib.common.actor.actor.iactorref-system.object-system.type-system.int32-system.boolean___14ecl67) | public abstract | Sends a request message to recipient and waits for the response of required responseType . |
+ | [Ask<T>(IActorRef, object, int, bool)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.ask--1_net.adamec.lib.common.actor.actor.iactorref-system.object-system.int32-system.boolean___1d7ni9h) | public abstract | Sends a request message to recipient and waits for the response of type . |
+ | [CancelScheduledMessage(string)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.cancelscheduledmessage_system.string___bluqps) | public abstract | Cancels the scheduled message with given id - removes the message from list of the scheduled messages |
+ | [CancelScheduledMessages(IActorRef, Type)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.cancelscheduledmessages_net.adamec.lib.common.actor.actor.iactorref-system.type___c89uf5) | public abstract | Cancels all messages scheduled for recipient that are of given messageType - removes the messages from list of the scheduled messages |
+ | [DeRegisterActor(IActorRef)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.deregisteractor_net.adamec.lib.common.actor.actor.iactorref___102bphm) | public abstract | De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception |
+ | [RegisterActor(IActor, string)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.registeractor_net.adamec.lib.common.actor.actor.iactor-system.string___c4sh8g) | public abstract | Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system. |
+ | [ScheduleMessage(IActorRef, IActorRef, DateTime, object)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.schedulemessage_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.datetime-system.object___1o3fnac) | public abstract | Schedule one-time message to be sent to recipient at given date and time |
+ | [ScheduleMessage(IActorRef, IActorRef, TimeSpan, object)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.schedulemessage_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.timespan-system.object___og1m84) | public abstract | Schedule periodic message to be sent to recipient each period . |
+ | [Start()](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.start__clajz5) | public abstract | Starts the message dispatcher (started by default within ActorSystem constructor) |
+ | [Stop()](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.stop__dly8m5) | public abstract | Stops the message dispatcher (can be restarted using [Start()](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.start__clajz5) method) |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## IActorSystem.DeadLetters Property ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [IActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs)
+Sources: actorsystem\IActorSystem.cs
+
+
+Provides the access to dead letters queue
+
+
+
+```csharp
+public abstract IMessageQueue DeadLetters { get; }
+```
+
+Property value
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## IActorSystem.CancelScheduledMessage(string) Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [IActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs)
+Sources: actorsystem\IActorSystem.cs
+
+
+Cancels the scheduled message with given id - removes the message from list of the scheduled messages
+
+
+
+```csharp
+public abstract bool CancelScheduledMessage(string id)
+```
+
+Method parameters
True if the message has been found and canceled, false when the message has not been found
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## IActorSystem.CancelScheduledMessages(IActorRef, Type) Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [IActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs)
+Sources: actorsystem\IActorSystem.cs
+
+
+Cancels all messages scheduled for recipient that are of given messageType - removes the messages from list of the scheduled messages
+
+
+
+```csharp
+public abstract bool CancelScheduledMessages(IActorRef recipient, Type messageType)
+```
+
+Method parameters
True if at least one message has been found and canceled, false when none has been found
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## IActorSystem.DeRegisterActor(IActorRef) Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [IActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs)
+Sources: actorsystem\IActorSystem.cs
+
+
+De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception
+
+
+
+```csharp
+public abstract void DeRegisterActor(IActorRef actorRef)
+```
+
+Method parameters
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## IActorSystem.RegisterActor(IActor, string) Method ##
+Namespace: [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
+Assembly: net.adamec.lib.common.actor
+Type: [IActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs)
+Sources: actorsystem\IActorSystem.cs
+
+
+Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system.
+
+
+
+```csharp
+public abstract IActorRef RegisterActor(IActor actor, string name)
+```
+
+Method parameters
[net.adamec.lib.common.actor.actor.IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) actor
Reference implementation of IActor that can be simply inherited in own actors. It provides the automatic registration in constructor and de-registration while disposing. The actor reference is published via Self property.
Exchange actor base class providing the common logic for implementation of exchanges - the actors routing the messages to another actors based on subscriptions.
An unbounded mailbox managed message queue used by ManagedMessageQueue as the main message queue Allows access to stored messages for monitoring using Copy() . Note: the messages in the array must not be modified!!!
Message queue for net.adamec.home.control.common.actor.manager.mailbox.ManagedUnboundedDequeBasedMailbox allowing the monitoring (access to) messages stores in the queue The main queue is implemented using net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue and also uses a System.Collections.Generic.Stack`1 internally to store each individual net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue.EnqueueFirst(Akka.Actor.Envelope) messages - supports stashing
Exchange Actor with zero or more actors per message type with routing based also on routing key Subscriptions are per actor, type and routing key. Subscription filter gets the all subscriptions where message is instance of filter type or its children and the routing keys match
Exchange Actor with zero or more actors per message type Subscriptions are per actor and type. Subscription filter gets the all subscriptions where message is instance of filter type or its children
Exchange Actor with zero or one actor per message type Subscriptions are per type. Subscription filter gets the exact type match and if not found, then first match where message is instance of filter type or its children
The Actor System published interface Provides access to options and system queues, supports the actor (de)registration, dispatcher management (start/stop) as well as message scheduling and synchronous (Request-Reply) messaging.
Reference implementation of IActor that can be simply inherited in own actors. It provides the automatic registration in constructor and de-registration while disposing. The actor reference is published via Self property.
Exchange actor base class providing the common logic for implementation of exchanges - the actors routing the messages to another actors based on subscriptions.
An unbounded mailbox managed message queue used by ManagedMessageQueue as the main message queue Allows access to stored messages for monitoring using Copy() . Note: the messages in the array must not be modified!!!
Message queue for net.adamec.home.control.common.actor.manager.mailbox.ManagedUnboundedDequeBasedMailbox allowing the monitoring (access to) messages stores in the queue The main queue is implemented using net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue and also uses a System.Collections.Generic.Stack`1 internally to store each individual net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue.EnqueueFirst(Akka.Actor.Envelope) messages - supports stashing
Exchange Actor with zero or more actors per message type with routing based also on routing key Subscriptions are per actor, type and routing key. Subscription filter gets the all subscriptions where message is instance of filter type or its children and the routing keys match
Exchange Actor with zero or more actors per message type Subscriptions are per actor and type. Subscription filter gets the all subscriptions where message is instance of filter type or its children
Exchange Actor with zero or one actor per message type Subscriptions are per type. Subscription filter gets the exact type match and if not found, then first match where message is instance of filter type or its children
The Actor System published interface Provides access to options and system queues, supports the actor (de)registration, dispatcher management (start/stop) as well as message scheduling and synchronous (Request-Reply) messaging.
Reference implementation of IActor that can be simply inherited in own actors. It provides the automatic registration in constructor and de-registration while disposing. The actor reference is published via Self property.
Reference implementation of IActor that can be simply inherited in own actors. It provides the automatic registration in constructor and de-registration while disposing. The actor reference is published via Self property.
-
public abstract class Actor : BaseDisposable, IActor
Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
CTOR Registers the actor into actorSystem using given name Enables the message processing of the actor and sets the ReceiveTarget to Receive(Envelope) method
Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
CTOR Registers the actor into actorSystem using given name Enables the message processing of the actor and sets the ReceiveTarget to Receive(Envelope) method
Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
Message handler - waits for the message of required ResponseType and when arrived, the message envelope is set to Response and the WaitHandle is set to signal the blocked "parent" thread that the response has been received.
Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
Message handler - waits for the message of required ResponseType and when arrived, the message envelope is set to Response and the WaitHandle is set to signal the blocked "parent" thread that the response has been received.
Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
Exchange actor base class providing the common logic for implementation of exchanges - the actors routing the messages to another actors based on subscriptions.
Exchange actor base class providing the common logic for implementation of exchanges - the actors routing the messages to another actors based on subscriptions.
-
public abstract class ExchangeActor<TSubscription, TSubscriptionMessage, TUnSubscriptionMessage> : Actor
- where TSubscription: Subscription
- where TSubscriptionMessage: SubscriptionMessage
- where TUnSubscriptionMessage: UnSubscriptionMessage
Message handler The subscription/unsubscription messages are handled first, the other messages are matched to the existing subscriptions and distributed to matching subscribers
Checks for the list of existing subscriptions that are to be replaced by the new subscription defined in subscriptionMessage The new subscription can replace the existing subscriptions of other actors.There is no "signaling" to the actors, that their subscription has been replaced (canceled).
Processes the unsubscription message Checks the existing subscriptions of actorRef whether they match the unSubscriptionMessage and removes the matching ones from Subscriptions list.
Message handler The subscription/unsubscription messages are handled first, the other messages are matched to the existing subscriptions and distributed to matching subscribers
Checks for the list of existing subscriptions that are to be replaced by the new subscription defined in subscriptionMessage The new subscription can replace the existing subscriptions of other actors.There is no "signaling" to the actors, that their subscription has been replaced (canceled).
Processes the unsubscription message Checks the existing subscriptions of actorRef whether they match the unSubscriptionMessage and removes the matching ones from Subscriptions list.
public class SingleExchangeActor : ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.@base.Subscription,net.adamec.lib.common.actor.actor.exchanges.@base.SubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.@base.UnSubscriptionMessage>
Exchange Actor with zero or more actors per message type with routing based also on routing key Subscriptions are per actor, type and routing key. Subscription filter gets the all subscriptions where message is instance of filter type or its children and the routing keys match
Exchange Actor with zero or more actors per message type Subscriptions are per actor and type. Subscription filter gets the all subscriptions where message is instance of filter type or its children
Exchange Actor with zero or one actor per message type Subscriptions are per type. Subscription filter gets the exact type match and if not found, then first match where message is instance of filter type or its children
Exchange Actor with zero or more actors per message type with routing based also on routing key Subscriptions are per actor, type and routing key. Subscription filter gets the all subscriptions where message is instance of filter type or its children and the routing keys match
-
public class RoutingKeyExchangeActor : ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeySubscription,net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeySubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeyUnSubscriptionMessage>
Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children and the routing key matches the subscription
Checks whether the message routing key matches the subscription routing key The default implementation is for the exact match, override this method for more complex matching (for example regexp)
Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children and the routing key matches the subscription
Checks whether the message routing key matches the subscription routing key The default implementation is for the exact match, override this method for more complex matching (for example regexp)
Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
Exchange Actor with zero or more actors per message type Subscriptions are per actor and type. Subscription filter gets the all subscriptions where message is instance of filter type or its children
-
public class TypedMultiExchangeActor : ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscription,net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.typed.TypedUnSubscriptionMessage>
Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children
Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children
Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
Exchange Actor with zero or one actor per message type Subscriptions are per type. Subscription filter gets the exact type match and if not found, then first match where message is instance of filter type or its children
-
public class TypedSingleExchangeActor : ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscription,net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.typed.TypedUnSubscriptionMessage>
Returns the list of subscriptions that match the incoming envelope The filter gets the exact type match and if not found, then first match where message is instance of filter type or its children Note: There can be only one subscription per message type
Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
Returns the list of subscriptions that match the incoming envelope The filter gets the exact type match and if not found, then first match where message is instance of filter type or its children Note: There can be only one subscription per message type
Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
The Actor System published interface Provides access to options and system queues, supports the actor (de)registration, dispatcher management (start/stop) as well as message scheduling and synchronous (Request-Reply) messaging.
De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception
Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system.
De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception
Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system.
-
public IActorRef RegisterActor(IActor actor, string name)
Main dispatcher loop (runs within the ExecutorThread ) The loop is active while isActive is set to true, so setting isActive to false forces the loop to exit Each run of the loop enqueue the due scheduled messages (if any) and process mailboxes (actors) with any pending messages. Actor (actor reference) is locked for processing and the task is scheduled in thread pool to process the actor's queue. The actor remains locked until the task is not finished, so it's not picked up by executor again during the processing
Gets the list of scheduled messages that should be enqueued (are due) When the scheduled message is periodic, the next fire time is calculated and a new instance of scheduled message is added to to schedule
Main actor queue processor - scheduled by executor within the thread pool for each eligible actor (actor ref) Processes the batch of the messages for given actor. The messages are being processed sequentially in FIFO order within the loop with following constraints - there are still messages in actor's queue - actor can receive the messages - the batch size (number of messages for single actor processed in one cycle) has not been reached - dispatcher is not stopped The messages are sent to current actor receive target
Schedule one-time message to be sent to recipient at given date and time Creates the ScheduledMessageInfo instance based on the parameters and let it add to the internal list of the scheduled messages
Schedule periodic message to be sent to recipient each period . Creates the ScheduledMessageInfo instance based on the parameters and let it add to the internal list of the scheduled messages
Main dispatcher loop (runs within the ExecutorThread ) The loop is active while isActive is set to true, so setting isActive to false forces the loop to exit Each run of the loop enqueue the due scheduled messages (if any) and process mailboxes (actors) with any pending messages. Actor (actor reference) is locked for processing and the task is scheduled in thread pool to process the actor's queue. The actor remains locked until the task is not finished, so it's not picked up by executor again during the processing
Gets the list of scheduled messages that should be enqueued (are due) When the scheduled message is periodic, the next fire time is calculated and a new instance of scheduled message is added to to schedule
Main actor queue processor - scheduled by executor within the thread pool for each eligible actor (actor ref) Processes the batch of the messages for given actor. The messages are being processed sequentially in FIFO order within the loop with following constraints - there are still messages in actor's queue - actor can receive the messages - the batch size (number of messages for single actor processed in one cycle) has not been reached - dispatcher is not stopped The messages are sent to current actor receive target
Schedule one-time message to be sent to recipient at given date and time Creates the ScheduledMessageInfo instance based on the parameters and let it add to the internal list of the scheduled messages
Schedule periodic message to be sent to recipient each period . Creates the ScheduledMessageInfo instance based on the parameters and let it add to the internal list of the scheduled messages
CTOR for the new instance of scheduled message definition for existing periodic scheduled message Used when creating the definition of each new run of the periodic schedule. Copies the information from current definition and preservers the ID
CTOR for the new instance of scheduled message definition for existing periodic scheduled message Used when creating the definition of each new run of the periodic schedule. Copies the information from current definition and preservers the ID
The Actor System published interface Provides access to options and system queues, supports the actor (de)registration, dispatcher management (start/stop) as well as message scheduling and synchronous (Request-Reply) messaging.
De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception
Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system.
De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception
-
public abstract void DeRegisterActor(IActorRef actorRef)
Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system.
-
public abstract IActorRef RegisterActor(IActor actor, string name)
An unbounded mailbox managed message queue used by ManagedMessageQueue as the main message queue Allows access to stored messages for monitoring using Copy() . Note: the messages in the array must not be modified!!!
Message queue for net.adamec.home.control.common.actor.manager.mailbox.ManagedUnboundedDequeBasedMailbox allowing the monitoring (access to) messages stores in the queue The main queue is implemented using net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue and also uses a System.Collections.Generic.Stack`1 internally to store each individual net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue.EnqueueFirst(Akka.Actor.Envelope) messages - supports stashing
An unbounded mailbox managed message queue used by ManagedMessageQueue as the main message queue Allows access to stored messages for monitoring using Copy() . Note: the messages in the array must not be modified!!!
Message queue for net.adamec.home.control.common.actor.manager.mailbox.ManagedUnboundedDequeBasedMailbox allowing the monitoring (access to) messages stores in the queue The main queue is implemented using net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue and also uses a System.Collections.Generic.Stack`1 internally to store each individual net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue.EnqueueFirst(Akka.Actor.Envelope) messages - supports stashing
diff --git a/doc/net.adamec.lib.common.actor.md b/doc/net.adamec.lib.common.actor.md
index fc40f67..1b6c136 100644
--- a/doc/net.adamec.lib.common.actor.md
+++ b/doc/net.adamec.lib.common.actor.md
@@ -1,62 +1,62 @@
-# Documentation #
+# RAD Actor System Documentation #
## Namespaces ##
| Name | Summary |
| ------ | --------- |
- | [net.adamec.lib.common.actor.actor](#n-net.adamec.lib.common.actor.actor__1ldg5ba) | |
- | [net.adamec.lib.common.actor.actor.exchanges.@base](#n-net.adamec.lib.common.actor.actor.exchanges.base__1g84l6h) | |
- | [net.adamec.lib.common.actor.actor.exchanges.single](#n-net.adamec.lib.common.actor.actor.exchanges.single__6r83x4) | |
- | [net.adamec.lib.common.actor.actor.exchanges.typed](#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao) | |
- | [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md) | |
- | [net.adamec.lib.common.actor.message](#n-net.adamec.lib.common.actor.message__m00bpk) | |
- | [net.adamec.lib.common.actor.queue](#n-net.adamec.lib.common.actor.queue__1lh8qrc) | |
- | [net.adamec.lib.common.extensions](#n-net.adamec.lib.common.extensions__1vwuhoq) | |
- | [net.adamec.lib.common.logging](#n-net.adamec.lib.common.logging__1g9pm29) | |
- | [net.adamec.lib.common.utils](#n-net.adamec.lib.common.utils__7vdji9) | |
+ | [net.adamec.lib.common.actor.actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#n-net.adamec.lib.common.actor.actor__1ldg5ba) | |
+ | [net.adamec.lib.common.actor.actor.exchanges.@base](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#n-net.adamec.lib.common.actor.actor.exchanges.base__1g84l6h) | |
+ | [net.adamec.lib.common.actor.actor.exchanges.single](net.adamec.lib.common.actor.actor.exchanges.single__6r83x4.md#n-net.adamec.lib.common.actor.actor.exchanges.single__6r83x4) | |
+ | [net.adamec.lib.common.actor.actor.exchanges.typed](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao) | |
+ | [net.adamec.lib.common.actor.actorsystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#n-net.adamec.lib.common.actor.actorsystem__1ihx1md) | |
+ | [net.adamec.lib.common.actor.message](net.adamec.lib.common.actor.message__m00bpk.md#n-net.adamec.lib.common.actor.message__m00bpk) | |
+ | [net.adamec.lib.common.actor.queue](net.adamec.lib.common.actor.queue__1lh8qrc.md#n-net.adamec.lib.common.actor.queue__1lh8qrc) | |
+ | [net.adamec.lib.common.extensions](net.adamec.lib.common.extensions__1vwuhoq.md#n-net.adamec.lib.common.extensions__1vwuhoq) | |
+ | [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29) | |
+ | [net.adamec.lib.common.utils](net.adamec.lib.common.utils__7vdji9.md#n-net.adamec.lib.common.utils__7vdji9) | |
## Types ##
| Name | Modifier | Kind | Summary |
| ------ | ---------- | ------ | --------- |
- | [Actor](#t-net.adamec.lib.common.actor.actor.actor__buuxwr) | public abstract | Class | Reference implementation of [IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) that can be simply inherited in own actors. It provides the automatic registration in constructor and de-registration while disposing. The actor reference is published via [Self](#p-net.adamec.lib.common.actor.actor.actor.self__1kgayjx) property. |
- | [ActorRefEmpty](#t-net.adamec.lib.common.actor.actor.actorrefempty__c8py9n) | public | Class | Reference to empty virtual actor |
- | [ActorRefInternal](#t-net.adamec.lib.common.actor.actor.actorrefinternal__1l1obal) | internal | Class | Internal implementation of actor reference. Encapsulates the mailbox (queue) for the actor |
- | [ActorRefNameOnly](#t-net.adamec.lib.common.actor.actor.actorrefnameonly__eu2rbh) | public abstract | Class | Base class for the virtual actors |
- | [ActorRefs](#t-net.adamec.lib.common.actor.actor.actorrefs__17fr5vh) | public | Class | Common references to virtual actors |
- | [ActorRefSystem](#t-net.adamec.lib.common.actor.actor.actorrefsystem__43zotr) | public | Class | Reference to system virtual actor |
- | [ActorSystem](#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3) | public | Class | Implementation of actor system |
- | [ActorSystemDispatcher](#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe) | internal | Class | Message dispatched used by [ActorSystem](#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.actorsystem__1osgm3w) |
- | [ActorSystemOptions](#t-net.adamec.lib.common.actor.actorsystem.actorsystemoptions__1e8lf7j) | public | Class | User defined configuration of [ActorSystem](#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3) |
- | [BaseDisposable](#t-net.adamec.lib.common.utils.basedisposable__7s72ps) | public abstract | Class | Helper class for implementation of System.IDisposable types |
- | [CommonLogging](#t-net.adamec.lib.common.logging.commonlogging__1dar5wb) | public static | Class | [ILogger](#t-net.adamec.lib.common.logging.ilogger__y2ollm) factory |
- | [Envelope](#t-net.adamec.lib.common.actor.message.envelope__5oxc3s) | public | Class | Message envelope |
- | [ErrorMessage](#t-net.adamec.lib.common.actor.message.errormessage__1gj1wb) | public | Class | Specialized [Envelope](#t-net.adamec.lib.common.actor.message.envelope__5oxc3s) for messages in [ErrorMessageQueue](#p-net.adamec.lib.common.actor.actorsystem.iactorsystem.errormessagequeue__v9i6fy) |
- | [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq) | public abstract | Class | Exchange actor base class providing the common logic for implementation of exchanges - the actors routing the messages to another actors based on subscriptions. |
- | [InternalQueue](#t-net.adamec.lib.common.actor.queue.internalqueue__49i5r8) | internal | Class | An unbounded mailbox managed message queue used by [ManagedMessageQueue](#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09) as the main message queue Allows access to stored messages for monitoring using [Copy()](#m-net.adamec.lib.common.actor.queue.internalqueue.copy__1co1b8y) . Note: the messages in the array must not be modified!!! |
- | [LoggerExtensions](#t-net.adamec.lib.common.logging.loggerextensions__wainxv) | internal static | Class | [ILogger](#t-net.adamec.lib.common.logging.ilogger__y2ollm) extensions |
- | [ManagedMessageQueue](#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09) | public | Class | Message queue for net.adamec.home.control.common.actor.manager.mailbox.ManagedUnboundedDequeBasedMailbox allowing the monitoring (access to) messages stores in the queue The main queue is implemented using net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue and also uses a System.Collections.Generic.Stack`1 internally to store each individual net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue.EnqueueFirst(Akka.Actor.Envelope) messages - supports stashing |
- | [RoutingKeyExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor__1inw5x7) | public | Class | Exchange Actor with zero or more actors per message type with routing based also on routing key Subscriptions are per actor, type and routing key. Subscription filter gets the all subscriptions where message is instance of filter type or its children and the routing keys match |
- | [RoutingKeySubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription__1t32gw0) | public | Class | Subscription for exchanges that routes the messages based on their type and routing key |
- | [RoutingKeySubscriptionMessage](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscriptionmessage__1h3lr73) | public | Class | Subscription message for [RoutingKeySubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription__1t32gw0) |
- | [RoutingKeyUnSubscriptionMessage](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyunsubscriptionmessage__emjdu2) | public | Class | UnSubscription message for [RoutingKeySubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription__1t32gw0) |
- | [ScheduledMessageInfo](#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) | internal | Class | Scheduled message definition |
- | [SingleExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.single.singleexchangeactor__1q6rr7y) | public | Class | Exchange Actor with zero or one subscriber |
- | [Subscription](#t-net.adamec.lib.common.actor.actor.exchanges.base.subscription__1q5jclm) | public | Class | Base exchange actor subscription |
- | [SubscriptionMessage](#t-net.adamec.lib.common.actor.actor.exchanges.base.subscriptionmessage__1d4egm1) | public | Class | Base exchange actor subscription messages |
- | [SyncActor](#t-net.adamec.lib.common.actor.actor.syncactor__cgt0u6) | internal | Class | Internal actor used in [Ask(IActorRef, object, Type, int, bool)](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.ask_net.adamec.lib.common.actor.actor.iactorref-system.object-system.type-system.int32-system.boolean___14ecl67) methods to implement Request-Reply pattern |
- | [TypedMultiExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor__1rgmwat) | public | Class | Exchange Actor with zero or more actors per message type Subscriptions are per actor and type. Subscription filter gets the all subscriptions where message is instance of filter type or its children |
- | [TypedSingleExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor__i752da) | public | Class | Exchange Actor with zero or one actor per message type Subscriptions are per type. Subscription filter gets the exact type match and if not found, then first match where message is instance of filter type or its children |
- | [TypedSubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) | public | Class | Subscription for exchanges that routes the messages based on their type |
- | [TypedSubscriptionMessage](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscriptionmessage__1hh0wlc) | public | Class | Subscription message for [TypedSubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) |
- | [TypedUnSubscriptionMessage](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedunsubscriptionmessage__9g51i3) | public | Class | UnSubscription message for [TypedSubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) |
- | [TypeExtensions](#t-net.adamec.lib.common.extensions.typeextensions__63ezc8) | internal static | Class | System.Type extensions |
- | [UnSubscriptionMessage](#t-net.adamec.lib.common.actor.actor.exchanges.base.unsubscriptionmessage__15gfzkw) | public | Class | Base exchange actor un-subscription message |
- | [IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) | public abstract | Interface | Actor interface |
- | [IActorRef](#t-net.adamec.lib.common.actor.actor.iactorref__63mbv) | public abstract | Interface | Reference to actor |
- | [IActorSystem](#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs) | public abstract | Interface | The Actor System published interface Provides access to options and system queues, supports the actor (de)registration, dispatcher management (start/stop) as well as message scheduling and synchronous (Request-Reply) messaging. |
- | [ILogger](#t-net.adamec.lib.common.logging.ilogger__y2ollm) | public abstract | Interface | Logger interface - wrapper around the NLog.ILogger |
- | [IMessageQueue](#t-net.adamec.lib.common.actor.queue.imessagequeue__1ndgarl) | public abstract | Interface | |
- | [Receive](#t-net.adamec.lib.common.actor.actor.receive__1adwyjn) | public | Delegate | Delegate describing the recipient target (method processing the messages) |
+ | [Actor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actor__buuxwr) | public abstract | Class | Reference implementation of [IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) that can be simply inherited in own actors. It provides the automatic registration in constructor and de-registration while disposing. The actor reference is published via [Self](net.adamec.lib.common.actor.actor__1ldg5ba.md#p-net.adamec.lib.common.actor.actor.actor.self__1kgayjx) property. |
+ | [ActorRefEmpty](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actorrefempty__c8py9n) | public | Class | Reference to empty virtual actor |
+ | [ActorRefInternal](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actorrefinternal__1l1obal) | internal | Class | Internal implementation of actor reference. Encapsulates the mailbox (queue) for the actor |
+ | [ActorRefNameOnly](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actorrefnameonly__eu2rbh) | public abstract | Class | Base class for the virtual actors |
+ | [ActorRefs](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actorrefs__17fr5vh) | public | Class | Common references to virtual actors |
+ | [ActorRefSystem](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.actorrefsystem__43zotr) | public | Class | Reference to system virtual actor |
+ | [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3) | public | Class | Implementation of actor system |
+ | [ActorSystemDispatcher](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe) | internal | Class | Message dispatched used by [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.actorsystem__1osgm3w) |
+ | [ActorSystemOptions](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystemoptions__1e8lf7j) | public | Class | User defined configuration of [ActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3) |
+ | [BaseDisposable](net.adamec.lib.common.utils__7vdji9.md#t-net.adamec.lib.common.utils.basedisposable__7s72ps) | public abstract | Class | Helper class for implementation of System.IDisposable types |
+ | [CommonLogging](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.commonlogging__1dar5wb) | internal static | Class | [ILogger](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.ilogger__y2ollm) factory |
+ | [Envelope](net.adamec.lib.common.actor.message__m00bpk.md#t-net.adamec.lib.common.actor.message.envelope__5oxc3s) | public | Class | Message envelope |
+ | [ErrorMessage](net.adamec.lib.common.actor.message__m00bpk.md#t-net.adamec.lib.common.actor.message.errormessage__1gj1wb) | public | Class | Specialized [Envelope](net.adamec.lib.common.actor.message__m00bpk.md#t-net.adamec.lib.common.actor.message.envelope__5oxc3s) for messages in [ErrorMessageQueue](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#p-net.adamec.lib.common.actor.actorsystem.iactorsystem.errormessagequeue__v9i6fy) |
+ | [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq) | public abstract | Class | Exchange actor base class providing the common logic for implementation of exchanges - the actors routing the messages to another actors based on subscriptions. |
+ | [InternalQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.internalqueue__49i5r8) | internal | Class | An unbounded mailbox managed message queue used by [ManagedMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09) as the main message queue Allows access to stored messages for monitoring using [Copy()](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.internalqueue.copy__1co1b8y) . Note: the messages in the array must not be modified!!! |
+ | [LoggerExt](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.loggerext__ac9km2) | internal | Class | [ILogger](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.ilogger__y2ollm) extensions |
+ | [ManagedMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09) | public | Class | Message queue for net.adamec.home.control.common.actor.manager.mailbox.ManagedUnboundedDequeBasedMailbox allowing the monitoring (access to) messages stores in the queue The main queue is implemented using net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue and also uses a System.Collections.Generic.Stack`1 internally to store each individual net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue.EnqueueFirst(Akka.Actor.Envelope) messages - supports stashing |
+ | [RoutingKeyExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor__1inw5x7) | public | Class | Exchange Actor with zero or more actors per message type with routing based also on routing key Subscriptions are per actor, type and routing key. Subscription filter gets the all subscriptions where message is instance of filter type or its children and the routing keys match |
+ | [RoutingKeySubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription__1t32gw0) | public | Class | Subscription for exchanges that routes the messages based on their type and routing key |
+ | [RoutingKeySubscriptionMessage](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscriptionmessage__1h3lr73) | public | Class | Subscription message for [RoutingKeySubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription__1t32gw0) |
+ | [RoutingKeyUnSubscriptionMessage](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyunsubscriptionmessage__emjdu2) | public | Class | UnSubscription message for [RoutingKeySubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription__1t32gw0) |
+ | [ScheduledMessageInfo](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) | internal | Class | Scheduled message definition |
+ | [SingleExchangeActor](net.adamec.lib.common.actor.actor.exchanges.single__6r83x4.md#t-net.adamec.lib.common.actor.actor.exchanges.single.singleexchangeactor__1q6rr7y) | public | Class | Exchange Actor with zero or one subscriber |
+ | [Subscription](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.subscription__1q5jclm) | public | Class | Base exchange actor subscription |
+ | [SubscriptionMessage](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.subscriptionmessage__1d4egm1) | public | Class | Base exchange actor subscription messages |
+ | [SyncActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.syncactor__cgt0u6) | internal | Class | Internal actor used in [Ask(IActorRef, object, Type, int, bool)](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.ask_net.adamec.lib.common.actor.actor.iactorref-system.object-system.type-system.int32-system.boolean___14ecl67) methods to implement Request-Reply pattern |
+ | [TypedMultiExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor__1rgmwat) | public | Class | Exchange Actor with zero or more actors per message type Subscriptions are per actor and type. Subscription filter gets the all subscriptions where message is instance of filter type or its children |
+ | [TypedSingleExchangeActor](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor__i752da) | public | Class | Exchange Actor with zero or one actor per message type Subscriptions are per type. Subscription filter gets the exact type match and if not found, then first match where message is instance of filter type or its children |
+ | [TypedSubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) | public | Class | Subscription for exchanges that routes the messages based on their type |
+ | [TypedSubscriptionMessage](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscriptionmessage__1hh0wlc) | public | Class | Subscription message for [TypedSubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) |
+ | [TypedUnSubscriptionMessage](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedunsubscriptionmessage__9g51i3) | public | Class | UnSubscription message for [TypedSubscription](net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao.md#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) |
+ | [TypeExtensions](net.adamec.lib.common.extensions__1vwuhoq.md#t-net.adamec.lib.common.extensions.typeextensions__63ezc8) | internal static | Class | System.Type extensions |
+ | [UnSubscriptionMessage](net.adamec.lib.common.actor.actor.exchanges.@base__1g84l6h.md#t-net.adamec.lib.common.actor.actor.exchanges.base.unsubscriptionmessage__15gfzkw) | public | Class | Base exchange actor un-subscription message |
+ | [IActor](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) | public abstract | Interface | Actor interface |
+ | [IActorRef](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.iactorref__63mbv) | public abstract | Interface | Reference to actor |
+ | [IActorSystem](net.adamec.lib.common.actor.actorsystem__1ihx1md.md#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs) | public abstract | Interface | The Actor System published interface Provides access to options and system queues, supports the actor (de)registration, dispatcher management (start/stop) as well as message scheduling and synchronous (Request-Reply) messaging. |
+ | [ILogger](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.ilogger__y2ollm) | internal abstract | Interface | Logger interface - wrapper around the NLog.ILogger with some additional methods |
+ | [IMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.imessagequeue__1ndgarl) | public abstract | Interface | |
+ | [Receive](net.adamec.lib.common.actor.actor__1ldg5ba.md#t-net.adamec.lib.common.actor.actor.receive__1adwyjn) | public | Delegate | Delegate describing the recipient target (method processing the messages) |
Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
@@ -68,7633 +68,9 @@ Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net
| Name | Summary |
| ------ | --------- |
- | [RadCommons.extensions.TypeExtensions.DefaultValue](#src-only-package--RadCommons.extensions.TypeExtensions.DefaultValue) | Provides default value for types (Source only package). |
- | [RadCommons.logging.CommonLogging](#src-only-package--RadCommons.logging.CommonLogging) | RadCommons logging wrapper around NLog (Source only package). |
- | [RadCommons.utils.BaseDisposable](#src-only-package--RadCommons.utils.BaseDisposable) | Helper class for implementation of IDisposable types (Source only package). |
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## net.adamec.lib.common.actor.actor Namespace ##
-### Classes ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [Actor](#t-net.adamec.lib.common.actor.actor.actor__buuxwr) | public abstract | Reference implementation of [IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) that can be simply inherited in own actors. It provides the automatic registration in constructor and de-registration while disposing. The actor reference is published via [Self](#p-net.adamec.lib.common.actor.actor.actor.self__1kgayjx) property. |
- | [ActorRefEmpty](#t-net.adamec.lib.common.actor.actor.actorrefempty__c8py9n) | public | Reference to empty virtual actor |
- | [ActorRefInternal](#t-net.adamec.lib.common.actor.actor.actorrefinternal__1l1obal) | internal | Internal implementation of actor reference. Encapsulates the mailbox (queue) for the actor |
- | [ActorRefNameOnly](#t-net.adamec.lib.common.actor.actor.actorrefnameonly__eu2rbh) | public abstract | Base class for the virtual actors |
- | [ActorRefs](#t-net.adamec.lib.common.actor.actor.actorrefs__17fr5vh) | public | Common references to virtual actors |
- | [ActorRefSystem](#t-net.adamec.lib.common.actor.actor.actorrefsystem__43zotr) | public | Reference to system virtual actor |
- | [SyncActor](#t-net.adamec.lib.common.actor.actor.syncactor__cgt0u6) | internal | Internal actor used in [Ask(IActorRef, object, Type, int, bool)](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.ask_net.adamec.lib.common.actor.actor.iactorref-system.object-system.type-system.int32-system.boolean___14ecl67) methods to implement Request-Reply pattern |
-
-
-
-
-### Interfaces ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) | public abstract | Actor interface |
- | [IActorRef](#t-net.adamec.lib.common.actor.actor.iactorref__63mbv) | public abstract | Reference to actor |
-
-
-
-
-### Delegates ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [Receive](#t-net.adamec.lib.common.actor.actor.receive__1adwyjn) | public | Delegate describing the recipient target (method processing the messages) |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## Actor Class ##
-Namespace: [net.adamec.lib.common.actor.actor](#n-net.adamec.lib.common.actor.actor__1ldg5ba)
-Assembly: net.adamec.lib.common.actor
-Sources: actor\Actor.cs
-
-
-Reference implementation of [IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) that can be simply inherited in own actors. It provides the automatic registration in constructor and de-registration while disposing. The actor reference is published via [Self](#p-net.adamec.lib.common.actor.actor.actor.self__1kgayjx) property.
-
-
-
-```csharp
-public abstract class Actor : BaseDisposable, IActor
-```
-
-Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](#t-net.adamec.lib.common.utils.basedisposable__7s72ps)
-Implements: IDisposable, [net.adamec.lib.common.actor.actor.IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
-
-
-### Properties ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [ActorSystem](#p-net.adamec.lib.common.actor.actor.actor.actorsystem__1g6mmur) | protected | Actor system |
- | [CanReceive](#p-net.adamec.lib.common.actor.actor.actor.canreceive__19sq0hk) | public | Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox) |
- | [DropAllReceive](#p-net.adamec.lib.common.actor.actor.actor.dropallreceive__1g3skf2) | protected | Message handler that drops all messages and returns false (unhandled) |
- | [ReceiveTarget](#p-net.adamec.lib.common.actor.actor.actor.receivetarget__rq6a5r) | public | Current method processing the messages (to where the messages are dispatched to) |
- | [Self](#p-net.adamec.lib.common.actor.actor.actor.self__1kgayjx) | public | Actor reference to self |
-
-
-
-
-### Constructors ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [Actor(IActorSystem, string)](#m-net.adamec.lib.common.actor.actor.actor.-ctor_net.adamec.lib.common.actor.actorsystem.iactorsystem-system.string___sft7zm) | protected | CTOR Registers the actor into actorSystem using given name Enables the message processing of the actor and sets the [ReceiveTarget](#p-net.adamec.lib.common.actor.actor.actor.receivetarget__rq6a5r) to [Receive(Envelope)](#m-net.adamec.lib.common.actor.actor.actor.receive_net.adamec.lib.common.actor.message.envelope___lic5c4) method |
-
-
-
-
-### Methods ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [Become(Receive)](#m-net.adamec.lib.common.actor.actor.actor.become_net.adamec.lib.common.actor.actor.receive___cfu8bb) | protected | Switches the actor behavior by setting the message handler . When the handler is not set, [DropAllReceive](#p-net.adamec.lib.common.actor.actor.actor.dropallreceive__1g3skf2) handler is used. |
- | [BecomeDefault()](#m-net.adamec.lib.common.actor.actor.actor.becomedefault__gzylss) | protected | Switch the message handler to [Receive(Envelope)](#m-net.adamec.lib.common.actor.actor.actor.receive_net.adamec.lib.common.actor.message.envelope___lic5c4) method |
- | [DisposeManaged()](#m-net.adamec.lib.common.actor.actor.actor.disposemanaged__m3e4v4) | protected | De-registers the actor from actor system |
- | [Receive(Envelope)](#m-net.adamec.lib.common.actor.actor.actor.receive_net.adamec.lib.common.actor.message.envelope___lic5c4) | protected | Default message handler. |
- | [Unhandled(Envelope)](#m-net.adamec.lib.common.actor.actor.actor.unhandled_net.adamec.lib.common.actor.message.envelope___1cb59zm) | protected | Helper for processing unhandled messages, returns false by default |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## Actor.ActorSystem Property ##
-Namespace: [net.adamec.lib.common.actor.actor](#n-net.adamec.lib.common.actor.actor__1ldg5ba)
-Assembly: net.adamec.lib.common.actor
-Type: [Actor](#t-net.adamec.lib.common.actor.actor.actor__buuxwr)
-Sources: actor\Actor.cs
-
-
-Actor system
-
-
-
-```csharp
-protected IActorSystem ActorSystem { get; }
-```
-
-Property value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## Actor.CanReceive Property ##
-Namespace: [net.adamec.lib.common.actor.actor](#n-net.adamec.lib.common.actor.actor__1ldg5ba)
-Assembly: net.adamec.lib.common.actor
-Type: [Actor](#t-net.adamec.lib.common.actor.actor.actor__buuxwr)
-Sources: actor\Actor.cs
-
-
-Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
-
-
-
-```csharp
-public bool CanReceive { get; protected set; }
-```
-
-Property value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## Actor.Actor(IActorSystem, string) Constructor ##
-Namespace: [net.adamec.lib.common.actor.actor](#n-net.adamec.lib.common.actor.actor__1ldg5ba)
-Assembly: net.adamec.lib.common.actor
-Type: [Actor](#t-net.adamec.lib.common.actor.actor.actor__buuxwr)
-Sources: actor\Actor.cs
-
-
-CTOR Registers the actor into actorSystem using given name Enables the message processing of the actor and sets the [ReceiveTarget](#p-net.adamec.lib.common.actor.actor.actor.receivetarget__rq6a5r) to [Receive(Envelope)](#m-net.adamec.lib.common.actor.actor.actor.receive_net.adamec.lib.common.actor.message.envelope___lic5c4) method
-
-
-
-```csharp
-protected Actor(IActorSystem actorSystem, string name)
-```
-
-Constructor parameters
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## Actor.Become(Receive) Method ##
-Namespace: [net.adamec.lib.common.actor.actor](#n-net.adamec.lib.common.actor.actor__1ldg5ba)
-Assembly: net.adamec.lib.common.actor
-Type: [Actor](#t-net.adamec.lib.common.actor.actor.actor__buuxwr)
-Sources: actor\Actor.cs
-
-
-Switches the actor behavior by setting the message handler . When the handler is not set, [DropAllReceive](#p-net.adamec.lib.common.actor.actor.actor.dropallreceive__1g3skf2) handler is used.
-
-
-
-```csharp
-protected virtual void Become(Receive handler)
-```
-
-Method parameters
True if handled, false if not handled. The default implementation calls [Unhandled(Envelope)](#m-net.adamec.lib.common.actor.actor.actor.unhandled_net.adamec.lib.common.actor.message.envelope___1cb59zm) method that returns false
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## SyncActor Class ##
-Namespace: [net.adamec.lib.common.actor.actor](#n-net.adamec.lib.common.actor.actor__1ldg5ba)
-Assembly: net.adamec.lib.common.actor
-Sources: actor\SyncActor.cs
-
-
-Internal actor used in [Ask(IActorRef, object, Type, int, bool)](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.ask_net.adamec.lib.common.actor.actor.iactorref-system.object-system.type-system.int32-system.boolean___14ecl67) methods to implement Request-Reply pattern
-
-
-
-```csharp
-internal class SyncActor : BaseDisposable, IActor
-```
-
-Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](#t-net.adamec.lib.common.utils.basedisposable__7s72ps)
-Implements: IDisposable, [net.adamec.lib.common.actor.actor.IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
-
-
-### Properties ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [ActorSystem](#p-net.adamec.lib.common.actor.actor.syncactor.actorsystem__1jy3biw) | private | |
- | [CanReceive](#p-net.adamec.lib.common.actor.actor.syncactor.canreceive__37hi1h) | public | Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox) |
- | [ReceiveTarget](#p-net.adamec.lib.common.actor.actor.syncactor.receivetarget__fqhb9w) | public | Current method processing the messages (to where the messages are dispatched to) |
- | [Response](#p-net.adamec.lib.common.actor.actor.syncactor.response__1nj5lt1) | public | Response message envelope |
- | [ResponseType](#p-net.adamec.lib.common.actor.actor.syncactor.responsetype__13oqz9h) | public | Expected response type |
- | [Self](#p-net.adamec.lib.common.actor.actor.syncactor.self__7tb7a6) | public | Actor reference to self |
- | [WaitHandle](#p-net.adamec.lib.common.actor.actor.syncactor.waithandle__8yoz6j) | public | Wait handle used to signal that the response has arrived |
-
-
-
-
-### Constructors ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [SyncActor(IActorSystem, Type, AutoResetEvent)](#m-net.adamec.lib.common.actor.actor.syncactor.-ctor_net.adamec.lib.common.actor.actorsystem.iactorsystem-system.type-system.threading.autoresetevent___2ekqnh) | public | CTOR |
-
-
-
-
-### Methods ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [DisposeManaged()](#m-net.adamec.lib.common.actor.actor.syncactor.disposemanaged__1ldukpd) | protected | Deregisters itself from actor system |
- | [Receive(Envelope)](#m-net.adamec.lib.common.actor.actor.syncactor.receive_net.adamec.lib.common.actor.message.envelope___1adxu0d) | protected | Message handler - waits for the message of required [ResponseType](#p-net.adamec.lib.common.actor.actor.syncactor.responsetype__13oqz9h) and when arrived, the message envelope is set to [Response](#p-net.adamec.lib.common.actor.actor.syncactor.response__1nj5lt1) and the [WaitHandle](#p-net.adamec.lib.common.actor.actor.syncactor.waithandle__8yoz6j) is set to signal the blocked "parent" thread that the response has been received. |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## SyncActor.ActorSystem Property ##
-Namespace: [net.adamec.lib.common.actor.actor](#n-net.adamec.lib.common.actor.actor__1ldg5ba)
-Assembly: net.adamec.lib.common.actor
-Type: [SyncActor](#t-net.adamec.lib.common.actor.actor.syncactor__cgt0u6)
-Sources: actor\SyncActor.cs
-
-
-
-```csharp
-private IActorSystem ActorSystem { get; }
-```
-
-Property value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## SyncActor.CanReceive Property ##
-Namespace: [net.adamec.lib.common.actor.actor](#n-net.adamec.lib.common.actor.actor__1ldg5ba)
-Assembly: net.adamec.lib.common.actor
-Type: [SyncActor](#t-net.adamec.lib.common.actor.actor.syncactor__cgt0u6)
-Sources: actor\SyncActor.cs
-
-
-Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
-
-
-
-```csharp
-public bool CanReceive { get; }
-```
-
-Property value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## SyncActor.Receive(Envelope) Method ##
-Namespace: [net.adamec.lib.common.actor.actor](#n-net.adamec.lib.common.actor.actor__1ldg5ba)
-Assembly: net.adamec.lib.common.actor
-Type: [SyncActor](#t-net.adamec.lib.common.actor.actor.syncactor__cgt0u6)
-Sources: actor\SyncActor.cs
-
-
-Message handler - waits for the message of required [ResponseType](#p-net.adamec.lib.common.actor.actor.syncactor.responsetype__13oqz9h) and when arrived, the message envelope is set to [Response](#p-net.adamec.lib.common.actor.actor.syncactor.response__1nj5lt1) and the [WaitHandle](#p-net.adamec.lib.common.actor.actor.syncactor.waithandle__8yoz6j) is set to signal the blocked "parent" thread that the response has been received.
-
-
-
-```csharp
-protected virtual bool Receive(Envelope envelope)
-```
-
-Method parameters
True when message processed (handled) otherwise false
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## IActor Interface ##
-Namespace: [net.adamec.lib.common.actor.actor](#n-net.adamec.lib.common.actor.actor__1ldg5ba)
-Assembly: net.adamec.lib.common.actor
-Sources: actor\IActor.cs
-
-
-Actor interface
-
-
-
-```csharp
-public interface IActor
-```
-
-### Properties ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [CanReceive](#p-net.adamec.lib.common.actor.actor.iactor.canreceive__f9x86f) | public abstract | Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox) |
- | [ReceiveTarget](#p-net.adamec.lib.common.actor.actor.iactor.receivetarget__n44wdg) | public abstract | Current method processing the messages (to where the messages are dispatched to) |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## IActor.CanReceive Property ##
-Namespace: [net.adamec.lib.common.actor.actor](#n-net.adamec.lib.common.actor.actor__1ldg5ba)
-Assembly: net.adamec.lib.common.actor
-Type: [IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
-Sources: actor\IActor.cs
-
-
-Returns true if the actor can receive messages. If false, the messages will not be dispatched to the actor (they will still be enqueued to actor's mailbox)
-
-
-
-```csharp
-public abstract bool CanReceive { get; }
-```
-
-Property value
-Inheritance: object -> Delegate -> MulticastDelegate
-Implements: System.ICloneable, System.Runtime.Serialization.ISerializable
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## net.adamec.lib.common.actor.actor.exchanges.@base Namespace ##
-### Classes ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq) | public abstract | Exchange actor base class providing the common logic for implementation of exchanges - the actors routing the messages to another actors based on subscriptions. |
- | [Subscription](#t-net.adamec.lib.common.actor.actor.exchanges.base.subscription__1q5jclm) | public | Base exchange actor subscription |
- | [SubscriptionMessage](#t-net.adamec.lib.common.actor.actor.exchanges.base.subscriptionmessage__1d4egm1) | public | Base exchange actor subscription messages |
- | [UnSubscriptionMessage](#t-net.adamec.lib.common.actor.actor.exchanges.base.unsubscriptionmessage__15gfzkw) | public | Base exchange actor un-subscription message |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage> Class ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.@base](#n-net.adamec.lib.common.actor.actor.exchanges.base__1g84l6h)
-Assembly: net.adamec.lib.common.actor
-Sources: actor\exchanges\base\ExchangeActor.cs
-
-
-Exchange actor base class providing the common logic for implementation of exchanges - the actors routing the messages to another actors based on subscriptions.
-
-
-
-```csharp
-public abstract class ExchangeActor : Actor
- where TSubscription: Subscription
- where TSubscriptionMessage: SubscriptionMessage
- where TUnSubscriptionMessage: UnSubscriptionMessage
-```
-
-Type parameters
TSubscription
Type of the subscription
TSubscriptionMessage
Type of the subscription message
TUnSubscriptionMessage
Type of the unSubscription message
-Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](#t-net.adamec.lib.common.utils.basedisposable__7s72ps) -> [net.adamec.lib.common.actor.actor.Actor](#t-net.adamec.lib.common.actor.actor.actor__buuxwr)
-Implements: IDisposable, [net.adamec.lib.common.actor.actor.IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
-
-
-### Properties ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [Subscriptions](#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) | protected | List of subscriptions |
-
-
-
-
-### Constructors ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>(IActorSystem, string)](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.-ctor_net.adamec.lib.common.actor.actorsystem.iactorsystem-system.string___x732m3) | protected | CTOR |
-
-
-
-
-### Methods ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [DistributeMessage(Envelope, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscription)](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.distributemessage_net.adamec.lib.common.actor.message.envelope--0___10o2gwi) | protected | Distributes the message according to single subscription |
- | [GetSubscriptionsForMessage(Envelope)](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.getsubscriptionsformessage_net.adamec.lib.common.actor.message.envelope___1lba1kc) | protected | Returns the list of subscriptions that match the incoming envelope |
- | [IsUnSubscribeMatch(ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscription, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TUnSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.isunsubscribematch_-0--2___87gny2) | protected | Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) |
- | [Receive(Envelope)](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.receive_net.adamec.lib.common.actor.message.envelope___k7qhyb) | protected | Message handler The subscription/unsubscription messages are handled first, the other messages are matched to the existing subscriptions and distributed to matching subscribers |
- | [ReplaceOnSubscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.replaceonsubscribe_net.adamec.lib.common.actor.actor.iactorref--1___16aaybh) | protected | Checks for the list of existing subscriptions that are to be replaced by the new subscription defined in subscriptionMessage The new subscription can replace the existing subscriptions of other actors.There is no "signaling" to the actors, that their subscription has been replaced (canceled). |
- | [Start()](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.start__1sb73cd) | public | Starts the exchange actor |
- | [Stop()](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.stop__1wazv35) | public | Stops the exchange actor |
- | [Subscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscribe_net.adamec.lib.common.actor.actor.iactorref--1___ajhl0) | protected | Processes the subscription message It first checks, whether the new subscription replaces any existing subscription by calling [ReplaceOnSubscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.replaceonsubscribe_net.adamec.lib.common.actor.actor.iactorref--1___16aaybh) . If the returned list is not empty, the replaces subscriptions are removed from the [Subscriptions](#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) list. The [SubscriptionFactory(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptionfactory_net.adamec.lib.common.actor.actor.iactorref--1___hz2yob) is called to create the new instance of subscription and the subscription is added to the [Subscriptions](#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) list. |
- | [SubscriptionFactory(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptionfactory_net.adamec.lib.common.actor.actor.iactorref--1___hz2yob) | protected abstract | Creates a new subscription instance based on the subscriptionMessage |
- | [UnSubscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TUnSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.unsubscribe_net.adamec.lib.common.actor.actor.iactorref--2___198es5m) | protected | Processes the unsubscription message Checks the existing subscriptions of actorRef whether they match the unSubscriptionMessage and removes the matching ones from [Subscriptions](#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) list. |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.Subscriptions Property ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.@base](#n-net.adamec.lib.common.actor.actor.exchanges.base__1g84l6h)
-Assembly: net.adamec.lib.common.actor
-Type: [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
-Sources: actor\exchanges\base\ExchangeActor.cs
-
-
-List of subscriptions
-
-
-
-```csharp
-protected List Subscriptions { get; }
-```
-
-Property value
True if the messages has been handled, otherwise false
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.ReplaceOnSubscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage) Method ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.@base](#n-net.adamec.lib.common.actor.actor.exchanges.base__1g84l6h)
-Assembly: net.adamec.lib.common.actor
-Type: [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
-Sources: actor\exchanges\base\ExchangeActor.cs
-
-
-Checks for the list of existing subscriptions that are to be replaced by the new subscription defined in subscriptionMessage The new subscription can replace the existing subscriptions of other actors.There is no "signaling" to the actors, that their subscription has been replaced (canceled).
-
-
-
-```csharp
-protected virtual ExchangeActor.TSubscription[] ReplaceOnSubscribe(IActorRef actorRef, ExchangeActor.TSubscriptionMessage subscriptionMessage)
-```
-
-Method parameters
List of existing subscriptions to be removed from the [Subscriptions](#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) list
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.Start() Method ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.@base](#n-net.adamec.lib.common.actor.actor.exchanges.base__1g84l6h)
-Assembly: net.adamec.lib.common.actor
-Type: [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
-Sources: actor\exchanges\base\ExchangeActor.cs
-
-
-Starts the exchange actor
-
-
-
-```csharp
-public virtual void Start()
-```
-
-Return value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.Subscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage) Method ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.@base](#n-net.adamec.lib.common.actor.actor.exchanges.base__1g84l6h)
-Assembly: net.adamec.lib.common.actor
-Type: [ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>](#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
-Sources: actor\exchanges\base\ExchangeActor.cs
-
-
-Processes the subscription message It first checks, whether the new subscription replaces any existing subscription by calling [ReplaceOnSubscribe(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.replaceonsubscribe_net.adamec.lib.common.actor.actor.iactorref--1___16aaybh) . If the returned list is not empty, the replaces subscriptions are removed from the [Subscriptions](#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) list. The [SubscriptionFactory(IActorRef, ExchangeActor<TSubscription,TSubscriptionMessage,TUnSubscriptionMessage>.TSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptionfactory_net.adamec.lib.common.actor.actor.iactorref--1___hz2yob) is called to create the new instance of subscription and the subscription is added to the [Subscriptions](#p-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3.subscriptions__n0rnra) list.
-
-
-
-```csharp
-protected virtual void Subscribe(IActorRef actorRef, ExchangeActor.TSubscriptionMessage subscriptionMessage)
-```
-
-Method parameters
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## net.adamec.lib.common.actor.actor.exchanges.typed Namespace ##
-### Classes ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [RoutingKeyExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor__1inw5x7) | public | Exchange Actor with zero or more actors per message type with routing based also on routing key Subscriptions are per actor, type and routing key. Subscription filter gets the all subscriptions where message is instance of filter type or its children and the routing keys match |
- | [RoutingKeySubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription__1t32gw0) | public | Subscription for exchanges that routes the messages based on their type and routing key |
- | [RoutingKeySubscriptionMessage](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscriptionmessage__1h3lr73) | public | Subscription message for [RoutingKeySubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription__1t32gw0) |
- | [RoutingKeyUnSubscriptionMessage](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyunsubscriptionmessage__emjdu2) | public | UnSubscription message for [RoutingKeySubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription__1t32gw0) |
- | [TypedMultiExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor__1rgmwat) | public | Exchange Actor with zero or more actors per message type Subscriptions are per actor and type. Subscription filter gets the all subscriptions where message is instance of filter type or its children |
- | [TypedSingleExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor__i752da) | public | Exchange Actor with zero or one actor per message type Subscriptions are per type. Subscription filter gets the exact type match and if not found, then first match where message is instance of filter type or its children |
- | [TypedSubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) | public | Subscription for exchanges that routes the messages based on their type |
- | [TypedSubscriptionMessage](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscriptionmessage__1hh0wlc) | public | Subscription message for [TypedSubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) |
- | [TypedUnSubscriptionMessage](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedunsubscriptionmessage__9g51i3) | public | UnSubscription message for [TypedSubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## RoutingKeyExchangeActor Class ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
-Assembly: net.adamec.lib.common.actor
-Sources: actor\exchanges\typed\RoutingKeyExchangeActor.cs
-
-
-Exchange Actor with zero or more actors per message type with routing based also on routing key Subscriptions are per actor, type and routing key. Subscription filter gets the all subscriptions where message is instance of filter type or its children and the routing keys match
-
-
-
-```csharp
-public class RoutingKeyExchangeActor : ExchangeActor
-```
-
-Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](#t-net.adamec.lib.common.utils.basedisposable__7s72ps) -> [net.adamec.lib.common.actor.actor.Actor](#t-net.adamec.lib.common.actor.actor.actor__buuxwr) -> [net.adamec.lib.common.actor.actor.exchanges.@base.ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeySubscription,net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeySubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.typed.RoutingKeyUnSubscriptionMessage>](#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
-Implements: IDisposable, [net.adamec.lib.common.actor.actor.IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
-
-
-### Constructors ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [RoutingKeyExchangeActor(IActorSystem, string)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor.-ctor_net.adamec.lib.common.actor.actorsystem.iactorsystem-system.string___17ryw0k) | public | CTOR |
-
-
-
-
-### Methods ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [GetSubscriptionsForMessage(Envelope)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor.getsubscriptionsformessage_net.adamec.lib.common.actor.message.envelope___1iabgbj) | protected | Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children and the routing key matches the subscription |
- | [IsRoutingKeyMatch(string, string)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor.isroutingkeymatch_system.string-system.string___102orov) | protected | Checks whether the message routing key matches the subscription routing key The default implementation is for the exact match, override this method for more complex matching (for example regexp) |
- | [IsUnSubscribeMatch(RoutingKeySubscription, RoutingKeyUnSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor.isunsubscribematch_net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscription-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyunsubscriptionmessage___1qyhqkr) | protected | Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type |
- | [ReplaceOnSubscribe(IActorRef, RoutingKeySubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor.replaceonsubscribe_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscriptionmessage___rj17km) | protected | Removes existing subscriptions for actorRef with the same "subscription type" when a new subscription message arrives. |
- | [SubscriptionFactory(IActorRef, RoutingKeySubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor.subscriptionfactory_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeysubscriptionmessage___3ufphk) | protected | Creates a new net.adamec.lib.common.actor.actor.exchanges.typed.TypedRoutingKeySubscription instance based on the subscriptionMessage |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## RoutingKeyExchangeActor.RoutingKeyExchangeActor(IActorSystem, string) Constructor ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
-Assembly: net.adamec.lib.common.actor
-Type: [RoutingKeyExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor__1inw5x7)
-Sources: actor\exchanges\typed\RoutingKeyExchangeActor.cs
-
-
-CTOR
-
-
-
-```csharp
-public RoutingKeyExchangeActor(IActorSystem actorSystem, string name)
-```
-
-Constructor parameters
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## RoutingKeyExchangeActor.GetSubscriptionsForMessage(Envelope) Method ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
-Assembly: net.adamec.lib.common.actor
-Type: [RoutingKeyExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor__1inw5x7)
-Sources: actor\exchanges\typed\RoutingKeyExchangeActor.cs
-
-
-Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children and the routing key matches the subscription
-
-
-
-```csharp
-protected override RoutingKeySubscription[] GetSubscriptionsForMessage(Envelope envelope)
-```
-
-Method parameters
True when the message routing key matches the subscription routing key, otherwise false
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## RoutingKeyExchangeActor.IsUnSubscribeMatch(RoutingKeySubscription, RoutingKeyUnSubscriptionMessage) Method ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
-Assembly: net.adamec.lib.common.actor
-Type: [RoutingKeyExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.routingkeyexchangeactor__1inw5x7)
-Sources: actor\exchanges\typed\RoutingKeyExchangeActor.cs
-
-
-Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
-
-
-
-```csharp
-protected override bool IsUnSubscribeMatch(RoutingKeySubscription subscription, RoutingKeyUnSubscriptionMessage unSubscriptionMessage)
-```
-
-Method parameters
Routing key filter (if null, matches all messages)
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## TypedMultiExchangeActor Class ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
-Assembly: net.adamec.lib.common.actor
-Sources: actor\exchanges\typed\TypedMultiExchangeActor.cs
-
-
-Exchange Actor with zero or more actors per message type Subscriptions are per actor and type. Subscription filter gets the all subscriptions where message is instance of filter type or its children
-
-
-
-```csharp
-public class TypedMultiExchangeActor : ExchangeActor
-```
-
-Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](#t-net.adamec.lib.common.utils.basedisposable__7s72ps) -> [net.adamec.lib.common.actor.actor.Actor](#t-net.adamec.lib.common.actor.actor.actor__buuxwr) -> [net.adamec.lib.common.actor.actor.exchanges.@base.ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscription,net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.typed.TypedUnSubscriptionMessage>](#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
-Implements: IDisposable, [net.adamec.lib.common.actor.actor.IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
-
-
-### Constructors ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [TypedMultiExchangeActor(IActorSystem, string)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor.-ctor_net.adamec.lib.common.actor.actorsystem.iactorsystem-system.string___1l0lpb0) | public | CTOR |
-
-
-
-
-### Methods ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [GetSubscriptionsForMessage(Envelope)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor.getsubscriptionsformessage_net.adamec.lib.common.actor.message.envelope___9uu8op) | protected | Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children |
- | [IsUnSubscribeMatch(TypedSubscription, TypedUnSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor.isunsubscribematch_net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription-net.adamec.lib.common.actor.actor.exchanges.typed.typedunsubscriptionmessage___kjj5nt) | protected | Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type |
- | [ReplaceOnSubscribe(IActorRef, TypedSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor.replaceonsubscribe_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscriptionmessage___1wvem41) | protected | Removes existing subscriptions for actorRef with the same "subscription type" when a new subscription message arrives. |
- | [SubscriptionFactory(IActorRef, TypedSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor.subscriptionfactory_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscriptionmessage___10dtbmj) | protected | Creates a new [TypedSubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) instance based on the subscriptionMessage |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## TypedMultiExchangeActor.TypedMultiExchangeActor(IActorSystem, string) Constructor ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
-Assembly: net.adamec.lib.common.actor
-Type: [TypedMultiExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor__1rgmwat)
-Sources: actor\exchanges\typed\TypedMultiExchangeActor.cs
-
-
-CTOR
-
-
-
-```csharp
-public TypedMultiExchangeActor(IActorSystem actorSystem, string name)
-```
-
-Constructor parameters
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## TypedMultiExchangeActor.GetSubscriptionsForMessage(Envelope) Method ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
-Assembly: net.adamec.lib.common.actor
-Type: [TypedMultiExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor__1rgmwat)
-Sources: actor\exchanges\typed\TypedMultiExchangeActor.cs
-
-
-Returns the list of subscriptions that match the incoming envelope The filter gets all matches where message is instance of filter type or its children
-
-
-
-```csharp
-protected override TypedSubscription[] GetSubscriptionsForMessage(Envelope envelope)
-```
-
-Method parameters
List of subscriptions that match the incoming envelope
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## TypedMultiExchangeActor.IsUnSubscribeMatch(TypedSubscription, TypedUnSubscriptionMessage) Method ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
-Assembly: net.adamec.lib.common.actor
-Type: [TypedMultiExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedmultiexchangeactor__1rgmwat)
-Sources: actor\exchanges\typed\TypedMultiExchangeActor.cs
-
-
-Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
-
-
-
-```csharp
-protected override bool IsUnSubscribeMatch(TypedSubscription subscription, TypedUnSubscriptionMessage unSubscriptionMessage)
-```
-
-Method parameters
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## TypedSingleExchangeActor Class ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
-Assembly: net.adamec.lib.common.actor
-Sources: actor\exchanges\typed\TypedSingleExchangeActor.cs
-
-
-Exchange Actor with zero or one actor per message type Subscriptions are per type. Subscription filter gets the exact type match and if not found, then first match where message is instance of filter type or its children
-
-
-
-```csharp
-public class TypedSingleExchangeActor : ExchangeActor
-```
-
-Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](#t-net.adamec.lib.common.utils.basedisposable__7s72ps) -> [net.adamec.lib.common.actor.actor.Actor](#t-net.adamec.lib.common.actor.actor.actor__buuxwr) -> [net.adamec.lib.common.actor.actor.exchanges.@base.ExchangeActor<net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscription,net.adamec.lib.common.actor.actor.exchanges.typed.TypedSubscriptionMessage,net.adamec.lib.common.actor.actor.exchanges.typed.TypedUnSubscriptionMessage>](#t-net.adamec.lib.common.actor.actor.exchanges.base.exchangeactor-3__1p1cfiq)
-Implements: IDisposable, [net.adamec.lib.common.actor.actor.IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi)
-
-
-### Constructors ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [TypedSingleExchangeActor(IActorSystem, string)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor.-ctor_net.adamec.lib.common.actor.actorsystem.iactorsystem-system.string___1nv1jk7) | public | CTOR |
-
-
-
-
-### Methods ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [GetSubscriptionsForMessage(Envelope)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor.getsubscriptionsformessage_net.adamec.lib.common.actor.message.envelope___1pc989c) | protected | Returns the list of subscriptions that match the incoming envelope The filter gets the exact type match and if not found, then first match where message is instance of filter type or its children Note: There can be only one subscription per message type |
- | [IsUnSubscribeMatch(TypedSubscription, TypedUnSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor.isunsubscribematch_net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription-net.adamec.lib.common.actor.actor.exchanges.typed.typedunsubscriptionmessage___zk123g) | protected | Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type |
- | [ReplaceOnSubscribe(IActorRef, TypedSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor.replaceonsubscribe_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscriptionmessage___azg7e0) | protected | Removes existing subscriptions with the same "subscription type" when a new subscription message arrives. |
- | [SubscriptionFactory(IActorRef, TypedSubscriptionMessage)](#m-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor.subscriptionfactory_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscriptionmessage___1dxxz9k) | protected | Creates a new [TypedSubscription](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsubscription__otg9b) instance based on the subscriptionMessage |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## TypedSingleExchangeActor.TypedSingleExchangeActor(IActorSystem, string) Constructor ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
-Assembly: net.adamec.lib.common.actor
-Type: [TypedSingleExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor__i752da)
-Sources: actor\exchanges\typed\TypedSingleExchangeActor.cs
-
-
-CTOR
-
-
-
-```csharp
-public TypedSingleExchangeActor(IActorSystem actorSystem, string name)
-```
-
-Constructor parameters
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## TypedSingleExchangeActor.GetSubscriptionsForMessage(Envelope) Method ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
-Assembly: net.adamec.lib.common.actor
-Type: [TypedSingleExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor__i752da)
-Sources: actor\exchanges\typed\TypedSingleExchangeActor.cs
-
-
-Returns the list of subscriptions that match the incoming envelope The filter gets the exact type match and if not found, then first match where message is instance of filter type or its children Note: There can be only one subscription per message type
-
-
-
-```csharp
-protected override TypedSubscription[] GetSubscriptionsForMessage(Envelope envelope)
-```
-
-Method parameters
List of subscriptions that match the incoming envelope
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## TypedSingleExchangeActor.IsUnSubscribeMatch(TypedSubscription, TypedUnSubscriptionMessage) Method ##
-Namespace: [net.adamec.lib.common.actor.actor.exchanges.typed](#n-net.adamec.lib.common.actor.actor.exchanges.typed__1mtmrao)
-Assembly: net.adamec.lib.common.actor
-Type: [TypedSingleExchangeActor](#t-net.adamec.lib.common.actor.actor.exchanges.typed.typedsingleexchangeactor__i752da)
-Sources: actor\exchanges\typed\TypedSingleExchangeActor.cs
-
-
-Checks whether the unSubscriptionMessage can unsubscribe the subscription (both related to the same actor) The match is when both subscription and unSubscriptionMessage use the same message type
-
-
-
-```csharp
-protected override bool IsUnSubscribeMatch(TypedSubscription subscription, TypedUnSubscriptionMessage unSubscriptionMessage)
-```
-
-Method parameters
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## net.adamec.lib.common.actor.actorsystem Namespace ##
-### Classes ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [ActorSystem](#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3) | public | Implementation of actor system |
- | [ActorSystemDispatcher](#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe) | internal | Message dispatched used by [ActorSystem](#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.actorsystem__1osgm3w) |
- | [ActorSystemOptions](#t-net.adamec.lib.common.actor.actorsystem.actorsystemoptions__1e8lf7j) | public | User defined configuration of [ActorSystem](#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3) |
- | [ScheduledMessageInfo](#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) | internal | Scheduled message definition |
-
-
-
-
-### Interfaces ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [IActorSystem](#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs) | public abstract | The Actor System published interface Provides access to options and system queues, supports the actor (de)registration, dispatcher management (start/stop) as well as message scheduling and synchronous (Request-Reply) messaging. |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystem Class ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Sources: actorsystem\ActorSystem.cs
-
-
-Implementation of actor system
-
-
-
-```csharp
-public class ActorSystem : BaseDisposable, IActorSystem
-```
-
-Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](#t-net.adamec.lib.common.utils.basedisposable__7s72ps)
-Implements: IDisposable, [net.adamec.lib.common.actor.actorsystem.IActorSystem](#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs)
-
-
-### Fields ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [Logger](#f-net.adamec.lib.common.actor.actorsystem.actorsystem.logger__1fhxf7) | protected static | |
-
-
-
-
-### Properties ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [ActorsByRef](#p-net.adamec.lib.common.actor.actorsystem.actorsystem.actorsbyref__b06x73) | private | Dictionary of actors by actor reference |
- | [DeadLetters](#p-net.adamec.lib.common.actor.actorsystem.actorsystem.deadletters__1p4w7em) | public | Provides the access to dead letters queue |
- | [Dispatcher](#p-net.adamec.lib.common.actor.actorsystem.actorsystem.dispatcher__16sohre) | private | Reference to dispatcher used by actor system |
- | [ErrorMessageQueue](#p-net.adamec.lib.common.actor.actorsystem.actorsystem.errormessagequeue__kecg1b) | public | Provides the access to error messages queue |
- | [Options](#p-net.adamec.lib.common.actor.actorsystem.actorsystem.options__1qogkkh) | public | Returns the reference to current [ActorSystemOptions](#t-net.adamec.lib.common.actor.actorsystem.actorsystemoptions__1e8lf7j) |
-
-
-
-
-### Constructors ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [ActorSystem(ActorSystemOptions)](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.-ctor_net.adamec.lib.common.actor.actorsystem.actorsystemoptions___1wtfo99) | public | [ActorSystem](#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3) constructor |
-
-
-
-
-### Methods ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [Ask(IActorRef, object, Type, int, bool)](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.ask_net.adamec.lib.common.actor.actor.iactorref-system.object-system.type-system.int32-system.boolean___sxd0yo) | public | Sends a request message to recipient and waits for the response of required responseType . |
- | [Ask<T>(IActorRef, object, int, bool)](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.ask--1_net.adamec.lib.common.actor.actor.iactorref-system.object-system.int32-system.boolean___2dxd0s) | public | Sends a request message to recipient and waits for the response of type . |
- | [CancelScheduledMessage(string)](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.cancelscheduledmessage_system.string___1w85qxn) | public | Cancels the scheduled message with given id - removes the message from list of the scheduled messages |
- | [CancelScheduledMessages(IActorRef, Type)](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.cancelscheduledmessages_net.adamec.lib.common.actor.actor.iactorref-system.type___sfq920) | public | Cancels all messages scheduled for recipient that are of given messageType - removes the messages from list of the scheduled messages |
- | [DeRegisterActor(IActorRef)](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.deregisteractor_net.adamec.lib.common.actor.actor.iactorref___1x86w27) | public | De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception |
- | [DisposeManaged()](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.disposemanaged__162jz4w) | protected | Stops and disposes the [Dispatcher](#p-net.adamec.lib.common.actor.actorsystem.actorsystem.dispatcher__16sohre) |
- | [GetMailboxesWithMessages()](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.getmailboxeswithmessages__1oiw8zq) | internal | Returns the list of the mailboxes (internal actor references) that have at least one message and the actor is not being already processed |
- | [RegisterActor(IActor, string)](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.registeractor_net.adamec.lib.common.actor.actor.iactor-system.string___o3h1j1) | public | Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system. |
- | [ScheduleMessage(IActorRef, IActorRef, DateTime, object)](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.schedulemessage_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.datetime-system.object___1mc0hrz) | public | Schedule one-time message to be sent to recipient at given date and time |
- | [ScheduleMessage(IActorRef, IActorRef, TimeSpan, object)](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.schedulemessage_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.timespan-system.object___kqn59b) | public | Schedule periodic message to be sent to recipient each period . |
- | [Start()](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.start__zz3cpm) | public | Starts the message dispatcher (started by default within ActorSystem constructor) |
- | [Stop()](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.stop__v7scp2) | public | Stops the message dispatcher (can be restarted using [Start()](#m-net.adamec.lib.common.actor.actorsystem.actorsystem.start__zz3cpm) method) |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystem.Logger Field ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystem](#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3)
-Sources: actorsystem\ActorSystem.cs
-
-
-
-```csharp
-protected static ILogger Logger
-```
-
-Field value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystem.CancelScheduledMessage(string) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystem](#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3)
-Sources: actorsystem\ActorSystem.cs
-
-
-Cancels the scheduled message with given id - removes the message from list of the scheduled messages
-
-
-
-```csharp
-public bool CancelScheduledMessage(string id)
-```
-
-Method parameters
True if the message has been found and canceled, false when the message has not been found
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystem.CancelScheduledMessages(IActorRef, Type) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystem](#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3)
-Sources: actorsystem\ActorSystem.cs
-
-
-Cancels all messages scheduled for recipient that are of given messageType - removes the messages from list of the scheduled messages
-
-
-
-```csharp
-public bool CancelScheduledMessages(IActorRef recipient, Type messageType)
-```
-
-Method parameters
True if at least one message has been found and canceled, false when none has been found
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystem.DeRegisterActor(IActorRef) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystem](#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3)
-Sources: actorsystem\ActorSystem.cs
-
-
-De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception
-
-
-
-```csharp
-public void DeRegisterActor(IActorRef actorRef)
-```
-
-Method parameters
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystem.GetMailboxesWithMessages() Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystem](#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3)
-Sources: actorsystem\ActorSystem.cs
-
-
-Returns the list of the mailboxes (internal actor references) that have at least one message and the actor is not being already processed
-
-
-
-```csharp
-internal List GetMailboxesWithMessages()
-```
-
-Return value
List of mailboxes(internal actor references) having the messages for processing
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystem.RegisterActor(IActor, string) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystem](#t-net.adamec.lib.common.actor.actorsystem.actorsystem__2jlyi3)
-Sources: actorsystem\ActorSystem.cs
-
-
-Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system.
-
-
-
-```csharp
-public IActorRef RegisterActor(IActor actor, string name)
-```
-
-Method parameters
[net.adamec.lib.common.actor.actor.IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) actor
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystemDispatcher Class ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Sources: actorsystem\ActorSystemDispatcher.cs
-
-
-Message dispatched used by [ActorSystem](#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.actorsystem__1osgm3w)
-
-
-
-```csharp
-internal class ActorSystemDispatcher : BaseDisposable
-```
-
-Inheritance: object -> [net.adamec.lib.common.utils.BaseDisposable](#t-net.adamec.lib.common.utils.basedisposable__7s72ps)
-Implements: IDisposable
-
-
-### Fields ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [isActive](#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.isactive__1g6w74o) | private | |
- | [Logger](#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.logger__1opp49m) | protected static | |
- | [MessageLogger](#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.messagelogger__9fz30j) | protected static | Message logger |
- | [scheduledMessagesLock](#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.scheduledmessageslock__19elh26) | private | |
-
-
-
-
-### Properties ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [ActorSystem](#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.actorsystem__1osgm3w) | private | |
- | [ExecutorThread](#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.executorthread__1a9snen) | private | Dispatcher executor thread |
- | [IsActive](#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.isactive__9h4ytm) | public | Flag whether the dispatcher is active (dispatching messages) |
- | [Options](#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.options__glvhoa) | protected | Actor System options |
- | [ScheduledMessages](#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.scheduledmessages__61sfpr) | private | |
-
-
-
-
-### Constructors ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [ActorSystemDispatcher(ActorSystem)](#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.-ctor_net.adamec.lib.common.actor.actorsystem.actorsystem___bl3uhi) | public | Initialize dispatcher |
-
-
-
-
-### Methods ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [CancelScheduledMessage(string)](#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.cancelscheduledmessage_system.string___1r5af14) | internal | Cancels the scheduled message with given id - removes the message from list of the scheduled messages |
- | [CancelScheduledMessages(IActorRef, Type)](#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.cancelscheduledmessages_net.adamec.lib.common.actor.actor.iactorref-system.type___6bdh5j) | internal | Cancels all messages scheduled for recipient that are of given messageType - removes the messages from list of the scheduled messages |
- | [DisposeManaged()](#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.disposemanaged__121xst9) | protected | Stops the dispatched when disposing |
- | [Execute(object)](#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.execute_system.object___q5nu8z) | private | Main dispatcher loop (runs within the [ExecutorThread](#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.executorthread__1a9snen) ) The loop is active while [isActive](#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.isactive__1g6w74o) is set to true, so setting [isActive](#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.isactive__1g6w74o) to false forces the loop to exit Each run of the loop enqueue the due scheduled messages (if any) and process mailboxes (actors) with any pending messages. Actor (actor reference) is locked for processing and the task is scheduled in thread pool to process the actor's queue. The actor remains locked until the task is not finished, so it's not picked up by executor again during the processing |
- | [GetScheduledMessagesDue()](#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.getscheduledmessagesdue__5eu7es) | private | Gets the list of scheduled messages that should be enqueued (are due) When the scheduled message is periodic, the next fire time is calculated and a new instance of scheduled message is added to to schedule |
- | [ProcessActorQueue(object)](#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.processactorqueue_system.object___1ifalnd) | private | Main actor queue processor - scheduled by executor within the thread pool for each eligible actor (actor ref) Processes the batch of the messages for given actor. The messages are being processed sequentially in FIFO order within the loop with following constraints - there are still messages in actor's queue - actor can receive the messages - the batch size (number of messages for single actor processed in one cycle) has not been reached - dispatcher is not stopped The messages are sent to current actor receive target |
- | [ScheduleMessage(IActorRef, IActorRef, DateTime, object)](#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.schedulemessage_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.datetime-system.object___6k32uw) | internal | Schedule one-time message to be sent to recipient at given date and time Creates the [ScheduledMessageInfo](#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) instance based on the parameters and let it add to the internal list of the scheduled messages |
- | [ScheduleMessage(IActorRef, IActorRef, TimeSpan, object)](#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.schedulemessage_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.timespan-system.object___vt99rw) | internal | Schedule periodic message to be sent to recipient each period . Creates the [ScheduledMessageInfo](#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) instance based on the parameters and let it add to the internal list of the scheduled messages |
- | [ScheduleMessage(ScheduledMessageInfo)](#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.schedulemessage_net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo___1xwfair) | private | Get's the given [ScheduledMessageInfo](#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) and adds it to internal list of scheduled messages. |
- | [Start()](#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.start__2g0p6j) | public | Starts the dispatcher Creates the executor thread and starts processing the messages |
- | [Stop()](#m-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.stop__8jn5gr) | public | Stops the dispatcher Finish current processing and "close" the executor thread |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystemDispatcher.isActive Field ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystemDispatcher](#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
-Sources: actorsystem\ActorSystemDispatcher.cs
-
-
-
-```csharp
-private volatile bool isActive
-```
-
-Field value
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystemDispatcher.CancelScheduledMessage(string) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystemDispatcher](#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
-Sources: actorsystem\ActorSystemDispatcher.cs
-
-
-Cancels the scheduled message with given id - removes the message from list of the scheduled messages
-
-
-
-```csharp
-internal bool CancelScheduledMessage(string id)
-```
-
-Method parameters
True if the message has been found and canceled, false when the message has not been found
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystemDispatcher.CancelScheduledMessages(IActorRef, Type) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystemDispatcher](#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
-Sources: actorsystem\ActorSystemDispatcher.cs
-
-
-Cancels all messages scheduled for recipient that are of given messageType - removes the messages from list of the scheduled messages
-
-
-
-```csharp
-internal bool CancelScheduledMessages(IActorRef recipient, Type messageType)
-```
-
-Method parameters
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystemDispatcher.Execute(object) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystemDispatcher](#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
-Sources: actorsystem\ActorSystemDispatcher.cs
-
-
-Main dispatcher loop (runs within the [ExecutorThread](#p-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.executorthread__1a9snen) ) The loop is active while [isActive](#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.isactive__1g6w74o) is set to true, so setting [isActive](#f-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher.isactive__1g6w74o) to false forces the loop to exit Each run of the loop enqueue the due scheduled messages (if any) and process mailboxes (actors) with any pending messages. Actor (actor reference) is locked for processing and the task is scheduled in thread pool to process the actor's queue. The actor remains locked until the task is not finished, so it's not picked up by executor again during the processing
-
-
-
-```csharp
-private void Execute(object actorSystemObj)
-```
-
-Method parameters
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystemDispatcher.GetScheduledMessagesDue() Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystemDispatcher](#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
-Sources: actorsystem\ActorSystemDispatcher.cs
-
-
-Gets the list of scheduled messages that should be enqueued (are due) When the scheduled message is periodic, the next fire time is calculated and a new instance of scheduled message is added to to schedule
-
-
-
-```csharp
-private IEnumerable GetScheduledMessagesDue()
-```
-
-Return value
The list of scheduled messages that to be enqueued
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystemDispatcher.ProcessActorQueue(object) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystemDispatcher](#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
-Sources: actorsystem\ActorSystemDispatcher.cs
-
-
-Main actor queue processor - scheduled by executor within the thread pool for each eligible actor (actor ref) Processes the batch of the messages for given actor. The messages are being processed sequentially in FIFO order within the loop with following constraints - there are still messages in actor's queue - actor can receive the messages - the batch size (number of messages for single actor processed in one cycle) has not been reached - dispatcher is not stopped The messages are sent to current actor receive target
-
-
-
-```csharp
-private void ProcessActorQueue(object actorRef)
-```
-
-Method parameters
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystemDispatcher.ScheduleMessage(IActorRef, IActorRef, DateTime, object) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystemDispatcher](#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
-Sources: actorsystem\ActorSystemDispatcher.cs
-
-
-Schedule one-time message to be sent to recipient at given date and time Creates the [ScheduledMessageInfo](#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) instance based on the parameters and let it add to the internal list of the scheduled messages
-
-
-
-```csharp
-internal string ScheduleMessage(IActorRef sender, IActorRef recipient, DateTime nextFire, object message)
-```
-
-Method parameters
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystemDispatcher.ScheduleMessage(IActorRef, IActorRef, TimeSpan, object) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystemDispatcher](#t-net.adamec.lib.common.actor.actorsystem.actorsystemdispatcher__1p6wtbe)
-Sources: actorsystem\ActorSystemDispatcher.cs
-
-
-Schedule periodic message to be sent to recipient each period . Creates the [ScheduledMessageInfo](#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5) instance based on the parameters and let it add to the internal list of the scheduled messages
-
-
-
-```csharp
-internal string ScheduleMessage(IActorRef sender, IActorRef recipient, TimeSpan period, object message)
-```
-
-Method parameters
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystemOptions.MaxDispatchMessagesInBatch Property ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystemOptions](#t-net.adamec.lib.common.actor.actorsystem.actorsystemoptions__1e8lf7j)
-Sources: actorsystem\ActorSystemOptions.cs
-
-
-Defines the maximum number of messages send for processing to single actor during one cycle of ActorDispatcher executor (default 10)
-
-
-
-```csharp
-public int MaxDispatchMessagesInBatch { get; set; }
-```
-
-Property value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ActorSystemOptions.ActorSystemOptions() Constructor ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ActorSystemOptions](#t-net.adamec.lib.common.actor.actorsystem.actorsystemoptions__1e8lf7j)
-Sources: actorsystem\ActorSystemOptions.cs
-
-
-Static CTOR - initialize default options instance
-
-
-
-```csharp
-private static ActorSystemOptions()
-```
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ScheduledMessageInfo Class ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Sources: actorsystem\ScheduledMessageInfo.cs
-
-
-Scheduled message definition
-
-
-
-```csharp
-internal class ScheduledMessageInfo
-```
-
-Inheritance: object
-
-
-
-### Properties ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [Id](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.id__d1ho0y) | internal | Unique ID of scheduled message |
- | [Message](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.message__8wrme2) | internal | Message to be (periodically) sent to the [Recipient](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) |
- | [NextFire](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.nextfire__16ekkf2) | internal | Date and Time after which the message is enqueued to the [Recipient](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) queue |
- | [Period](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.period__v8c71e) | internal | Period after which the message is periodically enqueued to the [Recipient](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) queue. Null for non-periodic messages |
- | [Recipient](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) | internal | Recipient of the message |
- | [Sender](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.sender__1m7ejeu) | internal | Optional information about the sender, usually used by [Recipient](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) to respond to the [Message](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.message__8wrme2) |
-
-
-
-
-### Constructors ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [ScheduledMessageInfo(IActorRef, IActorRef, DateTime, object)](#m-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.-ctor_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.datetime-system.object___d10rbc) | internal | CTOR for one-time scheduled message info |
- | [ScheduledMessageInfo(IActorRef, IActorRef, TimeSpan, object)](#m-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.-ctor_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.timespan-system.object___w2q5fc) | internal | CTOR for periodic scheduled message info |
- | [ScheduledMessageInfo(ScheduledMessageInfo)](#m-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.-ctor_net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo___1cbqekh) | internal | CTOR for the new instance of scheduled message definition for existing periodic scheduled message Used when creating the definition of each new run of the periodic schedule. Copies the information from current definition and preservers the ID |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ScheduledMessageInfo.Id Property ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ScheduledMessageInfo](#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5)
-Sources: actorsystem\ScheduledMessageInfo.cs
-
-
-Unique ID of scheduled message
-
-
-
-```csharp
-internal string Id { get; }
-```
-
-Property value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ScheduledMessageInfo.NextFire Property ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ScheduledMessageInfo](#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5)
-Sources: actorsystem\ScheduledMessageInfo.cs
-
-
-Date and Time after which the message is enqueued to the [Recipient](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) queue
-
-
-
-```csharp
-internal DateTime NextFire { get; }
-```
-
-Property value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ScheduledMessageInfo.Period Property ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ScheduledMessageInfo](#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5)
-Sources: actorsystem\ScheduledMessageInfo.cs
-
-
-Period after which the message is periodically enqueued to the [Recipient](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) queue. Null for non-periodic messages
-
-
-
-```csharp
-internal System.TimeSpan? Period { get; }
-```
-
-Property value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ScheduledMessageInfo.Sender Property ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ScheduledMessageInfo](#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5)
-Sources: actorsystem\ScheduledMessageInfo.cs
-
-
-Optional information about the sender, usually used by [Recipient](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.recipient__9cyy92) to respond to the [Message](#p-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo.message__8wrme2)
-
-
-
-```csharp
-internal IActorRef Sender { get; }
-```
-
-Property value
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ScheduledMessageInfo.ScheduledMessageInfo(ScheduledMessageInfo) Constructor ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [ScheduledMessageInfo](#t-net.adamec.lib.common.actor.actorsystem.scheduledmessageinfo__ifn4s5)
-Sources: actorsystem\ScheduledMessageInfo.cs
-
-
-CTOR for the new instance of scheduled message definition for existing periodic scheduled message Used when creating the definition of each new run of the periodic schedule. Copies the information from current definition and preservers the ID
-
-
-
-```csharp
-internal ScheduledMessageInfo(ScheduledMessageInfo existingPeriodicScheduledMessageInfo)
-```
-
-Constructor parameters
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## IActorSystem Interface ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Sources: actorsystem\IActorSystem.cs
-
-
-The Actor System published interface Provides access to options and system queues, supports the actor (de)registration, dispatcher management (start/stop) as well as message scheduling and synchronous (Request-Reply) messaging.
-
-
-
-```csharp
-public interface IActorSystem
-```
-
-### Properties ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [DeadLetters](#p-net.adamec.lib.common.actor.actorsystem.iactorsystem.deadletters__82oxzl) | public abstract | Provides the access to dead letters queue |
- | [ErrorMessageQueue](#p-net.adamec.lib.common.actor.actorsystem.iactorsystem.errormessagequeue__v9i6fy) | public abstract | Provides the access to error messages queue |
- | [Options](#p-net.adamec.lib.common.actor.actorsystem.iactorsystem.options__logleg) | public abstract | Returns the reference to current [ActorSystemOptions](#t-net.adamec.lib.common.actor.actorsystem.actorsystemoptions__1e8lf7j) |
-
-
-
-
-### Methods ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [Ask(IActorRef, object, Type, int, bool)](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.ask_net.adamec.lib.common.actor.actor.iactorref-system.object-system.type-system.int32-system.boolean___14ecl67) | public abstract | Sends a request message to recipient and waits for the response of required responseType . |
- | [Ask<T>(IActorRef, object, int, bool)](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.ask--1_net.adamec.lib.common.actor.actor.iactorref-system.object-system.int32-system.boolean___1d7ni9h) | public abstract | Sends a request message to recipient and waits for the response of type . |
- | [CancelScheduledMessage(string)](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.cancelscheduledmessage_system.string___bluqps) | public abstract | Cancels the scheduled message with given id - removes the message from list of the scheduled messages |
- | [CancelScheduledMessages(IActorRef, Type)](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.cancelscheduledmessages_net.adamec.lib.common.actor.actor.iactorref-system.type___c89uf5) | public abstract | Cancels all messages scheduled for recipient that are of given messageType - removes the messages from list of the scheduled messages |
- | [DeRegisterActor(IActorRef)](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.deregisteractor_net.adamec.lib.common.actor.actor.iactorref___102bphm) | public abstract | De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception |
- | [RegisterActor(IActor, string)](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.registeractor_net.adamec.lib.common.actor.actor.iactor-system.string___c4sh8g) | public abstract | Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system. |
- | [ScheduleMessage(IActorRef, IActorRef, DateTime, object)](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.schedulemessage_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.datetime-system.object___1o3fnac) | public abstract | Schedule one-time message to be sent to recipient at given date and time |
- | [ScheduleMessage(IActorRef, IActorRef, TimeSpan, object)](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.schedulemessage_net.adamec.lib.common.actor.actor.iactorref-net.adamec.lib.common.actor.actor.iactorref-system.timespan-system.object___og1m84) | public abstract | Schedule periodic message to be sent to recipient each period . |
- | [Start()](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.start__clajz5) | public abstract | Starts the message dispatcher (started by default within ActorSystem constructor) |
- | [Stop()](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.stop__dly8m5) | public abstract | Stops the message dispatcher (can be restarted using [Start()](#m-net.adamec.lib.common.actor.actorsystem.iactorsystem.start__clajz5) method) |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## IActorSystem.DeadLetters Property ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [IActorSystem](#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs)
-Sources: actorsystem\IActorSystem.cs
-
-
-Provides the access to dead letters queue
-
-
-
-```csharp
-public abstract IMessageQueue DeadLetters { get; }
-```
-
-Property value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## IActorSystem.CancelScheduledMessage(string) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [IActorSystem](#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs)
-Sources: actorsystem\IActorSystem.cs
-
-
-Cancels the scheduled message with given id - removes the message from list of the scheduled messages
-
-
-
-```csharp
-public abstract bool CancelScheduledMessage(string id)
-```
-
-Method parameters
True if the message has been found and canceled, false when the message has not been found
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## IActorSystem.CancelScheduledMessages(IActorRef, Type) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [IActorSystem](#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs)
-Sources: actorsystem\IActorSystem.cs
-
-
-Cancels all messages scheduled for recipient that are of given messageType - removes the messages from list of the scheduled messages
-
-
-
-```csharp
-public abstract bool CancelScheduledMessages(IActorRef recipient, Type messageType)
-```
-
-Method parameters
True if at least one message has been found and canceled, false when none has been found
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## IActorSystem.DeRegisterActor(IActorRef) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [IActorSystem](#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs)
-Sources: actorsystem\IActorSystem.cs
-
-
-De-register actor identified by actorRef from the actor system If actorRef is not found within the actor system, WARN message is logged, but raises no error/exception
-
-
-
-```csharp
-public abstract void DeRegisterActor(IActorRef actorRef)
-```
-
-Method parameters
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## IActorSystem.RegisterActor(IActor, string) Method ##
-Namespace: [net.adamec.lib.common.actor.actorsystem](#n-net.adamec.lib.common.actor.actorsystem__1ihx1md)
-Assembly: net.adamec.lib.common.actor
-Type: [IActorSystem](#t-net.adamec.lib.common.actor.actorsystem.iactorsystem__wkr3cs)
-Sources: actorsystem\IActorSystem.cs
-
-
-Registers the actor to actor system. Name of the actor should be unique, but this is not checked. Each actor must register first to be able to receive the messages within the actor system.
-
-
-
-```csharp
-public abstract IActorRef RegisterActor(IActor actor, string name)
-```
-
-Method parameters
[net.adamec.lib.common.actor.actor.IActor](#t-net.adamec.lib.common.actor.actor.iactor__16hx1xi) actor
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## Envelope.ForwardTo(IActorRef, string) Method ##
-Namespace: [net.adamec.lib.common.actor.message](#n-net.adamec.lib.common.actor.message__m00bpk)
-Assembly: net.adamec.lib.common.actor
-Type: [Envelope](#t-net.adamec.lib.common.actor.message.envelope__5oxc3s)
-Sources: message\Envelope.cs
-
-
-Forwards the message to another recipient. Keeps the original message and sender, but cleans/set the [RoutingKey](#p-net.adamec.lib.common.actor.message.envelope.routingkey__1t0mr4v) based on routingKey parameter.
-
-
-
-```csharp
-public virtual void ForwardTo(IActorRef recipient, string routingKey)
-```
-
-Method parameters
New [RoutingKey](#p-net.adamec.lib.common.actor.message.envelope.routingkey__1t0mr4v) , if not provided, the routing key will be cleaned up (set to null)!
Attributes: System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## net.adamec.lib.common.actor.queue Namespace ##
-### Classes ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [InternalQueue](#t-net.adamec.lib.common.actor.queue.internalqueue__49i5r8) | internal | An unbounded mailbox managed message queue used by [ManagedMessageQueue](#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09) as the main message queue Allows access to stored messages for monitoring using [Copy()](#m-net.adamec.lib.common.actor.queue.internalqueue.copy__1co1b8y) . Note: the messages in the array must not be modified!!! |
- | [ManagedMessageQueue](#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09) | public | Message queue for net.adamec.home.control.common.actor.manager.mailbox.ManagedUnboundedDequeBasedMailbox allowing the monitoring (access to) messages stores in the queue The main queue is implemented using net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue and also uses a System.Collections.Generic.Stack`1 internally to store each individual net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue.EnqueueFirst(Akka.Actor.Envelope) messages - supports stashing |
-
-
-
-
-### Interfaces ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [IMessageQueue](#t-net.adamec.lib.common.actor.queue.imessagequeue__1ndgarl) | public abstract | |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## InternalQueue Class ##
-Namespace: [net.adamec.lib.common.actor.queue](#n-net.adamec.lib.common.actor.queue__1lh8qrc)
-Assembly: net.adamec.lib.common.actor
-Sources: queue\InternalQueue.cs
-
-
-An unbounded mailbox managed message queue used by [ManagedMessageQueue](#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09) as the main message queue Allows access to stored messages for monitoring using [Copy()](#m-net.adamec.lib.common.actor.queue.internalqueue.copy__1co1b8y) . Note: the messages in the array must not be modified!!!
-
-
-
-```csharp
-internal class InternalQueue : IMessageQueue
-```
-
-Inheritance: object
-Implements: [net.adamec.lib.common.actor.queue.IMessageQueue](#t-net.adamec.lib.common.actor.queue.imessagequeue__1ndgarl)
-
-
-### Fields ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [queue](#f-net.adamec.lib.common.actor.queue.internalqueue.queue__11mr03p) | private | Internal queue |
-
-
-
-
-### Properties ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [Count](#p-net.adamec.lib.common.actor.queue.internalqueue.count__1dorya5) | public | Number of messages in the queue |
- | [HasMessages](#p-net.adamec.lib.common.actor.queue.internalqueue.hasmessages__1im69ka) | public | Flag whether the queue contains any messages |
-
-
-
-
-### Methods ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [CleanUp(IMessageQueue)](#m-net.adamec.lib.common.actor.queue.internalqueue.cleanup_net.adamec.lib.common.actor.queue.imessagequeue___1hi25kd) | public | Cleans the queue, the messages are sent to deadletters queue |
- | [Copy()](#m-net.adamec.lib.common.actor.queue.internalqueue.copy__1co1b8y) | public | Gets the messages stored in the queue. The messages in the array must not be modified!!! |
- | [Enqueue(Envelope)](#m-net.adamec.lib.common.actor.queue.internalqueue.enqueue_net.adamec.lib.common.actor.message.envelope___ve2fas) | public | Enqueue a new message envelope |
- | [TryDequeue(Envelope)](#m-net.adamec.lib.common.actor.queue.internalqueue.trydequeue_net.adamec.lib.common.actor.message.envelope-___19jzc8l) | public | Tries to dequeue a message from the queue |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## InternalQueue.queue Field ##
-Namespace: [net.adamec.lib.common.actor.queue](#n-net.adamec.lib.common.actor.queue__1lh8qrc)
-Assembly: net.adamec.lib.common.actor
-Type: [InternalQueue](#t-net.adamec.lib.common.actor.queue.internalqueue__49i5r8)
-Sources: queue\InternalQueue.cs
-
-
-Internal queue
-
-
-
-```csharp
-private readonly ConcurrentQueue queue
-```
-
-Field value
Attributes: System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## InternalQueue.Copy() Method ##
-Namespace: [net.adamec.lib.common.actor.queue](#n-net.adamec.lib.common.actor.queue__1lh8qrc)
-Assembly: net.adamec.lib.common.actor
-Type: [InternalQueue](#t-net.adamec.lib.common.actor.queue.internalqueue__49i5r8)
-Sources: queue\InternalQueue.cs
-
-
-Gets the messages stored in the queue. The messages in the array must not be modified!!!
-
-
-
-```csharp
-[ExcludeFromCodeCoverage]
-public Envelope[] Copy()
-```
-
-Return value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ManagedMessageQueue Class ##
-Namespace: [net.adamec.lib.common.actor.queue](#n-net.adamec.lib.common.actor.queue__1lh8qrc)
-Assembly: net.adamec.lib.common.actor
-Sources: queue\ManagedMessageQueue.cs
-
-
-Message queue for net.adamec.home.control.common.actor.manager.mailbox.ManagedUnboundedDequeBasedMailbox allowing the monitoring (access to) messages stores in the queue The main queue is implemented using net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue and also uses a System.Collections.Generic.Stack`1 internally to store each individual net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue.EnqueueFirst(Akka.Actor.Envelope) messages - supports stashing
-
-
-
-```csharp
-public class ManagedMessageQueue : IMessageQueue
-```
-
-Inheritance: object
-Implements: [net.adamec.lib.common.actor.queue.IMessageQueue](#t-net.adamec.lib.common.actor.queue.imessagequeue__1ndgarl)
-
-
-### Fields ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [MessageQueue](#f-net.adamec.lib.common.actor.queue.managedmessagequeue.messagequeue__f6vqnz) | protected | The underlying [InternalQueue](#t-net.adamec.lib.common.actor.queue.internalqueue__49i5r8) . |
- | [prependBuffer](#f-net.adamec.lib.common.actor.queue.managedmessagequeue.prependbuffer__8wamat) | private | |
-
-
-
-
-### Properties ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [Count](#p-net.adamec.lib.common.actor.queue.managedmessagequeue.count__h0822) | public | Returns the number of messages in both the internal message queue and the prepend buffer. |
- | [HasMessages](#p-net.adamec.lib.common.actor.queue.managedmessagequeue.hasmessages__17b0d3x) | public | Returns true if there are any messages inside the queue. |
-
-
-
-
-### Constructors ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [ManagedMessageQueue()](#m-net.adamec.lib.common.actor.queue.managedmessagequeue.-ctor__1c6oeh3) | public | Creates [ManagedMessageQueue](#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09) |
-
-
-
-
-### Methods ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [CleanUp(IMessageQueue)](#m-net.adamec.lib.common.actor.queue.managedmessagequeue.cleanup_net.adamec.lib.common.actor.queue.imessagequeue___1e5rsai) | public | Cleans the queue, the messages are sent to deadletters queue |
- | [Copy()](#m-net.adamec.lib.common.actor.queue.managedmessagequeue.copy__xeyi8r) | public | Gets the all queued messages stored in the prepend buffer and main queue. The messages in the array must not be modified!!! |
- | [Enqueue(Envelope)](#m-net.adamec.lib.common.actor.queue.managedmessagequeue.enqueue_net.adamec.lib.common.actor.message.envelope___fs8mtl) | public | Enqueue a new message envelope |
- | [EnqueueFirst(Envelope)](#m-net.adamec.lib.common.actor.queue.managedmessagequeue.enqueuefirst_net.adamec.lib.common.actor.message.envelope___3gbbrz) | public | Add a message to the front of the queue via the prepend buffer. |
- | [TryDequeue(Envelope)](#m-net.adamec.lib.common.actor.queue.managedmessagequeue.trydequeue_net.adamec.lib.common.actor.message.envelope-___1k976aa) | public | Attempt to dequeue a message from the front of the prepend buffer. If the prepend buffer is empty, dequeue a message from the main message queue |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ManagedMessageQueue.MessageQueue Field ##
-Namespace: [net.adamec.lib.common.actor.queue](#n-net.adamec.lib.common.actor.queue__1lh8qrc)
-Assembly: net.adamec.lib.common.actor
-Type: [ManagedMessageQueue](#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09)
-Sources: queue\ManagedMessageQueue.cs
-
-
-The underlying [InternalQueue](#t-net.adamec.lib.common.actor.queue.internalqueue__49i5r8) .
-
-
-
-```csharp
-protected readonly IMessageQueue MessageQueue
-```
-
-Field value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ManagedMessageQueue.Count Property ##
-Namespace: [net.adamec.lib.common.actor.queue](#n-net.adamec.lib.common.actor.queue__1lh8qrc)
-Assembly: net.adamec.lib.common.actor
-Type: [ManagedMessageQueue](#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09)
-Sources: queue\ManagedMessageQueue.cs
-
-
-Returns the number of messages in both the internal message queue and the prepend buffer.
-
-
-
-```csharp
-public int Count { get; }
-```
-
-Property value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ManagedMessageQueue.Copy() Method ##
-Namespace: [net.adamec.lib.common.actor.queue](#n-net.adamec.lib.common.actor.queue__1lh8qrc)
-Assembly: net.adamec.lib.common.actor
-Type: [ManagedMessageQueue](#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09)
-Sources: queue\ManagedMessageQueue.cs
-
-
-Gets the all queued messages stored in the prepend buffer and main queue. The messages in the array must not be modified!!!
-
-
-
-```csharp
-[ExcludeFromCodeCoverage]
-public Envelope[] Copy()
-```
-
-Return value
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ManagedMessageQueue.EnqueueFirst(Envelope) Method ##
-Namespace: [net.adamec.lib.common.actor.queue](#n-net.adamec.lib.common.actor.queue__1lh8qrc)
-Assembly: net.adamec.lib.common.actor
-Type: [ManagedMessageQueue](#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09)
-Sources: queue\ManagedMessageQueue.cs
-
-
-Add a message to the front of the queue via the prepend buffer.
-
-
-
-```csharp
-public void EnqueueFirst(Envelope envelope)
-```
-
-Method parameters
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## ManagedMessageQueue.TryDequeue(Envelope) Method ##
-Namespace: [net.adamec.lib.common.actor.queue](#n-net.adamec.lib.common.actor.queue__1lh8qrc)
-Assembly: net.adamec.lib.common.actor
-Type: [ManagedMessageQueue](#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09)
-Sources: queue\ManagedMessageQueue.cs
-
-
-Attempt to dequeue a message from the front of the prepend buffer. If the prepend buffer is empty, dequeue a message from the main message queue
-
-
-
-```csharp
-public bool TryDequeue(out Envelope envelope)
-```
-
-Method parameters
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## CommonLogging.CreateLogger(Type) Method ##
-Namespace: [net.adamec.lib.common.logging](#n-net.adamec.lib.common.logging__1g9pm29)
-Assembly: net.adamec.lib.common.actor
-Type: [CommonLogging](#t-net.adamec.lib.common.logging.commonlogging__1dar5wb)
-Sources: Packages\RadCommons.logging.CommonLogging\CommonLogging.cs
-Source-only packages: [RadCommons.logging.CommonLogging](#src-only-package--RadCommons.logging.CommonLogging)
-
-
-Creates the logger for given type. The name of the logger will be System.Type.FullName
-
-
-
-```csharp
-public static ILogger CreateLogger(Type type)
-```
-
-Method parameters
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## CommonLogging.CreateLogger<T>() Method ##
-Namespace: [net.adamec.lib.common.logging](#n-net.adamec.lib.common.logging__1g9pm29)
-Assembly: net.adamec.lib.common.actor
-Type: [CommonLogging](#t-net.adamec.lib.common.logging.commonlogging__1dar5wb)
-Sources: Packages\RadCommons.logging.CommonLogging\CommonLogging.cs
-Source-only packages: [RadCommons.logging.CommonLogging](#src-only-package--RadCommons.logging.CommonLogging)
-
-
-Creates the logger for given type. The name of the logger will be System.Type.FullName
-
-
-
-```csharp
-public static ILogger CreateLogger()
-```
-
-Type parameters
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## LoggerExtensions Class ##
-Namespace: [net.adamec.lib.common.logging](#n-net.adamec.lib.common.logging__1g9pm29)
-Assembly: net.adamec.lib.common.actor
-Sources: Packages\RadCommons.logging.CommonLogging\LoggerExtensions.cs
-Source-only packages: [RadCommons.logging.CommonLogging](#src-only-package--RadCommons.logging.CommonLogging)
-
-
-[ILogger](#t-net.adamec.lib.common.logging.ilogger__y2ollm) extensions
-
-
-
-```csharp
-internal static class LoggerExtensions
-```
-
-Inheritance: object
-
-
-
-### Methods ###
-
- | Name | Modifier | Summary |
- | ------ | ---------- | --------- |
- | [Debug(ILogger, Dictionary<string,object>, string)](#m-net.adamec.lib.common.logging.loggerextensions.debug_net.adamec.lib.common.logging.ilogger-system.collections.generic.dictionary_system.string-system.object_-system.string___j9my8t) | public static | Writes the diagnostic message at the `Debug` level. |
- | [Debug(ILogger, string, string)](#m-net.adamec.lib.common.logging.loggerextensions.debug_net.adamec.lib.common.logging.ilogger-system.string-system.string___1ivhtea) | public static | Writes the diagnostic message at the `Debug` level. |
- | [Error(ILogger, Dictionary<string,object>, Exception, string)](#m-net.adamec.lib.common.logging.loggerextensions.error_net.adamec.lib.common.logging.ilogger-system.collections.generic.dictionary_system.string-system.object_-system.exception-system.string___m1gnmw) | public static | Writes the diagnostic message at the `Error` level. |
- | [Error(ILogger, Dictionary<string,object>, string)](#m-net.adamec.lib.common.logging.loggerextensions.error_net.adamec.lib.common.logging.ilogger-system.collections.generic.dictionary_system.string-system.object_-system.string___cx87zg) | public static | Writes the diagnostic message at the `Error` level. |
- | [Error(ILogger, string, Exception, string)](#m-net.adamec.lib.common.logging.loggerextensions.error_net.adamec.lib.common.logging.ilogger-system.string-system.exception-system.string___yb2lv7) | public static | Writes the diagnostic message at the `Error` level. |
- | [Error(ILogger, string, string)](#m-net.adamec.lib.common.logging.loggerextensions.error_net.adamec.lib.common.logging.ilogger-system.string-system.string___1rt5ddv) | public static | Writes the diagnostic message at the `Error` level. |
- | [Error<TException>(ILogger, string, Exception)](#m-net.adamec.lib.common.logging.loggerextensions.error--1_net.adamec.lib.common.logging.ilogger-system.string-system.exception___1i16h8s) | public static | Writes the diagnostic message at the `Error` level. Creates and returns the exception of given type |
- | [Error<TException>(ILogger, string, string, Exception)](#m-net.adamec.lib.common.logging.loggerextensions.error--1_net.adamec.lib.common.logging.ilogger-system.string-system.string-system.exception___1473s) | public static | Writes the diagnostic message at the `Error` level. Creates and returns the exception of given type |
- | [Fatal(ILogger, Dictionary<string,object>, Exception, string)](#m-net.adamec.lib.common.logging.loggerextensions.fatal_net.adamec.lib.common.logging.ilogger-system.collections.generic.dictionary_system.string-system.object_-system.exception-system.string___1u2znd0) | public static | Writes the diagnostic message at the `Fatal` level. |
- | [Fatal(ILogger, Dictionary<string,object>, string)](#m-net.adamec.lib.common.logging.loggerextensions.fatal_net.adamec.lib.common.logging.ilogger-system.collections.generic.dictionary_system.string-system.object_-system.string___1ron6v0) | public static | Writes the diagnostic message at the `Fatal` level. |
- | [Fatal(ILogger, string, Exception, string)](#m-net.adamec.lib.common.logging.loggerextensions.fatal_net.adamec.lib.common.logging.ilogger-system.string-system.exception-system.string___zech9x) | public static | Writes the diagnostic message at the `Fatal` level. |
- | [Fatal(ILogger, string, string)](#m-net.adamec.lib.common.logging.loggerextensions.fatal_net.adamec.lib.common.logging.ilogger-system.string-system.string___7ptull) | public static | Writes the diagnostic message at the `Fatal` level. |
- | [Fatal<TException>(ILogger, string, Exception)](#m-net.adamec.lib.common.logging.loggerextensions.fatal--1_net.adamec.lib.common.logging.ilogger-system.string-system.exception___1i44id8) | public static | Writes the diagnostic message at the `Fatal` level. Creates and returns the exception of given type |
- | [Fatal<TException>(ILogger, string, string, Exception)](#m-net.adamec.lib.common.logging.loggerextensions.fatal--1_net.adamec.lib.common.logging.ilogger-system.string-system.string-system.exception___1lozfm8) | public static | Writes the diagnostic message at the `Fatal` level. Creates and returns the exception of given type |
- | [Info(ILogger, Dictionary<string,object>, string)](#m-net.adamec.lib.common.logging.loggerextensions.info_net.adamec.lib.common.logging.ilogger-system.collections.generic.dictionary_system.string-system.object_-system.string___q80pva) | public static | Writes the diagnostic message at the `Info` level. |
- | [Info(ILogger, string, string)](#m-net.adamec.lib.common.logging.loggerextensions.info_net.adamec.lib.common.logging.ilogger-system.string-system.string___1ufgud1) | public static | Writes the diagnostic message at the `Info` level. |
- | [LogIt(ILogger, LogLevel, Dictionary<string,object>, string, Exception)](#m-net.adamec.lib.common.logging.loggerextensions.logit_net.adamec.lib.common.logging.ilogger-nlog.loglevel-system.collections.generic.dictionary_system.string-system.object_-system.string-system.exception___1pbym9v) | private static | Writes the item (message with optional event properties and exception) into the log |
- | [LogIt(ILogger, LogLevel, string, string, Exception)](#m-net.adamec.lib.common.logging.loggerextensions.logit_net.adamec.lib.common.logging.ilogger-nlog.loglevel-system.string-system.string-system.exception___rb1ido) | private static | Writes the item (message with optional exception) into the log |
- | [Warn(ILogger, Dictionary<string,object>, Exception, string)](#m-net.adamec.lib.common.logging.loggerextensions.warn_net.adamec.lib.common.logging.ilogger-system.collections.generic.dictionary_system.string-system.object_-system.exception-system.string___sahasq) | public static | Writes the diagnostic message at the `Warn` level. |
- | [Warn(ILogger, Dictionary<string,object>, string)](#m-net.adamec.lib.common.logging.loggerextensions.warn_net.adamec.lib.common.logging.ilogger-system.collections.generic.dictionary_system.string-system.object_-system.string___oq47e2) | public static | Writes the diagnostic message at the `Warn` level. |
- | [Warn(ILogger, string, Exception, string)](#m-net.adamec.lib.common.logging.loggerextensions.warn_net.adamec.lib.common.logging.ilogger-system.string-system.exception-system.string___4coctd) | public static | Writes the diagnostic message at the `Warn` level. |
- | [Warn(ILogger, string, string)](#m-net.adamec.lib.common.logging.loggerextensions.warn_net.adamec.lib.common.logging.ilogger-system.string-system.string___1mophq5) | public static | Writes the diagnostic message at the `Warn` level. |
-
-
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## LoggerExtensions.Debug(ILogger, Dictionary<string,object>, string) Method ##
-Namespace: [net.adamec.lib.common.logging](#n-net.adamec.lib.common.logging__1g9pm29)
-Assembly: net.adamec.lib.common.actor
-Type: [LoggerExtensions](#t-net.adamec.lib.common.logging.loggerextensions__wainxv)
-Sources: Packages\RadCommons.logging.CommonLogging\LoggerExtensions.cs
-Source-only packages: [RadCommons.logging.CommonLogging](#src-only-package--RadCommons.logging.CommonLogging)
-
-
-Writes the diagnostic message at the `Debug` level.
-
-
-
-```csharp
-public static void Debug(this ILogger logger, Dictionary eventProperties, [Localizable(false)] string message)
-```
-
-Method parameters
Flag whether the object is disposing (called from [Dispose()](#m-net.adamec.lib.common.utils.basedisposable.dispose__6qe9ri) method). False if called from destructor
-
-
-Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
-
-
-
-
-
-## RadCommons.utils.BaseDisposable Source only package ##
-Tags: RadCommons
-Includes: None
-Declaring file: ackages\RadCommons.utils.BaseDisposable\BaseDisposable.cs
-
-
-Helper class for implementation of IDisposable types (Source only package).
-
-
-Package members
-
+ | [RadCommons.extensions.TypeExtensions.DefaultValue](src-only-packages--.md#src-only-package--RadCommons.extensions.TypeExtensions.DefaultValue) | Provides default value for types (Source only package). |
+ | [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging) | RadCommons logging wrapper around NLog with some extended functionality (Source only package). |
+ | [RadCommons.utils.BaseDisposable](src-only-packages--.md#src-only-package--RadCommons.utils.BaseDisposable) | Helper class for implementation of IDisposable types (Source only package). |
Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
diff --git a/doc/net.adamec.lib.common.actor.message__m00bpk.html b/doc/net.adamec.lib.common.actor.message__m00bpk.html
new file mode 100644
index 0000000..731e589
--- /dev/null
+++ b/doc/net.adamec.lib.common.actor.message__m00bpk.html
@@ -0,0 +1,270 @@
+
+
+
+RAD Actor System Documentation
+
+
+
+
+
+
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## Envelope.Envelope(Envelope) Constructor ##
+Namespace: [net.adamec.lib.common.actor.message](net.adamec.lib.common.actor.message__m00bpk.md#n-net.adamec.lib.common.actor.message__m00bpk)
+Assembly: net.adamec.lib.common.actor
+Type: [Envelope](net.adamec.lib.common.actor.message__m00bpk.md#t-net.adamec.lib.common.actor.message.envelope__5oxc3s)
+Sources: message\Envelope.cs
+
+
+CTOR - creates the exact copy of original message including the [CorrelationId](net.adamec.lib.common.actor.message__m00bpk.md#p-net.adamec.lib.common.actor.message.envelope.correlationid__1b0zym1) and [CreatedOn](net.adamec.lib.common.actor.message__m00bpk.md#p-net.adamec.lib.common.actor.message.envelope.createdon__1kpt9ip) timestamp
+
+
+
+```csharp
+protected Envelope(Envelope original)
+```
+
+Constructor parameters
[net.adamec.lib.common.actor.message.Envelope](net.adamec.lib.common.actor.message__m00bpk.md#t-net.adamec.lib.common.actor.message.envelope__5oxc3s) original
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## Envelope.ForwardTo(IActorRef, string) Method ##
+Namespace: [net.adamec.lib.common.actor.message](net.adamec.lib.common.actor.message__m00bpk.md#n-net.adamec.lib.common.actor.message__m00bpk)
+Assembly: net.adamec.lib.common.actor
+Type: [Envelope](net.adamec.lib.common.actor.message__m00bpk.md#t-net.adamec.lib.common.actor.message.envelope__5oxc3s)
+Sources: message\Envelope.cs
+
+
+Forwards the message to another recipient. Keeps the original message and sender, but cleans/set the [RoutingKey](net.adamec.lib.common.actor.message__m00bpk.md#p-net.adamec.lib.common.actor.message.envelope.routingkey__1t0mr4v) based on routingKey parameter.
+
+
+
+```csharp
+public virtual void ForwardTo(IActorRef recipient, string routingKey)
+```
+
+Method parameters
New [RoutingKey](net.adamec.lib.common.actor.message__m00bpk.md#p-net.adamec.lib.common.actor.message.envelope.routingkey__1t0mr4v) , if not provided, the routing key will be cleaned up (set to null)!
An unbounded mailbox managed message queue used by ManagedMessageQueue as the main message queue Allows access to stored messages for monitoring using Copy() . Note: the messages in the array must not be modified!!!
Message queue for net.adamec.home.control.common.actor.manager.mailbox.ManagedUnboundedDequeBasedMailbox allowing the monitoring (access to) messages stores in the queue The main queue is implemented using net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue and also uses a System.Collections.Generic.Stack`1 internally to store each individual net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue.EnqueueFirst(Akka.Actor.Envelope) messages - supports stashing
An unbounded mailbox managed message queue used by ManagedMessageQueue as the main message queue Allows access to stored messages for monitoring using Copy() . Note: the messages in the array must not be modified!!!
Message queue for net.adamec.home.control.common.actor.manager.mailbox.ManagedUnboundedDequeBasedMailbox allowing the monitoring (access to) messages stores in the queue The main queue is implemented using net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue and also uses a System.Collections.Generic.Stack`1 internally to store each individual net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue.EnqueueFirst(Akka.Actor.Envelope) messages - supports stashing
+
diff --git a/doc/net.adamec.lib.common.actor.queue__1lh8qrc.md b/doc/net.adamec.lib.common.actor.queue__1lh8qrc.md
new file mode 100644
index 0000000..3669d2a
--- /dev/null
+++ b/doc/net.adamec.lib.common.actor.queue__1lh8qrc.md
@@ -0,0 +1,726 @@
+# RAD Actor System Documentation #
+## net.adamec.lib.common.actor.queue Namespace ##
+### Classes ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [InternalQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.internalqueue__49i5r8) | internal | An unbounded mailbox managed message queue used by [ManagedMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09) as the main message queue Allows access to stored messages for monitoring using [Copy()](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.internalqueue.copy__1co1b8y) . Note: the messages in the array must not be modified!!! |
+ | [ManagedMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09) | public | Message queue for net.adamec.home.control.common.actor.manager.mailbox.ManagedUnboundedDequeBasedMailbox allowing the monitoring (access to) messages stores in the queue The main queue is implemented using net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue and also uses a System.Collections.Generic.Stack`1 internally to store each individual net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue.EnqueueFirst(Akka.Actor.Envelope) messages - supports stashing |
+
+
+
+
+### Interfaces ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [IMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.imessagequeue__1ndgarl) | public abstract | |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## InternalQueue Class ##
+Namespace: [net.adamec.lib.common.actor.queue](net.adamec.lib.common.actor.queue__1lh8qrc.md#n-net.adamec.lib.common.actor.queue__1lh8qrc)
+Assembly: net.adamec.lib.common.actor
+Sources: queue\InternalQueue.cs
+
+
+An unbounded mailbox managed message queue used by [ManagedMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09) as the main message queue Allows access to stored messages for monitoring using [Copy()](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.internalqueue.copy__1co1b8y) . Note: the messages in the array must not be modified!!!
+
+
+
+```csharp
+internal class InternalQueue : IMessageQueue
+```
+
+Inheritance: object
+Implements: [net.adamec.lib.common.actor.queue.IMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.imessagequeue__1ndgarl)
+
+
+### Fields ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [queue](net.adamec.lib.common.actor.queue__1lh8qrc.md#f-net.adamec.lib.common.actor.queue.internalqueue.queue__11mr03p) | private | Internal queue |
+
+
+
+
+### Properties ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [Count](net.adamec.lib.common.actor.queue__1lh8qrc.md#p-net.adamec.lib.common.actor.queue.internalqueue.count__1dorya5) | public | Number of messages in the queue |
+ | [HasMessages](net.adamec.lib.common.actor.queue__1lh8qrc.md#p-net.adamec.lib.common.actor.queue.internalqueue.hasmessages__1im69ka) | public | Flag whether the queue contains any messages |
+
+
+
+
+### Methods ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [CleanUp(IMessageQueue)](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.internalqueue.cleanup_net.adamec.lib.common.actor.queue.imessagequeue___1hi25kd) | public | Cleans the queue, the messages are sent to deadletters queue |
+ | [Copy()](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.internalqueue.copy__1co1b8y) | public | Gets the messages stored in the queue. The messages in the array must not be modified!!! |
+ | [Enqueue(Envelope)](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.internalqueue.enqueue_net.adamec.lib.common.actor.message.envelope___ve2fas) | public | Enqueue a new message envelope |
+ | [TryDequeue(Envelope)](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.internalqueue.trydequeue_net.adamec.lib.common.actor.message.envelope-___19jzc8l) | public | Tries to dequeue a message from the queue |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## InternalQueue.queue Field ##
+Namespace: [net.adamec.lib.common.actor.queue](net.adamec.lib.common.actor.queue__1lh8qrc.md#n-net.adamec.lib.common.actor.queue__1lh8qrc)
+Assembly: net.adamec.lib.common.actor
+Type: [InternalQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.internalqueue__49i5r8)
+Sources: queue\InternalQueue.cs
+
+
+Internal queue
+
+
+
+```csharp
+private readonly ConcurrentQueue queue
+```
+
+Field value
Implements: [IMessageQueue.CleanUp(IMessageQueue)](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.imessagequeue.cleanup_net.adamec.lib.common.actor.queue.imessagequeue___2qe93s)Attributes: System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## InternalQueue.Copy() Method ##
+Namespace: [net.adamec.lib.common.actor.queue](net.adamec.lib.common.actor.queue__1lh8qrc.md#n-net.adamec.lib.common.actor.queue__1lh8qrc)
+Assembly: net.adamec.lib.common.actor
+Type: [InternalQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.internalqueue__49i5r8)
+Sources: queue\InternalQueue.cs
+
+
+Gets the messages stored in the queue. The messages in the array must not be modified!!!
+
+
+
+```csharp
+[ExcludeFromCodeCoverage]
+public Envelope[] Copy()
+```
+
+Return value
Implements: [IMessageQueue.TryDequeue(Envelope)](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.imessagequeue.trydequeue_net.adamec.lib.common.actor.message.envelope-___1jw22qo)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ManagedMessageQueue Class ##
+Namespace: [net.adamec.lib.common.actor.queue](net.adamec.lib.common.actor.queue__1lh8qrc.md#n-net.adamec.lib.common.actor.queue__1lh8qrc)
+Assembly: net.adamec.lib.common.actor
+Sources: queue\ManagedMessageQueue.cs
+
+
+Message queue for net.adamec.home.control.common.actor.manager.mailbox.ManagedUnboundedDequeBasedMailbox allowing the monitoring (access to) messages stores in the queue The main queue is implemented using net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue and also uses a System.Collections.Generic.Stack`1 internally to store each individual net.adamec.home.control.common.actor.manager.mailbox.ManagedMessageQueue.EnqueueFirst(Akka.Actor.Envelope) messages - supports stashing
+
+
+
+```csharp
+public class ManagedMessageQueue : IMessageQueue
+```
+
+Inheritance: object
+Implements: [net.adamec.lib.common.actor.queue.IMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.imessagequeue__1ndgarl)
+
+
+### Fields ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [MessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#f-net.adamec.lib.common.actor.queue.managedmessagequeue.messagequeue__f6vqnz) | protected | The underlying [InternalQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.internalqueue__49i5r8) . |
+ | [prependBuffer](net.adamec.lib.common.actor.queue__1lh8qrc.md#f-net.adamec.lib.common.actor.queue.managedmessagequeue.prependbuffer__8wamat) | private | |
+
+
+
+
+### Properties ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [Count](net.adamec.lib.common.actor.queue__1lh8qrc.md#p-net.adamec.lib.common.actor.queue.managedmessagequeue.count__h0822) | public | Returns the number of messages in both the internal message queue and the prepend buffer. |
+ | [HasMessages](net.adamec.lib.common.actor.queue__1lh8qrc.md#p-net.adamec.lib.common.actor.queue.managedmessagequeue.hasmessages__17b0d3x) | public | Returns true if there are any messages inside the queue. |
+
+
+
+
+### Constructors ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [ManagedMessageQueue()](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.managedmessagequeue.-ctor__1c6oeh3) | public | Creates [ManagedMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09) |
+
+
+
+
+### Methods ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [CleanUp(IMessageQueue)](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.managedmessagequeue.cleanup_net.adamec.lib.common.actor.queue.imessagequeue___1e5rsai) | public | Cleans the queue, the messages are sent to deadletters queue |
+ | [Copy()](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.managedmessagequeue.copy__xeyi8r) | public | Gets the all queued messages stored in the prepend buffer and main queue. The messages in the array must not be modified!!! |
+ | [Enqueue(Envelope)](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.managedmessagequeue.enqueue_net.adamec.lib.common.actor.message.envelope___fs8mtl) | public | Enqueue a new message envelope |
+ | [EnqueueFirst(Envelope)](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.managedmessagequeue.enqueuefirst_net.adamec.lib.common.actor.message.envelope___3gbbrz) | public | Add a message to the front of the queue via the prepend buffer. |
+ | [TryDequeue(Envelope)](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.managedmessagequeue.trydequeue_net.adamec.lib.common.actor.message.envelope-___1k976aa) | public | Attempt to dequeue a message from the front of the prepend buffer. If the prepend buffer is empty, dequeue a message from the main message queue |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ManagedMessageQueue.MessageQueue Field ##
+Namespace: [net.adamec.lib.common.actor.queue](net.adamec.lib.common.actor.queue__1lh8qrc.md#n-net.adamec.lib.common.actor.queue__1lh8qrc)
+Assembly: net.adamec.lib.common.actor
+Type: [ManagedMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09)
+Sources: queue\ManagedMessageQueue.cs
+
+
+The underlying [InternalQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.internalqueue__49i5r8) .
+
+
+
+```csharp
+protected readonly IMessageQueue MessageQueue
+```
+
+Field value
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ManagedMessageQueue.Count Property ##
+Namespace: [net.adamec.lib.common.actor.queue](net.adamec.lib.common.actor.queue__1lh8qrc.md#n-net.adamec.lib.common.actor.queue__1lh8qrc)
+Assembly: net.adamec.lib.common.actor
+Type: [ManagedMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09)
+Sources: queue\ManagedMessageQueue.cs
+
+
+Returns the number of messages in both the internal message queue and the prepend buffer.
+
+
+
+```csharp
+public int Count { get; }
+```
+
+Property value
Implements: [IMessageQueue.CleanUp(IMessageQueue)](net.adamec.lib.common.actor.queue__1lh8qrc.md#m-net.adamec.lib.common.actor.queue.imessagequeue.cleanup_net.adamec.lib.common.actor.queue.imessagequeue___2qe93s)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ManagedMessageQueue.Copy() Method ##
+Namespace: [net.adamec.lib.common.actor.queue](net.adamec.lib.common.actor.queue__1lh8qrc.md#n-net.adamec.lib.common.actor.queue__1lh8qrc)
+Assembly: net.adamec.lib.common.actor
+Type: [ManagedMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09)
+Sources: queue\ManagedMessageQueue.cs
+
+
+Gets the all queued messages stored in the prepend buffer and main queue. The messages in the array must not be modified!!!
+
+
+
+```csharp
+[ExcludeFromCodeCoverage]
+public Envelope[] Copy()
+```
+
+Return value
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ManagedMessageQueue.TryDequeue(Envelope) Method ##
+Namespace: [net.adamec.lib.common.actor.queue](net.adamec.lib.common.actor.queue__1lh8qrc.md#n-net.adamec.lib.common.actor.queue__1lh8qrc)
+Assembly: net.adamec.lib.common.actor
+Type: [ManagedMessageQueue](net.adamec.lib.common.actor.queue__1lh8qrc.md#t-net.adamec.lib.common.actor.queue.managedmessagequeue__1xckl09)
+Sources: queue\ManagedMessageQueue.cs
+
+
+Attempt to dequeue a message from the front of the prepend buffer. If the prepend buffer is empty, dequeue a message from the main message queue
+
+
+
+```csharp
+public bool TryDequeue(out Envelope envelope)
+```
+
+Method parameters
This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
Flag whether the exception is to be catch by exception filter
+
Remarks
+
This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
Flag whether the exception is to be catch by exception filter
+
Remarks
+
This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
Flag whether the exception is to be catch by exception filter
+
Remarks
+
This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## CommonLogging.CreateLogger(Type) Method ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Type: [CommonLogging](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.commonlogging__1dar5wb)
+Sources: App_Packages\RadCommons.logging.CommonLogging\CommonLogging.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+Creates the logger for given type. The name of the logger will be System.Type.FullName
+
+
+
+```csharp
+public static ILogger CreateLogger(Type type)
+```
+
+Method parameters
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## CommonLogging.CreateLogger<T>() Method ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Type: [CommonLogging](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.commonlogging__1dar5wb)
+Sources: App_Packages\RadCommons.logging.CommonLogging\CommonLogging.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+Creates the logger for given type. The name of the logger will be System.Type.FullName
+
+
+
+```csharp
+public static ILogger CreateLogger()
+```
+
+Type parameters
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## LoggerExt Class ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Sources: App_Packages\RadCommons.logging.CommonLogging\LoggerExt.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+[ILogger](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.ilogger__y2ollm) extensions
+
+
+
+```csharp
+internal class LoggerExt : Logger, ILogger
+```
+
+Inheritance: object -> NLog.Logger
+Implements: [net.adamec.lib.common.logging.ILogger](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.ilogger__y2ollm), NLog.ILogger, NLog.ILoggerBase, NLog.ISuppress
+
+
+### Methods ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [CreateException<TException>(string, Exception)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.createexception--1_system.string-system.exception___1wtd924) | private static | Writes the diagnostic message at the `Fatal` level. Creates and returns the exception of given type |
+ | [Debug(Dictionary<string,object>, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.debug_system.collections.generic.dictionary_system.string-system.object_-system.string___by66ma) | public | Writes the diagnostic message at the `Debug` level. |
+ | [DebugCorr(string, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.debugcorr_system.string-system.string___i119af) | public | Writes the diagnostic message at the `Debug` level with correlation ID. |
+ | [Error(Dictionary<string,object>, Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.error_system.collections.generic.dictionary_system.string-system.object_-system.exception-system.string___7fy00h) | public | Writes the diagnostic message at the `Error` level. |
+ | [Error(Dictionary<string,object>, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.error_system.collections.generic.dictionary_system.string-system.object_-system.string___u5pc5h) | public | Writes the diagnostic message at the `Error` level. |
+ | [Error<TException>(string, Exception)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.error--1_system.string-system.exception___1qowqgx) | public | Writes the diagnostic message at the `Error` level. Creates and returns the exception of given type |
+ | [ErrorCorr(string, Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.errorcorr_system.string-system.exception-system.string___1tdd1hu) | public | Writes the diagnostic message at the `Error` level with correlation ID. |
+ | [ErrorCorr(string, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.errorcorr_system.string-system.string___1vt0qk2) | public | Writes the diagnostic message at the `Error` level with correlation ID. |
+ | [ErrorCorr<TException>(string, LoggerExt.TException, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.errorcorr--1_system.string---0-system.string___bk3vj3) | public | Writes the diagnostic message at the `Error` level and returns the exception of given type |
+ | [ErrorCorr<TException>(string, string, Exception)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.errorcorr--1_system.string-system.string-system.exception___4hcjn7) | public | Writes the diagnostic message at the `Error` level with correlation ID. Creates and returns the exception of given type |
+ | [ErrorFltr<TException>(LoggerExt.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.errorfltr--1_--0-system.string-system.boolean___ipfsfa) | public | Writes the diagnostic message at the `Error` level and returns the exception of given type |
+ | [ErrorFltrCorr<TException>(string, LoggerExt.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.errorfltrcorr--1_system.string---0-system.string-system.boolean___84xqu8) | public | Writes the diagnostic message at the `Error` level and returns the exception of given type |
+ | [ErrorPassThrough(Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.errorpassthrough_system.exception-system.string___1ey2kd0) | public | Writes the diagnostic message at the `Error` level and returns given exception |
+ | [Fatal(Dictionary<string,object>, Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.fatal_system.collections.generic.dictionary_system.string-system.object_-system.exception-system.string___pw9hcn) | public | Writes the diagnostic message at the `Fatal` level. |
+ | [Fatal(Dictionary<string,object>, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.fatal_system.collections.generic.dictionary_system.string-system.object_-system.string___1ff2uef) | public | Writes the diagnostic message at the `Fatal` level. |
+ | [Fatal<TException>(string, Exception)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.fatal--1_system.string-system.exception___1myw0tj) | public | Writes the diagnostic message at the `Fatal` level. Creates and returns the exception of given type |
+ | [FatalCorr(string, Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.fatalcorr_system.string-system.exception-system.string___1q1adwi) | public | Writes the diagnostic message at the `Fatal` level with correlation ID. |
+ | [FatalCorr(string, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.fatalcorr_system.string-system.string___c131ta) | public | Writes the diagnostic message at the `Fatal` level with correlation ID. |
+ | [FatalCorr<TException>(string, LoggerExt.TException, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.fatalcorr--1_system.string---0-system.string___17i1735) | public | Writes the diagnostic message at the `Fatal` level and returns the exception of given type |
+ | [FatalCorr<TException>(string, string, Exception)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.fatalcorr--1_system.string-system.string-system.exception___w1l5gt) | public | Writes the diagnostic message at the `Fatal` level with correlation ID. Creates and returns the exception of given type |
+ | [FatalFltr<TException>(LoggerExt.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.fatalfltr--1_--0-system.string-system.boolean___5rdjqe) | public | Writes the diagnostic message at the `Fatal` level and returns catchIt value. |
+ | [FatalFltrCorr<TException>(string, LoggerExt.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.fatalfltrcorr--1_system.string---0-system.string-system.boolean___15t2hh0) | public | Writes the diagnostic message at the `Fatal` level and returns catchIt value. |
+ | [FatalPassThrough(Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.fatalpassthrough_system.exception-system.string___10psm2o) | public | Writes the diagnostic message at the `Fatal` level and returns given exception > |
+ | [Info(Dictionary<string,object>, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.info_system.collections.generic.dictionary_system.string-system.object_-system.string___1qxds6b) | public | Writes the diagnostic message at the `Info` level. |
+ | [InfoCorr(string, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.infocorr_system.string-system.string___3vobha) | public | Writes the diagnostic message at the `Info` level with correlation ID. |
+ | [LogIt(LogLevel, Dictionary<string,object>, string, Exception)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.logit_nlog.loglevel-system.collections.generic.dictionary_system.string-system.object_-system.string-system.exception___5yngu4) | private | Writes the item (message with optional event properties and exception) into the log |
+ | [LogIt(LogLevel, string, Exception)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.logit_nlog.loglevel-system.string-system.exception___hxtfrf) | private | Writes the item (message with optional exception) into the log |
+ | [LogIt(LogLevel, string, string, Exception)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.logit_nlog.loglevel-system.string-system.string-system.exception___1l4ejwt) | private | Writes the item (message with optional exception) with correlation Id into the log |
+ | [Trace(Dictionary<string,object>, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.trace_system.collections.generic.dictionary_system.string-system.object_-system.string___1k5wn70) | public | Writes the diagnostic message at the `Trace` level. |
+ | [TraceCorr(string, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.tracecorr_system.string-system.string___1e218kz) | public | Writes the diagnostic message at the `Trace` level with correlation ID |
+ | [Warn(Dictionary<string,object>, Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.warn_system.collections.generic.dictionary_system.string-system.object_-system.exception-system.string___8kyvvj) | public | Writes the diagnostic message at the `Warn` level. |
+ | [Warn(Dictionary<string,object>, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.warn_system.collections.generic.dictionary_system.string-system.object_-system.string___wuc2dz) | public | Writes the diagnostic message at the `Warn` level. |
+ | [WarnCorr(string, Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.warncorr_system.string-system.exception-system.string___sfdb1u) | public | Writes the diagnostic message at the `Warn` level with correlation ID. |
+ | [WarnCorr(string, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.warncorr_system.string-system.string___cfr64e) | public | Writes the diagnostic message at the `Warn` level with correlation ID. |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## LoggerExt.CreateException<TException>(string, Exception) Method ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Type: [LoggerExt](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.loggerext__ac9km2)
+Sources: App_Packages\RadCommons.logging.CommonLogging\LoggerExt.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+Writes the diagnostic message at the `Fatal` level. Creates and returns the exception of given type
+
+
+
+```csharp
+private static LoggerExt.TException CreateException(string message, Exception innerException = null) where TException: Exception
+```
+
+Type parameters
Flag whether the exception is to be catch by exception filter
Implements: [ILogger.ErrorFltr<TException>(ILogger.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.errorfltr--1_--0-system.string-system.boolean___135nosm)
+
+
+### Example ###
+The following code logs any exception without catching it (function returns false by default)
+```csharp
+ try
+ {
+ ...
+ }
+ catch (Exception e) when (Logger.FatalFltr(e)) {}
+```
+ The following code catch and log the ArgumentException and logs any other exception without catching it.
+```csharp
+ try
+ {
+ ...
+ }
+ catch (ArgumentException e) when (Logger.ErrorFltr(e,catchIt:true)) {}
+ catch (Exception e) when (Logger.FatalFltr(e)) {}
+```
+
+
+
+### Remarks ###
+This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## LoggerExt.ErrorFltrCorr<TException>(string, LoggerExt.TException, string, bool) Method ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Type: [LoggerExt](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.loggerext__ac9km2)
+Sources: App_Packages\RadCommons.logging.CommonLogging\LoggerExt.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+Writes the diagnostic message at the `Error` level and returns the exception of given type
+
+
+
+```csharp
+public bool ErrorFltrCorr(string correlationId, LoggerExt.TException exception, string message = null, bool catchIt = false) where TException: Exception
+```
+
+Type parameters
Flag whether the exception is to be catch by exception filter
Implements: [ILogger.ErrorFltrCorr<TException>(string, ILogger.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.errorfltrcorr--1_system.string---0-system.string-system.boolean___1spds2w)
+
+
+### Remarks ###
+This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
+
+
+### See Also ###
+[ErrorFltr<TException>(LoggerExt.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.errorfltr--1_--0-system.string-system.boolean___ipfsfa)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## LoggerExt.ErrorPassThrough(Exception, string) Method ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Type: [LoggerExt](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.loggerext__ac9km2)
+Sources: App_Packages\RadCommons.logging.CommonLogging\LoggerExt.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+Writes the diagnostic message at the `Error` level and returns given exception
+
+
+
+```csharp
+public Exception ErrorPassThrough(Exception exception, string message = null)
+```
+
+Method parameters
Flag whether the exception is to be catch by exception filter
Implements: [ILogger.FatalFltr<TException>(ILogger.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.fatalfltr--1_--0-system.string-system.boolean___1av7ixa)
+
+
+### Remarks ###
+This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
+
+
+### See Also ###
+[ErrorFltr<TException>(LoggerExt.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.errorfltr--1_--0-system.string-system.boolean___ipfsfa)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## LoggerExt.FatalFltrCorr<TException>(string, LoggerExt.TException, string, bool) Method ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Type: [LoggerExt](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.loggerext__ac9km2)
+Sources: App_Packages\RadCommons.logging.CommonLogging\LoggerExt.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+Writes the diagnostic message at the `Fatal` level and returns catchIt value.
+
+
+
+```csharp
+public bool FatalFltrCorr(string correlationId, LoggerExt.TException exception, string message = null, bool catchIt = false) where TException: Exception
+```
+
+Type parameters
Flag whether the exception is to be catch by exception filter
Implements: [ILogger.FatalFltrCorr<TException>(string, ILogger.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.fatalfltrcorr--1_system.string---0-system.string-system.boolean___a9m338)
+
+
+### Remarks ###
+This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
+
+
+### See Also ###
+[ErrorFltr<TException>(LoggerExt.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.loggerext.errorfltr--1_--0-system.string-system.boolean___ipfsfa)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## LoggerExt.FatalPassThrough(Exception, string) Method ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Type: [LoggerExt](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.loggerext__ac9km2)
+Sources: App_Packages\RadCommons.logging.CommonLogging\LoggerExt.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+Writes the diagnostic message at the `Fatal` level and returns given exception >
+
+
+
+```csharp
+public Exception FatalPassThrough(Exception exception, string message = null)
+```
+
+Method parameters
Implements: [ILogger.WarnCorr(string, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.warncorr_system.string-system.string___pr2tiu)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ILogger Interface ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Sources: App_Packages\RadCommons.logging.CommonLogging\ILogger.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+Logger interface - wrapper around the NLog.ILogger with some additional methods
+
+
+
+```csharp
+internal interface ILogger : ILogger
+```
+
+Implemented by: [net.adamec.lib.common.logging.LoggerExt](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.loggerext__ac9km2)
+Implements: NLog.ILogger, NLog.ILoggerBase, NLog.ISuppress
+
+
+### Methods ###
+
+ | Name | Modifier | Summary |
+ | ------ | ---------- | --------- |
+ | [Debug(Dictionary<string,object>, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.debug_system.collections.generic.dictionary_system.string-system.object_-system.string___jxdraq) | public abstract | Writes the diagnostic message at the `Debug` level. |
+ | [DebugCorr(string, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.debugcorr_system.string-system.string___aozvfj) | public abstract | Writes the diagnostic message at the `Debug` level with correlation ID. |
+ | [Error(Dictionary<string,object>, Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.error_system.collections.generic.dictionary_system.string-system.object_-system.exception-system.string___1watp5d) | public abstract | Writes the diagnostic message at the `Error` level. |
+ | [Error(Dictionary<string,object>, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.error_system.collections.generic.dictionary_system.string-system.object_-system.string___kfa9gl) | public abstract | Writes the diagnostic message at the `Error` level. |
+ | [Error<TException>(string, Exception)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.error--1_system.string-system.exception___pmrssh) | public abstract | Writes the diagnostic message at the `Error` level. Creates and returns the exception of given type |
+ | [ErrorCorr(string, Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.errorcorr_system.string-system.exception-system.string___1qll13u) | public abstract | Writes the diagnostic message at the `Error` level with correlation ID. |
+ | [ErrorCorr(string, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.errorcorr_system.string-system.string___coifvu) | public abstract | Writes the diagnostic message at the `Error` level with correlation ID. |
+ | [ErrorCorr<TException>(string, ILogger.TException, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.errorcorr--1_system.string---0-system.string___eypxkv) | public abstract | Writes the diagnostic message at the `Error` level and returns the exception of given type |
+ | [ErrorCorr<TException>(string, string, Exception)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.errorcorr--1_system.string-system.string-system.exception___91akh7) | public abstract | Writes the diagnostic message at the `Error` level with correlation ID. Creates and returns the exception of given type |
+ | [ErrorFltr<TException>(ILogger.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.errorfltr--1_--0-system.string-system.boolean___135nosm) | public abstract | Writes the diagnostic message at the `Error` level and returns the exception of given type |
+ | [ErrorFltrCorr<TException>(string, ILogger.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.errorfltrcorr--1_system.string---0-system.string-system.boolean___1spds2w) | public abstract | Writes the diagnostic message at the `Error` level and returns the exception of given type |
+ | [ErrorPassThrough(Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.errorpassthrough_system.exception-system.string___1vc33gk) | public abstract | Writes the diagnostic message at the `Error` level and returns given exception |
+ | [Fatal(Dictionary<string,object>, Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.fatal_system.collections.generic.dictionary_system.string-system.object_-system.exception-system.string___175gumn) | public abstract | Writes the diagnostic message at the `Fatal` level. |
+ | [Fatal(Dictionary<string,object>, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.fatal_system.collections.generic.dictionary_system.string-system.object_-system.string___1yxmkzz) | public abstract | Writes the diagnostic message at the `Fatal` level. |
+ | [Fatal<TException>(string, Exception)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.fatal--1_system.string-system.exception___x5u73) | public abstract | Writes the diagnostic message at the `Fatal` level. Creates and returns the exception of given type |
+ | [FatalCorr(string, Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.fatalcorr_system.string-system.exception-system.string___yt34nm) | public abstract | Writes the diagnostic message at the `Fatal` level with correlation ID. |
+ | [FatalCorr(string, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.fatalcorr_system.string-system.string___ufcx32) | public abstract | Writes the diagnostic message at the `Fatal` level with correlation ID. |
+ | [FatalCorr<TException>(string, ILogger.TException, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.fatalcorr--1_system.string---0-system.string___108vdu1) | public abstract | Writes the diagnostic message at the `Fatal` level and returns the exception of given type |
+ | [FatalCorr<TException>(string, string, Exception)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.fatalcorr--1_system.string-system.string-system.exception___1hlu7x) | public abstract | Writes the diagnostic message at the `Fatal` level with correlation ID. Creates and returns the exception of given type |
+ | [FatalFltr<TException>(ILogger.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.fatalfltr--1_--0-system.string-system.boolean___1av7ixa) | public abstract | Writes the diagnostic message at the `Fatal` level and returns catchIt value. |
+ | [FatalFltrCorr<TException>(string, ILogger.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.fatalfltrcorr--1_system.string---0-system.string-system.boolean___a9m338) | public abstract | Writes the diagnostic message at the `Fatal` level and returns catchIt value. |
+ | [FatalPassThrough(Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.fatalpassthrough_system.exception-system.string___1fx8xs8) | public abstract | Writes the diagnostic message at the `Fatal` level and returns given exception |
+ | [Info(Dictionary<string,object>, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.info_system.collections.generic.dictionary_system.string-system.object_-system.string___1kbhewr) | public abstract | Writes the diagnostic message at the `Info` level. |
+ | [InfoCorr(string, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.infocorr_system.string-system.string___2iypny) | public abstract | Writes the diagnostic message at the `Info` level with correlation ID. |
+ | [Trace(Dictionary<string,object>, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.trace_system.collections.generic.dictionary_system.string-system.object_-system.string___15kc02k) | public abstract | Writes the diagnostic message at the `Trace` level. |
+ | [TraceCorr(string, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.tracecorr_system.string-system.string___1bdni2z) | public abstract | Writes the diagnostic message at the `Trace` level with correlation ID. |
+ | [Warn(Dictionary<string,object>, Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.warn_system.collections.generic.dictionary_system.string-system.object_-system.exception-system.string___10z37vj) | public abstract | Writes the diagnostic message at the `Warn` level. |
+ | [Warn(Dictionary<string,object>, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.warn_system.collections.generic.dictionary_system.string-system.object_-system.string___1hy0rp3) | public abstract | Writes the diagnostic message at the `Warn` level. |
+ | [WarnCorr(string, Exception, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.warncorr_system.string-system.exception-system.string___1kh0i9m) | public abstract | Writes the diagnostic message at the `Warn` level with correlation ID. |
+ | [WarnCorr(string, string)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.warncorr_system.string-system.string___pr2tiu) | public abstract | Writes the diagnostic message at the `Warn` level with correlation ID. |
+
+
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ILogger.Debug(Dictionary<string,object>, string) Method ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Type: [ILogger](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.ilogger__y2ollm)
+Sources: App_Packages\RadCommons.logging.CommonLogging\ILogger.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+Writes the diagnostic message at the `Debug` level.
+
+
+
+```csharp
+public abstract void Debug(Dictionary eventProperties, [Localizable(false)] string message)
+```
+
+Method parameters
Flag whether the exception is to be catch by exception filter
+
+
+### Example ###
+The following code logs any exception without catching it (function returns false by default)
+```csharp
+ try
+ {
+ ...
+ }
+ catch (Exception e) when (Logger.FatalFltr(e)) {}
+```
+ The following code catch and log the ArgumentException and logs any other exception without catching it.
+```csharp
+ try
+ {
+ ...
+ }
+ catch (ArgumentException e) when (Logger.ErrorFltr(e,catchIt:true)) {}
+ catch (Exception e) when (Logger.FatalFltr(e)) {}
+```
+
+
+
+### Remarks ###
+This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ILogger.ErrorFltrCorr<TException>(string, ILogger.TException, string, bool) Method ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Type: [ILogger](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.ilogger__y2ollm)
+Sources: App_Packages\RadCommons.logging.CommonLogging\ILogger.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+Writes the diagnostic message at the `Error` level and returns the exception of given type
+
+
+
+```csharp
+public abstract bool ErrorFltrCorr(string correlationId, ILogger.TException exception, string message = null, bool catchIt = false) where TException: Exception
+```
+
+Type parameters
Flag whether the exception is to be catch by exception filter
+
+
+### Remarks ###
+This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
+
+
+### See Also ###
+[ErrorFltr<TException>(ILogger.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.errorfltr--1_--0-system.string-system.boolean___135nosm)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ILogger.ErrorPassThrough(Exception, string) Method ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Type: [ILogger](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.ilogger__y2ollm)
+Sources: App_Packages\RadCommons.logging.CommonLogging\ILogger.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+Writes the diagnostic message at the `Error` level and returns given exception
+
+
+
+```csharp
+public abstract Exception ErrorPassThrough(Exception exception, string message = null)
+```
+
+Method parameters
Flag whether the exception is to be catch by exception filter
+
+
+### Remarks ###
+This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
+
+
+### See Also ###
+[ErrorFltr<TException>(ILogger.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.errorfltr--1_--0-system.string-system.boolean___135nosm)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ILogger.FatalFltrCorr<TException>(string, ILogger.TException, string, bool) Method ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Type: [ILogger](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.ilogger__y2ollm)
+Sources: App_Packages\RadCommons.logging.CommonLogging\ILogger.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+Writes the diagnostic message at the `Fatal` level and returns catchIt value.
+
+
+
+```csharp
+public abstract bool FatalFltrCorr(string correlationId, ILogger.TException exception, string message = null, bool catchIt = false) where TException: Exception
+```
+
+Type parameters
Flag whether the exception is to be catch by exception filter
+
+
+### Remarks ###
+This function is intended for catch exception filters. The parameter catchIt defines whether the exception filter will be applied after logging. The exception will be catch when catchIt is true, otherwise the filter is evaluated as false and it will continue with finding the catch clause (in both cases the log entry will be created)
+
+
+### See Also ###
+[ErrorFltr<TException>(ILogger.TException, string, bool)](net.adamec.lib.common.logging__1g9pm29.md#m-net.adamec.lib.common.logging.ilogger.errorfltr--1_--0-system.string-system.boolean___135nosm)
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+## ILogger.FatalPassThrough(Exception, string) Method ##
+Namespace: [net.adamec.lib.common.logging](net.adamec.lib.common.logging__1g9pm29.md#n-net.adamec.lib.common.logging__1g9pm29)
+Assembly: net.adamec.lib.common.actor
+Type: [ILogger](net.adamec.lib.common.logging__1g9pm29.md#t-net.adamec.lib.common.logging.ilogger__y2ollm)
+Sources: App_Packages\RadCommons.logging.CommonLogging\ILogger.cs
+Source-only packages: [RadCommons.logging.CommonLogging](src-only-packages--.md#src-only-package--RadCommons.logging.CommonLogging)
+
+
+Writes the diagnostic message at the `Fatal` level and returns given exception
+
+
+
+```csharp
+public abstract Exception FatalPassThrough(Exception exception, string message = null)
+```
+
+Method parameters
Flag whether the object is disposing (called from [Dispose()](net.adamec.lib.common.utils__7vdji9.md#m-net.adamec.lib.common.utils.basedisposable.dispose__6qe9ri) method). False if called from destructor
+
+
+Go to [namespaces](net.adamec.lib.common.actor.md#namespace-list) or [types](net.adamec.lib.common.actor.md#type-list) or [source-only packages](net.adamec.lib.common.actor.md#package-list)
+
+
+
+
+
+
diff --git a/net.adamec.lib.common.actor.test/Build.props b/net.adamec.lib.common.actor.test/Build.props
new file mode 100644
index 0000000..d077bb3
--- /dev/null
+++ b/net.adamec.lib.common.actor.test/Build.props
@@ -0,0 +1,6 @@
+
+
+
+ false
+
+
diff --git a/net.adamec.lib.common.actor/actor/ActorRefInternal.cs b/net.adamec.lib.common.actor/actor/ActorRefInternal.cs
index c0e7d7b..ce04ac4 100644
--- a/net.adamec.lib.common.actor/actor/ActorRefInternal.cs
+++ b/net.adamec.lib.common.actor/actor/ActorRefInternal.cs
@@ -3,7 +3,6 @@
using net.adamec.lib.common.actor.actorsystem;
using net.adamec.lib.common.actor.message;
using net.adamec.lib.common.actor.queue;
-using net.adamec.lib.common.extensions;
using net.adamec.lib.common.logging;
namespace net.adamec.lib.common.actor.actor
diff --git a/net.adamec.lib.common.actor/actorsystem/ActorSystem.cs b/net.adamec.lib.common.actor/actorsystem/ActorSystem.cs
index c267fc8..960272a 100644
--- a/net.adamec.lib.common.actor/actorsystem/ActorSystem.cs
+++ b/net.adamec.lib.common.actor/actorsystem/ActorSystem.cs
@@ -16,7 +16,7 @@ namespace net.adamec.lib.common.actor.actorsystem
///
public class ActorSystem : BaseDisposable, IActorSystem
{
- protected static ILogger Logger = CommonLogging.CreateLogger();
+ internal static ILogger Logger = CommonLogging.CreateLogger();
///
///
diff --git a/net.adamec.lib.common.actor/actorsystem/ActorSystemDispatcher.cs b/net.adamec.lib.common.actor/actorsystem/ActorSystemDispatcher.cs
index 357287a..56d6fb6 100644
--- a/net.adamec.lib.common.actor/actorsystem/ActorSystemDispatcher.cs
+++ b/net.adamec.lib.common.actor/actorsystem/ActorSystemDispatcher.cs
@@ -6,7 +6,6 @@
using net.adamec.lib.common.actor.message;
using net.adamec.lib.common.logging;
using net.adamec.lib.common.utils;
-using net.adamec.lib.common.extensions;
namespace net.adamec.lib.common.actor.actorsystem
{
diff --git a/net.adamec.lib.common.actor/markupdoc.json b/net.adamec.lib.common.actor/markupdoc.json
new file mode 100644
index 0000000..558486d
--- /dev/null
+++ b/net.adamec.lib.common.actor/markupdoc.json
@@ -0,0 +1,16 @@
+{
+ "Output": {
+ "Title":"RAD Actor System Documentation",
+ "Html": true,
+ "Markdown": true,
+ "HtmlExtension": "html",
+ "MarkdownExtension": "md",
+ "SplitNs": true,
+ "SplitType": false
+ },
+ "MicrosoftApi": {
+ "LinkToApi": true,
+ "RequireLocalDoc": false,
+ "ApiBaseUrl": "https://docs.microsoft.com/en-us/dotnet/api/"
+ }
+}
\ No newline at end of file
diff --git a/net.adamec.lib.common.actor/net.adamec.lib.common.actor.csproj b/net.adamec.lib.common.actor/net.adamec.lib.common.actor.csproj
index bf886d8..3517d2e 100644
--- a/net.adamec.lib.common.actor/net.adamec.lib.common.actor.csproj
+++ b/net.adamec.lib.common.actor/net.adamec.lib.common.actor.csproj
@@ -23,16 +23,15 @@
-
-
+ allruntime; build; native; contentfiles; analyzers
-
+ allruntime; build; native; contentfiles; analyzers
-
+ allruntime; build; native; contentfiles; analyzers
diff --git a/readme.md b/readme.md
index 4de1358..838ed5a 100644
--- a/readme.md
+++ b/readme.md
@@ -6,9 +6,13 @@ The purpose is to provide the lightweight in-process asynchronous message based
Actor is a generally any component implementing `IActor` interface registered within the Actor System that is able to receive and process the messages sent from another Actor or even from outside world. The message processing is by design asynchronous where the messages for individual actors are processed in FIFO sequence, but the Actor System also provides the support for synchronous (Request-Reply) pattern.
### Build ###
-The Commons library use the customized MS Build process in projects `build` and `build.tasks`. It's save to remove such projects from solution if needed.
+The library uses the customized MS Build process in projects `build` and `build.tasks`. It's safe to remove such projects from solution if needed.
Details about the build process are described in [build documentation](build/readme.md).
+### Code Documentation ###
+The [code documentation](https://github.com/adamecr/Common.Actor/blob/master/doc/net.adamec.lib.common.actor.md) is generated during the customized build using [MarkupDoc](https://github.com/adamecr/MarkupDoc).
+
+
## Content ##
- [High Level Architecture](#high-level-architecture)
- [Key Interfaces](#key-interfaces)
@@ -493,6 +497,6 @@ public class RoutingKeyExchangeActor : ExchangeActor