public void Run() { Compose(); MessageSenders.FirstOrDefault(x => x.Name == "Email").Send("It will work, you will give me money"); //foreach (var messageSenders in MessageSenders.FirstOrDefault(x => x.Name == "Email")) //{ // messageSenders.Send("Hello MEF"); //} }
public async Task <Sender> Get(string entitypath, string viaEntityPath, string namespaceName) { var buffer = await MessageSenders.GetOrAdd(entitypath + viaEntityPath + namespaceName, async s => { var b = new CircularBuffer <EntityClientEntry>(numberOfSendersPerEntity); for (var i = 0; i < numberOfSendersPerEntity; i++) { var e = new EntityClientEntry { ClientEntity = await senderFactory(entitypath, viaEntityPath, namespaceName) .ConfigureAwait(false) }; b.Put(e); } return(b); }).ConfigureAwait(false); var entry = buffer.Get(); if (!entry.ClientEntity.IsClosed) { return(entry.ClientEntity); } try { await entry.Mutex.WaitAsync() .ConfigureAwait(false); if (entry.ClientEntity.IsClosed) { entry.ClientEntity = await senderFactory(entitypath, viaEntityPath, namespaceName) .ConfigureAwait(false); } return(entry.ClientEntity); } finally { entry.Mutex.Release(); } }
public void Handle(int @event, PeerIdentity sender) { ReceivedMessages.Add(@event); MessageSenders.Add(sender); }