using Akka.Configuration;
namespace ZB.MOM.WW.Secrets.Replicator.AkkaDotNet;
///
/// Akka configuration this package contributes.
///
public static class AkkaSecretsReplication
{
///
/// HOCON binding the secret-replication wire protocol to
/// . Merge it into the application's Akka
/// configuration when creating the ActorSystem:
///
/// Config config = AkkaSecretsReplication.SerializationConfig
/// .WithFallback(myAppConfig);
/// ActorSystem.Create("my-system", config);
///
///
///
/// Optional — the protocol DTOs round-trip under Akka's default JSON serializer without it — but
/// recommended, because it makes the serializer carrying secret ciphertext an explicit choice
/// rather than an inherited default, and pins the manifest strings that a future protocol
/// version would bump.
///
public static Config SerializationConfig { get; } = ConfigurationFactory.ParseString($$"""
akka.actor {
serializers {
zb-secrets-replication = "{{typeof(SecretReplicationSerializer).AssemblyQualifiedName}}"
}
serialization-bindings {
"ZB.MOM.WW.Secrets.Replicator.AkkaDotNet.Protocol.SecretRowsMessage, ZB.MOM.WW.Secrets.Replicator.AkkaDotNet" = zb-secrets-replication
"ZB.MOM.WW.Secrets.Replicator.AkkaDotNet.Protocol.SecretManifestAnnounce, ZB.MOM.WW.Secrets.Replicator.AkkaDotNet" = zb-secrets-replication
"ZB.MOM.WW.Secrets.Replicator.AkkaDotNet.Protocol.SecretPullRequest, ZB.MOM.WW.Secrets.Replicator.AkkaDotNet" = zb-secrets-replication
}
serialization-identifiers {
"{{typeof(SecretReplicationSerializer).AssemblyQualifiedName}}" = {{SecretReplicationSerializer.SerializerId}}
}
}
""");
}