def client_protocol(socket):
    connect_write_to_server = socket.makefile('w')
    protocol = 'I32CFP_HELLO\n'
    connect_write_to_server.write(protocol)
    connect_write_to_server.flush()
    receive_ready = socket.makefile('r')
    protocol = receive_ready.readline()
    if protocol == 'READY\n':
        print('The server is ready to start the game')
        pass
    else:
        socket.close()
        print('server not speaking the same protocols,close connection.\n')
        return 
예제 #2
0
파일: server.py 프로젝트: LEW21/reserve
	def handle_request(socket, client_address, server):
		s = ServerInfo(software=server_version, multiconnection=True, multithread=False, multiprocess=False)
		c = ConnectionInfo(server=s)

		c.server.addr = LazyAddress(socket.family, lambda: socket.getsockname())
		c.remote.addr = Address(socket.family, client_address)

		c.socket = socket

		with socket.makefile('r') as input:
			with socket.makefile('w') as output:
				app(input, output, sys.stderr, c)
def client_protocol(socket):
    connect_write_to_server = socket.makefile('w')
    protocol = 'I32CFP_HELLO\n'
    connect_write_to_server.write(protocol)
    connect_write_to_server.flush()
    receive_ready = socket.makefile('r')
    protocol = receive_ready.readline()
    if protocol == 'READY\n':
        print('The server is ready to start the game')
        pass
    else:
        socket.close()
        print('server not speaking the same protocols,close connection.\n')
        return
def receive_protocols(socket):
    file_in = socket.makefile('r')
    protocols = file_in.readline()
    file_in.close()
    if protocols == 'I32CFP_HELLO\n':
        file_out = socket.makefile('w')
        file_out.write('READY\n')
        file_out.flush()
        file_out.close()
        pass
    else:
        socket.close()
        print('Client is not speaking the same protocols.Closing connection.\n')
        return 
def receive_protocols(socket):
    file_in = socket.makefile('r')
    protocols = file_in.readline()
    file_in.close()
    if protocols == 'I32CFP_HELLO\n':
        file_out = socket.makefile('w')
        file_out.write('READY\n')
        file_out.flush()
        file_out.close()
        pass
    else:
        socket.close()
        print(
            'Client is not speaking the same protocols.Closing connection.\n')
        return
    def run(self):
        from robocorp_ls_core.debug_adapter_core.debug_adapter_threads import (
            writer_thread_no_auto_seq, )
        from robocorp_ls_core.debug_adapter_core.debug_adapter_threads import (
            reader_thread, )

        try:
            assert (
                self._server_socket
                is not None), "start_listening must be called before start()"

            # while True:
            # Only handle a single connection...
            socket, _addr = self._server_socket.accept()

            read_from = socket.makefile("rb")
            write_to = socket.makefile("wb")

            debug_adapter_comm = self._weak_debug_adapter_comm()
            writer = self._writer_thread = threading.Thread(
                target=writer_thread_no_auto_seq,
                args=(write_to, self._write_to_robot_queue,
                      "write to robot process"),
                name=
                "Write to robot (LaunchProcessDebugAdapterRobotTargetComm)",
            )
            writer.daemon = True

            reader = self._reader_thread = threading.Thread(
                target=reader_thread,
                args=(
                    read_from,
                    self._from_robot,
                    debug_adapter_comm.
                    write_to_client_queue,  # Used for errors
                    b"read from robot process",
                ),
                name=
                "Read from robot (LaunchProcessDebugAdapterRobotTargetComm)",
            )
            reader.daemon = True

            reader.start()
            writer.start()

            self._connected_event.set()
        except:
            log.exception()
def wait_server_move(mode,column,socket):
    output = socket.makefile('w')
    output.write(mode+ ' ' + str(column)+'\n')
    output.flush()
    output.close()
    print('Waiting for server to move or update.')
    pass
예제 #8
0
파일: server.py 프로젝트: eklitzke/mangodb
def mangodb(socket, address):
    socket.sendall('HELLO\r\n')
    client = socket.makefile()
    output = open(os.devnull, 'w')
    lock = threading.Lock()
    wait = threading.Condition(lock)
    while 1:
        line = client.readline()
        if not line:
            break
        cmd_bits = line.split(' ', 1)
        cmd = cmd_bits[0]
        if cmd == 'BYE':
            break
        if cmd == 'WAIT':
            wait.wait()
            continue
        if len(cmd_bits) > 1:
            lock.acquire(True)
            output.write(cmd_bits[1])
            if MANGODB_DURABLE:
                output.flush()
                os.fsync(output.fileno())
            data = '42' if MANGODB_EVENTUAL else \
                os.urandom(1024).encode('string-escape')
            lock.release()
            client.write('OK' + data + '\r\n')
        client.flush()
def wait_player_move(mode, col, socket):
    output = socket.makefile('w')
    output.write(mode + ' ' + str(col) + '\n')
    output.flush()
    output.close()
    print('waiting for player to move')
    pass
예제 #10
0
 def handle(self, socket, address):
     """
     If not a leader, a node will simply return a single item list pointing
     to the leader. Otherwise, it will add the host of the connected client
     to the cluster roster, broadcast to all nodes the new roster, and wait
     for keepalives. If no keepalive within timeout or the client drops, it
     drops it from the roster and broadcasts to all remaining nodes. 
     """
     self.logger.debug('New connection from %s:%s' % address)
     if not self.manager.is_leader:
         socket.send(json.dumps({'leader': self.manager.client.leader_address[0], 
             'port': self.manager.client.leader_address[1]}))
         socket.close()
         self.logger.debug("Redirected to %s:%s" % self.manager.client.leader_address)
     else:
         socket.send(self._cluster_message())
         sockfile = socket.makefile()
         name = sockfile.readline()
         if not name:
             return
         if name == '\n':
             name = address[0]
         else:
             name = name.strip()
         self._update(add={'host': name, 'socket': socket})
         # TODO: Use TCP keepalives
         timeout = self._client_timeout(socket)
         for line in util.line_protocol(sockfile, strip=False):
             timeout.kill()
             timeout = self._client_timeout(socket)
             socket.send('\n')
             self.logger.debug("Keepalive from %s:%s" % address)
         self.logger.debug("Client disconnected from %s:%s" % address)
         self._update(remove=name)
예제 #11
0
    def send_video():
        connection = None
        try:
            camera = picamera.PiCamera()
            camera.resolution = (VIDEO_WIDTH, VIDEO_HEIGHT)
            # let the camera warm up for 2 seconds
            time.sleep(2)
            # Make a file-like object out of the connection
            connection = socket.makefile('wb')
            stream = io.BytesIO()
            for foo in camera.capture_continuous(stream,
                                                 'jpeg',
                                                 use_video_port=True):
                # Write the length of the capture to the stream and flush to
                # ensure it actually gets sent
                connection.write(struct.pack('<L', stream.tell()))
                connection.flush()
                # Rewind the stream and send the image data over the wire
                stream.seek(0)
                connection.write(stream.read())
                # Reset the stream for the next capture
                stream.seek(0)
                stream.truncate()

            # Write a length of zero to the stream to signal we're done
            connection.write(struct.pack('<L', 0))
        except socket.error as ex:
            print(ex)
        finally:
            connection.close()
            socket.close()
예제 #12
0
def wait_server_move(mode, column, socket):
    output = socket.makefile('w')
    output.write(mode + ' ' + str(column) + '\n')
    output.flush()
    output.close()
    print('Waiting for server to move or update.')
    pass
예제 #13
0
 def handleRequest(tcpSocket):
     # 1. Receive request message from the client on connection (tcp?) socket
     tcpSocket = serverSocket.accept()  # acceptrequest
     bufferSize = tcpSocket.CMSG_SPACE(
         4
     )  # IPv4 address is 4 bytes in length - calculates the size of the buffer that should be allocated for receiving the ancillary data.
     #recieve message in buffer size allocated
     requestMessage = tcpSocket.recvmsg(bufferSize[0, [0]])
     # 2. Extract the path of the requested object from the message (second part of the HTTP header)
     file = requestMessage.unpack_from(bufferSize)  # returns a tuple
     # 3. Read the corresponding file from disk
     socket.sendfile(file)
     # 4. Store in temporary buffer
     tempBuffer = socket.makefile(mode='r',
                                  buffering=None,
                                  encoding=None,
                                  errors=None,
                                  newline=None)
     tempFile = struct.pack_into(format, self.tempBuffer, 0, file)
     # 5. Send the correct HTTP response error
     httpResponseError = ("HTTP/1.1 404 Not Found\r\n")
     tcpSocket.sendmsg(httpResponseError)
     # 6. Send the content of the file to the socket
     tcpSocket.recvmsg(bufferSize[0, 0])
     # 7. Close the connection socket
     tcpSocket.close()
     pass
예제 #14
0
def connection(socket, address):
    print('New connection from %s:%s' % (address[0], address[1]))

    stream = socket.makefile('rw')
    for line in stream:
        stream.write(handle(root, line) + '\n')
        stream.flush()
    def handleRequest(tcpSocket):

        # 1. Receive request message from the client on connection socket

        bufferSize = tcpSocket.CMSG_SPACE(4) #IPv4 address is 4 bytes in length

        requestMessage = tcpSocket.recvmsg(bufferSize[0,[0]])

        # 2. Extract the path of the requested object from the message (second part of the HTTP header)

        file = requestMessage.unpack_from(format, buffer, offset=1) #returns a tuple 

        # 3. Read the corresponding file from disk

        socket.sendfile(file, offset=0, count=None)

        # 4. Store in temporary buffer

        buffer = socket.makefile(mode='r', buffering=None, encoding=None,errors=None, newline=None)

        struct.pack_into(format, self.buffer, 0, file)

        # 5. Send the correct HTTP response error

        # 6. Send the content of the file to the socket

        tcpSocket.recvmsg(bufferSize[0, 0])

        # 7. Close the connection socket

        tcpSocket.close()

        pass
def wait_player_move(mode, col,socket):
    output = socket.makefile('w')
    output.write(mode+ ' ' + str(col)+'\n')
    output.flush()
    output.close()
    print('waiting for player to move')
    pass
예제 #17
0
파일: java_gateway.py 프로젝트: gdw2/py4j
    def run(self):
        """Starts listening and accepting connection requests.

           This method is called when invoking `CallbackServer.start()`. A
           CallbackServer instance is created and started automatically when
           a :class:`JavaGateway <py4j.java_gateway.JavaGateway>` instance is
           created.
        """
        try:
            with self.lock:
                self.is_shutdown = False
            logger.info('Callback Server Starting')
            self.server_socket.listen(5)
            logger.info('Socket listening on {0}'.
                    format(smart_decode(self.server_socket.getsockname())))

            while not self.is_shutdown:
                socket, _ = self.server_socket.accept()
                input = socket.makefile('rb', 0)
                connection = CallbackConnection(self.pool, input, socket,
                        self.gateway_client)
                with self.lock:
                    if not self.is_shutdown:
                        self.connections.append(connection)
                        connection.start()
                    else:
                        connection.socket.shutdown(socket.SHUT_RDWR)
                        connection.socket.close()
        except Exception:
            if self.is_shutdown:
                logger.info('Error while waiting for a connection.')
            else:
                logger.exception('Error while waiting for a connection.')
예제 #18
0
def listen_on_socket(socket, *args):
    if socket is None:
        return
    command = ""
    file = socket.makefile('rwb')
    while True:
        try:
            data = file.read(1)
            if data == b'':
                sleep(0.001)
                continue
            else:
                data = data.decode('ascii')
            if data == AtHomeProtocol['end_of_communication']:
                print('Communication ended', file=sys.stderr)
                return
            if data != AtHomeProtocol['end_of_command']:
                command += data
            else:
                command = ""
                continue
            if command.endswith(AtHomeProtocol['end_of_line']):
                command = command[0:-2]
                if command in AtHomeCommands:
                    AtHomeCommands[command](file)
                else:
                    command = ""
                    raise NameError('[Unknown Command] %s' % command)
                command = ""
        except EOFError:
            file.close()
            socket.close()
            return
        except Exception as e:
            print('[Exception] %s' % e, file=sys.stderr)
예제 #19
0
 def __init__(self, socket):
     """Keeps track of the socket and the file posing as the socket"""
     self.socket = socket
     self.stream = socket.makefile()
     self.active = True
     self.editor = 'Emacs'
     self.name = 'Richard Stallman'
예제 #20
0
 def __init__(self, server, socket):
     self.server = server
     self.socket = socket
     self.socket_file = socket.makefile('rb', 0)
     self.compression_enabled = False
     self.user_uuid = None
     self.user_name = None
예제 #21
0
    def run(self):
        """Starts listening and accepting connection requests.

           This method is called when invoking `CallbackServer.start()`. A
           CallbackServer instance is created and started automatically when
           a :class:`JavaGateway <py4j.java_gateway.JavaGateway>` instance is
           created.
        """
        try:
            with self.lock:
                self.is_shutdown = False
            logger.info('Callback Server Starting')
            self.server_socket.listen(5)
            logger.info('Socket listening on {0}'.format(
                smart_decode(self.server_socket.getsockname())))

            while not self.is_shutdown:
                socket, _ = self.server_socket.accept()
                input = socket.makefile('rb', 0)
                connection = CallbackConnection(self.pool, input, socket,
                                                self.gateway_client)
                with self.lock:
                    if not self.is_shutdown:
                        self.connections.append(connection)
                        connection.start()
                    else:
                        connection.socket.shutdown(socket.SHUT_RDWR)
                        connection.socket.close()
        except:
            logger.exception('Error while waiting for a connection.')
예제 #22
0
 def __init__(self, server, socket):
     self.server = server
     self.socket = socket
     self.socket_file = socket.makefile('rb', 0)
     self.compression_enabled = False
     self.user_uuid = None
     self.user_name = None
예제 #23
0
    def WrapAndSendPayload(cls, socket, payload):
        '''
        Send payload, true if success, false if failed
        '''
        try:
            # From SocketServer.py
            # wbufsize = 0, flush immediately
            wbufsize = -1
            # Convert
            socket_message = SocketMessage(payload)
            wfile = socket.makefile('wb', wbufsize)
            # Write the message
            wfile.write(struct.pack(fmt, socket_message.magic))
            # Need to send the packed version
            # print 'Sent ', socket_message.magic

            wfile.write(struct.pack(fmt, socket_message.payload_size))
            # print 'Sent ', socket_message.payload_size

            wfile.write(payload)
            # print 'Sent ', payload
            wfile.flush()
            wfile.close() # Close file object, not close the socket
            return True
        except Exception as e:
            _L.error('Fail to send message %s', e)
            return False
예제 #24
0
    def WrapAndSendPayload(cls, socket, payload):
        """
        Send payload, true if success, false if failed
        """
        try:
            # From SocketServer.py
            # wbufsize = 0, flush immediately
            wbufsize = -1
            # Convert
            socket_message = SocketMessage(payload)
            wfile = socket.makefile('wb', wbufsize)
            # Write the message
            wfile.write(struct.pack(fmt, socket_message.magic))
            # Need to send the packed version
            # print 'Sent ', socket_message.magic

            wfile.write(struct.pack(fmt, socket_message.payload_size))
            # print 'Sent ', socket_message.payload_size

            wfile.write(payload)
            # print 'Sent ', payload
            wfile.flush()
            wfile.close()  # Close file object, not close the socket
            return True
        except Exception as e:
            _L.error('Fail to send message %s', e)
            return False
예제 #25
0
    def _wait(self, sock):
        onStart = True
        with socket.makefile('rb') as f:
            while 1:
                data = f.readline()

                if not data:
                    self.disconnected.emit()
                    break

                response = json.loads(data.decode())

                if onStart:
                    self.started.emit(response)
                    onStart = False
                else:
                    self.readyCPULoad.emit(response.get('cpu_percent'))
                    self.readyCPUFreq.emit(response.get('cpu_freq'))

                    memory = response.get('memory')
                    self.readyMemory.emit(memory.get('used'),
                                          memory.get('percent'),
                                          memory.get('availble'))
                    swap = response.get('swap')
                    self.readySwap.emit(swap.get('used'), swap.get('percent'),
                                        swap.get('free'))

                sleep(1)
예제 #26
0
파일: server.py 프로젝트: eklitzke/mangodb
def mangodb(socket, address):
    socket.sendall('HELLO\r\n')
    client = socket.makefile()
    output = open(os.devnull, 'w')
    lock = threading.Lock()
    wait = threading.Condition(lock)
    while 1:
        line = client.readline()
        if not line:
            break
        cmd_bits = line.split(' ', 1)
        cmd = cmd_bits[0]
        if cmd == 'BYE':
            break
        if cmd == 'WAIT':
            wait.wait()
            continue
        if len(cmd_bits) > 1:
            lock.acquire(True)
            output.write(cmd_bits[1])
            if MANGODB_DURABLE:
                output.flush()
                os.fsync(output.fileno())
            data = '42' if MANGODB_EVENTUAL else \
                os.urandom(1024).encode('string-escape')
            lock.release()
            client.write('OK' + data + '\r\n')
        client.flush()
예제 #27
0
def receive(socket, char=None):
    f = socket.makefile()
    while len(select.select([f], [], [], 0.1)[0]) == 0:
        pass
    try:
        return bdecode(f)
    finally:
        f.close()
예제 #28
0
파일: server.py 프로젝트: mash0304/pathos
    def __init__(self, server, socket):
        """
Override BaseHTTPRequestHandler.__init__(): we need to be able
to have (potentially) multiple handler objects at a given time.

Inputs:
    server  -- server object to handle requests for 
    socket  -- socket connection 
        """

        ## Settings required by BaseHTTPRequestHandler
        self.rfile = socket.makefile("rb", -1)
        self.wfile = socket.makefile("wb", 0)
        self.connection = socket
        self.client_address = (server.host, server.port)

        self._server = server
def wait_server_move(mode, drop, socket):
    print('runing wait server move')
    output = socket.makefile('w')
    output.write(mode + ' ' + str(drop) + '\n')
    output.flush()
    output.close()
    print('waiting for server to move')
    pass
def wait_server_move(mode,drop,socket):
    print('runing wait server move')
    output = socket.makefile('w')
    output.write(mode+ ' ' + str(drop)+'\n')
    output.flush()
    output.close()
    print('waiting for server to move')
    pass
예제 #31
0
    def __init__(self, server, socket):
        """
Override BaseHTTPRequestHandler.__init__(): we need to be able
to have (potentially) multiple handler objects at a given time.

Inputs:
    server  -- server object to handle requests for 
    socket  -- socket connection 
        """

        ## Settings required by BaseHTTPRequestHandler
        self.rfile = socket.makefile('rb', -1)
        self.wfile = socket.makefile('wb', 0)
        self.connection = socket
        self.client_address = (server.host, server.port)

        self._server = server
예제 #32
0
def create_socket_file(socket):
    try:
        sock_file = socket.makefile()
    except Exception as e:
        logging.add_log(2, "Problem creating socket file -> %s" % e)
        return -1

    return sock_file
예제 #33
0
 def get_room(self, room, password):
     socket = self.connect_to_service()
     socket_fd = socket.makefile()
     skip_hello(socket_fd)
     send("get_room", socket)
     send(password, socket)
     send(room, socket)
     line = readline(socket_fd)
     return line
예제 #34
0
def recv_json(socket):
    if not hasattr(recv_json, 'files'):
        recv_json.files = {} # static variable

    if not socket in recv_json.files:
        recv_json.files[socket] = socket.makefile()

    data = recv_json.files[socket].readline()
    return json.loads(data.strip())
예제 #35
0
def recv_lines(socket):
    lines = []
    file = socket.makefile()
    while True:
        line = file.readline().strip()
        if line == "":
            break
        lines.append(line)
    return lines
예제 #36
0
 def get_room(self, room, password):
     socket = self.connect_to_service()
     socket_fd = socket.makefile()
     skip_hello(socket_fd)
     send("get_room", socket)
     send(password, socket)
     send(room, socket)
     line = readline(socket_fd)
     return line
예제 #37
0
 def check(self):
     socket = self.connect_to_checker()
     socket_fd = socket.makefile('r')
     send("list", socket)
     line = readline(socket_fd)
     if not self.hostname in line:
         service_down(message="Node not found in cluster")
     else:
         service_ok()
예제 #38
0
 def get(self, flag_id, flag):
     socket = self.connect_to_checker()
     socket_fd = socket.makefile()
     send("get " + self.hostname + ":" + str(PORT) + " " + flag_id, socket)
     result = readline(socket_fd)
     if result == flag:
         service_ok()
     else:
         service_corrupt(message="Unexpected GET response: " + result)
예제 #39
0
 def __init__(self, threadID, name, counter,state,socket,finishEvent):
     threading.Thread.__init__(self)
     self.threadID = threadID
     self.name = name
     self.counter = counter
     self.state=state
     self.socket=socket
     self.socket_file=socket.makefile()
     self.finished=finishEvent
예제 #40
0
	def get(self, flag_id, flag):
		socket = self.connect_to_checker()
		socket_fd = socket.makefile()
		send("get " + self.hostname + ":" + str(PORT) + " " + flag_id, socket)
		result = readline(socket_fd)
		if result == flag:
			service_ok()
		else:
			service_corrupt(message="Unexpected GET response: " + result)
예제 #41
0
 def __init__(self, socket, parent):
     self.is_ai = False
     self.is_human = False
     self.sock = socket
     self.fsock = socket.makefile()
     self.parent = parent
     t = threading.Thread(target=self.receive)
     t.daemon = True
     t.start()
예제 #42
0
def recv_lines(socket):
    lines = []
    file = socket.makefile()
    while True:
        line = file.readline().strip()
        if line == "":
            break
        lines.append(line)
    return lines
예제 #43
0
파일: group.py 프로젝트: barkinet/support
 def __init__(self, socket, address, server, rfile=None):
     if rfile is None and hasattr(socket, "_makefile_refs"):
         rfile = socket.makefile()
         # restore gEvent's work-around of not letting wsgi.environ['input']
         # keep the socket alive in CLOSE_WAIT state after client is gone
         # to work with async.SSLSocket
         socket._makefile_refs -= 1
     self.state = context.get_context().markov_stats['wsgi_handler'].make_transitor('new')
     super(MakeFileCloseWSGIHandler, self).__init__(socket, address, server, rfile)
예제 #44
0
 def run(self, room, program, password):
     socket = self.connect_to_service()
     socket_fd = socket.makefile()
     skip_hello(socket_fd)
     send("run", socket)
     send(password, socket)
     send(room, socket)
     send(program, socket)
     return readline(socket_fd)
예제 #45
0
	def check(self):
		socket = self.connect_to_checker()
		socket_fd = socket.makefile('r')
		send("list", socket)
		line = readline(socket_fd)
		if not self.hostname in line:
			service_down(message="Node not found in cluster")
		else:
			service_ok()
예제 #46
0
 def run(self, room, program, password):
     socket = self.connect_to_service()
     socket_fd = socket.makefile()
     skip_hello(socket_fd)
     send("run", socket)
     send(password, socket)
     send(room, socket)
     send(program, socket)
     return readline(socket_fd)
예제 #47
0
    def ReceivePayload(cls, socket):
        '''
        Return only payload, not the raw message, None if failed.
        socket: a blocking socket for read data.
        '''
        # rbufsize = -1 # From SocketServer.py
        rbufsize = 0
        rfile = socket.makefile('rb', rbufsize)
        _L.debug('read raw_magic %s', threading.current_thread().name)
        try:
            raw_magic = rfile.read(4)  # socket is disconnected or invalid
        except Exception as e:
            _L.debug('Fail to read raw_magic, %s', e)
            raw_magic = None

        _L.debug('read raw_magic %s done: %s',
                 threading.current_thread().name, repr(raw_magic))
        if not raw_magic:  # nothing to read
            # _L.debug('socket disconnect')
            return None
        # print 'Receive raw magic: %d, %s' % (len(raw_magic), raw_magic)
        magic = struct.unpack(fmt, raw_magic)[0]  # 'I' means unsigned int
        # print 'Receive magic:', magic

        if magic != cls.magic:
            _L.error(
                'Error: receive a malformat message, the message should start from a four bytes uint32 magic number'
            )
            return None
            # The next time it will read four bytes again

        _L.debug('read payload')
        raw_payload_size = rfile.read(4)
        # print 'Receive raw payload size: %d, %s' % (len(raw_payload_size), raw_payload_size)
        payload_size = struct.unpack('I', raw_payload_size)[0]
        _L.debug('Receive payload size %d', payload_size)

        # if the message is incomplete, should wait until all the data received
        payload = b""
        remain_size = payload_size
        while remain_size > 0:
            data = rfile.read(remain_size)
            if not data:
                return None

            payload += data
            bytes_read = len(
                data
            )  # len(data) is its string length, but we want length of bytes
            # print 'bytes_read %d, remain_size %d, read_str %s' % (bytes_read, remain_size, data)
            assert (bytes_read <= remain_size)
            remain_size -= bytes_read

        rfile.close()

        return payload
def getHamlibCurrentPosition(socket, socket_fh=None):
    if socket_fh == None:
        socket_fh = socket.makefile()
    
    socket.sendall("p\n")
    retval = {'cmd': 'p'}
    retval['az'] = socket_fh.readline()
    retval['el'] = socket_fh.readline()

    return retval
예제 #49
0
 def __getline(socket):
     file = socket.makefile('rb')
     data = file.readline()
     if data is None:
         logging.error('failure in recv, aborting')
         sys.exit(1)
     if len(data) == 0:
         logging.info('EOF')
         sys.exit(0)
     return data
예제 #50
0
 def authenticate(self, socket):
     size = 5
     read_write = 'rb'
     connection = socket.makefile(read_write)
     request = connection.read(size)
     print(request)
     if request == self.stream_id:
         self.handle_stream(connection)
     else:
         self.handle_request(request, socket)
예제 #51
0
def recieveMessage(socket):
    try:
        f = socket.makefile()
        data = str(f.readline())
        f.close()
    except:
        data = "0"
        print "Caught exception socket.error"

    return data
예제 #52
0
 def __init__(self, socket, address, server, rfile=None):
     if rfile is None and hasattr(socket, "_makefile_refs"):
         rfile = socket.makefile()
         # restore gEvent's work-around of not letting wsgi.environ['input']
         # keep the socket alive in CLOSE_WAIT state after client is gone
         # to work with async.SSLSocket
         socket._makefile_refs -= 1
     self.state = context.get_context(
     ).markov_stats['wsgi_handler'].make_transitor('new')
     super(MakeFileCloseWSGIHandler, self).__init__(socket, address, server,
                                                    rfile)
예제 #53
0
	def put(self, flag_id, flag):
		socket = self.connect_to_checker()
		socket_fd = socket.makefile()
		send("put " + self.hostname + ":" + str(PORT) + " " + flag_id + " " + flag, socket)
		result = readline(socket_fd)
		
		time.sleep(2)
		
		if result == "done":
			service_ok(message=flag_id)
		else:
			service_mumble(message="Unexpected PUT response: " + result)
예제 #54
0
    def handle(self, socket, address):
        fd = socket.makefile()
        while True:
            line = fd.readline()
            if not line:
                break

            name, value, timestamp = line.split()
            ds = self.context.get_data_source(name)
            ds.submit(int(timestamp), float(value))

        socket.shutdown(gevent.socket.SHUT_RDWR)
        socket.close()
예제 #55
0
    def ReceivePayload(cls, socket):
        '''
        Return only payload, not the raw message, None if failed.
        socket: a blocking socket for read data.
        '''
        # rbufsize = -1 # From SocketServer.py
        rbufsize = 0
        rfile = socket.makefile('rb', rbufsize)
        _L.debug('read raw_magic %s', threading.current_thread().name)
        try:
            raw_magic = rfile.read(4) # socket is disconnected or invalid
        except Exception as e:
            _L.debug('Fail to read raw_magic, %s', e)
            raw_magic = None

        _L.debug('read raw_magic %s done: %s', threading.current_thread().name, repr(raw_magic))
        if not raw_magic: # nothing to read
            # _L.debug('socket disconnect')
            return None
        # print 'Receive raw magic: %d, %s' % (len(raw_magic), raw_magic)
        magic = struct.unpack(fmt, raw_magic)[0] # 'I' means unsigned int
        # print 'Receive magic:', magic

        if magic != cls.magic:
            _L.error('Error: receive a malformat message, the message should start from a four bytes uint32 magic number')
            return None
            # The next time it will read four bytes again

        _L.debug('read payload')
        raw_payload_size = rfile.read(4)
        # print 'Receive raw payload size: %d, %s' % (len(raw_payload_size), raw_payload_size)
        payload_size = struct.unpack('I', raw_payload_size)[0]
        _L.debug('Receive payload size %d', payload_size)

        # if the message is incomplete, should wait until all the data received
        payload = b""
        remain_size = payload_size
        while remain_size > 0:
            data = rfile.read(remain_size)
            if not data:
                return None

            payload += data
            bytes_read = len(data) # len(data) is its string length, but we want length of bytes
            # print 'bytes_read %d, remain_size %d, read_str %s' % (bytes_read, remain_size, data)
            assert(bytes_read <= remain_size)
            remain_size -= bytes_read

        rfile.close()

        return payload
예제 #56
0
 def do_list(self, entity):
     socket = self.connect_to_service()
     socket_fd = socket.makefile('r')
     skip_hello(socket_fd)
     send("list", socket)
     send(entity, socket)
     line = readline(socket_fd)
     if line != DELIM:
         return service_mumble(message="Bad response", error=make_err_message("Bad status", "list\n{}".format(entity), line))
     line = readline(socket_fd)
     result = []
     while line != DELIM:
         result.append(line)
         line = readline(socket_fd)
     return result
예제 #57
0
 def __init__(self, socket):
     '''
     Create a session.
     
     :param socket: The stream socket instance.
     :type socket: gevent.socket.socket.
     '''
     super(Session, self).__init__()
     self.peerName = socket.getpeername()
     self.name = ':'.join([str(s) for s in self.peerName[:2]])
     self._disp = self
     self._sck = socket
     self._fp = socket.makefile('r')
     self._lock = gevent.coros.Semaphore()
     self._requests = {}     # request queue
     self._requestId = 1     # manage request id
     self.requestTimeout = None # default request timeout
예제 #58
0
 def __init__(self, socket):
     """
     Keeps track of the socket and the file posing as the socket, and
     defines a commands-function dictionary to parse user input.
     """
     self.socket = socket
     self.stream = socket.makefile()
     self.active = True
     self.commands = {
         'load' : self.send_challenge,
         'send' : self.send_challenge, # deprecated
         'submit' : self.send_challenge,
         'init' : self.init_challenge,
         'ls' : self.list_challenges,
         'exit' : self.quit,
         'quit' : self.quit
     }
     self.challenge_loaded = False