-
Notifications
You must be signed in to change notification settings - Fork 27
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #37 from RockLib/async
Message handler interface is async
- Loading branch information
Showing
10 changed files
with
165 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,16 @@ | ||
using System.Collections.Generic; | ||
using System.Threading.Tasks; | ||
|
||
namespace RockLib.Messaging.Tests | ||
{ | ||
public class FakeMessageHandler : IMessageHandler | ||
{ | ||
public List<(IReceiver Receiver, IReceiverMessage Message)> ReceivedMessages { get; } = new List<(IReceiver, IReceiverMessage)>(); | ||
|
||
public void OnMessageReceived(IReceiver receiver, IReceiverMessage message) | ||
public Task OnMessageReceivedAsync(IReceiver receiver, IReceiverMessage message) | ||
{ | ||
ReceivedMessages.Add((receiver, message)); | ||
return Task.FromResult(0); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
using NUnit.Framework; | ||
using RockLib.Messaging.Testing; | ||
using System.Threading.Tasks; | ||
|
||
namespace RockLib.Messaging.Tests | ||
{ | ||
[TestFixture] | ||
public class ReceiverExtensionsTests | ||
{ | ||
[Test] | ||
public async Task TheCallbackPassedToStart1IsInvokedWhenAMessageIsReceived() | ||
{ | ||
var receiver = new FakeReceiver(); | ||
|
||
var received = false; | ||
|
||
receiver.Start(async m => | ||
{ | ||
received = true; | ||
await m.AcknowledgeAsync(); | ||
}); | ||
|
||
await receiver.MessageHandler.OnMessageReceivedAsync(receiver, new FakeReceiverMessage("Hello, world!")); | ||
|
||
Assert.True(received); | ||
} | ||
|
||
[Test] | ||
public async Task TheCallbackPassedToStart2IsInvokedWhenAMessageIsReceived() | ||
{ | ||
var receiver = new FakeReceiver(); | ||
|
||
var received = false; | ||
|
||
receiver.Start(m => | ||
{ | ||
received = true; | ||
m.Acknowledge(); | ||
}); | ||
|
||
await receiver.MessageHandler.OnMessageReceivedAsync(receiver, new FakeReceiverMessage("Hello, world!")); | ||
|
||
Assert.True(received); | ||
} | ||
|
||
[Test] | ||
public async Task TheCallbackPassedToStart3IsInvokedWhenAMessageIsReceived() | ||
{ | ||
var receiver = new FakeReceiver(); | ||
|
||
var received = false; | ||
|
||
receiver.Start(async (r, m) => | ||
{ | ||
received = true; | ||
await m.AcknowledgeAsync(); | ||
}); | ||
|
||
await receiver.MessageHandler.OnMessageReceivedAsync(receiver, new FakeReceiverMessage("Hello, world!")); | ||
|
||
Assert.True(received); | ||
} | ||
|
||
[Test] | ||
public async Task TheCallbackPassedToStart4IsInvokedWhenAMessageIsReceived() | ||
{ | ||
var receiver = new FakeReceiver(); | ||
|
||
var received = false; | ||
|
||
receiver.Start((r, m) => | ||
{ | ||
received = true; | ||
m.Acknowledge(); | ||
}); | ||
|
||
await receiver.MessageHandler.OnMessageReceivedAsync(receiver, new FakeReceiverMessage("Hello, world!")); | ||
|
||
Assert.True(received); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,18 @@ | ||
namespace RockLib.Messaging | ||
using System.Threading.Tasks; | ||
|
||
namespace RockLib.Messaging | ||
{ | ||
/// <summary> | ||
/// Defines a function that handles a received message. | ||
/// Defines a synchronous function that handles a received message. | ||
/// </summary> | ||
/// <param name="receiver">The instance of <see cref="IReceiver"/> that received the message.</param> | ||
/// <param name="message">The message that was received.</param> | ||
public delegate void OnMessageReceivedDelegate(IReceiver receiver, IReceiverMessage message); | ||
|
||
/// <summary> | ||
/// Defines an asynchronous function that handles a received message. | ||
/// </summary> | ||
/// <param name="receiver">The instance of <see cref="IReceiver"/> that received the message.</param> | ||
/// <param name="message">The message that was received.</param> | ||
public delegate Task OnMessageReceivedAsyncDelegate(IReceiver receiver, IReceiverMessage message); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters