1dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine/* 28267511c96e3226e45a0be773ee442b66261824dvchtchetkine * Copyright (C) 2009 The Android Open Source Project 3dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine * 4dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine * Licensed under the Apache License, Version 2.0 (the "License"); 5dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine * you may not use this file except in compliance with the License. 6dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine * You may obtain a copy of the License at 7dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine * 8dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine * http://www.apache.org/licenses/LICENSE-2.0 9dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine * 10dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine * Unless required by applicable law or agreed to in writing, software 11dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine * distributed under the License is distributed on an "AS IS" BASIS, 12dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine * See the License for the specific language governing permissions and 14dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine * limitations under the License. 15dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine */ 16dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine 17dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine/** \file 18dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine This file consists of implementation of class AdbIOCompletion that 198267511c96e3226e45a0be773ee442b66261824dvchtchetkine encapsulates a generic wrapper around OVERLAPPED Win32 structure 208267511c96e3226e45a0be773ee442b66261824dvchtchetkine returned from asynchronous I/O requests. 21dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine*/ 22dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine 23dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine#include "stdafx.h" 24dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine#include "adb_io_completion.h" 25dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine 26dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkineAdbIOCompletion::AdbIOCompletion(AdbEndpointObject* parent_io_obj, 27dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine ULONG expected_trans_size, 28dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine HANDLE event_hndl) 29dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine : AdbObjectHandle(AdbObjectTypeIoCompletion), 30dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine expected_transfer_size_(expected_trans_size), 31dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine parent_io_object_(parent_io_obj) { 32dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine ATLASSERT(NULL != parent_io_obj); 33dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine parent_io_obj->AddRef(); 34dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine ZeroMemory(&overlapped_, sizeof(overlapped_)); 35dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine overlapped_.hEvent = event_hndl; 36dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine} 37dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine 38dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkineAdbIOCompletion::~AdbIOCompletion() { 39dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine parent_io_object_->Release(); 40dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine} 41dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine 42dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkinebool AdbIOCompletion::IsCompleted() { 43dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine SetLastError(NO_ERROR); 44dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine if (!IsOpened()) { 45dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine SetLastError(ERROR_INVALID_HANDLE); 46dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine return true; 47dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine } 48dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine 49dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine return HasOverlappedIoCompleted(overlapped()) ? true : false; 50dceaaa52cec11631c72cfea5fb74ee607602ecdevchtchetkine} 51