parent
2b28af2a4d
commit
8471489a95
|
@ -29,7 +29,7 @@ public class PipelineMessagePublisher<TMessage> :
|
|||
/// </summary>
|
||||
public IDisposable Subscribe<TDest>(TranslatorBase<TMessage, TDest> translator)
|
||||
{
|
||||
return Subscribe(translator);
|
||||
return Subscribe((ISubscriber<TMessage>)translator);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -8,9 +8,28 @@ public abstract class TranslatorBase<TSource, TDest>(ISubscriber<TDest> destSubs
|
|||
public void OnCompleted() => destSubscriber.OnCompleted();
|
||||
|
||||
/// <inheritdoc/>
|
||||
public void OnNext(TSource message, NextDelegate next) => destSubscriber.OnNext(ConvertMessage(message), next);
|
||||
public void OnNext(TSource message, NextDelegate next)
|
||||
{
|
||||
var dest = ConvertMessage(message);
|
||||
if (dest != null)
|
||||
{
|
||||
destSubscriber.OnNext(dest, next);
|
||||
}
|
||||
else
|
||||
{
|
||||
next();
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract TDest ConvertMessage(TSource message);
|
||||
/// <summary>
|
||||
/// Converts a message from one type to another.
|
||||
/// </summary>
|
||||
/// <param name="message"> Source message. </param>
|
||||
/// <returns> Destination message or null if unconvertable. </returns>
|
||||
/// <remarks>
|
||||
/// - The NextDelegate is triggered by target subsriber, or by this class if unconvertable.
|
||||
/// </remarks>
|
||||
protected abstract TDest? ConvertMessage(TSource message);
|
||||
|
||||
public static TranslatorBase<TSource, TDest> Create(ISubscriber<TDest> destSubscriber, Func<TSource, TDest> converter)
|
||||
=> new SimpleTranslator<TSource, TDest>(destSubscriber, converter);
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<metadata>
|
||||
<id>ProSol.Messaging</id>
|
||||
<title>ProSol.Messaging</title>
|
||||
<version>4.0.0-rc.1</version>
|
||||
<version>4.0.0-rc.2</version>
|
||||
<authors>Alex Kozachenko</authors>
|
||||
<owners>Alex Kozachenko</owners>
|
||||
<projectUrl> https://git.disroot.org/alexenko/ProSol.Messaging </projectUrl>
|
||||
|
|
Loading…
Reference in New Issue