Changeset 1594
- Timestamp:
- 10/31/08 14:44:24 (2 months ago)
- Files:
-
- branches/0.4.7/shell/state/core3.py (modified) (3 diffs)
- branches/0.4.7/shell/state/ddb.py (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/0.4.7/shell/state/core3.py
r1590 r1594 54 54 self.db.preHook = self.preHook 55 55 self.db.postHook = self.postHook 56 self.db.resyncHook = self.resyncHook 57 56 58 self.db.xmlDumpNodeHook = self.xmlDumpNodeHook 57 59 self.dba = self.db.bus.address … … 118 120 e.call(node.private_data["module"],"postUp") 119 121 122 def resyncHook(self,node): 123 env = frame(node, self.bus, self.envg, {}) 124 self.db.commit(node, env, mask = cmask.Resync) 125 126 result = swrapper() 127 result.merge( env.ret ) 128 self.runner.perform(None,None,[result,],flags=emask.Background) 129 130 131 120 132 def addHook(self,primer,db): 121 133 … … 164 176 165 177 166 if primer.oid.keys(): 167 esoteric = opts() 168 esoteric["db"] = db 169 esoteric["primer"] = primer 170 esoteric["root"] = self.root 171 esoteric["bus"] = self.hbus 172 #esoteric["runner"] = CoreService(module.bus, primer.private_data["runner"].addr) 173 if primer.private_data.has_key("runner"): 174 if primer.private_data["runner"] is not None: 175 esoteric["runner"] = CoreService(module.bus,primer.private_data["runner"].addr) 176 177 env = frame(primer, self.bus, self.envg, esoteric) 178 179 180 # call actions 181 env.call(module, "immediate") 182 183 if (module.mask & flags.Immediate) or (bypass(pchain) and not (module.mask & flags.Begin)): 184 primer.flags |= flags.Weak 185 env.call(module, "pre") 186 env.call(module, "postUp") 187 188 #if not env.verdict: 189 # verdict = False 190 if env.index: 191 index = env.index 192 193 if (module.mask & flags.Begin): 194 index = primer.index 195 196 result.merge( env.ret ) 197 if (not module.mask & flags.Lexec): 198 self.runner.perform(None,None,[result,]) 199 result = swrapper() 200 while True: 201 addr = {} 202 r = self.hbus.get(addr,0.5) 203 if r: 204 result.add_command("loopback",r) 205 if r.has_key("retval"): 206 break 178 esoteric = opts() 179 esoteric["db"] = db 180 esoteric["primer"] = primer 181 esoteric["root"] = self.root 182 esoteric["bus"] = self.hbus 183 #esoteric["runner"] = CoreService(module.bus, primer.private_data["runner"].addr) 184 if primer.private_data.has_key("runner"): 185 if primer.private_data["runner"] is not None: 186 esoteric["runner"] = CoreService(module.bus,primer.private_data["runner"].addr) 187 188 env = frame(primer, self.bus, self.envg, esoteric) 189 190 191 # call actions 192 env.call(module, "immediate") 193 194 if (module.mask & flags.Immediate) or (bypass(pchain) and not (module.mask & flags.Begin)): 195 primer.flags |= flags.Weak 196 env.call(module, "pre") 197 env.call(module, "postUp") 198 199 #if not env.verdict: 200 # verdict = False 201 if env.index: 202 index = env.index 203 204 if (module.mask & flags.Begin): 205 index = primer.index 206 207 result.merge( env.ret ) 208 if (not module.mask & flags.Lexec): 209 self.runner.perform(None,None,[result,]) 210 result = swrapper() 211 while True: 212 addr = {} 213 r = self.hbus.get(addr,0.5) 214 if r: 215 result.add_command("loopback",r) 216 if r.has_key("retval"): 217 break 207 218 208 219 ### branches/0.4.7/shell/state/ddb.py
r1589 r1594 70 70 def __init__(self, primer, bus=None, envg=None, esoteric=None, f=None): 71 71 72 assert (bus and envg and esoteric) or f 72 assert ( 73 (bus is not None) and 74 (envg is not None) and 75 (esoteric is not None) 76 ) or f 73 77 74 78 if not bus: … … 88 92 self.index = None 89 93 self.verdict = None 90 self.oid = primer.oid.keys()[0] 94 try: 95 self.oid = primer.oid.keys()[0] 96 except: 97 self.oid = None 91 98 92 99 # debug … … 189 196 return text 190 197 198 def __repr__(self): 199 return "[%s (%s)]" % (self.cn, self.flags) 191 200 192 201 class node (log): … … 205 214 self.dsync = {} 206 215 self.usync = {} 207 self.flags = 0208 216 self.private_data = primer.private_data 209 217 primer.private_data = {} 210 218 self.merge(primer) 211 219 220 ### 221 # 222 # Proxy flags property to/from self.primer 223 # 224 def gf(self): 225 return self.primer.flags 226 def sf(self,v): 227 self.primer.flags = v 228 flags = property(gf, sf) 229 # 230 # Gods only know, why this does not work _here_ :| 231 # 232 ### 233 212 234 def touch(self): 213 235 self.creds["mtime"] = time() … … 218 240 219 241 def merge(self,primer): 220 for i in ("creds", "comment","children","parents","index","cn","opts","oid","secondary"," flags","data"):242 for i in ("creds", "comment","children","parents","index","cn","opts","oid","secondary","data"): 221 243 setattr(self,i,getattr(primer,i)) 222 244 … … 308 330 yield None 309 331 else: 332 # re-commit 333 for i in self.nodeset["root"]: 334 n = self.get(i) 335 self.resyncHook(n) 336 310 337 self.allow() 311 338 return … … 350 377 } 351 378 352 def preHook(self, *argv): 353 return None 354 355 def updHook(self, *argv): 356 return None 357 358 def postHook(self, *argv): 359 return None 360 361 def xmlDumpNodeHook(self, *argv): 362 pass 379 def resyncHook(self, *argv): pass 380 def preHook(self, *argv): pass 381 def updHook(self, *argv): pass 382 def postHook(self, *argv): pass 383 def xmlDumpNodeHook(self, *argv): pass 384 363 385 364 386 def cleanupWeak(self,i): … … 403 425 if \ 404 426 (node.oid.has_key(oid) and node.flags & flags.Mark) or \ 427 (node.flags & flags.Committed and mask & cmask.Resync) or \ 405 428 (mask & cmask.Call): 406 429 … … 408 431 del node.oid[oid] 409 432 410 node. flags &= ~flags.Mark433 node.sf(node.flags & ~flags.Mark) 411 434 412 435 try: … … 420 443 if n.flags & flags.Begin: 421 444 e = frame(n,f=env) 422 self.commit(n,e,oid )445 self.commit(n,e,oid,mask) 423 446 env.ret.extend(e.ret) 424 447 else: 425 self.commit(n,env,oid )448 self.commit(n,env,oid,mask) 426 449 427 450 self.postHook(node,env,self) 451 node.sf(node.flags | flags.Committed) 428 452 429 453 430 454 def markUp(self,node,oid): 431 node. flags |= flags.Mark455 node.sf(node.flags | flags.Mark) 432 456 node.oid[oid] = True 433 457 for i in node.parents:
