/// <param name="playerManager"> Audio player manager </param> public RemoteNodeManager(DefaultAudioPlayerManager playerManager) { this.playerManager = playerManager; this.httpInterfaceManager = RemoteNodeProcessor.createHttpInterfaceManager(); this.processors = new List <RemoteNodeProcessor>(); this.abandonedTrackManager = new AbandonedTrackManager(); this.enabled = new AtomicBoolean(); this.@lock = new object(); this.activeProcessors = new List <RemoteNodeProcessor>(); }
/// <param name="playerManager"> Audio player manager </param> /// <param name="nodeAddress"> Address of this node </param> /// <param name="scheduledExecutor"> Scheduler to use to schedule reconnects </param> /// <param name="httpInterfaceManager"> HTTP interface manager to use for communicating with node </param> /// <param name="abandonedTrackManager"> Abandoned track manager, where the playing tracks are sent if node goes offline </param> public RemoteNodeProcessor(DefaultAudioPlayerManager playerManager, string nodeAddress, java.util.concurrent.ScheduledThreadPoolExecutor scheduledExecutor, HttpInterfaceManager httpInterfaceManager, AbandonedTrackManager abandonedTrackManager) { this.playerManager = playerManager; this.nodeAddress = nodeAddress; this.scheduledExecutor = scheduledExecutor; this.httpInterfaceManager = httpInterfaceManager; this.abandonedTrackManager = abandonedTrackManager; queuedMessages = new LinkedBlockingQueue <>(); playingTracks = new ConcurrentHashMap <>(); mapper = new RemoteMessageMapper(); threadRunning = new AtomicBoolean(); connectionState = new AtomicInteger(ConnectionState.OFFLINE.id()); tickHistory = new LinkedList <>(NODE_REQUEST_HISTORY); closed = false; }