sockscape/server_old/Entrypoint.cs

71 lines
2.3 KiB
C#
Raw Normal View History

2017-04-25 21:01:41 +00:00
using System;
using System.Collections.Generic;
2017-08-22 20:59:41 +00:00
using System.Configuration;
2017-08-23 21:00:44 +00:00
using System.Data.Entity;
2017-04-25 21:01:41 +00:00
using System.Linq;
using System.Text;
using System.Threading.Tasks;
2017-06-05 12:20:39 +00:00
//using CircleScape.DAL;
2017-05-16 21:17:07 +00:00
using System.Numerics;
2017-07-22 19:27:41 +00:00
using Glove;
2017-06-06 21:13:25 +00:00
using System.Net;
2017-06-16 21:00:01 +00:00
using Kneesocks;
2017-08-23 21:00:44 +00:00
using MySql.Data.Entity;
2017-04-21 21:04:03 +00:00
2017-07-22 19:27:41 +00:00
namespace SockScape {
static class ServerContext {
public static Dictionary<ushort, Server<PlayerConnection>> Servers { get; }
= new Dictionary<ushort, Server<PlayerConnection>>();
public static Dictionary<ushort, Pool<PlayerConnection>> Pools { get; }
= new Dictionary<ushort, Pool<PlayerConnection>>();
public static Packet StatusUpdatePacket {
get {
var packet = new Packet(kIntraSlaveId.StatusUpdate, (byte)Servers.Count);
foreach(var pool in Pools)
packet.AddRegions(pool.Key.Pack(), ((ushort)pool.Value.ConnectionCount).Pack(), Servers[pool.Key].Port.Pack());
return packet;
}
}
}
2017-04-21 21:04:03 +00:00
class Entrypoint {
static void Main(string[] args) {
foreach(var server in Configuration.Servers) {
var pool = new Pool<PlayerConnection> {
InitialCount = 3,
InitialSize = 3,
SizeGrowth = 3,
2017-08-16 21:01:08 +00:00
MaxSize = 100,
MaxTotal = server["Max Users"] ?? Configuration.General["Max Users"]
};
2017-08-29 20:14:44 +00:00
var serverHandle = new Server<PlayerConnection>((ushort)server["Port"], pool, server);
ServerContext.Pools.Add((ushort)server["Id"], pool);
ServerContext.Servers.Add((ushort)server["Id"], serverHandle);
2017-08-29 20:14:44 +00:00
serverHandle.Start();
}
2017-09-08 21:06:55 +00:00
if(Configuration.General["Run Master"])
MasterIntraServer.Initialize();
MasterIntraClient.Initialize();
2017-05-04 12:21:27 +00:00
2017-05-25 21:08:21 +00:00
/*while(true) {
2017-05-11 21:03:28 +00:00
var send = Console.ReadLine();
PoolManager.Pending.Broadcast(Encoding.UTF8.GetBytes(send));
2017-05-04 21:09:38 +00:00
// logic processing loop
2017-05-25 21:08:21 +00:00
}*/
Console.ReadLine();
2017-05-12 21:05:18 +00:00
2017-09-08 21:06:55 +00:00
MasterIntraClient.Close();
if(Configuration.General["Run Master"])
MasterIntraServer.Close();
2017-04-21 21:04:03 +00:00
}
}
}