import com.google.common.annotations.Beta;
import com.google.common.base.Preconditions;
import com.google.common.base.Ticker;
+import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
import javax.annotation.concurrent.ThreadSafe;
import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier;
import org.opendaylight.controller.cluster.common.actor.Dispatchers;
+import org.opendaylight.controller.cluster.io.FileBackedOutputStreamFactory;
+import org.opendaylight.controller.cluster.messaging.MessageSlicer;
import org.opendaylight.yangtools.concepts.Identifiable;
import scala.concurrent.ExecutionContext;
import scala.concurrent.duration.FiniteDuration;
private final Scheduler scheduler;
private final Dispatchers dispatchers;
private final ClientActorConfig config;
+ private final MessageSlicer messageSlicer;
// Hidden to avoid subclassing
ClientActorContext(final ActorRef self, final String persistenceId, final ActorSystem system,
this.executionContext = system.dispatcher();
this.dispatchers = new Dispatchers(system.dispatchers());
this.config = Preconditions.checkNotNull(config);
+
+ messageSlicer = MessageSlicer.builder().messageSliceSize(config.getMaximumMessageSliceSize())
+ .logContext(persistenceId).expireStateAfterInactivity(config.getRequestTimeout(), TimeUnit.NANOSECONDS)
+ .fileBackedStreamFactory(new FileBackedOutputStreamFactory(config.getFileBackedStreamingThreshold(),
+ config.getTempFileDirectory())).build();
}
@Override
return dispatchers;
}
+ @Nonnull
+ public MessageSlicer messageSlicer() {
+ return messageSlicer;
+ }
+
/**
* Return the time ticker for this {@link ClientActorContext}. This should be used for in all time-tracking
* done within a client actor. Subclasses of {@link ClientActorBehavior} are encouraged to use