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>
19#include "protos/rom_service.grpc.pb.h"
21#pragma pop_macro("DWORD")
22#pragma pop_macro("ERROR")
47class RomServiceImpl final :
public proto::RomService::Service {
53 bool require_approval_for_writes =
true;
54 bool enable_version_management =
true;
55 int max_read_size_bytes = 1024 * 1024;
56 bool allow_raw_rom_access =
true;
65 RomServiceImpl(Rom* rom, RomVersionManager* version_mgr =
nullptr,
66 ProposalApprovalManager* approval_mgr =
nullptr);
68 ~RomServiceImpl()
override =
default;
71 void SetConfig(
const Config& config);
77 grpc::Status
ReadBytes(grpc::ServerContext* context,
78 const proto::ReadBytesRequest* request,
79 proto::ReadBytesResponse* response)
override;
81 grpc::Status
WriteBytes(grpc::ServerContext* context,
82 const proto::WriteBytesRequest* request,
83 proto::WriteBytesResponse* response)
override;
85 grpc::Status GetRomInfo(grpc::ServerContext* context,
86 const proto::GetRomInfoRequest* request,
87 proto::GetRomInfoResponse* response)
override;
93 grpc::Status ReadOverworldMap(
94 grpc::ServerContext* context,
95 const proto::ReadOverworldMapRequest* request,
96 proto::ReadOverworldMapResponse* response)
override;
98 grpc::Status WriteOverworldTile(
99 grpc::ServerContext* context,
100 const proto::WriteOverworldTileRequest* request,
101 proto::WriteOverworldTileResponse* response)
override;
107 grpc::Status ReadDungeonRoom(
108 grpc::ServerContext* context,
109 const proto::ReadDungeonRoomRequest* request,
110 proto::ReadDungeonRoomResponse* response)
override;
112 grpc::Status WriteDungeonTile(
113 grpc::ServerContext* context,
114 const proto::WriteDungeonTileRequest* request,
115 proto::WriteDungeonTileResponse* response)
override;
121 grpc::Status ReadSprite(grpc::ServerContext* context,
122 const proto::ReadSpriteRequest* request,
123 proto::ReadSpriteResponse* response)
override;
129 grpc::Status SubmitRomProposal(
130 grpc::ServerContext* context,
131 const proto::SubmitRomProposalRequest* request,
132 proto::SubmitRomProposalResponse* response)
override;
134 grpc::Status GetProposalStatus(
135 grpc::ServerContext* context,
136 const proto::GetProposalStatusRequest* request,
137 proto::GetProposalStatusResponse* response)
override;
143 grpc::Status CreateSnapshot(grpc::ServerContext* context,
144 const proto::CreateSnapshotRequest* request,
145 proto::CreateSnapshotResponse* response)
override;
147 grpc::Status RestoreSnapshot(
148 grpc::ServerContext* context,
149 const proto::RestoreSnapshotRequest* request,
150 proto::RestoreSnapshotResponse* response)
override;
152 grpc::Status ListSnapshots(grpc::ServerContext* context,
153 const proto::ListSnapshotsRequest* request,
154 proto::ListSnapshotsResponse* response)
override;
159 RomVersionManager* version_mgr_;
160 ProposalApprovalManager* approval_mgr_;
163 grpc::Status ValidateRomLoaded();
166 absl::Status MaybeCreateSnapshot(
const std::string& description);
absl::Status ReadBytes(std::istream &in, void *data, size_t size)
absl::Status WriteBytes(std::ostream &out, const void *data, size_t size)