binder_wrapper.cc revision 08c9891c9c850db7d7fdfcd77d694bcefe836884
1be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat/* 2be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat * Copyright (C) 2015 The Android Open Source Project 3be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat * 4be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat * Licensed under the Apache License, Version 2.0 (the "License"); 5be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat * you may not use this file except in compliance with the License. 6be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat * You may obtain a copy of the License at 7be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat * 8be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat * http://www.apache.org/licenses/LICENSE-2.0 9be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat * 10be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat * Unless required by applicable law or agreed to in writing, software 11be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat * distributed under the License is distributed on an "AS IS" BASIS, 12be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat * See the License for the specific language governing permissions and 14be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat * limitations under the License. 15be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat */ 16be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat 17be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat#include <binderwrapper/binder_wrapper.h> 18be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat 19be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat#include <base/logging.h> 20be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat 21be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat#include "real_binder_wrapper.h" 22be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat 23be43a39ff56ca8840ccfed048f75633adc535e92Daniel Eratnamespace android { 24be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat 25be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat// Singleton instance. 26be43a39ff56ca8840ccfed048f75633adc535e92Daniel EratBinderWrapper* BinderWrapper::instance_ = nullptr; 27be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat 28be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat// static 29be43a39ff56ca8840ccfed048f75633adc535e92Daniel Eratvoid BinderWrapper::Create() { 30be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat CHECK(!instance_) << "Already initialized; missing call to Destroy()?"; 31be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat instance_ = new RealBinderWrapper(); 32be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat} 33be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat 34be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat// static 35be43a39ff56ca8840ccfed048f75633adc535e92Daniel Eratvoid BinderWrapper::InitForTesting(BinderWrapper* wrapper) { 36be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat CHECK(!instance_) << "Already initialized; missing call to Destroy()?"; 37be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat instance_ = wrapper; 38be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat} 39be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat 40be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat// static 41be43a39ff56ca8840ccfed048f75633adc535e92Daniel Eratvoid BinderWrapper::Destroy() { 42be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat CHECK(instance_) << "Not initialized; missing call to Create()?"; 43be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat delete instance_; 44be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat instance_ = nullptr; 45be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat} 46be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat 47be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat// static 48be43a39ff56ca8840ccfed048f75633adc535e92Daniel EratBinderWrapper* BinderWrapper::Get() { 49be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat CHECK(instance_) << "Not initialized; missing call to Create()?"; 50be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat return instance_; 51be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat} 52be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat 5308c9891c9c850db7d7fdfcd77d694bcefe836884Alex Vakulenko// static 5408c9891c9c850db7d7fdfcd77d694bcefe836884Alex VakulenkoBinderWrapper* BinderWrapper::GetOrCreateInstance() { 5508c9891c9c850db7d7fdfcd77d694bcefe836884Alex Vakulenko if (!instance_) 5608c9891c9c850db7d7fdfcd77d694bcefe836884Alex Vakulenko instance_ = new RealBinderWrapper(); 5708c9891c9c850db7d7fdfcd77d694bcefe836884Alex Vakulenko return instance_; 5808c9891c9c850db7d7fdfcd77d694bcefe836884Alex Vakulenko} 5908c9891c9c850db7d7fdfcd77d694bcefe836884Alex Vakulenko 60be43a39ff56ca8840ccfed048f75633adc535e92Daniel Erat} // namespace android 61