Bugfix: Stratum: Replies should not be sent if request id is null
[bitcoin:eloipool.git] / interactivemode.py
1 # Eloipool - Python Bitcoin pool server
2 # Copyright (C) 2011-2012  Luke Dashjr <luke-jr+eloipool@utopios.org>
3 #
4 # This program is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU Affero General Public License as
6 # published by the Free Software Foundation, either version 3 of the
7 # License, or (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU Affero General Public License for more details.
13 #
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
17 def exit():
18         import os, signal
19         os.kill(os.getpid(), signal.SIGTERM)
20
21 def _RunCLI():
22         import code, sys, threading
23         try:
24                 raise None
25         except:
26                 namespace = sys.exc_info()[2].tb_frame.f_back.f_back.f_globals
27         
28         namespace.setdefault('exit', exit)
29         
30         def CLI():
31                 while True:
32                         code.interact(local=namespace, banner='')
33                         print("Not exiting implicitly. Use exit() if you really want to.")
34                         dt = ndt = 0
35                         for thread in threading.enumerate():
36                                 if thread.daemon:
37                                         dt += 1
38                                 else:
39                                         ndt += 1
40                         print("(%d threads: %d primary, %d daemon)" % (dt + ndt, ndt, dt))
41         threading.Timer(0, CLI).start()
42
43 _RunCLI()