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#include <grpcpp/grpcpp.h>
14#include "protos/rom_service.grpc.pb.h"
31class RomServiceImpl final :
public proto::RomService::Service {
33 using RomGetter = std::function<Rom*()>;
36 bool require_approval_for_writes =
true;
37 bool enable_version_management =
true;
38 int max_read_size_bytes = 1024 * 1024;
39 bool allow_raw_rom_access =
true;
48 RomServiceImpl(RomGetter rom_getter, RomVersionManager* version_mgr =
nullptr,
49 ProposalApprovalManager* approval_mgr =
nullptr);
51 ~RomServiceImpl()
override =
default;
54 void SetConfig(
const Config& config);
60 grpc::Status
ReadBytes(grpc::ServerContext* context,
61 const proto::ReadBytesRequest* request,
62 proto::ReadBytesResponse* response)
override;
64 grpc::Status
WriteBytes(grpc::ServerContext* context,
65 const proto::WriteBytesRequest* request,
66 proto::WriteBytesResponse* response)
override;
68 grpc::Status GetRomInfo(grpc::ServerContext* context,
69 const proto::GetRomInfoRequest* request,
70 proto::GetRomInfoResponse* response)
override;
76 grpc::Status ReadOverworldMap(
77 grpc::ServerContext* context,
78 const proto::ReadOverworldMapRequest* request,
79 proto::ReadOverworldMapResponse* response)
override;
81 grpc::Status WriteOverworldTile(
82 grpc::ServerContext* context,
83 const proto::WriteOverworldTileRequest* request,
84 proto::WriteOverworldTileResponse* response)
override;
90 grpc::Status ReadDungeonRoom(
91 grpc::ServerContext* context,
92 const proto::ReadDungeonRoomRequest* request,
93 proto::ReadDungeonRoomResponse* response)
override;
95 grpc::Status WriteDungeonTile(
96 grpc::ServerContext* context,
97 const proto::WriteDungeonTileRequest* request,
98 proto::WriteDungeonTileResponse* response)
override;
104 grpc::Status ReadSprite(grpc::ServerContext* context,
105 const proto::ReadSpriteRequest* request,
106 proto::ReadSpriteResponse* response)
override;
112 grpc::Status SubmitRomProposal(
113 grpc::ServerContext* context,
114 const proto::SubmitRomProposalRequest* request,
115 proto::SubmitRomProposalResponse* response)
override;
117 grpc::Status GetProposalStatus(
118 grpc::ServerContext* context,
119 const proto::GetProposalStatusRequest* request,
120 proto::GetProposalStatusResponse* response)
override;
126 grpc::Status CreateSnapshot(grpc::ServerContext* context,
127 const proto::CreateSnapshotRequest* request,
128 proto::CreateSnapshotResponse* response)
override;
130 grpc::Status RestoreSnapshot(
131 grpc::ServerContext* context,
132 const proto::RestoreSnapshotRequest* request,
133 proto::RestoreSnapshotResponse* response)
override;
135 grpc::Status ListSnapshots(grpc::ServerContext* context,
136 const proto::ListSnapshotsRequest* request,
137 proto::ListSnapshotsResponse* response)
override;
141 RomGetter rom_getter_;
142 RomVersionManager* version_mgr_;
143 ProposalApprovalManager* approval_mgr_;
146 grpc::Status ValidateRomLoaded();
149 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)