yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
agent_control_server.cc
Go to the documentation of this file.
2
4
5#include <grpcpp/server.h>
6#include <grpcpp/server_builder.h>
7
8#include <iostream>
9
11
12namespace yaze::agent {
13
14AgentControlServer::AgentControlServer(yaze::emu::Emulator* emulator,
15 RomGetter rom_getter,
16 RomLoader rom_loader)
17 : emulator_(emulator), rom_getter_(rom_getter), rom_loader_(rom_loader) {}
18
19AgentControlServer::~AgentControlServer() {
20 Stop();
21}
22
23void AgentControlServer::Start() {
24 server_thread_ = std::thread(&AgentControlServer::Run, this);
25}
26
27void AgentControlServer::Stop() {
28 if (server_) {
29 server_->Shutdown();
30 }
31 if (server_thread_.joinable()) {
32 server_thread_.join();
33 }
34}
35
36void AgentControlServer::Run() {
37 // Port 50053 for agent/MCP debugging (50051 often occupied on macOS)
38 std::string server_address("0.0.0.0:50053");
39 yaze::net::EmulatorServiceImpl service(emulator_, rom_getter_, rom_loader_);
40
41 grpc::ServerBuilder builder;
42
43 // Track selected port for debugging
44 int selected_port = 0;
45 builder.AddListeningPort(server_address, grpc::InsecureServerCredentials(),
46 &selected_port);
47 builder.RegisterService(&service);
48
49 server_ = builder.BuildAndStart();
50 if (server_ && selected_port > 0) {
51 std::cout << "AgentControlServer listening on " << server_address
52 << " (selected_port: " << selected_port << ")" << std::endl;
53 server_->Wait();
54 } else {
55 std::cerr << "Failed to start AgentControlServer on " << server_address
56 << " (selected_port: " << selected_port << ")" << std::endl;
57 }
58}
59
60} // namespace yaze::agent
A class for emulating and debugging SNES games.
Definition emulator.h:39