{"id":16678685,"url":"https://github.com/dsietz/datadot","last_synced_at":"2025-09-07T10:34:42.524Z","repository":{"id":57616272,"uuid":"169474680","full_name":"dsietz/datadot","owner":"dsietz","description":null,"archived":false,"fork":false,"pushed_at":"2019-11-01T19:10:37.000Z","size":3934,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-28T07:10:14.719Z","etag":null,"topics":["data","multicast","plugin-manager","plugins","rust-lang"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dsietz.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-06T20:50:15.000Z","updated_at":"2019-12-11T19:35:30.000Z","dependencies_parsed_at":"2022-08-27T07:51:22.671Z","dependency_job_id":null,"html_url":"https://github.com/dsietz/datadot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsietz%2Fdatadot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsietz%2Fdatadot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsietz%2Fdatadot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsietz%2Fdatadot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dsietz","download_url":"https://codeload.github.com/dsietz/datadot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243358317,"owners_count":20277996,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data","multicast","plugin-manager","plugins","rust-lang"],"created_at":"2024-10-12T13:30:13.228Z","updated_at":"2025-03-13T07:14:19.340Z","avatar_url":"https://github.com/dsietz.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"![DataDot](./img/datadot.png?raw=true) \n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Coverage Status](https://coveralls.io/repos/github/dsietz/datadot/badge.svg?branch=master)](https://coveralls.io/github/dsietz/datadot?branch=master)\n[![Docs.rs](https://docs.rs/datadot/badge.svg)](https://docs.rs/datadot)\n\nLinux: [![Build Status](https://travis-ci.org/dsietz/datadot.svg?branch=master)](https://travis-ci.org/dsietz/datadot)\nWindows: [![Build status](https://ci.appveyor.com/api/projects/status/klevb6aknr6tgohi/branch/master?svg=true)](https://ci.appveyor.com/project/dsietz/datadot/branch/master)\n\n\n---\n\n\n\u003eLooking for a cluster of syncronized bots to do your work? Just spin up a colony of DataDots.\n\n**A Data Dot is a micro executable that acts on its specified data point that is defined at start up. Once started, a DataDot ...**\n\n- Interacts with the user on the command line\n- Collaboratively works together with other DataDots by speaking and listening\n- Learns about its own datapoint by continuously discovering and analyzing the DataDots in its colony\n\n---\n\n#### Reference Material\n- [multicasting](https://bluejekyll.github.io/blog/rust/2018/03/18/multicasting-in-rust.html)\n- [sockets2](https://crates.io/crates/socket2)\n- [Multicast Example](https://github.com/bluejekyll/multicast-example)\n- [using a worker thread](https://matklad.github.io/2018/03/02/stopping-a-rust-worker.html)\n- [Dynamic Reload for plugins](https://github.com/emoon/dynamic_reload)\n\n#### RUNNING\ntesting\n```\n[machine-name sadp]$ cargo test -- --nocapture\n```\n\nusage\n```\n[machine-name datadot]$ ./datadot --help\nDataDot\n\nUSAGE:\n    datadot [OPTIONS] --bind \u003cbind\u003e --data \u003cdata\u003e\n\nFLAGS:\n    -h, --help       Prints help information\n    -V, --version    Prints version information\n\nOPTIONS:\n    -b, --bind \u003cbind\u003e             The multicast address to bind to (e.g.: 224.0.1.255\n    -d, --data \u003cdata\u003e             The data that the dot represents\n    -x, --plg_dir \u003cplugin_dir\u003e    [Optional] The path to the directory where the plugins are located.\n    -p, --port \u003cport\u003e             [Optional] The port number to use for multicasting, (default 7645).\n```\nstarting datadot\n```\n[machine-name datadot]$ ./datadot -d \"Hello\" -b 224.0.0.1 -x \"./plugins\"\ndot:listener: joined: 224.0.0.1:7645\ndot:listener: is ready\n```\nbraodcast a message\n```\nget::hi\ndot:listener: received request: hi from: 10.172.12.144:54260\n```\ncalling a plugin function (e.g.: plugin uses core::)\n```\ncore::datapoint\ndatapoint is Hello\n\"processed...\"\ncore::mask\n\"processed...\"\ncore::datapoint\ndatapoint is secret\n\"processed...\"\n```\nstopping datadot\n```\nstop\ndot:listener: received request: stop from: 10.172.12.144:35821\ndot:listener: stopped!\ndropping plugins...\nBye!\n```\n\n##### NOTE\n- [dynamic library](https://doc.rust-lang.org/cargo/reference/manifest.html#building-dynamic-or-static-libraries)\n- [dynamic loading plugins](https://michael-f-bryan.github.io/rust-ffi-guide/dynamic_loading.html)\n- [plugin model not dynamic](https://stackoverflow.com/questions/34968488/is-it-possible-to-make-plugin-extension-hooks-like-wordpress-actions-in-rust)\n- [hook model](https://mattgathu.github.io/simple-events-hook-rust/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdsietz%2Fdatadot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdsietz%2Fdatadot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdsietz%2Fdatadot/lists"}