How ryanbinxu/archpipe works
Archpipe is a C prototype for erasure-coded archival over asymmetric networks. Its apparent workflow is to initialize block placement and stripe layout, schedule encoding pipelines, issue work to data nodes, and perform encoding or recovery there. The excerpts show coordinator scheduling and command transmission, and data-node pipeline and central-recovery code. The README is only a one-line product description, so detailed capabilities and some runtime links are based on source references; unsampled dispatch paths are not asserted.
Main entry points: coordinator.c Coordinator · datanode.c Data-node service · placement.c Block placement · stripecons.c Stripe construction
Components 16
Coordination
- Coordinator
coordinator.c - Timing coordinator
coordinator4schedule-time.c - Pipeline scheduling
coordinator.c
Data Layout
- Block placement
placement.c - Stripe construction
stripecons.c
Data Nodes
- Data-node service
datanode.c - Pipeline encoding
datanode.c - Central recovery
datanode.c - Parity transfer
datanode.c
Runtime Support
- Galois arithmetic
galois.c - Commands and transport
common.c - Runtime configuration
config.h - Array list
arraylist.c - Cuckoo hash
cuckoo.c - Hash functions
hash.c
Other components
- Archival operator
Connections 22
- Archival operator → Coordinator: initiates archival
README.md - Coordinator → Block placement: uses placement
coordinator.c - Coordinator → Stripe construction: constructs stripes
coordinator.c - Coordinator → Pipeline scheduling: selects schedule
coordinator.c - Timing coordinator → Block placement: uses placement
coordinator4schedule-time.c - Timing coordinator → Stripe construction: constructs stripes
coordinator4schedule-time.c - Coordinator → Commands and transport: sends commands
coordinator.c - Coordinator → Data-node service: transmits parity command
coordinator.c - Data-node service → Pipeline encoding: dispatches work
datanode.c - Data-node service → Central recovery: dispatches work
datanode.c - Data-node service → Parity transfer: dispatches work
datanode.c - Pipeline encoding → Galois arithmetic: uses coding routines
datanode.c - Central recovery → Galois arithmetic: uses coding routines
- Coordinator → Array list: uses collections
coordinator.c - Coordinator → Cuckoo hash: looks up node IPs
coordinator.c - Block placement → Array list: uses collections
placement.c - Block placement → Cuckoo hash: uses maps
placement.c - Stripe construction → Array list: uses collections
stripecons.c - Stripe construction → Cuckoo hash: uses maps
stripecons.c - Cuckoo hash → Hash functions: uses hashing
cuckoo.c - Coordinator → Runtime configuration: reads settings
coordinator.c - Data-node service → Commands and transport: uses command protocol
datanode.c