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); }
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); } } }
public void Disconnect() { OpenStreams.Clear(); _socket.Dispose(); }