minerbot/subapi.py

36 lines
850 B
Python

import subprocess as sp
from threading import Thread
class SubAPI:
def __init__(self):
self.outputListeners = set()
def start(self, args, listenDaemon=True):
self.program = sp.Popen(args, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.STDOUT, universal_newlines=True)
self.t = Thread(target=self.listen, daemon=listenDaemon)
self.t.start()
def listen(self):
while self.program.stdout.readable():
outputLine = self.program.stdout.readline()[:-1]
for listener in self.outputListeners:
listener(outputLine)
def sendInput(self, command):
self.program.stdin.write(command+"\n")
self.program.stdin.flush()
def stop(self):
self.program.terminate()
self.program.stdout.close()