コード例 #1
0
        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));

        }
コード例 #3
0
        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);
            }
        }