
ru.taskurotta.service.hz.serialization.bson.RetryPolicyConfigContainerBSerializer Maven / Gradle / Ivy
The newest version!
package ru.taskurotta.service.hz.serialization.bson;
import ru.taskurotta.core.RetryPolicyConfig;
import ru.taskurotta.mongodb.driver.BDataInput;
import ru.taskurotta.mongodb.driver.BDataOutput;
import ru.taskurotta.mongodb.driver.CString;
import ru.taskurotta.mongodb.driver.StreamBSerializer;
import ru.taskurotta.transport.model.RetryPolicyConfigContainer;
import java.util.Collections;
import java.util.List;
import static ru.taskurotta.service.hz.serialization.bson.BSerializerTools.readListOfString;
import static ru.taskurotta.service.hz.serialization.bson.BSerializerTools.writeListOfString;
public class RetryPolicyConfigContainerBSerializer implements StreamBSerializer {
public static final CString TYPE = new CString("type");
public static final CString INITIAL_RETRY = new CString("start");
public static final CString MAXIMUM_RETRY = new CString("max");
public static final CString RETRY_EXPIRATION = new CString("retryExp");
public static final CString BACKOFF_COEFFICIENT = new CString("backoffCoefficient");
public static final CString MAXIMUM_ATTEMPTS = new CString("maxAttempts");
public static final CString EXCEPTIONS_TO_EXCLUDE = new CString("exExclude");
public static final CString EXCEPTIONS_TO_RETRY = new CString("eRetry");
@Override
public Class getObjectClass() {
return RetryPolicyConfigContainer.class;
}
@Override
public void write(BDataOutput out, RetryPolicyConfigContainer object) {
out.writeInt(TYPE, object.getType().getValue());
out.writeLong(INITIAL_RETRY, object.getInitialRetryIntervalSeconds());
out.writeLong(MAXIMUM_RETRY, object.getMaximumRetryIntervalSeconds());
out.writeLong(RETRY_EXPIRATION, object.getRetryExpirationIntervalSeconds());
out.writeDouble(BACKOFF_COEFFICIENT, object.getBackoffCoefficient());
out.writeInt(MAXIMUM_ATTEMPTS, object.getMaximumAttempts());
writeListOfString(EXCEPTIONS_TO_EXCLUDE, object.getExceptionsToExclude(), out);
writeListOfString(EXCEPTIONS_TO_RETRY, object.getExceptionsToRetry(), out);
}
@Override
public RetryPolicyConfigContainer read(BDataInput in) {
RetryPolicyConfig.RetryPolicyType policyType = RetryPolicyConfig.RetryPolicyType.build(in.readInt(TYPE));
long initialRetryIntervalSeconds = in.readLong(INITIAL_RETRY);
long maximumRetryIntervalSeconds = in.readLong(MAXIMUM_RETRY);
long retryExpirationIntervalSeconds = in.readLong(RETRY_EXPIRATION);
double backoffCoefficient = in.readDouble(BACKOFF_COEFFICIENT);
int maximumAttempts = in.readInt(MAXIMUM_ATTEMPTS);
List exceptionsToExclude = readListOfString(EXCEPTIONS_TO_EXCLUDE, in, Collections.emptyList());
List exceptionsToRetry = readListOfString(EXCEPTIONS_TO_RETRY, in, Collections.emptyList());
return new RetryPolicyConfigContainer(policyType, initialRetryIntervalSeconds, maximumRetryIntervalSeconds,
retryExpirationIntervalSeconds, backoffCoefficient, maximumAttempts, exceptionsToRetry, exceptionsToExclude);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy