Skip to content

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 #

@[params]
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 #

@[params]
struct GetWorkerParams {
pub mut:
	public_key string @[required] // Public key of the worker node
}

struct NewStreamerParams #

@[params]
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 #

@[params]
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 #

@[params]
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 #

@[params]
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