예제 #1
0
        protected override void OnStart()
        {
            base.OnStart();

            receiver = _bootstrap.GetService(ServicesTypes.UDPRead) as UDPReceive;
            receiver.OnPacketReceive += PrintDebug;

            sender = _bootstrap.GetService(ServicesTypes.UDPSend) as UDPSender;
            sender.SendPacket("Hello World");
        }
예제 #2
0
        public override void Write(byte[] buffer, int offset, int count)
        {
            _Position += (count - offset);
            if (udp != null)
            {
                udp.SendPacket(buffer, offset, count);
                return;
            }
            else
            {
                inbufer.Write(buffer, offset, count);
            }

            if (bytePerSec == 0)
            {
                var tmppos = inbufer.Position;
                inbufer.Position = prepro_Pos;
                bytePerSec       = Calc1secBytes(inbufer);
                prepro_Pos       = inbufer.Position;
                inbufer.Position = tmppos;

                if (bytePerSec == 0)
                {
                    // まだバッファが足りないので次を待つ
                    return;
                }

                if (SendStartTime != default(DateTime))
                {
                    // 開始時間指定
                    if (SendStartTime > InitialTime)
                    {
                        ToWaitByte = (long)((SendStartTime - InitialTime).TotalSeconds * bytePerSec * 0.9);
                        if (ToWaitByte > _Position - offsetTOT && ToWaitByte > CancelForTooLess)
                        {
                            throw new SenderBreakCanceledException(bytePerSec, ToWaitByte + offsetTOT, InitialTime);
                        }
                    }
                }
                else if (SendDelay != default(TimeSpan))
                {
                    // 開始遅れ時間指定
                    ToWaitByte = (long)(SendDelay.TotalSeconds * bytePerSec * 0.9);
                    if (ToWaitByte > _Position && ToWaitByte - _Position > CancelForTooLess)
                    {
                        throw new SenderBreakCanceledException(bytePerSec, ToWaitByte, InitialTime);
                    }
                }
            }

            inbufer.Position = 0;
            if (SendStartTime != default(DateTime))
            {
                // 開始時間指定
                if (SendStartTime > InitialTime)
                {
                    if (SeekToTOTTime(inbufer) < SendStartTime)
                    {
                        // まだ
                        inbufer.SetLength(0);
                        inbufer.Position = 0;
                        return;
                    }
                }
            }
            else if (SendDelay != default(TimeSpan))
            {
                // 開始遅れ時間指定
                if (ToWaitByte > _Position)
                {
                    // まだ
                    inbufer.SetLength(0);
                    inbufer.Position = 0;
                    return;
                }
                var remlen = _Position - ToWaitByte;
                inbufer.Position = inbufer.Length - remlen;
            }

            if (udp == null)
            {
                udp = new UDPSender(bytePerSec, InitialTime, ct);
                udp.TOTChangeHander += _Handler;
                udp.SendDuration     = SendDuration;
                udp.SendPacket(inbufer);
                inbufer.SetLength(0);
                inbufer.Position = 0;
            }
        }
 public void ReccordPadsToGroup(int groupIndex)
 {
     actualGroup = groupIndex;
     receiver.OnPacketReceive += AddToGroup;
     sender.SendPacket("OpenVote");
 }
 public void OpenTurningVote()
 {
     sender.SendPacket("OpenVote");
 }