From 91a22bffbbd291f358165a8a9cd075cd4c6e8f78 Mon Sep 17 00:00:00 2001 From: scawful Date: Sun, 5 Oct 2025 00:24:35 -0400 Subject: [PATCH] refactor: Update ROM service implementation and CMake configurations - Adjusted paths in CMake files to reference the correct location of `rom_service.proto`. - Refactored `RomServiceImpl` to use a namespace alias for improved readability and maintainability. - Updated method parameters in `RomServiceImpl` to utilize the new namespace alias for consistency. - Added a new `rom_service.proto` file to define the ROM manipulation service, enabling remote operations for reading and writing ROM data. - Enhanced the `RecentFilesManager` to utilize a utility function for retrieving the configuration directory, improving code clarity. - Included necessary updates in CMake configurations to integrate the new proto file and ensure proper build setup. --- src/app/core/core_library.cmake | 2 +- src/app/core/project.cc | 2 +- src/app/net/net_library.cmake | 2 +- src/app/net/rom_service_impl.cc | 59 +++++++++++++----------- src/app/net/rom_service_impl.h | 1 + src/cli/handlers/agent/todo_commands.cc | 1 + {protos => src/protos}/rom_service.proto | 0 7 files changed, 36 insertions(+), 31 deletions(-) rename {protos => src/protos}/rom_service.proto (100%) diff --git a/src/app/core/core_library.cmake b/src/app/core/core_library.cmake index 62eba6b4..5c8b3926 100644 --- a/src/app/core/core_library.cmake +++ b/src/app/core/core_library.cmake @@ -85,7 +85,7 @@ if(YAZE_WITH_GRPC) target_add_protobuf(yaze_core_lib ${PROJECT_SOURCE_DIR}/src/app/core/proto/imgui_test_harness.proto) target_add_protobuf(yaze_core_lib - ${PROJECT_SOURCE_DIR}/protos/rom_service.proto) + ${PROJECT_SOURCE_DIR}/src/protos/rom_service.proto) # Add test harness implementation target_sources(yaze_core_lib PRIVATE diff --git a/src/app/core/project.cc b/src/app/core/project.cc index d7d3ee54..8b3ece76 100644 --- a/src/app/core/project.cc +++ b/src/app/core/project.cc @@ -1051,7 +1051,7 @@ absl::Status YazeProject::SaveToJsonFormat() { // RecentFilesManager implementation std::string RecentFilesManager::GetFilePath() const { - return GetConfigDirectory() + "/" + kRecentFilesFilename; + return util::GetConfigDirectory() + "/" + kRecentFilesFilename; } void RecentFilesManager::Save() { diff --git a/src/app/net/net_library.cmake b/src/app/net/net_library.cmake index ba7eb0dd..74a7dfa3 100644 --- a/src/app/net/net_library.cmake +++ b/src/app/net/net_library.cmake @@ -67,7 +67,7 @@ endif() # Add gRPC support for ROM service if(YAZE_WITH_GRPC) - target_add_protobuf(yaze_net ${PROJECT_SOURCE_DIR}/protos/rom_service.proto) + target_add_protobuf(yaze_net ${PROJECT_SOURCE_DIR}/src/protos/rom_service.proto) target_link_libraries(yaze_net PUBLIC grpc++ diff --git a/src/app/net/rom_service_impl.cc b/src/app/net/rom_service_impl.cc index 5a264f9f..45d46cd9 100644 --- a/src/app/net/rom_service_impl.cc +++ b/src/app/net/rom_service_impl.cc @@ -6,6 +6,9 @@ #include "app/rom.h" #include "app/net/rom_version_manager.h" +// Proto namespace alias for convenience +namespace rom_svc = ::yaze::proto; + namespace yaze { namespace app { namespace net { @@ -15,8 +18,8 @@ RomServiceImpl::RomServiceImpl( RomVersionManager* version_manager, ProposalApprovalManager* approval_manager) : rom_(rom), - version_manager_(version_manager), - approval_manager_(approval_manager) { + version_mgr_(version_manager), + approval_mgr_(approval_manager) { } void RomServiceImpl::SetConfig(const Config& config) { @@ -25,8 +28,8 @@ void RomServiceImpl::SetConfig(const Config& config) { grpc::Status RomServiceImpl::ReadBytes( grpc::ServerContext* context, - const rom_service::ReadBytesRequest* request, - rom_service::ReadBytesResponse* response) { + const rom_svc::ReadBytesRequest* request, + rom_svc::ReadBytesResponse* response) { if (!rom_ || !rom_->is_loaded()) { return grpc::Status(grpc::StatusCode::FAILED_PRECONDITION, "ROM not loaded"); @@ -53,8 +56,8 @@ grpc::Status RomServiceImpl::ReadBytes( grpc::Status RomServiceImpl::WriteBytes( grpc::ServerContext* context, - const rom_service::WriteBytesRequest* request, - rom_service::WriteBytesResponse* response) { + const rom_svc::WriteBytesRequest* request, + rom_svc::WriteBytesResponse* response) { if (!rom_ || !rom_->is_loaded()) { return grpc::Status(grpc::StatusCode::FAILED_PRECONDITION, "ROM not loaded"); @@ -72,7 +75,7 @@ grpc::Status RomServiceImpl::WriteBytes( } // Check if approval required - if (config_.require_approval_for_writes && approval_manager_) { + if (config_.require_approval_for_writes && approval_mgr_) { // Create a proposal for this write std::string proposal_id = absl::StrFormat( "write_0x%X_%zu_bytes", address, data.size()); @@ -82,7 +85,7 @@ grpc::Status RomServiceImpl::WriteBytes( } // Check if proposal is approved - auto status = approval_manager_->GetProposalStatus(proposal_id); + auto status = approval_mgr_->GetProposalStatus(proposal_id); if (status != ProposalApprovalManager::ApprovalStatus::kApproved) { response->set_success(false); response->set_message("Write requires approval"); @@ -92,10 +95,10 @@ grpc::Status RomServiceImpl::WriteBytes( } // Create snapshot before write - if (version_manager_) { + if (version_mgr_) { std::string snapshot_desc = absl::StrFormat( "Before write to 0x%X (%zu bytes)", address, data.size()); - auto snapshot_result = version_manager_->CreateSnapshot(snapshot_desc); + auto snapshot_result = version_mgr_->CreateSnapshot(snapshot_desc); if (snapshot_result.ok()) { response->set_snapshot_id(std::to_string(snapshot_result.value())); } @@ -112,8 +115,8 @@ grpc::Status RomServiceImpl::WriteBytes( grpc::Status RomServiceImpl::GetRomInfo( grpc::ServerContext* context, - const rom_service::GetRomInfoRequest* request, - rom_service::GetRomInfoResponse* response) { + const rom_svc::GetRomInfoRequest* request, + rom_svc::GetRomInfoResponse* response) { if (!rom_ || !rom_->is_loaded()) { return grpc::Status(grpc::StatusCode::FAILED_PRECONDITION, "ROM not loaded"); @@ -130,8 +133,8 @@ grpc::Status RomServiceImpl::GetRomInfo( grpc::Status RomServiceImpl::GetTileData( grpc::ServerContext* context, - const rom_service::GetTileDataRequest* request, - rom_service::GetTileDataResponse* response) { + const rom_svc::GetTileDataRequest* request, + rom_svc::GetTileDataResponse* response) { return grpc::Status(grpc::StatusCode::UNIMPLEMENTED, "GetTileData not yet implemented"); @@ -139,8 +142,8 @@ grpc::Status RomServiceImpl::GetTileData( grpc::Status RomServiceImpl::SetTileData( grpc::ServerContext* context, - const rom_service::SetTileDataRequest* request, - rom_service::SetTileDataResponse* response) { + const rom_svc::SetTileDataRequest* request, + rom_svc::SetTileDataResponse* response) { return grpc::Status(grpc::StatusCode::UNIMPLEMENTED, "SetTileData not yet implemented"); @@ -148,8 +151,8 @@ grpc::Status RomServiceImpl::SetTileData( grpc::Status RomServiceImpl::GetMapData( grpc::ServerContext* context, - const rom_service::GetMapDataRequest* request, - rom_service::GetMapDataResponse* response) { + const rom_svc::GetMapDataRequest* request, + rom_svc::GetMapDataResponse* response) { return grpc::Status(grpc::StatusCode::UNIMPLEMENTED, "GetMapData not yet implemented"); @@ -157,8 +160,8 @@ grpc::Status RomServiceImpl::GetMapData( grpc::Status RomServiceImpl::SetMapData( grpc::ServerContext* context, - const rom_service::SetMapDataRequest* request, - rom_service::SetMapDataResponse* response) { + const rom_svc::SetMapDataRequest* request, + rom_svc::SetMapDataResponse* response) { return grpc::Status(grpc::StatusCode::UNIMPLEMENTED, "SetMapData not yet implemented"); @@ -166,8 +169,8 @@ grpc::Status RomServiceImpl::SetMapData( grpc::Status RomServiceImpl::GetSpriteData( grpc::ServerContext* context, - const rom_service::GetSpriteDataRequest* request, - rom_service::GetSpriteDataResponse* response) { + const rom_svc::GetSpriteDataRequest* request, + rom_svc::GetSpriteDataResponse* response) { return grpc::Status(grpc::StatusCode::UNIMPLEMENTED, "GetSpriteData not yet implemented"); @@ -175,8 +178,8 @@ grpc::Status RomServiceImpl::GetSpriteData( grpc::Status RomServiceImpl::SetSpriteData( grpc::ServerContext* context, - const rom_service::SetSpriteDataRequest* request, - rom_service::SetSpriteDataResponse* response) { + const rom_svc::SetSpriteDataRequest* request, + rom_svc::SetSpriteDataResponse* response) { return grpc::Status(grpc::StatusCode::UNIMPLEMENTED, "SetSpriteData not yet implemented"); @@ -184,8 +187,8 @@ grpc::Status RomServiceImpl::SetSpriteData( grpc::Status RomServiceImpl::GetDialogue( grpc::ServerContext* context, - const rom_service::GetDialogueRequest* request, - rom_service::GetDialogueResponse* response) { + const rom_svc::GetDialogueRequest* request, + rom_svc::GetDialogueResponse* response) { return grpc::Status(grpc::StatusCode::UNIMPLEMENTED, "GetDialogue not yet implemented"); @@ -193,8 +196,8 @@ grpc::Status RomServiceImpl::GetDialogue( grpc::Status RomServiceImpl::SetDialogue( grpc::ServerContext* context, - const rom_service::SetDialogueRequest* request, - rom_service::SetDialogueResponse* response) { + const rom_svc::SetDialogueRequest* request, + rom_svc::SetDialogueResponse* response) { return grpc::Status(grpc::StatusCode::UNIMPLEMENTED, "SetDialogue not yet implemented"); diff --git a/src/app/net/rom_service_impl.h b/src/app/net/rom_service_impl.h index dbd9e76b..9a7b3ec0 100644 --- a/src/app/net/rom_service_impl.h +++ b/src/app/net/rom_service_impl.h @@ -10,6 +10,7 @@ #ifdef YAZE_WITH_GRPC #include #include "protos/rom_service.grpc.pb.h" +// Note: Proto files will be generated to build directory #endif #include "app/rom.h" diff --git a/src/cli/handlers/agent/todo_commands.cc b/src/cli/handlers/agent/todo_commands.cc index 92ec0b02..d4cfd433 100644 --- a/src/cli/handlers/agent/todo_commands.cc +++ b/src/cli/handlers/agent/todo_commands.cc @@ -4,6 +4,7 @@ #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" +#include "absl/strings/str_join.h" #include "absl/strings/str_split.h" #include "cli/service/agent/todo_manager.h" diff --git a/protos/rom_service.proto b/src/protos/rom_service.proto similarity index 100% rename from protos/rom_service.proto rename to src/protos/rom_service.proto