Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.86 KB | None | 0 0
  1. ConsoleLogger.py
  2. class SocketLogger( threading.Thread ):
  3. def __init__( self, clogger ):
  4. self.clogger = clogger
  5. self.socketname = self.clogger.socketname
  6.  
  7. self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
  8. try:
  9. os.remove(self.socketname)
  10. except OSError:
  11. pass
  12. self.sock.bind(self.socketname)
  13.  
  14. threading.Thread.__init__ ( self )
  15. self.setDaemon ( True )
  16.  
  17. def run ( self ):
  18. self.sock.listen(1)
  19. while 1:
  20. rate = self.clogger.rate if (not self.clogger.miner.idle) else 0
  21. type = " [" + str(self.clogger.connectionType) + "]" if self.clogger.connectionType is not None else ''
  22. status = (
  23. "[" + formatNumber(rate) + "hash/sec] "
  24. "[" + str(self.clogger.accepted) + " Accepted] "
  25. "[" + str(self.clogger.invalid) + " Rejected]" + type)
  26. conn, addr = self.sock.accept()
  27. conn.send(status)
  28. conn.close()
  29.  
  30.  
  31.  
  32. class ConsoleLogger(object):
  33. """This class will handle printing messages to the console."""
  34.  
  35. TIME_FORMAT = '[%d/%m/%Y %H:%M:%S]'
  36.  
  37. UPDATE_TIME = 1.0
  38.  
  39. def __init__(self, miner, socketname, verbose=False):
  40. self.verbose = verbose
  41. self.miner = miner
  42. self.lastUpdate = time() - 1
  43. self.lastUpdateWrite = time() - 1
  44. self.rate = 0
  45. self.accepted = 0
  46. self.invalid = 0
  47. self.lineLength = 0
  48. self.connectionType = None
  49. self.socketname = socketname
  50. SocketLogger (self).start()
  51.  
  52.  
  53. phoenix.py:
  54. class CommandLineOptions(object):
  55. """Implements the Options interface for user-specified command-line
  56. arguments.
  57. """
  58.  
  59. def __init__(self):
  60. self.parsedSettings = None
  61. self.url = None
  62.  
  63. self.logger = None
  64. self.connection = None
  65. self.kernel = None
  66. self.queue = None
  67. self.socketname = None
  68.  
  69. self.kernelOptions = {}
  70.  
  71. self._parse()
  72.  
  73. def _parse(self):
  74. parser = OptionParser(usage="%prog -u URL [-k kernel] [kernel params]")
  75. parser.add_option("-v", "--verbose", action="store_true",
  76. dest="verbose", default=False, help="show debug messages")
  77. parser.add_option("-k", "--kernel", dest="kernel", default="poclbm",
  78. help="the name of the kernel to use")
  79. parser.add_option("-u", "--url", dest="url", default=None,
  80. help="the URL of the mining server to work for [REQUIRED]")
  81. parser.add_option("-s", "--socketname", dest="socketname", default=None,
  82. help="Full path to file for outputting current status.")
  83. parser.add_option("-q", "--queuesize", dest="queuesize", type="int",
  84. default=1, help="how many work units to keep queued at all times")
  85. parser.add_option("-a", "--avgsamples", dest="avgsamples", type="int",
  86. default=10,
  87. help="how many samples to use for hashrate average")
  88.  
  89. self.parsedSettings, args = parser.parse_args()
  90.  
  91. if self.parsedSettings.url is None:
  92. parser.print_usage()
  93. exit()
  94. else:
  95. self.url = self.parsedSettings.url
  96.  
  97. for arg in args:
  98. self._kernelOption(arg)
  99.  
  100. def getQueueSize(self):
  101. return self.parsedSettings.queuesize
  102. def getAvgSamples(self):
  103. return self.parsedSettings.avgsamples
  104.  
  105. def _kernelOption(self, arg):
  106. pair = arg.split('=',1)
  107. if len(pair) < 2:
  108. pair.append(None)
  109. var, value = tuple(pair)
  110. self.kernelOptions[var.upper()] = value
  111.  
  112. def makeLogger(self, requester, miner):
  113. if not self.logger:
  114. self.logger = ConsoleLogger(miner, self.parsedSettings.socketname, self.parsedSettings.verbose)
  115. return self.logger
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement