public static void StartListening(Action <TrackWithStitchedBeam> funcThatWantTheData)
        {
            IConnection connection = RabbitMQConnection.getConnection();

            liveBeamChannel = connection.CreateModel();

            liveBeamChannel.ExchangeDeclare(exchange: "trackWithStitchedBeamData",
                                            type: ExchangeType.Fanout,
                                            durable: true,
                                            autoDelete: false,
                                            arguments: null);

            liveBeamChannel.QueueDeclare(queue: "liveBeamData",
                                         durable: true,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

            liveBeamChannel.QueueBind(queue: "liveBeamData", exchange: "trackWithStitchedBeamData", routingKey: "");

            var consumer = new EventingBasicConsumer(liveBeamChannel);

            consumer.Received += (model, ea) =>
            {
                byte[] body = ea.Body;
                TrackWithStitchedBeam liveBeam = JsonConvert.DeserializeObject <TrackWithStitchedBeam>(Encoding.UTF8.GetString(body));
                funcThatWantTheData(liveBeam);
            };

            liveBeamChannel.BasicConsume(queue: "liveBeamData",
                                         autoAck: true,
                                         consumer: consumer);
        }
Esempio n. 2
0
        private static void writeToStream(TrackWithStitchedBeam liveBeam)
        {
            var position = stream.Position;

            stream.Position = stream.Length;
            waveFileWriter.Write(liveBeam.StitchedBeam, 0, liveBeam.StitchedBeam.Length);
            waveFileWriter.Flush();
            stream.Position = position;
        }
Esempio n. 3
0
        public static void LiveAudioStreamRecieved(TrackWithStitchedBeam liveBeam)
        {
            if (liveBeam.TrackNum == currentPlayingTrackId)
            {
                if (playing)
                {
                    writeToStream(liveBeam);

                    if (trackChanged)
                    {
                        // start playing the audio with delay to avoid getting to end of stream before the next stream part
                        Thread.Sleep(100);
                        var provider = new RawSourceWaveStream(stream, waveFormat);
                        player.Init(provider);
                        player.Play();
                        trackChanged = false;
                        Console.WriteLine($"Now playing track: {currentPlayingTrackId}");
                    }
                }
            }
        }