public override Task <MigrateInResponse> MigrateIn(MigrateInRequest request, ServerCallContext context) { if (!tokenCache.TryGetValue(request.Token, out TokenEntry data)) { throw new RpcException(new Status(StatusCode.Unauthenticated, "Invalid token")); } if (data.AccountId != request.AccountId) { throw new RpcException(new Status(StatusCode.PermissionDenied, "Invalid token for account")); } tokenCache.Remove(request.Token); return(Task.FromResult(new MigrateInResponse { CharacterId = data.CharacterId })); }
public override void Handle(T session, IByteReader packet) { session.AccountId = packet.ReadLong(); ulong token = packet.Read <ulong>(); logger.LogInformation("LOGIN USER TO GAME: {AccountId}", session.AccountId); var request = new MigrateInRequest { AccountId = session.AccountId, Token = token, }; var response = worldClient.MigrateIn(request); session.CharacterId = response.CharacterId; session.Send(Packet.Of(SendOp.REQUEST_SYSTEM_INFO)); ByteWriter moveResultPacket = Packet.Of(SendOp.MOVE_RESULT); moveResultPacket.WriteByte(); session.Send(moveResultPacket); }