/// <summary>
        /// Handles Messages sent from a host sub-engine to its clients
        /// </summary>
        /// <param name="Command"></param>
        /// <param name="pMessage"></param>
        public override void HandleMessage(ICDEThing sender, object pIncoming)
        {
            if (!(pIncoming is TheProcessMessage pMsg))
            {
                return;
            }
            try
            {
                string[] cmd = pMsg.Message.TXT.Split(':');

                switch (cmd[0]) //string 2 cases
                {
                case "CDE_INITIALIZED":
                    MyBaseEngine.SetInitialized(pMsg.Message);
                    return;

                case "GET_NODECPUINFO":
                    if (MyServiceHealth != null)
                    {
                        //MyServiceHealth.SendCPUInfo(pMsg.Message.GetOriginator());
                        MyServiceHealth.SendCPUInfo(pMsg.Message);
                    }
                    break;

                case "GET_NODEISMHEALTH":
                    if (MyServiceHealth != null)
                    {
                        //MyServiceHealth.SendHealthInfo(pMsg.Message.GetOriginator());
                        MyServiceHealth.SendHealthInfo(pMsg.Message);
                    }
                    break;

                case "REFRESH_DASH":
                    MyPCVitalsDashboard.Reload(pMsg, true);
                    break;

                default:
                    break;
                }
            }
            catch (Exception e)
            {
                TheBaseAssets.MySYSLOG.WriteToLog(8032, TSM.L(eDEBUG_LEVELS.ESSENTIALS) ? null : new TSM(MyBaseEngine.GetEngineName(), "ProcessServiceMessage Error", eMsgLevel.l1_Error, e.ToString()));
            }
        }
        void sinkFileReceived(ICDEThing pThing, object pFileName)
        {
            TheProcessMessage pMsg = pFileName as TheProcessMessage;

            if (pMsg?.Message == null)
            {
                return;
            }
            try
            {
                string tGuid = $"THH{Guid.NewGuid()}";
                //File.Copy(TheCommonUtils.cdeFixupFileName(pMsg.Message.TXT), TheCommonUtils.cdeFixupFileName($"/cache/{tGuid}"));
                CreateTHHUx(tGuid, TheCommonUtils.cdeFixupFileName(pMsg.Message.TXT));
                TheCommCore.PublishToOriginator(pMsg.Message, new TSM(eEngineName.NMIService, "NMI_TOAST", string.Format("KPI File ({0}) received - Creating UX", pMsg.Message.TXT)));
                MyPCVitalsDashboard.Reload(pMsg, true);
            }
            catch (Exception)
            {
                TheCommCore.PublishToOriginator(pMsg.Message, new TSM(eEngineName.NMIService, "NMI_ERROR", $"KPI File ({pMsg.Message.TXT}) received but creating UX failed!"));
            }
        }