public async Task <IPlayer> JoinRoom(string roomId, Guid connectionId) { var command = new JoinRoomCommand { RoomId = roomId }; await _context.Send(command); return(new PlayerProxy(_context, roomId)); }
private static async Task TestHandler() { var config = ClientConfiguration.LocalhostSilo(); config.AddSimpleMessageStreamProvider(StreamConstants.ProviderName); var host = new OrleansClientInitializer(config); var client = await OrleansClient.Initialize(host); var container = new Container(); container.RegisterClientHandlerFactory(); var handlerFactory = container.GetInstance <ClientHandlerFactory>(); using (var connection = await client.Connect(Guid.NewGuid())) { var handler = handlerFactory.Create(connection); handler.Events.Subscribe(Write); var meta = new Metadata(); var loginResponse = await handler.Handle(new LoginCommand(), meta); Write(loginResponse); meta = new Metadata { AccessToken = loginResponse.AccessToken }; var joinRoom = new JoinRoomCommand { RoomId = "conreign" }; await handler.Handle(joinRoom, meta); var updatePlayer = new UpdatePlayerOptionsCommand { RoomId = "conreign", Options = new PlayerOptionsData { Nickname = "smolyakoff", Color = "#010101" } }; await handler.Handle(updatePlayer, meta); var write = new SendMessageCommand { RoomId = "conreign", Text = "Hello!" }; await handler.Handle(write, meta); var getState = new GetRoomStateCommand { RoomId = "conreign" }; var state = await handler.Handle(getState, meta); Write(state); } }
public void Execute(JoinRoomCommand command) { Room room = _repo.GetByName(command.RoomName); if (room == null) { throw new FunctionalException(new FunctionalError("US004.1", $"A room with the name '{command.RoomName}' does not exist")); } room.Join(command.PlayerID, command.Colour); _repo.Save(room); }
public IActionResult Post([FromBody] JoinRoomCommand command) { try { _roomService.Execute(command); return(Ok()); } catch (FunctionalException ex) { return(BadRequest(ex.FunctionalErrors.ToArray())); } }
public RoomsViewModel(string userName, int userId, MainWindowViewModel mainWindowViewModel) { Task.Run(() => UpdateRoomsAsync()); this.userId = userId; _mainWindowViewModel = mainWindowViewModel; UserName = userName; LogoutCommand = new LogoutCommand(this); JoinRoomCommand = new JoinRoomCommand(this); ToggleCreateRoomCommand = new ToggleCreateRoomCommand(this); CreateRoomViewModel = new CreateRoomViewModel(this); CreateRoomVisibility = Visibility.Collapsed; }
public static FlatBufferBuilder buildJoinRoom(string roomId, string authToken) { var builder = new FlatBufferBuilder(1); var authTokenStr = builder.CreateString(authToken); var roomIdStr = builder.CreateString(roomId); JoinRoomCommand.StartJoinRoomCommand(builder); JoinRoomCommand.AddToken(builder, authTokenStr); JoinRoomCommand.AddRoomId(builder, roomIdStr); var joinCmd = JoinRoomCommand.EndJoinRoomCommand(builder); // TODO: extract the below part out to be reusable. Message.StartMessage(builder); Message.AddDataType(builder, schema.Data.JoinRoomCommand); Message.AddData(builder, joinCmd.Value); var data = Message.EndMessage(builder); builder.Finish(data.Value); return(builder); }
public async Task <IActionResult> JoinRoom(JoinRoomCommand command) { return(Ok(await _mediator.Send(command))); }