5.2. Iroha Shared Objects Description

This document describes access to shared objects in a multithreaded scenario, whether or not is properly synchronized.

5.2.1. Document Structure

Each component in this document has its own diagram describing all members, and whether or not access to them is synchronized or not:

  • Synchronized
  • Not Synchronized

5.2.2. Query Service

Query Service
Cache
Query Processor

Query service is a grpc endpoint for queries from clients. It has cache, from which it receives responses. Access to the cache is protected by an internal mutex. Query processor actually fetches data from the storage. It is not synchronized here since all synchronization is internal.

5.2.3. Query Processor

Query Processor
Query Response Observable
Block Query Observable
Storage

5.2.4. Transaction Service

Transaction Service
Response Cache
Transaction Processor
Storage

Transaction Service uses response cache to send transaction statuses. Also, transaction processor is synchronized in status streaming.

5.2.5. Transaction Processor

Transaction Processor
Peer Communication Service
Transaction Status Notifier
Proposal Set
Candidate Set

5.2.6. Simulator

Simulator
Proposal Notifier
Block Notifier
Stateful Validator
Temporary Factory
Block Query

5.2.7. Synchronizer

Synchronizer
Chain Validator
Mutable Factory
Block Loader

5.2.8. Yac Gate

Yac Gate
Hash Gate
Peer Orderer
Hash Provider
Block Creator
Block Loader

5.2.9. Yac

Yac
Yac Vote Storage
Yac Network