Skip to content

Commit 92e7b38

Browse files
committed
Initial 508 changes
1 parent 12f629d commit 92e7b38

36 files changed

+1069
-49
lines changed

NetScape.Abstractions/Extensions/ByteBufferExtensions.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ namespace NetScape.Abstractions.Extensions
77
{
88
public static class ByteBufferExtensions
99
{
10+
static Encoding Iso_8859 { get; } = Encoding.GetEncoding("ISO-8859-1");
11+
1012
public static string ReadString(this IByteBuffer buffer)
1113
{
1214
return ReadString(buffer, 10);
@@ -23,6 +25,21 @@ public static string ReadString(this IByteBuffer buffer, int terminator)
2325
return strBldr.ToString();
2426
}
2527

28+
public static void WriteSmart(this IByteBuffer buffer, int value)
29+
{
30+
if (value < 128)
31+
buffer.WriteByte(value);
32+
else
33+
buffer.WriteShort(32768 + value);
34+
}
35+
36+
public static void Write8859String(this IByteBuffer buffer, string str)
37+
{
38+
byte[] bytes = Iso_8859.GetBytes(str);
39+
buffer.WriteBytes(bytes);
40+
buffer.WriteByte(0);
41+
}
42+
2643
public static IByteBuffer CompressGzip(this IByteBuffer buffer)
2744
{
2845
var data = buffer.GetBytes();
@@ -79,8 +96,8 @@ public static void DecodeXtea(this IByteBuffer buffer, uint[] keys, int start, i
7996
k1 -= (l1 >> 5 ^ l1 << 4) + l1 ^ keys[sum & 3] + sum;
8097
}
8198
buffer.SetReaderIndex(buffer.ReaderIndex - 8);
82-
buffer.WriteInt((int) k1);
83-
buffer.WriteInt((int) l1);
99+
buffer.WriteInt((int)k1);
100+
buffer.WriteInt((int)l1);
84101
}
85102
buffer.SetReaderIndex(l);
86103
}
@@ -105,8 +122,8 @@ public static void EncodeXtea(this IByteBuffer buffer, uint[] keys, int start, i
105122
}
106123

107124
buffer.SetWriterIndex(buffer.WriterIndex - 8);
108-
buffer.WriteInt((int) l);
109-
buffer.WriteInt((int) i1);
125+
buffer.WriteInt((int)l);
126+
buffer.WriteInt((int)i1);
110127
}
111128
buffer.SetWriterIndex(o);
112129
}

NetScape.Abstractions/Interfaces/Cache/IReferenceTableCache.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
using System;
22
using System.Collections.Concurrent;
33
using System.Collections.Generic;
4+
using Autofac;
45
using NetScape.Abstractions.Cache;
56

67
namespace NetScape.Abstractions.Interfaces.Cache
78
{
8-
public interface IReferenceTableCache : IDisposable
9+
public interface IReferenceTableCache : IDisposable, IStartable
910
{
1011
ConcurrentDictionary<CacheIndex, ReferenceTableFile> CachedReferenceTables { get; set; }
1112
void FlushCachedReferenceTables();

NetScape.Abstractions/NetScape.Abstractions.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<PackageReference Include="Autofac" Version="6.1.0" />
1111
<PackageReference Include="Dawn.Guard" Version="1.12.0" />
1212
<PackageReference Include="DotNetty.Codecs" Version="0.6.0" />
13+
<PackageReference Include="DotNetty.Handlers" Version="0.6.0" />
1314
<PackageReference Include="DotNetty.Transport" Version="0.6.0" />
1415
<PackageReference Include="Google.Protobuf" Version="3.15.8" />
1516
<PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="5.0.1" />

NetScape.GameServer/IO/EventLoop/BaseLoopGroupFactory.cs renamed to NetScape.GameServer/EventLoop/BaseLoopGroupFactory.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
using System;
1+
using DotNetty.Transport.Channels;
2+
using System;
23
using System.Collections.Generic;
34
using System.Linq;
45
using System.Threading;
56
using System.Threading.Tasks;
6-
using DotNetty.Transport.Channels;
77

8-
namespace NetScape.Modules.Server.IO.EventLoop
8+
namespace NetScape.Modules.Server.EventLoop
99
{
1010
/// <summary>
1111
/// The <see cref="BaseLoopGroupFactory"/> class keeps references of event loop groups that are created

NetScape.GameServer/IO/EventLoop/GameServerEventLoopGroupFactory.cs renamed to NetScape.GameServer/EventLoop/GameServerEventLoopGroupFactory.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
using NetScape.Abstractions.Interfaces.IO.EventLoop;
2-
using DotNetty.Transport.Channels;
3-
using System.Threading.Tasks;
1+
using DotNetty.Transport.Channels;
42
using Microsoft.Extensions.Configuration;
3+
using NetScape.Abstractions.Interfaces.IO.EventLoop;
54

6-
namespace NetScape.Modules.Server.IO.EventLoop
5+
namespace NetScape.Modules.Server.EventLoop
76
{
87
public class GameServerEventLoopGroupFactory : BaseLoopGroupFactory, IEventLoopGroupFactory
98
{
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
using NetScape.Abstractions.Interfaces.IO;
2-
using NetScape.Abstractions.Interfaces.IO.EventLoop;
3-
using NetScape.Abstractions.IO;
4-
using DotNetty.Transport.Bootstrapping;
1+
using DotNetty.Transport.Bootstrapping;
52
using DotNetty.Transport.Channels;
63
using DotNetty.Transport.Channels.Sockets;
4+
using NetScape.Abstractions.Interfaces.IO;
5+
using NetScape.Abstractions.Interfaces.IO.EventLoop;
76
using Serilog;
87
using System.Net;
98
using System.Threading.Tasks;
109

11-
namespace NetScape.Modules.Server.IO
10+
namespace NetScape.Modules.Server
1211
{
1312
public sealed class GameServer : IGameServer
1413
{
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using DotNetty.Buffers;
2+
using DotNetty.Transport.Channels;
3+
using Serilog;
4+
using System;
5+
6+
namespace NetScape.Modules.Server
7+
{
8+
public class GameServerChannelHandler : SimpleChannelInboundHandler<IByteBuffer>
9+
{
10+
public override void ExceptionCaught(IChannelHandlerContext context, Exception exception)
11+
{
12+
Log.Logger.Error(exception, nameof(GameServerChannelHandler));
13+
}
14+
15+
protected override void ChannelRead0(IChannelHandlerContext ctx, IByteBuffer msg)
16+
{
17+
msg.Retain();
18+
ctx.FireChannelRead(msg);
19+
}
20+
}
21+
}

NetScape.GameServer/GameServerModule.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
using NetScape.Abstractions.Interfaces.IO;
1+
using Autofac;
2+
using NetScape.Abstractions.Interfaces.IO;
23
using NetScape.Abstractions.Interfaces.IO.EventLoop;
34
using NetScape.Abstractions.IO;
4-
using NetScape.Modules.Server.IO;
5-
using NetScape.Modules.Server.IO.EventLoop;
6-
using Autofac;
75
using NetScape.Abstractions.Model.Game;
8-
using NetScape.Abstractions.Interfaces.Messages;
6+
using NetScape.Modules.Server.EventLoop;
97

108
namespace NetScape.Modules.Server
119
{
@@ -23,6 +21,7 @@ protected override void Load(ContainerBuilder builder)
2321
{
2422
builder.RegisterType<GameServer>().As<IGameServer>();
2523
builder.RegisterType<ServerChannelInitializer>();
24+
builder.RegisterType<GameServerChannelHandler>().AsSelf();
2625
builder.RegisterType<GameServerEventLoopGroupFactory>()
2726
.As<IEventLoopGroupFactory>();
2827
builder.RegisterInstance(_gameServerParams).As<IGameServerParameters>();

NetScape.Abstractions/IO/ServerChannelinitializer.cs renamed to NetScape.GameServer/ServerChannelinitializer.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
using DotNetty.Transport.Channels;
1+
using DotNetty.Handlers.Logging;
2+
using DotNetty.Transport.Channels;
23
using NetScape.Abstractions.Interfaces.Login;
34

4-
namespace NetScape.Abstractions.IO
5+
namespace NetScape.Modules.Server
56
{
67
public class ServerChannelInitializer : ChannelInitializer<IChannel>
78
{
@@ -15,6 +16,7 @@ public ServerChannelInitializer(ILoginProvider loginProvider)
1516
protected override void InitChannel(IChannel channel)
1617
{
1718
var pipeline = channel.Pipeline;
19+
pipeline.AddLast(new GameServerChannelHandler());
1820
pipeline.AddLast(_loginProvider.Provide());
1921
}
2022
}

NetScape.Modules.Cache/CacheModule.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class CacheModule : Module
1010
protected override void Load(ContainerBuilder builder)
1111
{
1212
builder.RegisterType<FileStore>().As<IFileStore>().As<IStartable>().SingleInstance();
13-
builder.RegisterType<RuneTek5Cache>().As<IReferenceTableCache>().SingleInstance();
13+
builder.RegisterType<RuneTek5Cache>().As<IReferenceTableCache>().As<IStartable>().SingleInstance();
1414
}
1515
}
1616
}

0 commit comments

Comments
 (0)