# Copyright (C) 2022 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import concurrent.futures as cf
from typing import Optional


class PlatformDelegate:
  """Abstracts operations which can vary based on platform."""

  def create_query_executor(self, trace_count: int
                           ) -> Optional[cf.ThreadPoolExecutor]:
    return None

  def create_load_executor(self,
                           trace_count: int) -> Optional[cf.ThreadPoolExecutor]:
    return None
