StreamContext.java

package com.shengzhiai.yugu;

import com.shengzhiai.yugu.internal.Auth;
import com.shengzhiai.yugu.internal.Log;
import com.shengzhiai.yugu.internal.WsTransport;

import java.util.Random;
import java.util.concurrent.Executor;
import java.util.concurrent.ScheduledExecutorService;
import java.util.function.Consumer;

/** Dependencies a client hands to its stream sessions. */
final class StreamContext {
    final ClientOptions options;
    final WsTransport transport;
    final Auth auth;
    final ScheduledExecutorService scheduler;
    final Executor callbackPool;
    final Log log;
    final EventListener events;
    final Random random;
    final Consumer<StreamSession> onFinished;

    StreamContext(ClientOptions options, WsTransport transport, Auth auth, ScheduledExecutorService scheduler,
                  Executor callbackPool, Log log, EventListener events, Random random, Consumer<StreamSession> onFinished) {
        this.options = options;
        this.transport = transport;
        this.auth = auth;
        this.scheduler = scheduler;
        this.callbackPool = callbackPool;
        this.log = log;
        this.events = events;
        this.random = random;
        this.onFinished = onFinished;
    }
}