public async void Send(IEnumerable <ICommand> commands) { try { List <byte[]> rawCommands = new List <byte[]>(); int sum = 0; foreach (ICommand command in commands) { if (command == null) { continue; } DataOutputStream outputStream = new DataOutputStream(); command.Write(outputStream); byte[] temp = outputStream.GetData(); sum += temp.Length; rawCommands.Add(temp); } byte[] binary = new byte[sum]; int position = 0; foreach (byte[] raw in rawCommands) { binary.IntelligentMerge(raw, position); position += raw.Length; } await _stream.WriteAsync(binary, 0, binary.Length); } catch (Exception e) { _logger.LogError(e); } }
public void Execute(IClient initiator, KillScreenRepairRequest command) { initiator.Controller.HangarAssembly.ChangeHitpoints(1000, false, false); DataOutputStream outputStream = new DataOutputStream(); command.requestModule.Write(outputStream); byte[] result = outputStream.GetData(); initiator.Receive(result.SubArray(2, result.Length - 2)); }
public async void Send(ICommand command) { try { DataOutputStream outputStream = new DataOutputStream(); command.Write(outputStream); byte[] binary = outputStream.GetData(); await _stream.WriteAsync(binary, 0, binary.Length); } catch (Exception e) { _logger.LogError(e); } }