Mercurial > traipse_dev
comparison orpg/networking/server_plugins.py @ 71:449a8900f9ac ornery-dev
Code refining almost completed, for this round. Some included files are still in need of some clean up, but this is test worthy.
author | sirebral |
---|---|
date | Thu, 20 Aug 2009 03:00:39 -0500 |
parents | 4385a7d0efd1 |
children | d1aff41c031b |
comparison
equal
deleted
inserted
replaced
70:52a5fa913008 | 71:449a8900f9ac |
---|---|
22 self.__ptype = ptype | 22 self.__ptype = ptype |
23 self.__plugins = {} | 23 self.__plugins = {} |
24 | 24 |
25 def initBase(self): | 25 def initBase(self): |
26 self._startPlugins() | 26 self._startPlugins() |
27 | |
28 | 27 |
29 #Methods | 28 #Methods |
30 def _startPlugins(self): | 29 def _startPlugins(self): |
31 autoload = [] | 30 autoload = [] |
32 #Fill autoload from some file with the Plugin Names | 31 #Fill autoload from some file with the Plugin Names |
58 | 57 |
59 #Now Load it | 58 #Now Load it |
60 self._load(pluginData) | 59 self._load(pluginData) |
61 | 60 |
62 #Write to the autoload file for this plugin | 61 #Write to the autoload file for this plugin |
63 | |
64 self.__plugins[pluginName].Activated = True | 62 self.__plugins[pluginName].Activated = True |
65 self.__plugins[pluginName].start() | 63 self.__plugins[pluginName].start() |
66 | 64 |
67 def deactivatePugin(self, pluginData): | 65 def deactivatePugin(self, pluginData): |
68 if not self.__plugins.has_key(pluginName): | 66 if not self.__plugins.has_key(pluginName): |
69 #Print some error about invalid plugin | 67 #Print some error about invalid plugin |
70 return | 68 return |
69 | |
71 pluginData = self.__plugins[pluginName] | 70 pluginData = self.__plugins[pluginName] |
72 | |
73 self.__plugins[pluginName].stop() | 71 self.__plugins[pluginName].stop() |
74 | 72 |
75 #Unload it | 73 #Unload it |
76 self._unload(pluginData) | 74 self._unload(pluginData) |
77 | |
78 #Remove this plugin from the autoload file | 75 #Remove this plugin from the autoload file |
79 | 76 |
80 #Private Methods | 77 #Private Methods |
81 def _findModule(self, pluginFile): | 78 def _findModule(self, pluginFile): |
82 s1 = pluginFile.split(os.sep) | 79 s1 = pluginFile.split(os.sep) |
83 s2 = s1[-1].split('.') | 80 s2 = s1[-1].split('.') |
84 return ('plugins.' + self.__ptype + '.' + s2[0], s2[0]) | 81 return ('plugins.' + self.__ptype + '.' + s2[0], s2[0]) |
85 | 82 |
86 def _unload(self, pluginData): | 83 def _unload(self, pluginData): |
87 self.__plugins[pluginData.Name] = PluginData(pluginData.Name, pluginData.File, pluginData.Author, pluginData.Help) | 84 self.__plugins[pluginData.Name] = PluginData(pluginData.Name, |
85 pluginData.File, | |
86 pluginData.Author, | |
87 pluginData.Help) | |
88 unload = [] | 88 unload = [] |
89 mod = self._findModule(pluginData.File)[0] | 89 mod = self._findModule(pluginData.File)[0] |
90 for key, module in sys.modules.iteritems(): | 90 for key, module in sys.modules.iteritems(): |
91 if str(module).find(mod) > -1: | 91 if str(module).find(mod) > -1: |
92 unload.append(key) | 92 unload.append(key) |
113 def _getPlugins(self): | 113 def _getPlugins(self): |
114 return self.__plugins | 114 return self.__plugins |
115 | 115 |
116 def _getType(self): | 116 def _getType(self): |
117 return self.__ptype | 117 return self.__ptype |
118 | |
119 | |
120 #Properties | 118 #Properties |
121 Plugins = property(_getPlugins, None) | 119 Plugins = property(_getPlugins, None) |
122 Type = property(_getType, None) | 120 Type = property(_getType, None) |
123 | 121 |
124 class ServerPluginsClass(BasePluginsClass): | 122 class ServerPluginsClass(BasePluginsClass): |
130 self.initBase() | 128 self.initBase() |
131 | 129 |
132 def preParseIncoming(self, xml_dom, data): | 130 def preParseIncoming(self, xml_dom, data): |
133 sent = True | 131 sent = True |
134 errmsg = "" | 132 errmsg = "" |
135 | |
136 for pluginName, pluginData in self.Plugins.iteritems(): | 133 for pluginName, pluginData in self.Plugins.iteritems(): |
137 if pluginData.Activated: | 134 if pluginData.Activated: |
138 xml_dom, data = pluginData.preParseIncoming(xml_dom, data) | 135 xml_dom, data = pluginData.preParseIncoming(xml_dom, data) |
139 | |
140 return xml_dom, data | 136 return xml_dom, data |
141 | 137 |
142 def postParseIncoming(self, data): | 138 def postParseIncoming(self, data): |
143 for pluginName, pluginData in self.Plugins.iteritems(): | 139 for pluginName, pluginData in self.Plugins.iteritems(): |
144 if pluginData.Activated: | 140 if pluginData.Activated: |
145 data = pluginData.postParseIncoming(data) | 141 data = pluginData.postParseIncoming(data) |
146 | |
147 return data | 142 return data |
148 | 143 |
149 def getPlayer(self): | 144 def getPlayer(self): |
150 players = [] | 145 players = [] |
151 for pluginName, pluginData in self.Plugins.iteritems(): | 146 for pluginName, pluginData in self.Plugins.iteritems(): |
152 if pluginData.Activated: | 147 if pluginData.Activated: |
153 playerName = pluginData.addPlayer(data) | 148 playerName = pluginData.addPlayer(data) |
154 players.append(playerName) | 149 players.append(playerName) |
155 | |
156 return players | 150 return players |
157 | 151 |
158 def setPlayer(self, playerData): | 152 def setPlayer(self, playerData): |
159 players = [] | 153 players = [] |
160 for pluginName, pluginData in self.Plugins.iteritems(): | 154 for pluginName, pluginData in self.Plugins.iteritems(): |
161 if pluginData.Activated: | 155 if pluginData.Activated: |
162 playerName = pluginData.addPlayer(data) | 156 playerName = pluginData.addPlayer(data) |
163 players.append(playerName) | 157 players.append(playerName) |
164 | |
165 return | 158 return |
166 | 159 |
167 def preParseOutgoing(self): | 160 def preParseOutgoing(self): |
168 data = [] | 161 data = [] |
169 for pluginName, pluginData in self.Plugins.iteritems(): | 162 for pluginName, pluginData in self.Plugins.iteritems(): |
170 if pluginData.Activated: | 163 if pluginData.Activated: |
171 xml = pluginData.preParseOutgoing() | 164 xml = pluginData.preParseOutgoing() |
172 for msg in xml: | 165 for msg in xml: |
173 data.append(msg) | 166 data.append(msg) |
174 | |
175 return data | 167 return data |
176 | 168 |
177 def postParseOutgoing(self): | 169 def postParseOutgoing(self): |
178 data = [] | 170 data = [] |
179 for pluginName, pluginData in self.Plugins.iteritems(): | 171 for pluginName, pluginData in self.Plugins.iteritems(): |
180 if pluginData.Activated: | 172 if pluginData.Activated: |
181 xml = pluginData.postParseOutgoing() | 173 xml = pluginData.postParseOutgoing() |
182 for msg in xml: | 174 for msg in xml: |
183 data.append(msg) | 175 data.append(msg) |
184 | |
185 return data | 176 return data |
186 | 177 |
187 __key = _SingletonKey() | 178 __key = _SingletonKey() |
188 ServerPlugins = ServerPluginsClass(__key) | 179 ServerPlugins = ServerPluginsClass(__key) |