in idb_companion/Server/FBIDBServiceHandler.mm [1519:1552]
Status FBIDBServiceHandler::debugserver(grpc::ServerContext *context, grpc::ServerReaderWriter<idb::DebugServerResponse, idb::DebugServerRequest> *stream)
{@autoreleasepool{
idb::DebugServerRequest request;
stream->Read(&request);
NSError *error = nil;
switch (request.control_case()) {
case idb::DebugServerRequest::ControlCase::kStart: {
idb::DebugServerRequest::Start start = request.start();
id<FBDebugServer> debugServer = [[_commandExecutor debugserver_start:nsstring_from_c_string(start.bundle_id())] block:&error];
if (!debugServer) {
return Status(grpc::StatusCode::INTERNAL, error.localizedDescription.UTF8String);
}
stream->Write(translate_debugserver_status(debugServer));
return Status::OK;
}
case idb::DebugServerRequest::ControlCase::kStatus: {
id<FBDebugServer> debugServer = [[_commandExecutor debugserver_status] block:&error];
stream->Write(translate_debugserver_status(debugServer));
return Status::OK;
}
case idb::DebugServerRequest::ControlCase::kStop: {
id<FBDebugServer> debugServer = [[_commandExecutor debugserver_stop] block:&error];
if (!debugServer) {
return Status(grpc::StatusCode::INTERNAL, error.localizedDescription.UTF8String);
}
stream->Write(translate_debugserver_status(debugServer));
return Status::OK;
}
default: {
return Status(grpc::StatusCode::UNIMPLEMENTED, NULL);
}
}
}}