public SimplePipe() { InputStream = new SimplePipeInputStream <T>(this); OutputStream = new SimplePipeOutputStream <T>(this); _rendezvous = new MatchingQueue <ReadOnlyMemory <T>, Memory <T>, int, int>(Copy); }
public static void Main(string[] args) { RoomMgr roomMgr = new RoomMgr(); Scene scene = new Scene(); MatchingQueue maching_queue = new MatchingQueue(); //DataMgr dataMgr = new DataMgr ();//管理数据的类,先暂时去除 ServNet servNet = new ServNet(); servNet.proto = new ProtocolBytes(); servNet.Start("127.0.0.1", 1234); while (true) { string str = Console.ReadLine(); switch (str) { case "quit": servNet.Close(); return; case "print": servNet.Print(); break; } } }
public MatchingQueue() { instance = this; }
public OccasionalObjectLender() { _matchingQueue = new MatchingQueue <ValueTask <Unit>, LendingData, LendingData, ValueTask <Unit> >(Match); }
protected override async Task OnMessage(MessageEventArgs e) { using (var rs = new System.IO.StreamReader(e.Data)) { string json = rs.ReadToEnd(); NetInfoBase bas = JsonConvert.DeserializeObject <NetInfoBase>(json); Player ply = this.BindPlayer; json = bas.JsonData; if (bas != null && this.OnHallOrder != null) { this.OnHallOrder(this, bas); } try { switch ((HallOrderType)bas.OrderType) { case HallOrderType.请求大厅数据: { //绑定IP this.IP = base.Context.UserEndPoint.Address.ToString(); Log.Print("玩家" + this.IP + "已连接到服务器"); string pid = bas.Tag; Player py = null; if (Management.HasPlayerInOnline(pid)) { py = Management.GetOnlinePlayer(pid); } if (py == null) { py = new Player(); Management.AddToOnline(py); } py.SetHallWebSok(this); this.BindPlayer = py; this.SendHallData(new NetPlayer(py), false); break; } case HallOrderType.进入匹配队列: { MatchingQueue.Enqueue(ply); Log.Print("玩家" + this.BindPlayer.Name + "进入了匹配队列"); break; } case HallOrderType.退出匹配队列: { Log.Print("玩家" + this.BindPlayer.Name + "退出了匹配队列"); MatchingQueue.Remove(ply.PlayerID); break; } case HallOrderType.更新玩家信息: { var info = JsonConvert.DeserializeAnonymousType(json, new { name = "", roleid = 1, headid = 1, gender = 0, }); Management.UpdatePlayer(ply.PlayerID, info.headid, info.roleid, info.gender, info.name); break; } case HallOrderType.创建房间: { var rom = JsonConvert.DeserializeAnonymousType(json, new { pwd = "", bts = 0 }); GameRoom room = new GameRoom(ply, rom.bts, RoomModel.Room, rom.pwd); ply.RoomWhich = room; Management.AddRoom(room); this.SendData(JsonConvert.SerializeObject(new { pid = BindPlayer.PlayerID, roomid = room.RoomID }), HallOrderType.房间创建完毕); break; } case HallOrderType.请求房间列表: { //获取房间信息 var roms = Management.GetRooms().Select(r => { return(new NetRoom() { RoomID = r.RoomID.ToString(), BtScore = r.BtScore, MasterName = r.RoomMaster.Name, MasterHead = r.RoomMaster.HeadID, NowCount = r.MemberCount, }); }).ToArray(); var romjson = JsonConvert.SerializeObject(roms); ply.SendHallData(romjson, HallOrderType.推送房间列表); break; } case HallOrderType.请求排名信息: { //获取排名信息 var rks = Management.GetAllPlayers().OrderBy(r => long.Parse(r.Mark)).ToArray(); var rkjson = JsonConvert.SerializeObject(rks); ply.SendHallData(rkjson, HallOrderType.推送排名信息); break; } } } catch (Exception ex) { Log.Print(ex.Message, ConsoleColor.Red); } } }