SHARE
TWEET

Untitled

a guest Sep 14th, 2011 155 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from time import sleep
  2. #from fs.osfs import OSFS
  3. #from fs.expose import fuse
  4. from fs.memoryfs import MemoryFS
  5. from multiprocessing.managers import BaseManager
  6. from multiprocessing import Process, get_logger
  7.  
  8. class data(object):
  9.         def __init__(self, fspath='tmpramfs'):
  10.                 self.ofiles = list()
  11.                 self.fname = fspath
  12. #               self.homefs = OSFS('/tmp')
  13. #               self.homefs.makedir(
  14. #                       self.fname,
  15. #                       allow_recreate=True)
  16.                 self.memoryfs = MemoryFS()
  17.                 self.memoryfs.makedir('testing')
  18. #               self.mount = fuse.mount(
  19. #                               self.memoryfs,
  20. #                               '/tmp/xmond_tmpramfs')
  21.  
  22.         def internalLock(self, Argument):
  23.                 for _ in range(1000):
  24.                         if not Argument in self.ofiles:
  25.                                 self.ofiles.append(Argument)
  26.                                 return
  27.                         sleep(.005)
  28.                 return
  29.  
  30.         def finish(self):
  31.                 self.mount.umount()
  32.                 return
  33.  
  34.         def exists(self, Argument):
  35.                 if self.isDir(Argument) or self.isFile(Argument):
  36.                         return True
  37.                 return False
  38.  
  39.         def isFile(self, Argument):
  40.                 if self.memoryfs.isfile(Argument):
  41.                         return True
  42.                 return False
  43.  
  44.         def isDir(self, Argument):
  45.                 if self.memoryfs.isdir(Argument):
  46.                         return True
  47.                 return False
  48.  
  49.         def tree(self, Argument=False):
  50.                 if not Argument:
  51.                         tmpResult = []
  52.                         _walk = self.memoryfs.walk()
  53.                         while True:
  54.                                 try: tmpResult.append(_walk.next())
  55.                                 except: return tmpResult
  56.                        
  57.                         tmpResult = self.memoryfs.tree()
  58.                         return tmpResult
  59.                         return self.memoryfs.tree()
  60.                 if self.memoryfs.isdir(Argument):
  61.                         return self.memoryfs.tree(Argument)
  62.                 return False
  63.  
  64.         def get(self, Argument):
  65.                 if self.memoryfs.isfile(Argument):
  66.                         self.internalLock(Argument)
  67.                         try: tmpDataFile = self.memoryfs.open(Argument, 'r')
  68.                         except: self._unlock(Argument)
  69.                         else:
  70.                                 tmpData = tmpDataFile.read()
  71.                                 tmpDataFile.close()
  72.                                 self._unlock(Argument)
  73.                                 return tmpData
  74.                 return False
  75.  
  76.         def close(self, Argument):
  77.                 if Argument in self.ofiles:
  78.                         try: self.memoryfs.close(Argument)
  79.                         except: return False
  80.                         self._unlock(Argument)
  81.                         return True
  82.                 return False
  83.  
  84.         def open(self, Argument, rw='rb'):
  85.                 if self.memoryfs.isfile(Argument):
  86.                         self.internalLock(Argument)
  87.                         try: tmpfh = self.memoryfs.open(Argument, rw)
  88.                         except: return False
  89.                         else:
  90.                                 self.ofiles.append(Argument)
  91.                                 return tmpfh
  92.                 return False
  93.  
  94.         def create(self, Argument, Value=None):
  95.                 return self.set(Argument, Value)
  96.  
  97.         def _unlock(self, Argument):
  98.                 if Argument in self.ofiles:
  99.                         self.ofiles.remove(Argument)
  100.                 return
  101.  
  102.         def remove(self, Argument):
  103.                 return self.delete(Argument)
  104.  
  105.         def delete(self, Argument):
  106.                 if self.exists(Argument):
  107.                         self.internalLock(Argument)
  108.                         if self.isDir(Argument):
  109.                                 self.memoryfs.removedir(Argument,
  110.                                         recursive=False, force=True)
  111.                                 self._unlock(Argument)
  112.                                 return True
  113.                         elif self.isFile(Argument):
  114.                                 self.memoryfs.remove(Argument)
  115.                                 self._unlock(Argument)
  116.                                 return True
  117.                 self._unlock(Argument)
  118.                 return False
  119.  
  120.         def set(self, Argument, Value=None):
  121.                 if len(Argument) <= 1:
  122.                         return False
  123.                
  124.                 if not Value:
  125.                         if self.memoryfs.isdir(Argument):
  126.                                 return True
  127.                         elif self.memoryfs.isfile(Argument):
  128.                                 return False
  129.                         self.memoryfs.makedir(Argument,
  130.                                         allow_recreate=True,
  131.                                         recursive=True)
  132.                         return True
  133.                
  134.                 if self.memoryfs.isdir(Argument):
  135.                         return False
  136.                
  137.                 self.internalLock(Argument)
  138.                
  139.                 tmppath = "/".join(Argument.split('/')
  140.                                 )[:-len(Argument.split('/')[-1]
  141.                                 )-1].replace('//', '/')
  142.                 if not self.memoryfs.isdir(tmppath):
  143.                         self.memoryfs.makedir(tmppath,
  144.                                         allow_recreate=True,
  145.                                         recursive=True)
  146.                
  147.                 if not self.memoryfs.isfile(Argument):
  148.                         try: self.memoryfs.createfile(Argument, repr(Value))
  149.                         except:
  150.                                 self._unlock(Argument)
  151.                                 return False
  152.                
  153.                 try: tmpDataFile = self.memoryfs.open(Argument, 'rw')
  154.                 except:
  155.                         self._unlock(Argument)
  156.                         return False
  157.                 else:
  158.                         tmpDataFile.write(repr(Value))
  159.                         tmpDataFile.close()
  160.                         self._unlock(Argument)
  161.                         return True
  162.                
  163.                 self._unlock(Argument)
  164.                 return False
  165.  
  166.  
  167. class DataManager(BaseManager): pass
  168.  
  169.  
  170. class DataProcess(Process):
  171.         def __init__(self, authkey, public):
  172.                 Process.__init__(self)
  173.                 self.authkey = authkey
  174.                 self.dataS = data()
  175.                 self.daemon = True
  176.                 self.addr = '127.0.0.1'
  177.                 if public:
  178.                         self.addr = '0.0.0.0'
  179.  
  180.         def run(self):
  181.                 DataManager.register('get_data',
  182.                         callable=lambda:self.dataS)
  183.                 datamgr = DataManager(
  184.                         address = (self.addr, 7349),
  185.                         authkey = self.authkey)
  186.                
  187.                 datasrv = datamgr.get_server()
  188.                 datasrv.serve_forever()
  189.  
  190.  
  191.  
  192. def create(authkey, public=False):
  193.         try:
  194.                 DP = DataProcess(authkey, public)
  195.                 DP.start()
  196.         except: return False
  197.        
  198.         return True
  199.  
  200.  
  201. create('authKey')
  202. while True:
  203.         sleep(600)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top