The Meta-Environment API
00001 #ifndef __MODULE_MANAGER__ 00002 #define __MODULE_MANAGER__ 00003 00004 #include <module-manager.idef> 00005 #include <attribute-changed-event.tb> 00006 #include <dependencies-changed-event.tb> 00007 #include <undefined.h> 00008 #include <graph-namespace.h> 00009 00010 process MM-RegisterAttributeUpdateRule(Namespace: term, Key: term, Rule: term, Value: term) is 00011 snd-msg(mm-register-attribute-update-rule(Namespace, Key, Rule, Value)) 00012 00013 process MM-NotifyAboutChangedAttributes is 00014 let 00015 Event: attribute-changed-event, 00016 Namespace: term, 00017 Key: term, 00018 OldValue: term, 00019 NewValue: term, 00020 ModuleId: module-id 00021 in 00022 ( 00023 rec-msg(mm-attribute-changed(ModuleId?, Namespace?, Key?, OldValue?, NewValue?)) 00024 . ACE-MakeEvent(ModuleId, Namespace, Key, OldValue, NewValue, Event?) 00025 . snd-note(mm-attribute-changed(Event)) 00026 ) * delta 00027 endlet 00028 00029 toolbus(MM-NotifyAboutChangedAttributes) 00030 00031 process MM-SetModuleGraphAttribute(ModuleId: module-id, Key: term, Value: term) is 00032 MM-SetAttribute(ModuleId, GRAPH_NAMESPACE, Key, Value) 00033 00034 process MM-CreateModule(ModuleId: module-id?) is 00035 snd-msg(mm-create-module) 00036 . rec-msg(mm-module-created(ModuleId?)) 00037 . snd-note(mm-module-created(ModuleId)) 00038 00039 process MM-GetModuleIdByAttribute(Namespace: term, Key: term, Value: term, ModuleId: term?) is 00040 snd-msg(mm-get-module-id-by-attribute(Namespace, Key, Value)) 00041 . 00042 ( 00043 rec-msg(mm-module-id(Namespace, Key, Value, ModuleId?)) 00044 + 00045 rec-msg(mm-no-such-module(Namespace, Key, Value)) 00046 . ModuleId := UNDEFINED 00047 ) 00048 00049 process MM-GetAllModules(Modules: list?) is 00050 snd-msg(mm-get-all-modules) 00051 . rec-msg(mm-modules(Modules?)) 00052 00053 process MM-DeleteModule(ModuleId: module-id) is 00054 snd-msg(mm-delete-module(ModuleId)) 00055 . snd-note(mm-module-deleted(ModuleId)) 00056 00057 process MM-SetAttribute(ModuleId: module-id, Namespace: term, Key: term, Value: term) is 00058 snd-msg(mm-add-attribute(ModuleId, Namespace, Key, Value)) 00059 00060 process MM-HasAttribute(ModuleId: module-id, Namespace: term, Key: term, HasAttribute: bool?) is 00061 let 00062 Value: term 00063 in 00064 snd-msg(mm-get-attribute(ModuleId, Namespace, Key)) 00065 . 00066 ( 00067 rec-msg(mm-attribute(ModuleId, Namespace, Key, Value?)) 00068 . HasAttribute := true 00069 + 00070 rec-msg(mm-no-such-module(ModuleId, Namespace, Key)) 00071 . HasAttribute := false 00072 + 00073 rec-msg(mm-no-such-key(ModuleId, Namespace, Key)) 00074 . HasAttribute := false 00075 ) 00076 endlet 00077 00078 process MM-GetAttribute(ModuleId: module-id, Namespace: term, Key: term, Value: term?) is 00079 snd-msg(mm-get-attribute(ModuleId, Namespace, Key)) 00080 . 00081 ( 00082 rec-msg(mm-attribute(ModuleId, Namespace, Key, Value?)) 00083 + 00084 rec-msg(mm-no-such-module(ModuleId, Namespace, Key)) 00085 . printf("module-manager - MM-GetAttribute: Unregistered moduleid exception\n") 00086 . printf("ModuleId: [%t], Namespace: [%t], Key: [%t]\n", ModuleId, Namespace, Key) 00087 . shutdown("") 00088 + 00089 rec-msg(mm-no-such-key(ModuleId, Namespace, Key)) 00090 . printf("module-manager - MM-GetAttribute: Unregistered key exception\n") 00091 . printf("ModuleId: [%t], Namespace: [%t], Key: [%t]\n", ModuleId, Namespace, Key) 00092 . shutdown("") 00093 ) 00094 00095 process MM-GetAllAttributes(ModuleId: module-id, Attributes: term?) is 00096 snd-msg(mm-get-all-attributes(ModuleId)) 00097 . 00098 ( 00099 rec-msg(mm-attributes(ModuleId, Attributes?)) 00100 + 00101 rec-msg(mm-no-such-module(ModuleId)) 00102 . Attributes := UNDEFINED 00103 ) 00104 00105 process MM-AddModuleDependency(ModuleId: module-id, Dependency: term) is 00106 let 00107 Event: dependencies-changed-event 00108 in 00109 snd-msg(mm-add-dependency(ModuleId, Dependency)) 00110 . DCE-MakeEvent(ModuleId, Event?) 00111 . snd-note(mm-dependencies-changed(Event)) 00112 endlet 00113 00114 process MM-GetDependencies(Dependencies: list?) is 00115 snd-msg(mm-get-dependencies) 00116 . rec-msg(mm-dependencies(Dependencies?)) 00117 00118 process MM-GetModuleDependencies(ModuleId: module-id, Dependencies: list?) is 00119 snd-msg(mm-get-children-modules(ModuleId)) 00120 . 00121 ( 00122 rec-msg(mm-children-modules(ModuleId, Dependencies?)) 00123 + 00124 rec-msg(mm-no-such-module(ModuleId)) 00125 . Dependencies := UNDEFINED 00126 ) 00127 00128 process MM-GetAllModuleDependencies(ModuleId: module-id, Dependencies: list?) is 00129 snd-msg(mm-get-all-children-modules(ModuleId)) 00130 . 00131 ( 00132 rec-msg(mm-all-children-modules(ModuleId, Dependencies?)) 00133 + 00134 rec-msg(mm-no-such-module(ModuleId)) 00135 . Dependencies := [] 00136 ) 00137 00138 process MM-GetAllModuleParents(ModuleId: module-id, Parents: list?) is 00139 snd-msg(mm-get-all-parent-modules(ModuleId)) 00140 . 00141 ( 00142 rec-msg(mm-all-parent-modules(ModuleId, Parents?)) 00143 + 00144 rec-msg(mm-no-such-module(ModuleId)) 00145 . Parents := [] 00146 ) 00147 00148 process MM-GetModuleParents(ModuleId: module-id, Parents: list?) is 00149 snd-msg(mm-get-parent-modules(ModuleId)) 00150 . 00151 ( 00152 rec-msg(mm-parent-modules(ModuleId, Parents?)) 00153 + 00154 rec-msg(mm-no-such-module(ModuleId)) 00155 . Parents := [] 00156 ) 00157 00158 process MM-GetClosableModules(ModuleId: module-id, Modules: list?) is 00159 snd-msg(mm-get-closable-modules(ModuleId)) 00160 . rec-msg(mm-closable-modules(ModuleId, Modules?)) 00161 00162 process MM-DeleteModuleDependencies(ModuleId: module-id) is 00163 let 00164 Event: dependencies-changed-event 00165 in 00166 snd-msg(mm-delete-dependencies(ModuleId)) 00167 . DCE-MakeEvent(ModuleId, Event?) 00168 . snd-note(mm-dependencies-changed(Event)) 00169 endlet 00170 00171 process MM-GetModuleGraph(Namespace: term, Graph: term?) is 00172 snd-msg(mm-get-module-graph(Namespace)) 00173 . rec-msg(mm-module-graph(Namespace, Graph?)) 00174 00175 process MM-Subscribe-Attribute-Changed(ModuleId: module-id, Namespace: term, Key: term, OldValue: term, NewValue: term) is 00176 subscribe(mm-attribute-changed(attribute-changed-event(ModuleId, Namespace, Key, OldValue, NewValue))) 00177 00178 process MM-Subscribe-Dependencies-Changed(ModuleId: module-id) is 00179 subscribe(mm-dependencies-changed(dependencies-changed-event(ModuleId))) 00180 00181 #endif /* __MODULE_MANAGER__ */