コード例 #1
0
        public async Task <IPropagatorBlock <byte[], byte[]> > CreateStream(string path)
        {
            var streamId = _streamId++;
            var buff     = Command.CreateOpenCommand(path, streamId);

            _socket.Send(buff, buff.Length);
            var stream = new AdbStream(_socket, streamId);

            stream.OnWriting += StreamWriting;
            OpenStreams.Add(streamId, stream);
            StartReading();
            return(stream.Block);
        }
コード例 #2
0
        private void OnPacket(AdbPacket packet)
        {
            _lastPacket = packet == null ? _lastPacket : packet;
            if (PrintMessages)
            {
                Console.WriteLine($"Received command {_lastPacket}");
            }
            else
            {
#if DEBUG
                Debug.WriteLine($"Received command {_lastPacket}");
#endif
            }

            if (_lastPacket.Command == Command.CNXN)
            {
                HostVersion = _lastPacket.arg1;
                HostMaxData = _lastPacket.arg2;
                State       = ConnectionState.Connected;
                Connected?.Invoke(this, EventArgs.Empty);
            }
            else if (_lastPacket.Command == Command.OKAY)
            {
                var streamId = _lastPacket.arg2;
                if (OpenStreams.ContainsKey(streamId))
                {
                    var stream = OpenStreams[streamId];
                    stream.RemoteId = _lastPacket.arg1;
                    //stream.HandlePacket(_lastPacket);
                }
            }
            else if (_lastPacket.Command == Command.WRTE)
            {
                var streamId = _lastPacket.arg2;
                if (OpenStreams.ContainsKey(streamId))
                {
                    var stream = OpenStreams[streamId];
                    stream.HandlePacket(_lastPacket);
                    //Suspended = true;
                }
            }
            else if (_lastPacket.Command == Command.CLSE)
            {
                var streamId = _lastPacket.arg2;
                if (OpenStreams.ContainsKey(streamId))
                {
                    OpenStreams[streamId].Close();
                    OpenStreams.Remove(streamId);
                }
            }
        }
コード例 #3
0
 public void Disconnect()
 {
     OpenStreams.Clear();
     _socket.Dispose();
 }