/// <summary> /// 指示编写器使用远程所需的新设置并发送设置确认帧。 /// </summary> /// <param name="newRemoteSettings"></param> /// <returns></returns> public async Task <Http2Error?> ApplyAndAckRemoteSettings( Settings newRemoteSettings) { ChangeSettingsRequest changeRequest = null; lock (shared.Mutex) { if (shared.CloseRequested) { return(null); } changeRequest = new ChangeSettingsRequest { NewRemoteSettings = newRemoteSettings, Completed = new AsyncManualResetEvent(false), }; shared.ChangeSettingsRequest = changeRequest; } wakeupWriter.Set(); await changeRequest.Completed; return(changeRequest.Result); }
protected override void SetSettings(MatchSettings settings) { var settingsReturned = new SettingsPresentation(); var request = new ChangeSettingsRequest { UserKey = WindowsContext.UserKey, Settings = settings }; var response = _settingsClientProxy.SetSettings(request); settingsReturned.Settings = response.Settings; settingsReturned.SettingsChanged = response.Success; }
protected override void SetSettings(MatchSettings settings) { var settingsReturned = new SettingsPresentation(); var request = new ChangeSettingsRequest { UserKey = _baseServiceFacade.UserKey, Settings = settings }; var response = _settingsClientProxy.SetSettings(request); settingsReturned.Settings = response.Settings; settingsReturned.SettingsChanged = response.Success; }
public IActionResult ChangeUserSettings([FromForm] ChangeSettingsRequest request) { var user = UserService.Get(long.Parse(User.Identity.Name)); if (user == null) { return(NotFound(new ResponseModel { Success = false, Message = "Пользователь не найден" })); } if (request.Avatar != null) { var file = FileService.SaveFileForm(request.Avatar); file.Wait(); user.Photo = file.Result; } else { user.Photo = null; } if (request.FirstName != user.FirstName) { user.FirstName = request.FirstName; } if (request.LastName != user.LastName) { user.LastName = request.LastName; } UserService.Update(user); return(Ok(new DataResponse <UserViewModel> { Data = new UserViewModel(user) })); }
public ChangeSettingsResponse SetSettings(ChangeSettingsRequest request) { return(Channel.SetSettings(request)); }
private async Task RunAsync() { try { EnsureBuffer(Connection.PersistentBufferSize); if (!Connection.IsServer) { await ClientPreface.WriteAsync(outStream); } await WriteSettingsAsync(Connection.localSettings); bool continueRun = true; while (continueRun) { await this.wakeupWriter; WriteRequest writeRequest = null; ChangeSettingsRequest changeSettings = null; bool doClose = false; lock (shared.Mutex) { // 1: 应用新设置 // 2: 写一帧 // 3: 如果需要,请关闭连接 if (shared.ChangeSettingsRequest != null) { changeSettings = shared.ChangeSettingsRequest; shared.ChangeSettingsRequest = null; } else { writeRequest = GetNextReadyWriteRequest(); } if (changeSettings == null && writeRequest == null) { if (shared.CloseRequested) { doClose = true; } else { this.wakeupWriter.Reset(); } } } if (changeSettings != null) { var err = ApplyNewSettings( changeSettings.NewRemoteSettings); if (err == null) { EnsureBuffer(Connection.PersistentBufferSize); await WriteSettingsAckAsync(); } changeSettings.Result = err; changeSettings.Completed.Set(); } else if (writeRequest != null) { EnsureBuffer(Connection.PersistentBufferSize); await ProcessWriteRequestAsync(writeRequest); ReleaseBuffer(Connection.PersistentBufferSize); } else if (doClose) { continueRun = false; } } } catch (Exception e) { LogHelper.Error("ConnectionWriter.RunAsync", e); } await CloseNow(false); lock (shared.Mutex) { shared.CloseRequested = true; if (shared.ChangeSettingsRequest != null) { shared.ChangeSettingsRequest.Completed.Set(); shared.ChangeSettingsRequest = null; } FinishAllOutstandingWritesLocked(); } if (outBuf != null) { Connection.config.BufferPool.Return(outBuf); outBuf = null; } }
public async Task <ActionResult <ChangeSettingsResponse> > ChangeSettings([FromBody] ChangeSettingsRequest req) { try { string country = req.Country; string town = req.Town; int radius = req.Radius; if (country == null || string.IsNullOrWhiteSpace(country) || country.Length != 2) { return new ChangeSettingsResponse() { statusCode = WebTypes.StatusCode.ERROR, errorMessage = "Not a valid country!" } } ; if (town == null || string.IsNullOrWhiteSpace(town) || town.Length > 20) { return new ChangeSettingsResponse() { statusCode = WebTypes.StatusCode.ERROR, errorMessage = "Not a valid town!" } } ; if (radius > 100 || radius < 0) { return new ChangeSettingsResponse() { statusCode = WebTypes.StatusCode.ERROR, errorMessage = "Not a valid radius!" } } ; await HttpContext.Session.LoadAsync().ConfigureAwait(false); if (!HttpContext.Session.Keys.Contains("Id")) { return(Unauthorized()); } int UserId = HttpContext.Session.GetInt32("Id").GetValueOrDefault(-1); if (UserId == -1) { return(Unauthorized()); } User user = this._db.User .Where(u => u.Id == UserId) .FirstOrDefault(); user.Country = req.Country; user.Town = req.Town; user.Radius = req.Radius; await this._db.SaveChangesAsync().ConfigureAwait(false); return(new ChangeSettingsResponse() { statusCode = WebTypes.StatusCode.OK }); } catch { return(new ChangeSettingsResponse() { statusCode = WebTypes.StatusCode.ERROR, errorMessage = "Server error!" }); } }