class Server(da.DistProcess): def __init__(self, parent, initq, channel, props): super().__init__(parent, initq, channel, props) self._ServerReceivedEvent_0 = [] self._events.extend([da.pat.EventPattern(da.pat.ReceivedEvent, '_ServerReceivedEvent_0', PatternExpr_2, sources=[PatternExpr_3], destinations=None, timestamps=None, record_history=True, handlers=[]), da.pat.EventPattern(da.pat.ReceivedEvent, '_ServerReceivedEvent_1', PatternExpr_5, sources=[PatternExpr_6], destinations=None, timestamps=None, record_history=None, handlers=[self._Server_handler_1]), da.pat.EventPattern(da.pat.ReceivedEvent, '_ServerReceivedEvent_2', PatternExpr_7, sources=[PatternExpr_8], destinations=None, timestamps=None, record_history=None, handlers=[self._Server_handler_2]), da.pat.EventPattern(da.pat.ReceivedEvent, '_ServerReceivedEvent_3', PatternExpr_9, sources=[PatternExpr_10], destinations=None, timestamps=None, record_history=None, handlers=[self._Server_handler_3])]) def setup(self, servers, index, client, Nlength, master): self.client = client self.servers = servers self.index = index self.Nlength = Nlength self.master = master self.bankobj = Bank('wells', '123') self.startindex = 0 self.head = self.servers[0] if (self.index == (self.Nlength - 1)): self.output(str(self.index)) self.next = self.client else: self.next = self.servers[(self.index + 1)] self.endindex = (self.Nlength - 1) self.output(('serverindex' + str(self.index))) def main(self): _thread.start_new_thread(self.sendHealthCheck, ('Thread', 3, self.index, self.master)) p = request = None def ExistentialOpExpr_0(): nonlocal p, request for (_, (_, _, p), (_ConstantPattern15_, request)) in self._ServerReceivedEvent_0: if (_ConstantPattern15_ == 'request'): if True: return True return False _st_label_63 = 0 while (_st_label_63 == 0): _st_label_63 += 1 if ExistentialOpExpr_0(): _st_label_63 += 1 else: super()._label('_st_label_63', block=True) _st_label_63 -= 1 _st_label_64 = 0 while (_st_label_64 == 0): _st_label_64 += 1 if False: _st_label_64 += 1 else: super()._label('_st_label_64', block=True) _st_label_64 -= 1 def sendHealthCheck(self, threadName, delay, index, master): self.output('inside sendHealthCheck') self.output((' %r.' % index)) while True: time.sleep(delay) self._send(('HealthCheckmsg', index), master) def _Server_handler_1(self, tindex, p): self.output('updated tail server end') self.endindex = tindex _Server_handler_1._labels = None _Server_handler_1._notlabels = None def _Server_handler_2(self, tindex, p): self.output('updated next server end') self.next = self.servers[tindex] _Server_handler_2._labels = None _Server_handler_2._notlabels = None def _Server_handler_3(self, request, p): if (request.outcome in ['processed', 'inconsistent', 'insufficientfunds']): self.bankobj.set(request) elif (request.transaction == 'deposit'): request = self.bankobj.deposit(request) elif (request.transaction == 'withdraw'): request = self.bankobj.withdraw(request) elif (request.transaction == 'getbalance'): request = self.bankobj.getbalance(request) if (self.index < self.endindex): self._send(('request', request), self.next) self.output(('<%r,%s,%r>' % (request.requestid, request.outcome, request.balance))) else: self._send(('reply', request), self.client) _Server_handler_3._labels = None _Server_handler_3._notlabels = None