}
void AndroidUsbSocket::HandleIncoming(scoped_refptr<AdbMessage> message) {
- if (!device_)
+ if (!device_.get())
return;
CHECK_EQ(message->arg1, local_id_);
case AdbMessage::kCommandCLSE:
if (is_connected_)
device_->Send(AdbMessage::kCommandCLSE, local_id_, 0, "");
- Terminated();
+ Terminated(true);
// "this" can be NULL.
break;
default:
}
}
-void AndroidUsbSocket::Terminated() {
+void AndroidUsbSocket::Terminated(bool closed_by_device) {
is_connected_ = false;
// Break the socket -> device connection, release the device.
delete_callback_.Reset();
device_ = NULL;
+ if (!closed_by_device)
+ return;
+
// Respond to pending callbacks.
if (!connect_callback_.is_null()) {
net::CompletionCallback callback = connect_callback_;
int length,
const net::CompletionCallback& callback) {
if (!is_connected_)
- return device_ ? net::ERR_SOCKET_NOT_CONNECTED : 0;
+ return device_.get() ? net::ERR_SOCKET_NOT_CONNECTED : 0;
if (read_buffer_.empty()) {
read_requests_.push_back(IORequest(buffer, length, callback));
int AndroidUsbSocket::Connect(const net::CompletionCallback& callback) {
DCHECK(CalledOnValidThread());
- if (!device_)
+ if (!device_.get())
return net::ERR_FAILED;
connect_callback_ = callback;
device_->Send(AdbMessage::kCommandOPEN, local_id_, 0, command_);
}
void AndroidUsbSocket::Disconnect() {
- if (!device_)
+ if (!device_.get())
return;
device_->Send(AdbMessage::kCommandCLSE, local_id_, remote_id_, "");
- Terminated();
+ Terminated(false);
}
bool AndroidUsbSocket::IsConnected() const {