/*
 * Copyright (c) 2025 Huawei Device Co., Ltd.
 * 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.
 */

#include "ecmascript/platform/signal_manager.h"

#include <algorithm>
#include <csignal>
#include <csignal>
#include <vector>

namespace panda::ecmascript {

class VirtualSignalManager : public SignalManager {
public:
    VirtualSignalManager() = default;
    ~VirtualSignalManager() = default;
    void AddSpecialHandler([[maybe_unused]] SigchainAction newAction) override {}
    void RemoveSpecialHandler([[maybe_unused]] SigchainHandler handler) override {}
    bool IsClaimed() override { return false; }
    int Claim() override { return -1; }
};

bool SignalManager::InitSigchainAction([[maybe_unused]] SigchainAction action,
    [[maybe_unused]] const std::vector<int> &signos,
    [[maybe_unused]] SigchainHandler handler)
{
    return false;
}

size_t SignalManager::GetSigchainActionSize() { return 0; }

void SignalManager::Initialize() {}

SignalManager &SignalManager::GetSignalManager([[maybe_unused]] int signo)
{
    static VirtualSignalManager dummy;
    return dummy;
}
} // namespace panda::ecmascript