예제 #1
0
        private void TransmitBuffer(float[] buffer)
        {
            // Compress into packet
            var packet = VoiceChatUtils.Compress(buffer);

            packet.PacketId = ++packetId;

            // Raise event
            NewSample?.Invoke(packet);
        }
예제 #2
0
        /// <summary>
        /// Process the data in the queue
        /// </summary>
        void ProcessDataQueue(IBFSample sample)
        {
            if (sample != null)
            {
                lock (UnfilteredData)
                    UnfilteredData.Insert(0, sample);

                InspectSampleIndex(sample);

                NewSample?.Invoke(this, new BFSampleEventArgs(sample));
            }
        }
예제 #3
0
        private void HandleNewData(DataStream data)
        {
            if (data == null)
            {
                return;
            }

            var samples = data.AllSamples();

            lock (m_samples)
            {
                foreach (var s in samples)
                {
                    if (m_samples.ContainsKey(s.DataItemID))
                    {
                        m_samples[s.DataItemID] = s;
                    }
                    else
                    {
                        m_samples.Add(s.DataItemID, s);
                    }

                    Task.Run(delegate
                    {
                        // raise the event on a thread so we don't slow down processing
                        NewSample.Fire(this, new GenericEventArgs <ISample>(s));
                    });
                }
            }

            lock (m_events)
            {
                var events = data.AllEvents();
                foreach (var e in events)
                {
                    if (m_events.ContainsKey(e.DataItemID))
                    {
                        m_events[e.DataItemID] = e;
                    }
                    else
                    {
                        m_events.Add(e.DataItemID, e);
                    }

                    Task.Run(delegate
                    {
                        // raise the event on a thread so we don't slow down processing
                        NewEvent.Fire(this, new GenericEventArgs <IEvent>(e));
                    });
                }
            }

            lock (m_conditions)
            {
                var conditions = data.AllConditions();
                foreach (var c in conditions)
                {
                    if (m_conditions.ContainsKey(c.DataItemID))
                    {
                        m_conditions[c.DataItemID] = c;
                    }
                    else
                    {
                        m_conditions.Add(c.DataItemID, c);
                    }

                    Task.Run(delegate
                    {
                        // raise the event on a thread so we don't slow down processing
                        NewCondition.Fire(this, new GenericEventArgs <ICondition>(c));
                    });
                }
            }
        }