def _HandleGetState(self): response = messages_pb2.Response() response.get_state.status = messages_pb2.SUCCESS response.get_state.protocol_version = PROTOCOL_VERSION response.get_state.kit_id = KIT_ID with self._lock: response.get_state.device_name = self._device_name self._SetWifiInfo(response.get_state.wifi_info) self._SendMessage(response)
def get_response(sock): len_prefix = messages_pb2.Header() len_buf = socket_read_n(sock, 19) len_prefix.ParseFromString(len_buf) msg_buf = socket_read_n(sock, len_prefix.length) msg = messages_pb2.Response() msg.ParseFromString(msg_buf) # print("response command_id = {}".format(len_prefix.command)) return msg
def _HandleConnectNetwork(self, request): if request.timeout > 0: success = self._wpas_client.ConnectNetwork(request.ssid, request.psk, request.timeout) else: success = self._wpas_client.ConnectNetwork(request.ssid, request.psk) response = messages_pb2.Response() response.connect_network.status = messages_pb2.SUCCESS if success else messages_pb2.FAILURE self._SetWifiInfo(response.connect_network.wifi_info) self._SendMessage(response)
def _HandleSetDeviceName(self, request): response = messages_pb2.Response() self._logger.info("Request to set device name to '%s'", request.device_name) self._UpdateDeviceName(request.device_name) with self._lock: response.set_device_name.device_name = self._device_name if request.device_name == response.set_device_name.device_name: response.set_device_name.status = messages_pb2.SUCCESS else: response.set_device_name.status = messages_pb2.FAILURE self._SendMessage(response)
def _HandleScanNetworks(self, request): if request.timeout > 0: entries = self._wpas_client.Scan(request.timeout) else: entries = self._wpas_client.Scan() response = messages_pb2.Response() response.scan_networks.status = messages_pb2.SUCCESS for entry in entries: scan_result = response.scan_networks.results.add() scan_result.ssid = entry["ssid"] scan_result.secure = entry["secure"] scan_result.rssi = entry["rssi"] self._SendMessage(response)
def send_request(self): """Send the Request message stored in this.req and resets it to default values. Returns the Response object received from the binary, or False if decoding the incoming message failed. """ # Serialize message serialized = self.req.SerializeToString() # Reset the message to default values self.req = messages_pb2.Request() # Send message length msg_len = len(serialized) sent = self.s.send(msg_len.to_bytes(4, "big")) # Send message content total_sent = 0 while total_sent < msg_len: sent = self.s.send(serialized[total_sent:]) total_sent += sent # Receive message length data = b"" while len(data) < 4: received = self.s.recv(4 - len(data)) if len(received) == 0: raise ConnectionResetError("Connection was closed") data += received msg_len = int.from_bytes(data, "big") # Receive a Response message data = b"" while len(data) < msg_len: received = self.s.recv(msg_len - len(data)) if len(received) == 0: raise ConnectionResetError("Connection was closed") data += received # Try to parse the response and return it try: resp_msg = messages_pb2.Response() resp_msg.ParseFromString(data) return resp_msg # Return False if decoding fails except google.protobuf.message.DecodeError as e: print("DecodeError in reponse: {}".format(e)) return False
def _HandleIdentify(self, request): self._logger.info("Identify: %s", request.data) response = messages_pb2.Response() response.identify.status = messages_pb2.SUCCESS response.identify.data = "Test response to identify" self._SendMessage(response)
import messages_pb2 import ctypes from ctypes import * native_library = ctypes.CDLL('native_library.dll') request = messages_pb2.Request() for i in range(10): request.value.append(i) request_blob = request.SerializeToString() request_blob_p = ctypes.create_string_buffer(request_blob) response_length = native_library.CalculateSquareRoot(len(request_blob), request_blob_p) response_blob = ctypes.create_string_buffer(response_length) native_library.RetrieveResult(response_blob) response = messages_pb2.Response() response.ParseFromString(response_blob) for i in range(10): print str(response.value[i])
def SendDataBulk(self, request, context): print('Received SendDataBulk request') print(request) self.graph.add_edges(convertData(r) for r in request.data) return messages_pb2.Response(success=True)
def SendData(self, request, context): print('Received SendData request') print(request) self.graph.add_edges([convertData(request)]) return messages_pb2.Response(success=True)