yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
yaze::net::ProposalApprovalManager Class Reference

Manages proposal approval workflow for collaborative sessions. More...

#include <rom_version_manager.h>

Collaboration diagram for yaze::net::ProposalApprovalManager:

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< ApprovalStatusGetProposalStatus (const std::string &proposal_id) const
 
std::vector< ApprovalStatusGetPendingProposals () const
 
bool IsProposalApproved (const std::string &proposal_id) const
 
std::vector< ApprovalStatusGetAuditLog () const
 

Private Member Functions

bool CheckApprovalThreshold (const ApprovalStatus &status) const
 

Private Attributes

RomVersionManagerversion_mgr_
 
ApprovalMode mode_
 
std::string host_username_
 
std::map< std::string, ApprovalStatusproposals_
 
std::vector< std::string > participants_
 

Detailed Description

Manages proposal approval workflow for collaborative sessions.

Features:

  • Host approval required for all changes
  • Participant voting system
  • Automatic rollback on rejection
  • Change tracking and audit log

Definition at line 197 of file rom_version_manager.h.

Member Enumeration Documentation

◆ ApprovalMode

Enumerator
kHostOnly 
kMajorityVote 
kUnanimous 
kAutoApprove 

Definition at line 199 of file rom_version_manager.h.

Constructor & Destructor Documentation

◆ ProposalApprovalManager()

yaze::net::ProposalApprovalManager::ProposalApprovalManager ( RomVersionManager version_mgr)
explicit

Definition at line 382 of file rom_version_manager.cc.

Member Function Documentation

◆ SetApprovalMode()

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_.

◆ SetHost()

void yaze::net::ProposalApprovalManager::SetHost ( const std::string &  host_username)

Set host username

Definition at line 391 of file rom_version_manager.cc.

References host_username_.

◆ SubmitProposal()

absl::Status yaze::net::ProposalApprovalManager::SubmitProposal ( const std::string &  proposal_id,
const std::string &  sender,
const std::string &  description,
const nlohmann::json &  proposal_data 
)

◆ VoteOnProposal()

absl::Status yaze::net::ProposalApprovalManager::VoteOnProposal ( const std::string &  proposal_id,
const std::string &  username,
bool  approved 
)

◆ ApplyProposal()

absl::Status yaze::net::ProposalApprovalManager::ApplyProposal ( const std::string &  proposal_id,
Rom rom 
)

Apply an approved proposal

◆ RejectProposal()

absl::Status yaze::net::ProposalApprovalManager::RejectProposal ( const std::string &  proposal_id)

Reject and rollback a proposal

◆ GetProposalStatus()

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().

◆ GetPendingProposals()

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().

◆ IsProposalApproved()

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().

◆ GetAuditLog()

std::vector< ApprovalStatus > yaze::net::ProposalApprovalManager::GetAuditLog ( ) const

Get audit log

◆ CheckApprovalThreshold()

bool yaze::net::ProposalApprovalManager::CheckApprovalThreshold ( const ApprovalStatus status) const
private

Member Data Documentation

◆ version_mgr_

RomVersionManager* yaze::net::ProposalApprovalManager::version_mgr_
private

Definition at line 279 of file rom_version_manager.h.

Referenced by SubmitProposal().

◆ mode_

ApprovalMode yaze::net::ProposalApprovalManager::mode_
private

Definition at line 280 of file rom_version_manager.h.

Referenced by CheckApprovalThreshold(), SetApprovalMode(), and VoteOnProposal().

◆ host_username_

std::string yaze::net::ProposalApprovalManager::host_username_
private

Definition at line 281 of file rom_version_manager.h.

Referenced by CheckApprovalThreshold(), SetHost(), and VoteOnProposal().

◆ proposals_

std::map<std::string, ApprovalStatus> yaze::net::ProposalApprovalManager::proposals_
private

◆ participants_

std::vector<std::string> yaze::net::ProposalApprovalManager::participants_
private

Definition at line 283 of file rom_version_manager.h.

Referenced by CheckApprovalThreshold().


The documentation for this class was generated from the following files: