From 8fc8568222cbfd5495c6baeb5c80cf3dd86772c2 Mon Sep 17 00:00:00 2001 From: Travis Cunningham Date: Mon, 10 Jun 2013 13:49:24 -0400 Subject: [PATCH] Removed singleton and imported the tendo library, which has the official singleton module --- src/bitmessagemain.py | 4 +-- src/singleton.py | 61 ------------------------------------------- 2 files changed, 2 insertions(+), 63 deletions(-) delete mode 100644 src/singleton.py diff --git a/src/bitmessagemain.py b/src/bitmessagemain.py index f9f0950c..d7c27c59 100755 --- a/src/bitmessagemain.py +++ b/src/bitmessagemain.py @@ -45,7 +45,7 @@ import signal #Used to capture a Ctrl-C keypress so that Bitmessage can shutdown from SimpleXMLRPCServer import * import json from subprocess import call #used when the API must execute an outside program -import singleton +from tendo.singleton import SingleInstance import proofofwork #For each stream to which we connect, several outgoingSynSender threads will exist and will collectively create 8 connections with peers. @@ -3942,7 +3942,7 @@ if useVeryEasyProofOfWorkForTesting: if __name__ == "__main__": # is the application already running? If yes then exit. - thisapp = singleton.singleinstance() + thisapp = SingleInstance() signal.signal(signal.SIGINT, signal_handler) #signal.signal(signal.SIGINT, signal.SIG_DFL) diff --git a/src/singleton.py b/src/singleton.py deleted file mode 100644 index 7ecca3b7..00000000 --- a/src/singleton.py +++ /dev/null @@ -1,61 +0,0 @@ -#! /usr/bin/env python - -import sys -import os -import errno -import tempfile -from multiprocessing import Process - - -class singleinstance: - """ - Implements a single instance application by creating a lock file based on the full path to the script file. - - This is based upon the singleton class from tendo https://github.com/pycontribs/tendo - which is under the Python Software Foundation License version 2 - """ - def __init__(self, flavor_id=""): - import sys - self.initialized = False - basename = os.path.splitext(os.path.abspath(sys.argv[0]))[0].replace("/", "-").replace(":", "").replace("\\", "-") + '-%s' % flavor_id + '.lock' - self.lockfile = os.path.normpath(tempfile.gettempdir() + '/' + basename) - - if sys.platform == 'win32': - try: - # file already exists, we try to remove (in case previous execution was interrupted) - if os.path.exists(self.lockfile): - os.unlink(self.lockfile) - self.fd = os.open(self.lockfile, os.O_CREAT | os.O_EXCL | os.O_RDWR) - except OSError: - type, e, tb = sys.exc_info() - if e.errno == 13: - print 'Another instance of this application is already running' - sys.exit(-1) - print(e.errno) - raise - else: # non Windows - import fcntl - self.fp = open(self.lockfile, 'w') - try: - fcntl.lockf(self.fp, fcntl.LOCK_EX | fcntl.LOCK_NB) - except IOError: - print 'Another instance of this application is already running' - sys.exit(-1) - self.initialized = True - - def __del__(self): - import sys - if not self.initialized: - return - try: - if sys.platform == 'win32': - if hasattr(self, 'fd'): - os.close(self.fd) - os.unlink(self.lockfile) - else: - import fcntl - fcntl.lockf(self.fp, fcntl.LOCK_UN) - if os.path.isfile(self.lockfile): - os.unlink(self.lockfile) - except Exception, e: - sys.exit(-1)