// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <hidladapter/HidlBinderAdapter.h>
#include <map>

namespace android {
namespace hardware {
namespace details {

// This is copied from libhidl/adapter/HidlBinderAdapter.cpp.
// There is a lot of other uncompilable content in that file, so just
// taking this fairly simple implementation in isolation.

// If an interface is adapted to 1.0, it can then not be adapted to 1.1 in the
// same process.
// This poses a problem in the following scenario:
// auto interface = new V1_1::implementation::IFoo;
// hidlObject1_0->foo(interface) // adaptation set at 1.0
// hidlObject1_1->bar(interface) // adaptation still is 1.0
// This could be solved by keeping a map of IBase,fqName -> IBase, but then
// you end up with multiple names for the same interface.
sp<IBase> adaptWithDefault(const sp<IBase>& something,
                           const std::function<sp<IBase>()>& makeDefault) {
  static std::map<sp<IBase>, sp<IBase>> sAdapterMap;

  if (something == nullptr) {
    return something;
  }

  auto it = sAdapterMap.find(something);
  if (it == sAdapterMap.end()) {
    it = sAdapterMap.insert(it, {something, makeDefault()});
  }

  return it->second;
}

}  // namespace details
}  // namespace hardware
}  // namespace android
