Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Unified Diff: third_party/twisted_8_1/twisted/persisted/journal/base.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/twisted_8_1/twisted/persisted/journal/base.py
diff --git a/third_party/twisted_8_1/twisted/persisted/journal/base.py b/third_party/twisted_8_1/twisted/persisted/journal/base.py
deleted file mode 100644
index 196a47cec2cdf10e0ae61186540cb4107f581666..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/persisted/journal/base.py
+++ /dev/null
@@ -1,226 +0,0 @@
-# -*- test-case-name: twisted.test.test_journal -*-
-#
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-#
-
-
-"""Basic classes and interfaces for journal."""
-
-from __future__ import nested_scopes
-
-# system imports
-import os, time
-
-try:
- import cPickle as pickle
-except ImportError:
- import pickle
-
-# twisted imports
-from zope.interface import implements, Interface
-
-
-class Journal:
- """All commands to the system get routed through here.
-
- Subclasses should implement the actual snapshotting capability.
- """
-
- def __init__(self, log, journaledService):
- self.log = log
- self.journaledService = journaledService
- self.latestIndex = self.log.getCurrentIndex()
-
- def updateFromLog(self):
- """Run all commands from log that haven't been run yet.
-
- This method should be run on startup to ensure the snapshot
- is up-to-date.
- """
- snapshotIndex = self.getLastSnapshot()
- if snapshotIndex < self.latestIndex:
- for cmdtime, command in self.log.getCommandsSince(snapshotIndex + 1):
- command.execute(self.journaledService, cmdtime)
-
- def executeCommand(self, command):
- """Log and execute a command."""
- runTime = time.time()
- d = self.log.logCommand(command, runTime)
- d.addCallback(self._reallyExecute, command, runTime)
- return d
-
- def _reallyExecute(self, index, command, runTime):
- """Callback called when logging command is done."""
- result = command.execute(self.journaledService, runTime)
- self.latestIndex = index
- return result
-
- def getLastSnapshot(self):
- """Return command index of the last snapshot taken."""
- raise NotImplementedError
-
- def sync(self, *args, **kwargs):
- """Save journal to disk, returns Deferred of finish status.
-
- Subclasses may choose whatever signature is appropriate, or may
- not implement this at all.
- """
- raise NotImplementedError
-
-
-
-class MemoryJournal(Journal):
- """Prevayler-like journal that dumps from memory to disk."""
-
- def __init__(self, log, journaledService, path, loadedCallback):
- self.path = path
- if os.path.exists(path):
- try:
- self.lastSync, obj = pickle.load(open(path, "rb"))
- except (IOError, OSError, pickle.UnpicklingError):
- self.lastSync, obj = 0, None
- loadedCallback(obj)
- else:
- self.lastSync = 0
- loadedCallback(None)
- Journal.__init__(self, log, journaledService)
-
- def getLastSnapshot(self):
- return self.lastSync
-
- def sync(self, obj):
- # make this more reliable at some point
- f = open(self.path, "wb")
- pickle.dump((self.latestIndex, obj), f, 1)
- f.close()
- self.lastSync = self.latestIndex
-
-
-class ICommand(Interface):
- """A serializable command which interacts with a journaled service."""
-
- def execute(journaledService, runTime):
- """Run the command and return result."""
-
-
-class ICommandLog(Interface):
- """Interface for command log."""
-
- def logCommand(command, runTime):
- """Add a command and its run time to the log.
-
- @return: Deferred of command index.
- """
-
- def getCurrentIndex():
- """Return index of last command that was logged."""
-
- def getCommandsSince(index):
- """Return commands who's index >= the given one.
-
- @return: list of (time, command) tuples, sorted with ascending times.
- """
-
-
-class LoadingService:
- """Base class for journalled service used with Wrappables."""
-
- def loadObject(self, objType, objId):
- """Return object of specified type and id."""
- raise NotImplementedError
-
-
-class Wrappable:
- """Base class for objects used with LoadingService."""
-
- objectType = None # override in base class
-
- def getUid(self):
- """Return uid for loading with LoadingService.loadObject"""
- raise NotImplementedError
-
-
-class WrapperCommand:
-
- implements(ICommand)
-
- def __init__(self, methodName, obj, args=(), kwargs={}):
- self.obj = obj
- self.objId = obj.getUid()
- self.objType = obj.objectType
- self.methodName = methodName
- self.args = args
- self.kwargs = kwargs
-
- def execute(self, svc, commandTime):
- if not hasattr(self, "obj"):
- obj = svc.loadObject(self.objType, self.objId)
- else:
- obj = self.obj
- return getattr(obj, self.methodName)(*self.args, **self.kwargs)
-
- def __getstate__(self):
- d = self.__dict__.copy()
- del d["obj"]
- return d
-
-
-def command(methodName, cmdClass=WrapperCommand):
- """Wrap a method so it gets turned into command automatically.
-
- For use with Wrappables.
-
- Usage::
-
- | class Foo(Wrappable):
- | objectType = "foo"
- | def getUid(self):
- | return self.id
- | def _bar(self, x):
- | return x + 1
- |
- | bar = command('_bar')
-
- The resulting callable will have signature identical to wrapped
- function, except that it expects journal as first argument, and
- returns a Deferred.
- """
- def wrapper(obj, journal, *args, **kwargs):
- return journal.executeCommand(cmdClass(methodName, obj, args, kwargs))
- return wrapper
-
-
-class ServiceWrapperCommand:
-
- implements(ICommand)
-
- def __init__(self, methodName, args=(), kwargs={}):
- self.methodName = methodName
- self.args = args
- self.kwargs = kwargs
-
- def execute(self, svc, commandTime):
- return getattr(svc, self.methodName)(*self.args, **self.kwargs)
-
- def __repr__(self):
- return "<ServiceWrapperCommand: %s, %s, %s>" % (self.methodName, self.args, self.kwargs)
-
- def __cmp__(self, other):
- if hasattr(other, "__dict__"):
- return cmp(self.__dict__, other.__dict__)
- else:
- return 0
-
-
-def serviceCommand(methodName, cmdClass=ServiceWrapperCommand):
- """Wrap methods into commands for a journalled service.
-
- The resulting callable will have signature identical to wrapped
- function, except that it expects journal as first argument, and
- returns a Deferred.
- """
- def wrapper(obj, journal, *args, **kwargs):
- return journal.executeCommand(cmdClass(methodName, args, kwargs))
- return wrapper

Powered by Google App Engine
This is Rietveld 408576698