Пример #1
0
    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()
Пример #2
0
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()
Пример #3
0
    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))
Пример #4
0
    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
Пример #5
0
    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