public async Task <(bool, int)> TryAddTreadToBoardAsync(Tread tread, string boardName) { var board = await _context.Boards.FirstOrDefaultAsync(b => b.Name == boardName); if (board == null) { return(false, 0); } TreadEntity treadEntity = tread.ToEntity(); treadEntity.Board = board; treadEntity.TimeOfLastPost = treadEntity.Posts.First().Time; _context.Treads.Add(treadEntity); try { await _context.SaveChangesAsync(); } catch (Exception ex) { _logger.LogError(ex, "An error occurred while saving changes in the TryAddTreadToBoardAsync method."); return(false, 0); } return(true, treadEntity.Id); }
public async Task <IActionResult> Edit(int id, [Bind("ID,Title,Author,Text")] Tread tread) { if (id != tread.ID) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(tread); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!TreadExists(tread.ID)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(tread)); }
// Update is called once per frame void Update() { // Вот код для обычного движения //float moveX = Input.GetAxis("Horizontal"); //rb.MovePosition(rb.position + Vector2.right * moveX * speed * Time.deltaTime); float moveX = Input.GetAxis("Horizontal"); // Коэффициент float i = 50 while (moveX != 0f, speed > 0f ); {if (moveX == 0f, speed > 4) ; { // Экстренное торможение при высокой скорости while (speed != 0f) ; { // Время скольжения time_sleep = i * speed Tread.Sleep(time_sleep) speed = speed - 1f } } if (moveX != 0, speed != 0) { // Обычное движение rb.MovePosition(rb.position + Vector2.right * moveX * speed * Time.deltaTime); } } }
public Tuple <uint, byte[]> Read(uint fid, ulong offset, uint count) { var request = new Tread(fid, offset, count) { Tag = (ushort)_tagQueue.Dequeue() }; _protocol.Write(request); var r = _protocol.Read(); if (r.Tag != request.Tag) { throw new TagMismatchException(r.Tag, request.Tag); } Rread response; try { response = (Rread)r; } catch (InvalidCastException) { if (r.Type != (byte)MessageType.Rerror) { throw new UnexpectedMessageException(request.Type, r.Type); } var err = (Rerror)r; throw new ServerErrorException(err.Ename); } _tagQueue.Enqueue(request.Tag); return(new Tuple <uint, byte[]>(response.Count, response.Data)); }
public static TreadEntity ToEntity(this Tread tread) { return(new() { Id = tread.Id, Posts = tread.Posts?.Select(p => p.ToEntity())?.ToList() }); }
public static CreatePostViewModel ToCreatePostViewModel(this Tread tread, string boardName, string boardDescription, Post post = null) { var treadViewModel = new TreadViewModel(tread.Posts.Select((p, i) => new PostViewModel(p, ++i, false)).ToList(), tread.Id); return(new CreatePostViewModel(new List <TreadViewModel> { treadViewModel }, boardName, post, boardDescription, tread.Id)); }
public async Task <IActionResult> Create([Bind("ID,Title,Author,Text")] Tread tread) { if (ModelState.IsValid) { _context.Add(tread); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(tread)); }
private async Task <IActionResult> StartNewTread(Post post, string boardName, Destination dest) { if (!ModelState.IsValid) { if (boardName == null) { return(BadRequest()); } var board = await _repository.FindAndLoadBoardAsync(boardName, 1, PageSize); if (board == null) { return(NotFound()); } var count = await _repository.CountTreadsAsync(boardName); return(View(board.ToCreatePostViewModel(PostsFromTreadOnBoardView, count, PageSize, post: post))); } await post.ParseMessageAsync(_parser, boardName); var tread = new Tread(new List <Post> { post }); var(isSuccess, treadId) = await _repository.TryAddTreadToBoardAsync(tread, boardName); if (!isSuccess) { ModelState.AddModelError("", "Unable to create tread."); var board = await _repository.FindAndLoadBoardAsync(boardName, 1, PageSize); if (board == null) { return(NotFound()); } var count = await _repository.CountTreadsAsync(boardName); return(View(board.ToCreatePostViewModel(PostsFromTreadOnBoardView, count, PageSize, post: post))); } if (dest == Destination.Board) { return(RedirectToRoute("Board", new { boardName })); } else { return(RedirectToRoute("Tread", new { boardName, treadId })); } }
static void Main(string[] args) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { Console.Write(i * j + "\t"); } Console.WriteLine(); } //Console.ReadKey(); Tread.Sleep(1000); }
public void TestReadWriteTread() { var stream = new MemoryStream(); var message = new Tread(1, 65535L, 1) { Tag = 1246 }; var p = new Protocol.Protocol(stream); p.Write(message); stream.Position = 0; var data = new byte[message.Length]; var length = stream.Read(data, 0, (int)message.Length); Assert.That(length, Is.EqualTo(message.Length)); stream.Position = 0; var message2 = (Tread)p.Read(); Assert.That(message, Is.EqualTo(message2)); }
public Message Read() { Message message; var bytes = ReadMessage(); var offset = Constants.Bit32Sz; var type = bytes[offset]; switch (type) { case (byte)MessageType.Tversion: message = new Tversion(bytes); break; case (byte)MessageType.Rversion: message = new Rversion(bytes); break; case (byte)MessageType.Tauth: message = new Tauth(bytes); break; case (byte)MessageType.Rauth: message = new Rauth(bytes); break; case (byte)MessageType.Tattach: message = new Tattach(bytes); break; case (byte)MessageType.Rattach: message = new Rattach(bytes); break; case (byte)MessageType.Rerror: message = new Rerror(bytes); break; case (byte)MessageType.Tflush: message = new Tflush(bytes); break; case (byte)MessageType.Rflush: message = new Rflush(bytes); break; case (byte)MessageType.Twalk: message = new Twalk(bytes); break; case (byte)MessageType.Rwalk: message = new Rwalk(bytes); break; case (byte)MessageType.Topen: message = new Topen(bytes); break; case (byte)MessageType.Ropen: message = new Ropen(bytes); break; case (byte)MessageType.Tcreate: message = new Tcreate(bytes); break; case (byte)MessageType.Rcreate: message = new Rcreate(bytes); break; case (byte)MessageType.Tread: message = new Tread(bytes); break; case (byte)MessageType.Rread: message = new Rread(bytes); break; case (byte)MessageType.Twrite: message = new Twrite(bytes); break; case (byte)MessageType.Rwrite: message = new Rwrite(bytes); break; case (byte)MessageType.Tclunk: message = new Tclunk(bytes); break; case (byte)MessageType.Rclunk: message = new Rclunk(bytes); break; case (byte)MessageType.Tremove: message = new Tremove(bytes); break; case (byte)MessageType.Rremove: message = new Rremove(bytes); break; case (byte)MessageType.Tstat: message = new Tstat(bytes); break; case (byte)MessageType.Rstat: message = new Rstat(bytes); break; case (byte)MessageType.Twstat: message = new Twstat(bytes); break; case (byte)MessageType.Rwstat: message = new Rwstat(bytes); break; default: throw new Exception("Unsupported Message Type"); } return(message); }