Manages proposal approval workflow for collaborative sessions. More...
#include <rom_version_manager.h>
Classes | |
struct | ApprovalStatus |
Public Types | |
enum class | ApprovalMode { kHostOnly , kMajorityVote , kUnanimous , kAutoApprove } |
Public Member Functions | |
ProposalApprovalManager (RomVersionManager *version_mgr) | |
void | SetApprovalMode (ApprovalMode mode) |
void | SetHost (const std::string &host_username) |
absl::Status | SubmitProposal (const std::string &proposal_id, const std::string &sender, const std::string &description, const nlohmann::json &proposal_data) |
absl::Status | VoteOnProposal (const std::string &proposal_id, const std::string &username, bool approved) |
absl::Status | ApplyProposal (const std::string &proposal_id, Rom *rom) |
absl::Status | RejectProposal (const std::string &proposal_id) |
absl::StatusOr< ApprovalStatus > | GetProposalStatus (const std::string &proposal_id) const |
std::vector< ApprovalStatus > | GetPendingProposals () const |
bool | IsProposalApproved (const std::string &proposal_id) const |
std::vector< ApprovalStatus > | GetAuditLog () const |
Private Member Functions | |
bool | CheckApprovalThreshold (const ApprovalStatus &status) const |
Private Attributes | |
RomVersionManager * | version_mgr_ |
ApprovalMode | mode_ |
std::string | host_username_ |
std::map< std::string, ApprovalStatus > | proposals_ |
std::vector< std::string > | participants_ |
Manages proposal approval workflow for collaborative sessions.
Features:
Definition at line 197 of file rom_version_manager.h.
|
strong |
Enumerator | |
---|---|
kHostOnly | |
kMajorityVote | |
kUnanimous | |
kAutoApprove |
Definition at line 199 of file rom_version_manager.h.
|
explicit |
Definition at line 382 of file rom_version_manager.cc.
void yaze::net::ProposalApprovalManager::SetApprovalMode | ( | ApprovalMode | mode | ) |
Set approval mode for the session
Definition at line 387 of file rom_version_manager.cc.
References mode_.
void yaze::net::ProposalApprovalManager::SetHost | ( | const std::string & | host_username | ) |
absl::Status yaze::net::ProposalApprovalManager::SubmitProposal | ( | const std::string & | proposal_id, |
const std::string & | sender, | ||
const std::string & | description, | ||
const nlohmann::json & | proposal_data | ||
) |
Submit a proposal for approval
Definition at line 395 of file rom_version_manager.cc.
References yaze::net::ProposalApprovalManager::ApprovalStatus::created_at, yaze::net::RomVersionManager::CreateSnapshot(), yaze::net::ProposalApprovalManager::ApprovalStatus::decided_at, yaze::net::ProposalApprovalManager::ApprovalStatus::proposal_id, proposals_, yaze::net::ProposalApprovalManager::ApprovalStatus::snapshot_before, yaze::net::ProposalApprovalManager::ApprovalStatus::status, and version_mgr_.
Referenced by yaze::net::CollaborationService::HandleIncomingProposal().
absl::Status yaze::net::ProposalApprovalManager::VoteOnProposal | ( | const std::string & | proposal_id, |
const std::string & | username, | ||
bool | approved | ||
) |
Vote on a proposal
Definition at line 424 of file rom_version_manager.cc.
References CheckApprovalThreshold(), yaze::net::ProposalApprovalManager::ApprovalStatus::decided_at, host_username_, kHostOnly, mode_, proposals_, yaze::net::ProposalApprovalManager::ApprovalStatus::status, and yaze::net::ProposalApprovalManager::ApprovalStatus::votes.
Referenced by yaze::net::CollaborationService::VoteOnProposal().
absl::Status yaze::net::ProposalApprovalManager::ApplyProposal | ( | const std::string & | proposal_id, |
Rom * | rom | ||
) |
Apply an approved proposal
absl::Status yaze::net::ProposalApprovalManager::RejectProposal | ( | const std::string & | proposal_id | ) |
Reject and rollback a proposal
absl::StatusOr< ProposalApprovalManager::ApprovalStatus > yaze::net::ProposalApprovalManager::GetProposalStatus | ( | const std::string & | proposal_id | ) | const |
Get proposal status
Definition at line 522 of file rom_version_manager.cc.
References proposals_.
Referenced by yaze::net::CollaborationService::ApplyApprovedProposal().
std::vector< ProposalApprovalManager::ApprovalStatus > yaze::net::ProposalApprovalManager::GetPendingProposals | ( | ) | const |
Get all pending proposals
Definition at line 511 of file rom_version_manager.cc.
References proposals_.
Referenced by yaze::gui::CollaborationPanel::RenderApprovalTab().
bool yaze::net::ProposalApprovalManager::IsProposalApproved | ( | const std::string & | proposal_id | ) | const |
Check if proposal is approved
Definition at line 501 of file rom_version_manager.cc.
References proposals_.
Referenced by yaze::net::CollaborationService::ApplyApprovedProposal().
std::vector< ApprovalStatus > yaze::net::ProposalApprovalManager::GetAuditLog | ( | ) | const |
Get audit log
|
private |
Definition at line 465 of file rom_version_manager.cc.
References host_username_, kAutoApprove, kHostOnly, kMajorityVote, kUnanimous, mode_, participants_, and yaze::net::ProposalApprovalManager::ApprovalStatus::votes.
Referenced by VoteOnProposal().
|
private |
Definition at line 279 of file rom_version_manager.h.
Referenced by SubmitProposal().
|
private |
Definition at line 280 of file rom_version_manager.h.
Referenced by CheckApprovalThreshold(), SetApprovalMode(), and VoteOnProposal().
|
private |
Definition at line 281 of file rom_version_manager.h.
Referenced by CheckApprovalThreshold(), SetHost(), and VoteOnProposal().
|
private |
Definition at line 282 of file rom_version_manager.h.
Referenced by GetPendingProposals(), GetProposalStatus(), IsProposalApproved(), SubmitProposal(), and VoteOnProposal().
|
private |
Definition at line 283 of file rom_version_manager.h.
Referenced by CheckApprovalThreshold().