LoadAction (kind+funding+§6 fields), LoadDescriptor, SurplusContext (§5), Plan/Slot, ILoadAdapter, IScheduler — noms de champs = OPTIMIZER_PROTOCOL.md. energyplugin.pri inclut etm/etm.pri. Build Qt6 vert, aucun fichier upstream touché. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
20 lines
727 B
C++
20 lines
727 B
C++
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
// Copyright (C) 2025 - 2026, Patrick Schurig / ETM PowerSync
|
|
#pragma once
|
|
|
|
#include "../types/surpluscontext.h"
|
|
#include "../types/plan.h"
|
|
|
|
// Interface pure — implémentations concrètes héritent de QObject + IScheduler.
|
|
//
|
|
// Règle : getPlan() DOIT retourner immédiatement (modèle cache §AGENTS invariant 5).
|
|
// SocketScheduler renvoie son dernier plan en cache et recalcule en fond.
|
|
// SocketScheduler embarque un RuleBasedScheduler comme fallback et renvoie
|
|
// TOUJOURS un Plan exploitable — l'abstain du protocole n'atteint jamais l'arbitre.
|
|
class IScheduler {
|
|
public:
|
|
virtual ~IScheduler() = default;
|
|
|
|
virtual Plan getPlan(const SurplusContext &ctx) = 0;
|
|
};
|