Compile function OEngine_Services(@Service, @Params) #pragma precomp SRP_PreCompiler /*********************************************************************************************************************** This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written permission from Infineon Technologies. Name : OEngine_Services Description : Handler program for all module related services. Notes : The generic parameters should contain all the necessary information to process the services. Often this will be information like the data Record and Key ID. Parameters : Service [in] -- Name of the service being requested Param1-10 [in/out] -- Additional request parameter holders Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure History : (Date, Initials, Notes) 10/11/23 djs Original programmer. ***********************************************************************************************************************/ $Insert APP_INSERTS $Insert SERVICE_SETUP $Insert REVDOTNETEQUATES Declare Function GetCurrentProcessId, GetCommandLine Declare Subroutine Set_Property.Net, Mona_Services GoToService else Error_Services('Set', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.') end Return Response or "" //----------------------------------------------------------------------------- // SERVICES //----------------------------------------------------------------------------- Service LogMemoryUsage() CmdLine = GetCommandLine() EngIndex = Index(CmdLine, '/S=', 1) EngNo = CmdLine[EngIndex + 3, 'F '] BaseGroupResource = 'GRP_OPENINSIGHT_MES_OP_FE_ENGINES_' MonaResource = BaseGroupResource:EngNo ErrCode = '' Pid = GetCurrentProcessId() If Pid NE '' then DotNetHandle = StartDotNet("","4.0") DotNetDir = CheckDotNet('4.0'):'\' DirDllPath = DotNetDir:'System.dll' Set_Property.Net(DotNetHandle, "AssemblyName", DirDllPath) If Not(Get_Status(errCode)) then objProc = Create_Class.Net(DotNetHandle, "System.Diagnostics.Process", False$) If Not(Get_status(errCode)) then Methods = Get_Info.Net(objProc, REVDOTNET_INFO_METHODS) objThisProc = Send_Message.Net(objProc, "GetProcessById", Pid, 'System.Int32', True$) If Not(Get_Status(errCode)) then // Log memory values PeakWorkingSet = Get_Property.Net(objThisProc, 'PeakWorkingSet64', False$) / 1024 WorkingSet = Get_Property.Net(objThisProc, 'WorkingSet64', False$) / 1024 Mona_Services('PostAverageMetric', MonaResource, 'PeakMemoryUsage', PeakWorkingSet) Mona_Services('PostAverageMetric', MonaResource, 'CurrentMemoryUsage', WorkingSet) Free_Class.Net(objThisProc) end Free_Class.Net(objProc) end end end End Service