hotfix for ConvertMessage

+ added nullable support
This commit is contained in:
Alexander Kozachenko 2023-11-24 11:25:13 +03:00
parent 2b28af2a4d
commit 8471489a95
3 changed files with 23 additions and 4 deletions

View File

@ -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>

View File

@ -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);

View File

@ -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>