Patrick Schurig 4ae1939f93 [3a] structs protocole + interfaces LoadAdapter/Scheduler (zéro comportement)
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>
2026-06-07 22:02:18 +02:00

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;
};