1#ifndef YAZE_APP_NET_ROM_SERVICE_IMPL_H_
2#define YAZE_APP_NET_ROM_SERVICE_IMPL_H_
7#include "absl/status/status.h"
8#include "absl/status/statusor.h"
12#pragma push_macro("DWORD")
13#pragma push_macro("ERROR")
17#include <grpcpp/grpcpp.h>
18#include "protos/rom_service.grpc.pb.h"
20#pragma pop_macro("DWORD")
21#pragma pop_macro("ERROR")
46class RomServiceImpl final :
public proto::RomService::Service {
52 bool require_approval_for_writes =
true;
53 bool enable_version_management =
true;
54 int max_read_size_bytes = 1024 * 1024;
55 bool allow_raw_rom_access =
true;
64 RomServiceImpl(Rom* rom,
65 RomVersionManager* version_mgr =
nullptr,
66 ProposalApprovalManager* approval_mgr =
nullptr);
68 ~RomServiceImpl()
override =
default;
71 void SetConfig(
const Config& config);
77 grpc::Status ReadBytes(
78 grpc::ServerContext* context,
79 const proto::ReadBytesRequest* request,
80 proto::ReadBytesResponse* response)
override;
82 grpc::Status WriteBytes(
83 grpc::ServerContext* context,
84 const proto::WriteBytesRequest* request,
85 proto::WriteBytesResponse* response)
override;
87 grpc::Status GetRomInfo(
88 grpc::ServerContext* context,
89 const proto::GetRomInfoRequest* request,
90 proto::GetRomInfoResponse* response)
override;
96 grpc::Status ReadOverworldMap(
97 grpc::ServerContext* context,
98 const proto::ReadOverworldMapRequest* request,
99 proto::ReadOverworldMapResponse* response)
override;
101 grpc::Status WriteOverworldTile(
102 grpc::ServerContext* context,
103 const proto::WriteOverworldTileRequest* request,
104 proto::WriteOverworldTileResponse* response)
override;
110 grpc::Status ReadDungeonRoom(
111 grpc::ServerContext* context,
112 const proto::ReadDungeonRoomRequest* request,
113 proto::ReadDungeonRoomResponse* response)
override;
115 grpc::Status WriteDungeonTile(
116 grpc::ServerContext* context,
117 const proto::WriteDungeonTileRequest* request,
118 proto::WriteDungeonTileResponse* response)
override;
124 grpc::Status ReadSprite(
125 grpc::ServerContext* context,
126 const proto::ReadSpriteRequest* request,
127 proto::ReadSpriteResponse* response)
override;
133 grpc::Status SubmitRomProposal(
134 grpc::ServerContext* context,
135 const proto::SubmitRomProposalRequest* request,
136 proto::SubmitRomProposalResponse* response)
override;
138 grpc::Status GetProposalStatus(
139 grpc::ServerContext* context,
140 const proto::GetProposalStatusRequest* request,
141 proto::GetProposalStatusResponse* response)
override;
147 grpc::Status CreateSnapshot(
148 grpc::ServerContext* context,
149 const proto::CreateSnapshotRequest* request,
150 proto::CreateSnapshotResponse* response)
override;
152 grpc::Status RestoreSnapshot(
153 grpc::ServerContext* context,
154 const proto::RestoreSnapshotRequest* request,
155 proto::RestoreSnapshotResponse* response)
override;
157 grpc::Status ListSnapshots(
158 grpc::ServerContext* context,
159 const proto::ListSnapshotsRequest* request,
160 proto::ListSnapshotsResponse* response)
override;
165 RomVersionManager* version_mgr_;
166 ProposalApprovalManager* approval_mgr_;
169 grpc::Status ValidateRomLoaded();
172 absl::Status MaybeCreateSnapshot(
const std::string& description);
Main namespace for the application.