yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
emulator_service_impl.h
Go to the documentation of this file.
1#pragma once
2
3#include <grpcpp/grpcpp.h>
4
5#include <memory>
6
9#include "protos/emulator_service.grpc.pb.h"
10
11// Forward declaration to avoid circular dependencies
12namespace yaze::emu {
13class Emulator;
14}
15
16namespace yaze::agent {
17
18class EmulatorServiceImpl final : public EmulatorService::Service {
19 public:
20 explicit EmulatorServiceImpl(yaze::emu::Emulator* emulator);
21
22 // --- Lifecycle ---
23 grpc::Status Start(grpc::ServerContext* context, const Empty* request,
24 CommandResponse* response) override;
25 grpc::Status Stop(grpc::ServerContext* context, const Empty* request,
26 CommandResponse* response) override;
27 grpc::Status Pause(grpc::ServerContext* context, const Empty* request,
28 CommandResponse* response) override;
29 grpc::Status Resume(grpc::ServerContext* context, const Empty* request,
30 CommandResponse* response) override;
31 grpc::Status Reset(grpc::ServerContext* context, const Empty* request,
32 CommandResponse* response) override;
33
34 // --- Input Control ---
35 grpc::Status PressButtons(grpc::ServerContext* context,
36 const ButtonRequest* request,
37 CommandResponse* response) override;
38 grpc::Status ReleaseButtons(grpc::ServerContext* context,
39 const ButtonRequest* request,
40 CommandResponse* response) override;
41 grpc::Status HoldButtons(grpc::ServerContext* context,
42 const ButtonHoldRequest* request,
43 CommandResponse* response) override;
44
45 // --- State Inspection ---
46 grpc::Status GetGameState(grpc::ServerContext* context,
47 const GameStateRequest* request,
48 GameStateResponse* response) override;
49 grpc::Status ReadMemory(grpc::ServerContext* context,
50 const MemoryRequest* request,
51 MemoryResponse* response) override;
52 grpc::Status WriteMemory(grpc::ServerContext* context,
53 const MemoryWriteRequest* request,
54 CommandResponse* response) override;
55
56 // --- Advanced Debugging ---
57 // Breakpoints
58 grpc::Status AddBreakpoint(grpc::ServerContext* context,
59 const BreakpointRequest* request,
60 BreakpointResponse* response) override;
61 grpc::Status RemoveBreakpoint(grpc::ServerContext* context,
62 const BreakpointIdRequest* request,
63 CommandResponse* response) override;
64 grpc::Status ListBreakpoints(grpc::ServerContext* context,
65 const Empty* request,
66 BreakpointListResponse* response) override;
67 grpc::Status SetBreakpointEnabled(grpc::ServerContext* context,
68 const BreakpointStateRequest* request,
69 CommandResponse* response) override;
70
71 // Watchpoints (memory access tracking)
72 grpc::Status AddWatchpoint(grpc::ServerContext* context,
73 const WatchpointRequest* request,
74 WatchpointResponse* response) override;
75 grpc::Status RemoveWatchpoint(grpc::ServerContext* context,
76 const WatchpointIdRequest* request,
77 CommandResponse* response) override;
78 grpc::Status ListWatchpoints(grpc::ServerContext* context,
79 const Empty* request,
80 WatchpointListResponse* response) override;
81 grpc::Status GetWatchpointHistory(
82 grpc::ServerContext* context, const WatchpointHistoryRequest* request,
83 WatchpointHistoryResponse* response) override;
84
85 // Execution Control
86 grpc::Status StepInstruction(grpc::ServerContext* context,
87 const Empty* request,
88 StepResponse* response) override;
89 grpc::Status RunToBreakpoint(grpc::ServerContext* context,
90 const Empty* request,
91 BreakpointHitResponse* response) override;
92 grpc::Status StepOver(grpc::ServerContext* context, const Empty* request,
93 StepResponse* response) override;
94 grpc::Status StepOut(grpc::ServerContext* context, const Empty* request,
95 StepResponse* response) override;
96
97 // Disassembly & Code Analysis
98 grpc::Status GetDisassembly(grpc::ServerContext* context,
99 const DisassemblyRequest* request,
100 DisassemblyResponse* response) override;
101 grpc::Status GetExecutionTrace(grpc::ServerContext* context,
102 const TraceRequest* request,
103 TraceResponse* response) override;
104
105 // Symbol Management
106 grpc::Status LoadSymbols(grpc::ServerContext* context,
107 const SymbolFileRequest* request,
108 CommandResponse* response) override;
109 grpc::Status ResolveSymbol(grpc::ServerContext* context,
110 const SymbolLookupRequest* request,
111 SymbolLookupResponse* response) override;
112 grpc::Status GetSymbolAt(grpc::ServerContext* context,
113 const AddressRequest* request,
114 SymbolLookupResponse* response) override;
115
116 // Debugging Session
117 grpc::Status CreateDebugSession(grpc::ServerContext* context,
118 const DebugSessionRequest* request,
119 DebugSessionResponse* response) override;
120 grpc::Status GetDebugStatus(grpc::ServerContext* context,
121 const Empty* request,
122 DebugStatusResponse* response) override;
123
124 private:
126
128 emulator_; // Non-owning pointer to the emulator instance
131};
132
133} // namespace yaze::agent
grpc::Status RemoveBreakpoint(grpc::ServerContext *context, const BreakpointIdRequest *request, CommandResponse *response) override
grpc::Status GetWatchpointHistory(grpc::ServerContext *context, const WatchpointHistoryRequest *request, WatchpointHistoryResponse *response) override
grpc::Status Stop(grpc::ServerContext *context, const Empty *request, CommandResponse *response) override
EmulatorServiceImpl(yaze::emu::Emulator *emulator)
grpc::Status PressButtons(grpc::ServerContext *context, const ButtonRequest *request, CommandResponse *response) override
grpc::Status ListWatchpoints(grpc::ServerContext *context, const Empty *request, WatchpointListResponse *response) override
grpc::Status StepOver(grpc::ServerContext *context, const Empty *request, StepResponse *response) override
grpc::Status GetSymbolAt(grpc::ServerContext *context, const AddressRequest *request, SymbolLookupResponse *response) override
grpc::Status ListBreakpoints(grpc::ServerContext *context, const Empty *request, BreakpointListResponse *response) override
grpc::Status GetExecutionTrace(grpc::ServerContext *context, const TraceRequest *request, TraceResponse *response) override
grpc::Status ResolveSymbol(grpc::ServerContext *context, const SymbolLookupRequest *request, SymbolLookupResponse *response) override
grpc::Status Pause(grpc::ServerContext *context, const Empty *request, CommandResponse *response) override
grpc::Status StepOut(grpc::ServerContext *context, const Empty *request, StepResponse *response) override
grpc::Status ReleaseButtons(grpc::ServerContext *context, const ButtonRequest *request, CommandResponse *response) override
grpc::Status RunToBreakpoint(grpc::ServerContext *context, const Empty *request, BreakpointHitResponse *response) override
grpc::Status Reset(grpc::ServerContext *context, const Empty *request, CommandResponse *response) override
grpc::Status LoadSymbols(grpc::ServerContext *context, const SymbolFileRequest *request, CommandResponse *response) override
grpc::Status WriteMemory(grpc::ServerContext *context, const MemoryWriteRequest *request, CommandResponse *response) override
grpc::Status GetDisassembly(grpc::ServerContext *context, const DisassemblyRequest *request, DisassemblyResponse *response) override
grpc::Status CreateDebugSession(grpc::ServerContext *context, const DebugSessionRequest *request, DebugSessionResponse *response) override
yaze::emu::debug::SymbolProvider symbol_provider_
grpc::Status HoldButtons(grpc::ServerContext *context, const ButtonHoldRequest *request, CommandResponse *response) override
grpc::Status ReadMemory(grpc::ServerContext *context, const MemoryRequest *request, MemoryResponse *response) override
grpc::Status AddBreakpoint(grpc::ServerContext *context, const BreakpointRequest *request, BreakpointResponse *response) override
grpc::Status Start(grpc::ServerContext *context, const Empty *request, CommandResponse *response) override
grpc::Status RemoveWatchpoint(grpc::ServerContext *context, const WatchpointIdRequest *request, CommandResponse *response) override
grpc::Status StepInstruction(grpc::ServerContext *context, const Empty *request, StepResponse *response) override
grpc::Status SetBreakpointEnabled(grpc::ServerContext *context, const BreakpointStateRequest *request, CommandResponse *response) override
yaze::emu::debug::StepController step_controller_
grpc::Status GetGameState(grpc::ServerContext *context, const GameStateRequest *request, GameStateResponse *response) override
grpc::Status AddWatchpoint(grpc::ServerContext *context, const WatchpointRequest *request, WatchpointResponse *response) override
grpc::Status GetDebugStatus(grpc::ServerContext *context, const Empty *request, DebugStatusResponse *response) override
grpc::Status Resume(grpc::ServerContext *context, const Empty *request, CommandResponse *response) override
A class for emulating and debugging SNES games.
Definition emulator.h:39
Controller for intelligent step operations.
Provider for symbol (label) resolution in disassembly.
SNES Emulation and debugging tools.
Definition editor.h:29