Application Layer: Central Orchestration and Coordination
Introduction
The Application Class Architecture
Design Philosophy
Application Interface
class Application : public beast::PropertyStream::Source
{
public:
// Core services
virtual Logs& logs() = 0;
virtual Config const& config() const = 0;
// Networking
virtual Overlay& overlay() = 0;
virtual JobQueue& getJobQueue() = 0;
// Ledger management
virtual LedgerMaster& getLedgerMaster() = 0;
virtual OpenLedger& openLedger() = 0;
// Transaction processing
virtual NetworkOPs& getOPs() = 0;
virtual TxQ& getTxQ() = 0;
// Consensus
virtual Validations& getValidations() = 0;
// Storage
virtual NodeStore::Database& getNodeStore() = 0;
virtual RelationalDatabase& getRelationalDatabase() = 0;
// RPC and subscriptions
virtual RPCHandler& getRPCHandler() = 0;
// Lifecycle
virtual void setup() = 0;
virtual void run() = 0;
virtual void signalStop() = 0;
// Utility
virtual bool isShutdown() = 0;
virtual std::chrono::seconds getMaxDisallowedLedger() = 0;
protected:
Application() = default;
};ApplicationImp Implementation
Initialization and Lifecycle
Startup Sequence
Complete Lifecycle Diagram
Subsystem Coordination
The Service Locator Pattern
Major Subsystems
Job Queue System
Purpose and Design
Job Types
Submitting Jobs
Job Priority and Scheduling
Job Queue Configuration
Configuration Management
Configuration File Structure
Accessing Configuration
Runtime Configuration
Component Interaction Patterns
Pattern 1: Direct Method Calls
Pattern 2: Job Queue for Asynchronous Work
Pattern 3: Event Publication
Pattern 4: Callback Registration
Codebase Deep Dive
Key Files and Directories
Code Navigation Tips
Hands-On Exercise
Exercise: Trace Application Startup and Analyze Job Queue
Key Takeaways
Core Concepts
Development Skills
Common Patterns and Best Practices
Pattern 1: Accessing Subsystems
Pattern 2: Asynchronous Work
Pattern 3: Lifecycle Management
Additional Resources
Official Documentation
Codebase References
Related Topics
PreviousTransactors: Transaction Processing FrameworkNextConsensus Engine: XRP Ledger Consensus Protocol
Last updated

