data.ourdb_syncer.streamer #
fn connect_streamer #
fn connect_streamer(params ConnectStreamerParams) !Streamer
Connects to an existing streamer master node; intended for worker nodes
fn log_event #
fn log_event(params LogEventParams)
log_event logs an event with a timestamp
fn new_streamer #
fn new_streamer(params NewStreamerParams) !Streamer
Creates a new streamer instance
struct ConnectStreamerParams #
struct ConnectStreamerParams {
pub mut:
master_public_key string @[required] // Public key of the master node
port int = 8080 // HTTP server port
name string = 'streamer' // Mycelium client name
}
ConnectStreamerParams defines parameters for connecting to an existing streamer
struct GetWorkerParams #
struct GetWorkerParams {
pub mut:
public_key string @[required] // Public key of the worker node
}
struct NewStreamerParams #
struct NewStreamerParams {
pub mut:
name string = 'streamer'
port int = 8080
incremental_mode bool = true // Incremental mode for database
reset bool = true // Reset database
}
NewStreamerParams defines parameters for creating a new streamer
struct ReadParams #
struct ReadParams {
pub mut:
key u32 @[required] // Key to read
}
ReadParams defines parameters for reading from the database
struct Streamer #
struct Streamer {
pub mut:
name string = 'streamer'
port int = 8080
master StreamerNode
incremental_mode bool = true // Incremental mode for database
reset bool = true // Reset database
}
Streamer represents the entire network, including master and workers
fn (Streamer) add_master #
fn (mut self Streamer) add_master(params StreamerNodeParams) !StreamerNode
Adds a master node to the streamer
fn (Streamer) add_worker #
fn (mut self Streamer) add_worker(params StreamerNodeParams) !StreamerNode
Connects to an existing streamer master node; intended for worker nodes
fn (Streamer) get_master #
fn (self Streamer) get_master() StreamerNode
Gets the master node
fn (Streamer) get_workers #
fn (self Streamer) get_workers() ![]StreamerNode
Get master worker nodes
fn (Streamer) get_worker #
fn (self Streamer) get_worker(params GetWorkerParams) !StreamerNode
Get worker node
struct StreamerNode #
struct StreamerNode {
pub mut:
name string = 'streamer_node' // Name of the node
public_key string // Mycelium public key of the node
address string // Network address (e.g., "127.0.0.1:8080")
mycelium_client &mycelium.Mycelium = unsafe { nil } // Mycelium client instance
workers []StreamerNode // List of connected workers (for master nodes)
port int = 8080 // HTTP server port
is_master bool // Flag indicating if this is a master node
db &ourdb.OurDB // Embedded key-value database
master_public_key string // Public key of the master node (for workers)
last_synced_index u32 // Last synchronized index for workers
}
StreamerNode represents either a master or worker node in the streamer network
fn (StreamerNode) start_and_listen #
fn (mut node StreamerNode) start_and_listen() !
start_and_listen runs the node's main event loop
fn (StreamerNode) write #
fn (mut node StreamerNode) write(params WriteParams) !u32
write adds data to the database and propagates it to all nodes
fn (StreamerNode) read #
fn (mut node StreamerNode) read(params ReadParams) !string
read retrieves data from the database (worker only)
fn (StreamerNode) handle_ping_nodes #
fn (mut node StreamerNode) handle_ping_nodes() !
handle_ping_nodes pings all workers or the master, removing unresponsive workers
struct StreamerNodeParams #
struct StreamerNodeParams {
pub mut:
public_key string @[required] // Node public key
address string @[required] // Node address
db_dir string = '/tmp/ourdb' // Database directory
incremental_mode bool = true // Incremental mode for database
reset bool = true // Reset database
name string = 'streamer_node' // Node/Mycelium name
port int = 8080 // HTTP server port
master bool // Flag indicating if this is a master node
}
StreamerNodeParams defines parameters for creating a new master or worker node
struct WriteParams #
struct WriteParams {
pub mut:
key u32 // Key to write (optional in non-incremental mode)
value string @[required] // Value to write
}
WriteParams defines parameters for writing to the database