-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathUniScanServerChannelInitializer.cs
More file actions
executable file
·46 lines (38 loc) · 1.5 KB
/
Copy pathUniScanServerChannelInitializer.cs
File metadata and controls
executable file
·46 lines (38 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using DotNetty.Codecs;
using DotNetty.Handlers.Logging;
using DotNetty.Transport.Channels;
using Microsoft.Extensions.DependencyInjection;
using Serilog;
using UniScan.Network.Protocol;
using UniScan.Network.Registry;
using UniScan.Network.Socket;
using UniScan.Network.Socket.Configuration;
namespace UniScan.Network.Server;
public class UniScanServerChannelInitializer(
PacketRegistry packetRegistry,
IEnumerable<IPipelineConfigurator> configurators,
IServiceProvider serviceProvider)
: UniScanChannelInitializer(packetRegistry, configurators, serviceProvider)
{
public override bool IsSharable { get; } = true;
protected override void InitChannel(IChannel channel)
{
IChannelPipeline pipeline = channel.Pipeline;
// framing
pipeline.AddLast(new LengthFieldBasedFrameDecoder(DotNetty.Buffers.ByteOrder.LittleEndian, 1048576, 0, 4, 0, 4, true));
pipeline.AddLast(new LengthFieldPrepender(DotNetty.Buffers.ByteOrder.LittleEndian, 4, 0, false));
//our decoders
pipeline.AddLast(new PacketDecoder(this._packetRegistry));
pipeline.AddLast(new PacketEncoder(this._packetRegistry));
//filters
foreach (IPipelineConfigurator configurator in _configurators)
{
configurator.ConfigureFilters(pipeline);
}
//handlers
foreach (IPipelineConfigurator configurator in _configurators)
{
configurator.ConfigureHandlers(pipeline);
}
}
}