public bool startProducer(IVoiceTarget targetManager) { if (OperatingSystem.IsWindows()) { informChannel(Ts3Client, "Windows Version"); Task.Factory.StartNew(() => { //Starting a Task bc WaitForConnection blocks execution var stream = new NamedPipeServerStream(spotifyPluginConfig.getPipeName(), PipeDirection.In, 1, PipeTransmissionMode.Byte, PipeOptions.None); stream.WaitForConnection(); producer = new SpotifyStreamAudioProducer(stream, player, rootConf); }); } else { informChannel(Ts3Client, "Linux Version"); var fifo = "/tmp/" + spotifyPluginConfig.getPipeName(); if (!File.Exists(fifo)) { var output = ("mkfifo " + fifo).Bash(); Console.WriteLine(output); } FileStream s = new FileStream("/tmp/" + spotifyPluginConfig.getPipeName(), FileMode.Open); producer = new SpotifyStreamAudioProducer(s, player, rootConf); } spotifyInstance = new SpotifyInstance(spotifyPluginConfig, activeSpotifyAccount); spotifyInstance.startProcess(); int tries = 0; while (!spotifyInstance.connected && tries++ < 4) { Thread.Sleep(500); } if (!spotifyInstance.connected || spotifyInstance.hasExited()) { return(false); } targetManager.SendMode = TargetSendMode.Voice; producer.start(); return(true); }
private void stopSpotify() { lock (_lock) { if (spotifyInstance != null && !spotifyInstance.hasExited()) { spotifyInstance.stopProcess(); } producer?.Dispose(); producer = null; spotifyInstance = null; activeSpotifyControl = null; activeSpotifyAccount = null; } }
public string commandSpotifyTestsample(ClientCall invoker, IVoiceTarget targetManager) { if (producer == null) { FileStream s = new FileStream("testfile", FileMode.Open); producer = new SpotifyStreamAudioProducer(s, player, rootConf); } targetManager.SendMode = TargetSendMode.Voice; producer.startTestSample(); informChannel(Ts3Client, "Mixed in :-)"); return("asd"); }