Move MTProxy policy engine from tgnet/ to self-contained jni/mtproxy/ module. Consolidate reconnect hold computation into single MtProxyRetryAuthority owner (was split across Connection, ConnectionSocket, endpoint policy, and probe coordinator, causing hold misalignment bugs). Add MtProxyTerminalDiagnostic module with host tests for pre-I/O verdict preservation (fixes 02.07/30.06 clobber livelocks). Auto-generate phase classification (isPreIoTerminalVerdict, needsReconnectBackoff, isObservationFacadePhase, isLocalSchedulerTimeout) from single Python contract into both C++ and Java to eliminate parallel maintenance. Pass native hold (coordinator terminal hold + endpoint cooldown) via JNI to Java so reconnect timer and health store use THE clock, not re-derived ones. Optimize log flushing: batch debug lines, flush errors immediately. Add module boundary guard, host build system (MSVC), and unit tests for retry logic and terminal diagnostic derivation.
33 lines
1 KiB
C++
33 lines
1 KiB
C++
#ifndef MTPROXYRECOVERYPOLICY_H
|
|
#define MTPROXYRECOVERYPOLICY_H
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
#include <string>
|
|
|
|
#include "MtProxyFailureEvidence.h"
|
|
|
|
enum class MtProxyRecoveryActionKind : uint8_t {
|
|
IgnoreLocal,
|
|
KeepSameRecipeBackoff,
|
|
AdvanceClientHelloOnly,
|
|
AdvanceParserAllowed,
|
|
PostHandshakeShapingBackoff,
|
|
ProfilesExhaustedBackoff,
|
|
TerminalConfigFailure,
|
|
};
|
|
|
|
struct MtProxyRecoveryAction {
|
|
MtProxyRecoveryActionKind kind = MtProxyRecoveryActionKind::IgnoreLocal;
|
|
bool canRotate = false;
|
|
bool canBackoff = false;
|
|
bool terminalConfig = false;
|
|
};
|
|
|
|
MtProxyRecoveryAction mtProxyRecoveryActionForEvidence(MtProxyFailureEvidenceKind evidence);
|
|
MtProxyRecoveryAction mtProxyRecoveryActionForPhase(const std::string &phase, size_t responseBytes);
|
|
const char *mtProxyRecoveryActionName(MtProxyRecoveryActionKind kind);
|
|
bool mtProxyRecoveryActionAdvancesRecipe(MtProxyRecoveryAction action);
|
|
bool mtProxyRecoveryActionAllowsParserVariants(MtProxyRecoveryAction action);
|
|
|
|
#endif
|