Esempio n. 1
0
        private void OnRecorded(object sender, RecordedEventArgs e)
        {
            if (!ClientModel.IsInited)
            {
                return;
            }

            byte[] data = new byte[e.DataSize];
            Buffer.BlockCopy(e.Data, 0, data, 0, data.Length);

            ClientPlayVoiceCommand.MessageContent content = new ClientPlayVoiceCommand.MessageContent
            {
                Pack = new SoundPack
                {
                    Data          = data,
                    Channels      = e.Channels,
                    BitPerChannel = e.BitPerChannel,
                    Frequency     = e.Frequency
                },
                Number = Interlocked.Increment(ref lastSendedNumber)
            };

            using (var client = ClientModel.Get())
            {
                List <string> receivers = client.Rooms.Values
                                          .OfType <VoiceRoom>()
                                          .SelectMany(r => r.Users)
                                          .Distinct()
                                          .ToList();

                receivers.Remove(client.User.Nick);

                ClientModel.Peer.SendMessageIfConnected(receivers, ClientPlayVoiceCommand.Id, content, true);
            }
        }
Esempio n. 2
0
        private void OnRecorded(object sender, RecordedEventArgs e)
        {
            if (!ClientModel.IsInited)
            {
                return;
            }

            var data = new byte[e.DataSize];

            Buffer.BlockCopy(e.Data, 0, data, 0, data.Length);

            var content = new ClientPlayVoiceCommand.MessageContent
            {
                Pack = new SoundPack
                {
                    Data          = data,
                    Channels      = e.Channels,
                    BitPerChannel = e.BitPerChannel,
                    Frequency     = e.Frequency
                },
                Number = Interlocked.Increment(ref lastSendedNumber)
            };

            string userNick;

            using (var client = ClientModel.Get())
                userNick = client.User.Nick;

            lock (interlocutors)
            {
                foreach (var kvp in interlocutors)
                {
                    var nick  = kvp.Key;
                    var count = kvp.Value;

                    if (count <= 0)
                    {
                        continue;
                    }

                    if (nick.Equals(userNick))
                    {
                        continue;
                    }

                    ClientModel.Peer.SendMessageIfConnected(nick, ClientPlayVoiceCommand.CommandId, content, true);
                }
            }
        }
Esempio n. 3
0
        private void OnRecorded(object sender, RecordedEventArgs e)
        {
            if (!ClientModel.IsInited)
            {
                return;
            }

            var data = new byte[e.DataSize];

            Buffer.BlockCopy(e.Data, 0, data, 0, data.Length);

            var content = new ClientPlayVoiceCommand.MessageContent
            {
                Pack = new SoundPack
                {
                    Data          = data,
                    Channels      = e.Channels,
                    BitPerChannel = e.BitPerChannel,
                    Frequency     = e.Frequency
                },
                Number = Interlocked.Increment(ref _lastSendedNumber)
            };

            using (var client = ClientModel.Get())
            {
                var userId = client.Chat.User.Id;

                foreach (var user in client.Chat.GetUsers())
                {
                    if (!user.IsVoiceActive())
                    {
                        continue;
                    }

                    if (user.Id == userId)
                    {
                        continue;
                    }

                    ClientModel.Peer.SendMessageIfConnected(user.Id, ClientPlayVoiceCommand.CommandId, content, true);
                }
            }
        }
Esempio n. 4
0
        private void OnRecorded(object sender, RecordedEventArgs e)
        {
            if (!ClientModel.IsInited)
            return;

              var data = new byte[e.DataSize];
              Buffer.BlockCopy(e.Data, 0, data, 0, data.Length);

              var content = new ClientPlayVoiceCommand.MessageContent
              {
            Pack = new SoundPack
            {
              Data = data,
              Channels = e.Channels,
              BitPerChannel = e.BitPerChannel,
              Frequency = e.Frequency
            },
            Number = Interlocked.Increment(ref lastSendedNumber)
              };

              using (var client = ClientModel.Get())
              {
            var receivers = client.Rooms.Values
              .OfType<VoiceRoom>()
              .SelectMany(r => r.Users)
              .Distinct()
              .ToList();

            receivers.Remove(client.User.Nick);

            ClientModel.Peer.SendMessageIfConnected(receivers, ClientPlayVoiceCommand.CommandId, content, true);
              }
        }