private void CreateObserverImpl(CreateObserverReq req, CreateObserverResp resp) { ObserverInfo oi = Server.GameManager.CreateObserver(Server.TeamRegistry.GetTeam(req.Auth.TeamName), req.Auth.ClientName); resp.ObserverId = oi.ObserverId; // FIXME This is probably used by admin client to enter observer mode and/or disable some controls resp.Role = oi.Team.Role; }
public async Task <TeamRole> LoginAsync() { SequenceNumber = 0; _sessionId = 0; lock (_lock) { using ( var adminService = new AdminServiceClient(new BasicHttpBinding(), new EndpointAddress(ConnectionData.Url))) { int sequenceNumber = SequenceNumber; var initLoginReq = new InitLoginReq { Auth = new ReqAuth { ClientName = ConnectionData.Username, TeamName = ConnectionData.TeamName, AuthCode = GetAuthCode(string.Format("{0}:{1}:{2}:{3}{4}", ConnectionData.TeamName, ConnectionData.Username, 0, 0, ConnectionData.Password)), SessionId = 0, SequenceNumber = 0, } }; _stopwatch.Start(); var initLoginResp = adminService.InitLoginAsync(initLoginReq).Result; _stopwatch.Stop(); LastCallTime = _stopwatch.ElapsedMilliseconds; _stopwatch.Reset(); if (initLoginResp.Status != "OK") { throw new Exception(initLoginResp.Message); } var completeReq = new CompleteLoginReq { Auth = new ReqAuth { ClientName = ConnectionData.Username, TeamName = ConnectionData.TeamName, AuthCode = GetAuthCode( string.Format("{0}:{1}:{2}:{3}{4}", ConnectionData.TeamName, ConnectionData.Username, 0, 0, ConnectionData.Password)), SessionId = 0, SequenceNumber = 0, }, ChallengeResponse = GetAuthCode(string.Format("{0}{1}", GetAuthCode(string.Format("{0}{1}", initLoginResp.Challenge, ConnectionData.Password)), ConnectionData.Password)), }; sequenceNumber = SequenceNumber; _stopwatch.Start(); var completeLoginResp = adminService.CompleteLoginAsync(completeReq).Result; _stopwatch.Stop(); LastCallTime = _stopwatch.ElapsedMilliseconds; _stopwatch.Reset(); if (completeLoginResp.Status != "OK") { throw new Exception(completeLoginResp.Message); } _sessionId = completeLoginResp.SessionId; var req = new CreateObserverReq { Auth = new ReqAuth { ClientName = ConnectionData.Username, TeamName = ConnectionData.TeamName, SessionId = _sessionId, SequenceNumber = sequenceNumber, AuthCode = GetAuthCode(string.Format("{0}:{1}:{2}:{3}{4}", ConnectionData.TeamName, ConnectionData.Username, _sessionId, sequenceNumber, ConnectionData.Password)), }, }; _stopwatch.Start(); var resp = adminService.CreateObserverAsync(req).Result; _stopwatch.Stop(); LastCallTime = _stopwatch.ElapsedMilliseconds; _stopwatch.Reset(); if (resp.Status != "OK") { throw new Exception(resp.Message); } _observerId = resp.ObserverId; return(resp.Role); } } }
public CreateObserverResp CreateObserver(CreateObserverReq req) { return(HandleServiceCall(req, new CreateObserverResp(), CreateObserverImpl)); }
private void CreateObserverImpl(CreateObserverReq req, CreateObserverResp resp) { ObserverInfo oi = Server.GameManager.CreateObserver(Server.TeamRegistry.GetTeam(req.Auth.TeamName), req.Auth.ClientName); resp.ObserverId = oi.ObserverId; }