def _receiveConsoleOutput(self): """ This function receives and prints console output Input: Nothing Returns: Nothing """ import sys from comm import protocol, sendAndReceive, CommClientException while True: if self._exit.is_set(): break try: frame = sendAndReceive(self._ip,self._port,protocol.frame(prc.PRC_OUTPUT,self._session_id)) except CommClientException as error: self._exit.set() raise PRCClientException("Connection problem: " + str(error)) cmd,data = protocol.analyze(frame) if cmd == prc.PRC_OUTPUT: sys.stdout.write(data) elif cmd == prc.PRC_CONFIRM: self._synch.release() elif cmd == prc.PRC_EXIT: self._synch.release() self._exit.set()
def request_handler(request): """ Handles clients requestes Input: request - Client request Returns: Nothing """ from comm import protocol,CommException import Queue try: recv_frame = request.receive() except CommException as error: print error request.close() return cmd,data = protocol.analyze(recv_frame) if cmd == prc.PRC_NEW_SESSION: request.server.add_console(data) send_frame = protocol.frame(prc.PRC_CONFIRM) elif cmd == prc.PRC_OUTPUT: output = request.server.get_console(data).get_output_queue().get() if type(output) == str: send_frame = protocol.frame(prc.PRC_OUTPUT,output) elif type(output) == prc.PRCCmd: send_frame = protocol.frame(output) elif cmd == prc.PRC_PROMPT: prompt = request.server.get_console(data).get_prompt() send_frame = protocol.frame(prc.PRC_PROMPT,prompt) request.server.get_console(data).write(prc.PRC_CONFIRM) elif cmd == prc.PRC_CODE: session_id, code = data request.server.get_console(session_id).get_input_queue().put(code) request.server.get_console(session_id).wait_for_code() if request.server.get_console(session_id).is_system_exit(): send_frame = protocol.frame(prc.PRC_EXIT) request.server.get_console(session_id).write(prc.PRC_EXIT) else: send_frame = protocol.frame(prc.PRC_CONFIRM) request.server.get_console(session_id).write(prc.PRC_CONFIRM) else: raise PRCServerException("Not implemented! " + str(cmd)) try: request.send(send_frame) except CommException as error: print error finally: request.close()
def _start_session(self): """ This function starts PRC session Input: Nothing Returns: Nothing """ from comm import protocol, sendAndReceive, CommClientException try: sendAndReceive(self._ip,self._port,protocol.frame(prc.PRC_NEW_SESSION,self._session_id)) except CommClientException as error: self._exit.set() raise PRCClientException("Connection problem: " + str(error))
def _prompt(self): """ This function gets prompt from server Input: Nothing Returns: prompt """ from comm import protocol, sendAndReceive, CommClientException try: frame = sendAndReceive(self._ip,self._port,protocol.frame(prc.PRC_PROMPT,self._session_id)) except CommClientException as error: self._exit.set() raise PRCClientException("Connection problem: " + str(error)) cmd,prompt = protocol.analyze(frame) self._synch.acquire() return prompt
def _sendConsoleInput(self,data): """ This function sends command. Blocking funnction. Input: data - Input python command Returns: Nothing """ from comm import protocol, sendAndReceive, CommClientException try: frame = sendAndReceive(self._ip,self._port,protocol.frame(prc.PRC_CODE,(self._session_id,data))) except CommClientException as error: self._exit.set() raise PRCClientException("Connection problem: " + str(error)) self._synch.acquire() cmd,data = protocol.analyze(frame) if cmd == prc.PRC_EXIT: raise SystemExit