Skip to content

Instantly share code, notes, and snippets.

@EngRajabi
Created March 12, 2021 15:19
Show Gist options
  • Save EngRajabi/8a341aed4cc68728f812baff7961c3a4 to your computer and use it in GitHub Desktop.
Save EngRajabi/8a341aed4cc68728f812baff7961c3a4 to your computer and use it in GitHub Desktop.
ChannelService.cs
public class ChannelService<TMessage> where TMessage : class, new()
{
private readonly Channel<TMessage> _serviceChannel;
public ChannelService()
{
_serviceChannel = Channel.CreateBounded<TMessage>(new BoundedChannelOptions(5000)
{
SingleReader = false,
SingleWriter = false,
FullMode = BoundedChannelFullMode.DropWrite
});
}
public async Task Add(TMessage model, CancellationToken cancellationToken)
{
await _serviceChannel.Writer.WriteAsync(model, cancellationToken);
}
public IAsyncEnumerable<TMessage> Get(CancellationToken cancellationToken)
{
return _serviceChannel.Reader.ReadAllAsync(cancellationToken);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment