public override IEnumerator OnReceive(SESSION_T session, Gamnet.Packet packet) { Debug.Assert(Gamnet.Util.Debug.IsMainThread()); //Debug.Log($"Gamnet.Server.Session.PacketHandler_EstablishSessionLink.OnReceive"); SystemPacket.MsgCliSvr_EstablishSessionLink_Req req = packet.Deserialize <SystemPacket.MsgCliSvr_EstablishSessionLink_Req>(); SystemPacket.MsgSvrCli_EstablishSessionLink_Ans ans = new SystemPacket.MsgSvrCli_EstablishSessionLink_Ans(); ans.error_code = 0; try { if (string.Empty != session.session_token) { throw new System.InvalidOperationException($"already linked session"); } session.session_token = System.Guid.NewGuid().ToString(); session.link_establish = true; session.OnConnect(); } catch (System.Exception e) { ans.error_code = e.HResult; Debug.LogError(e.ToString()); } ans.session_key = session.session_key; ans.session_token = session.session_token; Gamnet.Packet ansPacket = new Gamnet.Packet(); ansPacket.Id = Gamnet.SystemPacket.MsgSvrCli_EstablishSessionLink_Ans.MSG_ID; ansPacket.Serialize(ans); session.Send(ansPacket); yield break; }
private void Send_EstablishSessionLink_Req() { // Debug.Log($"{Util.Debug.__FUNC__()}"); SystemPacket.MsgCliSvr_EstablishSessionLink_Req req = new SystemPacket.MsgCliSvr_EstablishSessionLink_Req(); Gamnet.Packet packet = new Gamnet.Packet(); packet.Id = SystemPacket.MsgCliSvr_EstablishSessionLink_Req.MSG_ID; packet.Serialize(req); Send(packet); }