示例#1
0
        private void SendHeartBeat()
        {
            HeartBeat sendMsg = new HeartBeat();
            NetUdpFixedSizePackage mPackage = GetUdpSystemPackage(UdpNetCommand.COMMAND_HEARTBEAT, sendMsg);

            SendNetPackage(mPackage);
        }
示例#2
0
        private void OnConnectGameServer(ClientType clientType)
        {
            DebugUtils.Log(DebugUtils.Type.AsyncSocket, "Success! Connected to GameServer " + clientType);

            UnityEngine.SceneManagement.SceneManager.LoadScene("MainMenu");

            if (OpenMainMenuUI)
            {
                UIManager.locateState = UIManagerLocateState.MainMenu;
            }
            else
            {
                UIManager.locateState = UIManagerLocateState.BattleModeView;
            }

            DataManager clientData = DataManager.GetInstance();

            clientData.ResetBattleData();
            clientData.SetPlayerIsInBattle(false);

            HeartBeat.RegisterGameHeartMessageHandler();
            //DataManager.GetInstance().RegisterDataServerMessageHandler();
            MultiDeviceListenerManager.RegisterHandler();
            DebugToScreen.RegisterHandler();
        }
示例#3
0
        /// <summary>
        /// 接受来自leader节点的心跳请求
        /// </summary>
        /// <param name="heartBeat"></param>
        /// <returns></returns>
        public async Task <HeartBeatResponse> Handle(HeartBeat heartBeat)
        {
            _logger.LogInformation($"leader 接收{heartBeat.LeaderId}的心跳");
            //如果当前任期大于心跳任期
            var rs         = new HeartBeatResponse();
            var currentLog = _blockDataManager.GetLastBlockEntity(_node.GetChannelId());

            rs.Term              = CurrentState.CurrentTerm;
            rs.Height            = currentLog.Header.Number;
            rs.BlockCurrentHash  = currentLog.Header.DataHash;
            rs.BlockPreviousHash = currentLog.Header.PreviousHash;
            rs.LeaderId          = CurrentState.LeaderId;
            rs.Success           = false;
            //当前任期大于leader任期 返回当前任期,leaderID和最新日志信息
            if (CurrentState.CurrentTerm > heartBeat.Term)
            {
                return(rs);
            }
            else
            //任期小于等于leader任期,则返回最新日志,改变自身状态(觉得自身状态和自己最新的日志的任期一致)
            {
                CurrentState.LeaderId = heartBeat.LeaderId;
                rs.LeaderId           = heartBeat.LeaderId;
                rs.Success            = true;
                return(rs);
            }
        }
示例#4
0
 public async Task Execute(HeartBeat o)
 {
     await Task.Run(() =>
     {
         Logger.Info($"HEARTBEAT | {o.Hostname} | {o.Program} | {o.Process}");
     });
 }
示例#5
0
        static async Task PostAsync(HeartBeat heartBeat)
        {
            using (var client = new HttpClient())
            {
                try
                {
                    client.BaseAddress = new Uri(connectionString);
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                    //Http post
                    HttpResponseMessage response = await client.PostAsJsonAsync("api/HeartBeat/AddNewHeartBeat", heartBeat);

                    if (response.IsSuccessStatusCode)
                    {
                        Console.WriteLine("HeartBeat Posted succesfully!");
                        PrintPost(heartBeat);
                    }
                    else
                    {
                        Console.WriteLine("Attempt unsuccesfull!\n");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Attempt unsuccesfull!\n" + ex.Message);
                }
            }
        }
示例#6
0
        public void PauseResumeClientTest()
        {
            ClientManager cmn = new ClientManager();

            // Pasando configuracion.
            cmn.SetClientConfig(new SendClientConfig(CreateClientConfig()));
            cmn.SetSystemConfig(new SendSystemConfig(CreateSystemConfig()));
            cmn.Start();

            // Generando HB para el cliente.
            HeartBeat hb = HeartBeat.CreateHeartBeat(Client1_ID);

            cmn.ReceiveHB(new SendHeartbeat(hb));

            // Comprobar cliente en lista de trabajo
            Assert.AreEqual(1, cmn.ClientList.Count);
            Assert.AreEqual(1, cmn.WorkList.Count);

            // Pausar cliente
            cmn.PauseClient(new RequestPauseClient(Client1_Guid));

            // Comprobar cliente en lista de pausa
            Assert.AreEqual(0, cmn.WorkList.Count);
            Assert.AreEqual(1, cmn.PausedList.Count);

            // Continuar cliente
            cmn.ResumeClient(new RequestResumeClient(Client1_Guid));

            // Comprobar cliente en lista de trabajo
            Assert.AreEqual(1, cmn.WorkList.Count);
            Assert.AreEqual(0, cmn.PausedList.Count);

            // Fin
            cmn.Stop();
        }
示例#7
0
文件: HomeForm.cs 项目: bug8975/RXD
        private void timer1_Tick(object sender, EventArgs e)
        {
            HeartBeat heart = new HeartBeat();

            heart.Projectid = Convert.ToInt32(navBarControl1.ActiveGroup.Tag);
            heart.CheckHeartBeat();
        }
        public List <HeartBeat> GetAllHeartBeats()
        {
            List <HeartBeat> heartBeatList = null;
            HeartBeat        heartBeat     = new HeartBeat();

            using (StreamReader readtext = new StreamReader(@"Data.config"))
            {
                string info = " ";
                while (info != null)
                {
                    try
                    {
                        info = readtext.ReadLine();
                        heartBeat.HearBeatRate = int.Parse(info);

                        info = readtext.ReadLine();
                        heartBeat.SampleDate = info;

                        info = readtext.ReadLine();

                        heartBeatList.Add(heartBeat);
                    }
                    catch
                    {
                    }
                }
                readtext.Dispose();
            }

            return(heartBeatList);
        }
示例#9
0
        internal Connection(IBufferManager bufferManager, AmqpSettings amqpSettings, Address address,
                            IAsyncTransport transport, Open open, OnOpened onOpened, IHandler handler)
            : this(address, (ushort)(amqpSettings.MaxSessionsPerConnection - 1), (uint)amqpSettings.MaxFrameSize)
        {
            transport.SetConnection(this);

            this.handler            = handler;
            this.BufferManager      = bufferManager;
            this.MaxLinksPerSession = amqpSettings.MaxLinksPerSession;
            this.onOpened           = onOpened;
            this.writer             = new TransportWriter(transport, this.OnIoException);

            // after getting the transport, move state to open pipe before starting the pump
            if (open == null)
            {
                open = new Open()
                {
                    ContainerId  = amqpSettings.ContainerId,
                    HostName     = amqpSettings.HostName ?? this.address.Host,
                    ChannelMax   = this.channelMax,
                    MaxFrameSize = this.maxFrameSize,
                    IdleTimeOut  = (uint)amqpSettings.IdleTimeout
                };
            }

            if (open.IdleTimeOut > 0)
            {
                this.heartBeat = new HeartBeat(this, open.IdleTimeOut);
            }

            this.SendHeader();
            this.SendOpen(open);
            this.state = ConnectionState.OpenPipe;
        }
示例#10
0
        public virtual Task Send(PersistentResponse response)
        {
            HeartBeat.MarkConnection(this);

            AddTransportData(response);
            return(Send((object)response));
        }
示例#11
0
文件: Program.cs 项目: qq5013/cabinet
        static void Main(string[] args)
        {
            Console.WriteLine("{0}\t程序已启动,连接服务器... ", DateTime.Now);

            var s2 = ProxyFactory.GetContext<IDuplexChannelService>();
            s2.OnConnectionChanged += (x, y) => { Console.WriteLine("s2 online"); };
            s2.OnBroadcast += (x, y) => { Console.WriteLine("接收广播:{0}", y.Content); };
            s2.OnGetOnlineClients += (x, y) =>
            {
                Console.WriteLine("在线客户端:");
                foreach (var item in y.Macs)
                {
                    Console.WriteLine("\t" + item);
                }
            };

            var s1 = ProxyFactory.GetContext<IMainService>();
            s1.OnConnectionChanged += (x, y) => { Console.WriteLine("s1 online"); };

            HeartBeat hb = new HeartBeat();

            hb.Regist<IDuplexChannelService>(s2, 5000);
            hb.Regist<IMainService>(s1);

            hb.Start();

            System.Threading.Thread.Sleep(3000);

            //s1.Invoke(s => s.Test("发送广播"));
            //s2.Invoke(s => s.GetClients());

            //s1.Invoke(s => s.Test("发送广播2"));

            //context.inverk(context => context.Test());

            //HeartBeat s = new HeartBeat();
            //s.register(context);

            //s.stop();
            ////ms.Online("", false);

            //////

            ////var dd = ms.Test("wef");

            //HeartBeat.OnSending += HeartBeat_OnSending;
            //HeartBeat.OnSent += HeartBeat_OnSent;
            //HeartBeat.Go(callback);

            //ServiceProxy.Call<IDuplexChannelService, IDuplexChannelCallback>(callback, net =>
            //{
            //    for (int i = 0; i < 10; i++)
            //    {
            //        net.Online("MMM" + i.ToString(), false);
            //    }

            //});

            Console.Read();
        }
示例#12
0
        static private void IniciaServidor()
        {
            Console.WriteLine("Simulador iniciado. Servidor Pipe atiende: " + name);
            Console.WriteLine(messg);
            Console.CancelKeyPress += Console_CancelKeyPress;

            Encd        = new ASCIIEncoding();
            _pipeServer = new NamedPipeServerStream(name, PipeDirection.In, maxconn, PipeTransmissionMode.Message, PipeOptions.Asynchronous, bufferSize, bufferSize);


            int numBytes = 0;

            keepLoop = true;

            while (keepLoop)
            {
                string message = String.Empty;
                buffer = new byte[bufferSize];

                _pipeServer.WaitForConnection();

                do
                {
                    numBytes = _pipeServer.Read(buffer, 0, bufferSize);
                    //Console.WriteLine("LEidos: " + numBytes.ToString());
                } while (numBytes != 0);

                HeartBeat hb = HeartBeat.CreateHeartBeat(buffer);
                message = string.Format("Cliente: {0}  Pipe: {1}  TS: {2}  Serial: {3}", hb.ClientID, name, hb.Timestamp, hb.Serial);
                Console.WriteLine(message);

                _pipeServer.Disconnect();
            }
        }
示例#13
0
 protected virtual async Task Execute(HeartBeat heartbeat)
 {
     await Task.Run(() =>
     {
         // implement default heartbeat properties and tags
     });
 }
示例#14
0
        /// <summary>
        /// Initializes a connection with SASL profile, open and open callback.
        /// </summary>
        /// <param name="address">The address.</param>
        /// <param name="saslProfile">The SASL profile to do authentication (optional). If it is
        /// null and address has user info, SASL PLAIN profile is used.</param>
        /// <param name="open">The open frame to send (optional). If not null, all mandatory
        /// fields must be set. Ensure that other fields are set to desired values.</param>
        /// <param name="onOpened">The callback to handle remote open frame (optional).</param>
        /// <remarks>
        /// The connection initialization includes establishing the underlying transport,
        /// which typically has blocking network I/O. Depending on the current synchronization
        /// context, it may cause deadlock or UI freeze. Please use the ConnectionFactory.CreateAsync
        /// method instead.
        /// </remarks>
        public Connection(Address address, SaslProfile saslProfile, Open open, OnOpened onOpened)
            : this(DefaultMaxSessions, DefaultMaxFrameSize)
        {
            this.address  = address;
            this.onOpened = onOpened;
            if (open != null)
            {
                this.maxFrameSize = open.MaxFrameSize;
                this.channelMax   = open.ChannelMax;
            }
            else
            {
                open = new Open()
                {
                    ContainerId  = Guid.NewGuid().ToString(),
                    HostName     = this.address.Host,
                    MaxFrameSize = this.maxFrameSize,
                    ChannelMax   = this.channelMax
                };
            }

            if (open.IdleTimeOut > 0)
            {
                this.heartBeat = new HeartBeat(this, open.IdleTimeOut);
            }

            this.Connect(saslProfile, open);
        }
示例#15
0
        //清数据
        public void Dispose()
        {
            disposed = true;
            EventSystem.RemoveEvent(EventID.SOKECT_CONNECT_RESULT, OnEventSocketConnectOK);
            //MsgCallManager.RemoveCallback(ProtoID.SC_LOGIN_RECONNECTION_REPLY, ReconnectSuccess);
            if (heartBeatCheck != null)
            {
                heartBeatCheck.Dispose();
            }
            heartBeatCheck = null;
            if (clientSocket != null)
            {
                clientSocket.Dispose();
            }
            clientSocket = null;
            if (clientProtoMsg != null)
            {
                clientProtoMsg.Dispose();
            }
            clientProtoMsg = null;
//             if (msgCacheMgr != null)
//              msgCacheMgr.Dispose ();
//          msgCacheMgr = null;
            if (msgVerifyMgr != null)
            {
                msgVerifyMgr.Dispose();
            }
            msgVerifyMgr = null;
        }
示例#16
0
        private Task ProcessReceiveRequest(ITransportConnection connection, Action postReceive = null)
        {
            HeartBeat.UpdateConnection(this);
            HeartBeat.MarkConnection(this);

            if (TransportConnected != null)
            {
                TransportConnected().Catch();
            }

            // ReceiveAsync() will async wait until a message arrives then return
            var receiveTask = IsConnectRequest ?
                              connection.ReceiveAsync(TimeoutToken) :
                              connection.ReceiveAsync(MessageId, TimeoutToken);

            if (postReceive != null)
            {
                postReceive();
            }

            return(receiveTask.Then(response =>
            {
                if (response.Aborted)
                {
                    // If this was a clean disconnect then raise the event
                    OnDisconnect();
                }

                return Send(response);
            }));
        }
示例#17
0
 public Connection(string n, bool needSyncTime = true)
 {
     name         = n;
     socketClient = new SocketClient(this);
     heartBeat    = new HeartBeat(this);
     NeedSyncTime = needSyncTime;
 }
示例#18
0
        internal void Init(IBufferManager bufferManager, AmqpSettings amqpSettings, IAsyncTransport transport, Open open)
        {
            transport.SetConnection(this);

            this.BufferManager      = bufferManager;
            this.channelMax         = GetChannelMax(amqpSettings, open);
            this.maxFrameSize       = GetMaxFrameSize(amqpSettings, open);
            this.MaxLinksPerSession = amqpSettings.MaxLinksPerSession;
            this.writer             = new TransportWriter(transport, this.OnIoException);

            // after getting the transport, move state to open pipe before starting the pump
            if (open == null)
            {
                open = new Open()
                {
                    ContainerId  = amqpSettings.ContainerId,
                    HostName     = amqpSettings.HostName ?? this.address.Host,
                    ChannelMax   = this.channelMax,
                    MaxFrameSize = this.maxFrameSize,
                    IdleTimeOut  = (uint)amqpSettings.IdleTimeout / 2
                };
            }

            if (open.IdleTimeOut > 0)
            {
                this.heartBeat = new HeartBeat(this, open.IdleTimeOut * 2);
            }

            this.SendHeader();
            this.SendOpen(open);
            this.state = ConnectionState.OpenPipe;
        }
示例#19
0
        /// <summary>
        /// The internal heartbeat timer has elapsed, raise the Heartbeat event.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="System.Timers.ElapsedEventArgs"/> instance containing the event data.</param>
        private void InternalHeartbeatTimerElapsed(object sender, ElapsedEventArgs e)
        {
            this._userMemoryProvider.Set("HeartBeat", DateTime.Now, PersistHint.AcrossSessions);

            //RaiseHeartBeat Event
            HeartBeat?.Invoke(this, EventArgs.Empty);
        }
        public void AddHeartBeat(HeartBeat heartBeat)
        {
            string     command    = "INSERT INTO Heartbeats(HearBeatRate , SampleDate ) VALUES ('" + heartBeat.HearBeatRate.ToString() + "','" + heartBeat.SampleDate.ToString() + "'); ";
            SqlCommand sqlCommand = new SqlCommand(command, sqlConnection);

            sqlCommand.ExecuteNonQuery();
        }
示例#21
0
 protected override async Task Execute(HeartBeat heartbeat)
 {
     foreach (var i in await Application.GetApplications())
     {
         heartbeat.Tags.Add(i.Id.ToString());
         heartbeat.Properties.Add(i.Id.ToString(), JsonConvert.SerializeObject(i));
     }
 }
 public void AddHeartBeat(HeartBeat heartBeat)
 {
     using (StreamWriter writetext = new StreamWriter(@"Data.config"))
     {
         writetext.WriteLine(heartBeat.HearBeatRate + "\n" + heartBeat.SampleDate);
         writetext.Dispose();
     }
 }
        private void SendHeartBeat()
        {
            HeartBeat sendMsg = new HeartBeat();
            NetUdpFixedSizePackage mPackage = GetUdpSystemPackage(UdpNetCommand.COMMAND_HEARTBEAT, sendMsg);

            SendNetPackage(mPackage);
            //ObjectPoolManager.Instance.mUdpFixedSizePackagePool.recycle (mPackage);
        }
示例#24
0
    public override void Start()
    {
        requestCode      = RequestCode.Game;
        actionCode       = ActionCode.HeartBeat;
        heartBeatRequest = GetComponent <HeartBeat>();

        base.Start();
    }
示例#25
0
 protected virtual void OnSending(string payload)
 {
     HeartBeat.MarkConnection(this);
     if (Sending != null)
     {
         Sending(payload);
     }
 }
示例#26
0
    public override void OnInspectorGUI()
    {
        GUILayout.Label("Object dynamic size!");
        HeartBeat heartBeat = (HeartBeat)target;

        heartBeat.baseSize             = EditorGUILayout.Slider("Size", heartBeat.baseSize, .1f, 2f);
        heartBeat.transform.localScale = Vector3.one * heartBeat.baseSize;
    }
示例#27
0
        private Task ProcessReceiveRequest(IReceivingConnection connection)
        {
            HeartBeat.AddConnection(this);

            return(InitializeResponse(connection)
                   .Then((c, id) => ProcessMessages(c, id), connection, LastMessageId)
                   .FastUnwrap());
        }
示例#28
0
文件: Kaboom.cs 项目: JoelJ/ld-48
    public override void _Ready()
    {
        _animationPlayer = this.GetNode <AnimationPlayer>();
        _heartBeat       = GetNode <HeartBeat>("/root/HeartBeat");
        _heartBeat.SafeConnect(nameof(HeartBeat.OnHeartBeat), this, nameof(OnHeartBeat));

        _explodeSfx = this.GetNode <SfxPlayer>();
    }
示例#29
0
        public virtual Task Send(PersistentResponse response)
        {
            HeartBeat.MarkConnection(this);
            var data = _jsonSerializer.Stringify(response);

            OnSending(data);
            return(Context.Response.WriteAsync(data));
        }
示例#30
0
 private void ReadData(object sender, EventArgs e)
 {
     Serial.BaudRate = int.Parse(Baud.Text);
     Serial.PortName = Comm.Text;
     Serial.Open();
     Start.Enabled = false;
     HeartBeat.RunWorkerAsync();
 }
示例#31
0
        void Connect(SaslProfile saslProfile, Open open)
        {
            if (open != null)
            {
                this.maxFrameSize = open.MaxFrameSize;
                this.channelMax   = open.ChannelMax;
            }
            else
            {
                open = new Open()
                {
                    ContainerId  = MakeAmqpContainerId(),
                    HostName     = this.address.Host,
                    MaxFrameSize = this.maxFrameSize,
                    ChannelMax   = this.channelMax
                };
            }

            if (open.IdleTimeOut > 0)
            {
                this.heartBeat = new HeartBeat(this, open.IdleTimeOut * 2);
            }

            ITransport transport;

            {
                TcpTransport tcpTransport = new TcpTransport();
                tcpTransport.Connect(this, this.address, DisableServerCertValidation);
                transport = tcpTransport;
            }

            try
            {
                if (saslProfile != null)
                {
                    transport = saslProfile.Open(this.address.Host, transport);
                }
                else if (this.address.User != null)
                {
                    transport = new SaslPlainProfile(this.address.User, this.address.Password).Open(this.address.Host, transport);
                }
            }
            catch
            {
                transport.Close();
                throw;
            }

            this.writer = new Writer(transport);

            // after getting the transport, move state to open pipe before starting the pump
            this.SendHeader();
            this.SendOpen(open);
            this.state = ConnectionState.OpenPipe;

            this.reader = new Pump(this, transport);
            this.reader.Start();
        }
    private void Awake()
    {
        instance = this;

        usedAudioSources = new List<AudioSource>();
        unusedAudioSources = new List<AudioSource>();

        heartBeat = gameObject.AddComponent<HeartBeat>();
        heartBeat.Initialize(this, heartBeat1, heartBeat2);
    }
示例#33
0
    // Use this for initialization
    void Start()
    {
        motor = gameObject.GetComponent<CharacterMotor>();
        pic = gameObject.GetComponent<PlatformInputController>();
        heart = GameObject.Find ("Player").GetComponent<HeartBeat>();

        GameObject.Find("Spawn Particles").GetComponent<ParticleSystem>().Play(true);

        boost = 3.0f;
    }
 public void Start()
 {
     m_hb=this;
     m_AS=(AudioSource)gameObject.GetComponent<AudioSource>();
     m_PS=(ParticleSystem)gameObject.GetComponent<ParticleSystem>();
     m_mass=(Mass)gameObject.GetComponent<Mass>();
     m_curMax=m_baseMax;
     m_curRate=m_baseEmissionRate;
     sm_planetBonus=0;
     sm_score=0;
 }
示例#35
0
        public AmqpConnection(TransportBase transport, ProtocolHeader protocolHeader, bool isInitiator, AmqpSettings amqpSettings, AmqpConnectionSettings connectionSettings) :
            base((isInitiator ? "out" : "in") + "-connection", transport, connectionSettings, isInitiator)
        {
            if (amqpSettings == null)
            {
                throw new ArgumentNullException("amqpSettings");
            }

            this.initialHeader = protocolHeader;
            this.isInitiator = isInitiator;
            this.amqpSettings = amqpSettings;
            this.sessionsByLocalHandle = new HandleTable<AmqpSession>(this.Settings.ChannelMax ?? AmqpConstants.DefaultMaxConcurrentChannels - 1);
            this.sessionsByRemoteHandle = new HandleTable<AmqpSession>(this.Settings.ChannelMax ?? AmqpConstants.DefaultMaxConcurrentChannels - 1);
            this.SessionFactory = this;
            this.heartBeat = HeartBeat.None;
        }
示例#36
0
        void OnReceiveOpen(Open open)
        {
            StateTransition stateTransition = this.TransitState("R:OPEN", StateTransition.ReceiveOpen);

            uint peerIdleTimeout = open.IdleTimeOut();
            if (peerIdleTimeout < this.Settings.MinIdleTimeout)
            {
                this.CompleteOpen(false,
                    new AmqpException(AmqpErrorCode.NotAllowed, AmqpResources.GetString(AmqpResources.AmqpIdleTimeoutNotSupported, peerIdleTimeout, this.Settings.MinIdleTimeout)));
                return;
            }

            this.Negotiate(open);
            this.NotifyOpening(open);

            if (stateTransition.To == AmqpObjectState.OpenReceived)
            {
                this.SendOpen();
            }
            
            if(this.isInitiator)
            {
                // check if open returned an error right away
                Error openError = null;
                if (open.Properties != null && open.Properties.TryGetValue<Error>(AmqpConstants.OpenErrorName, out openError))
                {
                    this.CompleteOpen(stateTransition.From == AmqpObjectState.Start, new AmqpException(openError));
                    return;
                }
            }

            uint myIdleTimeout = this.Settings.IdleTimeOut();
            peerIdleTimeout = open.IdleTimeOut();
            if (peerIdleTimeout != uint.MaxValue || myIdleTimeout != uint.MaxValue)
            {
                this.heartBeat = HeartBeat.Initialize(this, myIdleTimeout, peerIdleTimeout);
            }

            this.CompleteOpen(stateTransition.From == AmqpObjectState.Start, null);
        }
 private void InitModule()
 {
     mHeartBeat = new HeartBeat();
     mCltSyncMgr = ClientSyncMgr.Inst;
 }
示例#38
0
 void Start()
 {
     defaultBeat = (HeartBeat) GameObject.Find("Player").GetComponent("HeartBeat");
     initialPosition = transform.position;
     target += transform.position;
 }