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#include "protos/emulator_service.grpc.pb.h"
5
6// Forward declaration to avoid circular dependencies
7namespace yaze::emu {
8class Emulator;
9}
10
11namespace yaze::agent {
12
13class EmulatorServiceImpl final : public EmulatorService::Service {
14public:
15 explicit EmulatorServiceImpl(yaze::emu::Emulator* emulator);
16
17 // --- Lifecycle ---
18 grpc::Status Start(grpc::ServerContext* context, const Empty* request, CommandResponse* response) override;
19 grpc::Status Stop(grpc::ServerContext* context, const Empty* request, CommandResponse* response) override;
20 grpc::Status Pause(grpc::ServerContext* context, const Empty* request, CommandResponse* response) override;
21 grpc::Status Resume(grpc::ServerContext* context, const Empty* request, CommandResponse* response) override;
22 grpc::Status Reset(grpc::ServerContext* context, const Empty* request, CommandResponse* response) override;
23
24 // --- Input Control ---
25 grpc::Status PressButtons(grpc::ServerContext* context, const ButtonRequest* request, CommandResponse* response) override;
26 grpc::Status ReleaseButtons(grpc::ServerContext* context, const ButtonRequest* request, CommandResponse* response) override;
27 grpc::Status HoldButtons(grpc::ServerContext* context, const ButtonHoldRequest* request, CommandResponse* response) override;
28
29 // --- State Inspection ---
30 grpc::Status GetGameState(grpc::ServerContext* context, const GameStateRequest* request, GameStateResponse* response) override;
31 grpc::Status ReadMemory(grpc::ServerContext* context, const MemoryRequest* request, MemoryResponse* response) override;
32 grpc::Status WriteMemory(grpc::ServerContext* context, const MemoryWriteRequest* request, CommandResponse* response) override;
33
34 // --- Advanced Debugging ---
35 // Breakpoints
36 grpc::Status AddBreakpoint(grpc::ServerContext* context, const BreakpointRequest* request, BreakpointResponse* response) override;
37 grpc::Status RemoveBreakpoint(grpc::ServerContext* context, const BreakpointIdRequest* request, CommandResponse* response) override;
38 grpc::Status ListBreakpoints(grpc::ServerContext* context, const Empty* request, BreakpointListResponse* response) override;
39 grpc::Status SetBreakpointEnabled(grpc::ServerContext* context, const BreakpointStateRequest* request, CommandResponse* response) override;
40
41 // Watchpoints (memory access tracking)
42 grpc::Status AddWatchpoint(grpc::ServerContext* context, const WatchpointRequest* request, WatchpointResponse* response) override;
43 grpc::Status RemoveWatchpoint(grpc::ServerContext* context, const WatchpointIdRequest* request, CommandResponse* response) override;
44 grpc::Status ListWatchpoints(grpc::ServerContext* context, const Empty* request, WatchpointListResponse* response) override;
45 grpc::Status GetWatchpointHistory(grpc::ServerContext* context, const WatchpointHistoryRequest* request, WatchpointHistoryResponse* response) override;
46
47 // Execution Control
48 grpc::Status StepInstruction(grpc::ServerContext* context, const Empty* request, StepResponse* response) override;
49 grpc::Status RunToBreakpoint(grpc::ServerContext* context, const Empty* request, BreakpointHitResponse* response) override;
50 grpc::Status StepOver(grpc::ServerContext* context, const Empty* request, StepResponse* response) override;
51 grpc::Status StepOut(grpc::ServerContext* context, const Empty* request, StepResponse* response) override;
52
53 // Disassembly & Code Analysis
54 grpc::Status GetDisassembly(grpc::ServerContext* context, const DisassemblyRequest* request, DisassemblyResponse* response) override;
55 grpc::Status GetExecutionTrace(grpc::ServerContext* context, const TraceRequest* request, TraceResponse* response) override;
56
57 // Symbol Management
58 grpc::Status LoadSymbols(grpc::ServerContext* context, const SymbolFileRequest* request, CommandResponse* response) override;
59 grpc::Status ResolveSymbol(grpc::ServerContext* context, const SymbolLookupRequest* request, SymbolLookupResponse* response) override;
60 grpc::Status GetSymbolAt(grpc::ServerContext* context, const AddressRequest* request, SymbolLookupResponse* response) override;
61
62 // Debugging Session
63 grpc::Status CreateDebugSession(grpc::ServerContext* context, const DebugSessionRequest* request, DebugSessionResponse* response) override;
64 grpc::Status GetDebugStatus(grpc::ServerContext* context, const Empty* request, DebugStatusResponse* response) override;
65
66private:
67 yaze::emu::Emulator* emulator_; // Non-owning pointer to the emulator instance
68};
69
70} // 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
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
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
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:36
SNES Emulation and debugging tools.