def _response_get_diff(self, s, mid, msg, rstate): lstate = self.socket[s][Request][rstate['ref']] # send out the next one lstate['req-outstanding'] -= 1 self._get_diff(s, rstate['ref']) diffs = lstate['diffs'] diffs[rstate['handle']][rstate['change']] = msg['diff'] lstate['counts'][rstate['handle']] -= 1 if lstate['counts'][rstate['handle']] == 0: lstate['count'] -= 1 # XXX: do better ordering WD = WriteDiff(self.co, rstate['handle'], lstate['txn']) for change, diff in diffs[rstate['handle']].items(): WD.write(diff, change) WD.close() if lstate['modified'].has_key(rstate['handle']): updates(self.co, self.socket[s][UpdateInfo], lstate, rstate['handle']) #del diffs[rstate['handle']] if lstate['count'] == 0: self._update_finish(s, lstate) self.socket[s][UpdateInfo]['head'] = lstate['head'] del self.socket[s][Request][rstate['ref']] self.rs.doneflag.set() return 1
def _response_get_diff(self, s, mid, msg, rstate): lstate = self.socket[s][Response][rstate['ref']] # send out the next one lstate['req-outstanding'] -= 1 self._get_diff(s, rstate['ref']) handle = rstate['handle'] diffs = lstate['diffs'] diffs[handle][rstate['change']] = msg['diff'] del self.socket[s][Request][mid] lstate['counts'][handle] -= 1 if lstate['counts'][handle] == 0: lstate['count'] -= 1 # write out the diffs WD = WriteDiff(self, handle, lstate['txn']) for change, diff in diffs[handle].items(): WD.write(diff, change) WD.close() # XXX: suboptimal change = handle_last_modified(self, self.contents, handle, lstate['cur head'], lstate['txn']) if change is None or is_ancestor(self, change, lstate['head'], lstate['txn']): handle_contents_at_point(self, handle, lstate['head'], lstate['txn'], dcache=diffs[handle]) assert lstate['modified'].has_key(handle) lstate['modified'][handle] = 1 del diffs[handle] try: if lstate['count'] == 0: self._commit_phase_2(s, rstate['ref']) except HistoryError, msg: self._commit_fail(s, rstate['ref'], str(msg)) return