-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Start implementing the Master Server.
- Loading branch information
Showing
5 changed files
with
89 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
//! The Master Server keeps track of all Cluster Servers. It also allocates | ||
//! connecting users to Cluster Servers automatically, or allows the users | ||
//! to manually select one. | ||
|
||
const std = @import("std"); | ||
const sustenet = @import("root").sustenet; | ||
const network = @import("network"); | ||
const world = sustenet.world; | ||
|
||
const ArrayList = std.ArrayList; | ||
const AutoHashMap = std.AutoHashMap; | ||
const BaseServer = @import("root").sustenet.transport.BaseServer; | ||
|
||
const MasterServer = @This(); | ||
|
||
/// A list of clients that have been registered as cluster clients. | ||
cluster_ids: ArrayList(i32), | ||
|
||
cluster_info: AutoHashMap(i32, world.ClusterInfo), | ||
|
||
super: BaseServer, | ||
|
||
pub fn new(allocator: std.mem.Allocator, max_connections: ?i32, port: ?u16) !MasterServer { | ||
// RSAManager.loadPubKeys(); | ||
// AESManager.loadKeys(); | ||
|
||
var master_server = MasterServer{ | ||
.super = try BaseServer.new( | ||
allocator, | ||
BaseServer.ServerType.MasterServer, | ||
max_connections orelse 0, | ||
port orelse 6256, | ||
), | ||
|
||
.cluster_ids = ArrayList(i32).init(allocator), | ||
.cluster_info = AutoHashMap(i32, world.ClusterInfo).init(allocator), | ||
}; | ||
|
||
MasterServer.initializeData(allocator); | ||
|
||
try master_server.super.start(allocator); | ||
|
||
return master_server; | ||
} | ||
|
||
fn initializeData(allocator: std.mem.Allocator) void { | ||
if (BaseServer.packetHandlers == null) { | ||
BaseServer.packetHandlers = AutoHashMap(i32, BaseServer.packetHandler).init(allocator); | ||
} | ||
} | ||
|
||
//#region Memory Functions | ||
pub fn deinit(self: *MasterServer) void { | ||
self.cluster_ids.deinit(); | ||
self.cluster_info.deinit(); | ||
self.super.deinit(); | ||
} | ||
//#endregion |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
//! Master namespace | ||
|
||
pub const MasterServer = @import("MasterServer.zig"); | ||
|
||
test { | ||
@import("std").testing.refAllDecls(@This()); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters