# # $Id$ # # Performance Measurement and Monitoring extension for Julia. # # Copyright (C) 2007 # Distributed Systems Research Group # Faculty of Mathematics and Physics # Charles University in Prague # Czech Republic # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Contact: group@dsrg.mff.cuni.cz # Authors: Lubomir Bulej # Credits: Vladimir Mencl # ############################################################################### # # Primitive and composite components with a # performance measurement and monitoring controller. # ############################################################################### # ----------------------------------------------------------------------------- # INTERCEPTOR CODE GENERATORS # ----------------------------------------------------------------------------- (performancemonitor-primitive-interceptor (org.ow2.dsrg.jpmf.fractal.julia.PerformanceMonitorInterceptorClassGenerator org.ow2.dsrg.jpmf.fractal.julia.PerformanceMonitorInterceptorCodeGenerator org.objectweb.fractal.julia.asm.LifeCycleCodeGenerator ) ) (performancemonitor-composite-interceptor (org.ow2.dsrg.jpmf.fractal.julia.PerformanceMonitorInterceptorClassGenerator org.ow2.dsrg.jpmf.fractal.julia.PerformanceMonitorInterceptorCodeGenerator ) ) # ----------------------------------------------------------------------------- # CONTROLLER INTERFACES # # each definition must be of the form (interface-name interface-signature) # ----------------------------------------------------------------------------- # PerformanceMonitorController interface (performancemonitor-controller-itf (performancemonitor-controller org.ow2.dsrg.jpmf.fractal.PerformanceMonitorController) ) # ----------------------------------------------------------------------------- # CONTROLLER OBJECTS # # each definition must be an object descriptor # ----------------------------------------------------------------------------- # PerformanceMonitorController implementation # # The implementation of the controller goes into class named # PerformanceMonitorControllerImpl, which is generated by mixing # together the BasicControllerMixin, UseComponentMixin, and finally # PerformanceMonitorControllerMixin. (performancemonitor-controller-impl ((org.objectweb.fractal.julia.asm.MixinClassGenerator PerformanceMonitorControllerImpl org.objectweb.fractal.julia.BasicControllerMixin # require a reference to ComponentInterface org.objectweb.fractal.julia.UseComponentMixin # add PerformanceMonitorController methods org.ow2.dsrg.jpmf.fractal.julia.PerformanceMonitorControllerMixin )) ) # LifeCycleController implementation (for primitive or composite components) # extended with support for interaction with PerformanceMonitorController (performancemonitor-lifecycle-controller-impl ((org.objectweb.fractal.julia.asm.MixinClassGenerator LifeCycleControllerImpl org.objectweb.fractal.julia.BasicControllerMixin org.objectweb.fractal.julia.UseComponentMixin org.objectweb.fractal.julia.control.lifecycle.BasicLifeCycleCoordinatorMixin org.objectweb.fractal.julia.control.lifecycle.BasicLifeCycleControllerMixin # to check that mandatory client interfaces are bound in startFc: org.objectweb.fractal.julia.control.lifecycle.TypeLifeCycleMixin # to notify the encapsulated component (if present) when its state changes: org.objectweb.fractal.julia.control.lifecycle.ContainerLifeCycleMixin ##### extensions for performance monitor controller interaction # require a reference to PerformanceMonitorController org.ow2.dsrg.jpmf.fractal.julia.UsePerformanceMonitorControllerMixin # do the interaction org.ow2.dsrg.jpmf.fractal.julia.PerformanceMonitorLifeCycleMixin )) ) # LifeCycleController implementation (for composite components only) # extended with support for interaction with PerformanceMonitorController (performancemonitor-composite-lifecycle-controller-impl ((org.objectweb.fractal.julia.asm.MixinClassGenerator CompositeLifeCycleControllerImpl org.objectweb.fractal.julia.BasicControllerMixin org.objectweb.fractal.julia.UseComponentMixin org.objectweb.fractal.julia.control.lifecycle.BasicLifeCycleCoordinatorMixin org.objectweb.fractal.julia.control.lifecycle.OptimizedLifeCycleControllerMixin # to check that mandatory client interfaces are bound in startFc: org.objectweb.fractal.julia.control.lifecycle.TypeLifeCycleMixin ##### extensions for performance monitor controller interaction # require a reference to PerformanceMonitorController org.ow2.dsrg.jpmf.fractal.julia.UsePerformanceMonitorControllerMixin # do the interaction org.ow2.dsrg.jpmf.fractal.julia.PerformanceMonitorLifeCycleMixin )) ) # ----------------------------------------------------------------------------- # CONTROLLER DESCRIPTORS # ----------------------------------------------------------------------------- (performancemonitor-primitive ( 'interface-class-generator ( 'component-itf 'binding-controller-itf 'super-controller-itf # only if super-controller-itf does not designate the Julia interface: # 'julia-super-controller-itf 'lifecycle-controller-itf # only if lifecycle-controller-itf does not designate the Julia interface: # 'julia-lifecycle-controller-itf 'name-controller-itf 'performancemonitor-controller-itf ) ( 'component-impl 'container-binding-controller-impl 'super-controller-impl 'performancemonitor-lifecycle-controller-impl 'name-controller-impl 'performancemonitor-controller-impl ) ( 'performancemonitor-primitive-interceptor ) org.objectweb.fractal.julia.asm.MergeClassGenerator 'optimizationLevel ) ) (performancemonitor-composite ( 'interface-class-generator ( 'component-itf 'binding-controller-itf 'content-controller-itf 'super-controller-itf # only if super-controller-itf does not designate the Julia interface: # 'julia-super-controller-itf 'lifecycle-controller-itf # only if lifecycle-controller-itf does not designate the Julia interface: # 'julia-lifecycle-controller-itf 'name-controller-itf 'performancemonitor-controller-itf ) ( 'component-impl 'composite-binding-controller-impl 'content-controller-impl 'super-controller-impl 'performancemonitor-composite-lifecycle-controller-impl 'name-controller-impl 'performancemonitor-controller-impl ) ( 'performancemonitor-composite-interceptor ) org.objectweb.fractal.julia.asm.MergeClassGenerator 'optimizationLevel ) ) # ----------------------------------------------------------------------------- # STANDARD CONTROLLER DESCRIPTOR OVERRIDE # ----------------------------------------------------------------------------- (primitive 'performancemonitor-primitive ) (composite 'performancemonitor-composite ) # ----------------------------------------------------------------------------- # STANDARD SETTINGS OVERRIDE # ----------------------------------------------------------------------------- (optimizationLevel # choose one of the following optimization options: none # mergeControllers # mergeControllersAndInterceptors # mergeControllersAndContent # mergeControllersInterceptorsAndContent )