mirror of
https://gitlab.com/veilid/veilid.git
synced 2024-10-01 01:26:08 -04:00
Add example code snippet to the README
Create a copy-able snippet to get folks going. Include a link to the Developer Book.
This commit is contained in:
parent
ead8e9ab86
commit
cbd6ce718b
56
README.md
56
README.md
@ -18,6 +18,62 @@ The easiest way to help grow the Veilid network is to run your own node. Every u
|
|||||||
|
|
||||||
To run such a node, establish a Debian or Fedora based VPS and install the veilid-server service. To make this process simple we are hosting package manager repositories for .deb and .rpm packages. See the [installing](./INSTALL.md) guide for more information.
|
To run such a node, establish a Debian or Fedora based VPS and install the veilid-server service. To make this process simple we are hosting package manager repositories for .deb and .rpm packages. See the [installing](./INSTALL.md) guide for more information.
|
||||||
|
|
||||||
|
## Building on Veilid
|
||||||
|
|
||||||
|
If you want to start using Veilid for your own app, take a look at the [Developer Book](https://veilid.gitlab.io/developer-book/).
|
||||||
|
|
||||||
|
A basic example using `veilid-core` and `tokio` might look like this.
|
||||||
|
|
||||||
|
```rust
|
||||||
|
use std::sync::Arc;
|
||||||
|
use veilid_core::VeilidUpdate::{AppMessage, Network};
|
||||||
|
use veilid_core::{VeilidConfigBlockStore, VeilidConfigInner, VeilidConfigProtectedStore, VeilidConfigTableStore, VeilidUpdate};
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main() {
|
||||||
|
let update_callback = Arc::new(move |update: VeilidUpdate| {
|
||||||
|
match update {
|
||||||
|
AppMessage(msg) => {
|
||||||
|
println!("Message: {}", String::from_utf8_lossy(msg.message().into()));
|
||||||
|
}
|
||||||
|
Network(msg) => {
|
||||||
|
println!("Network: Peers {:}, bytes/sec [{} up] [{} down]", msg.peers.iter().count(), msg.bps_up, msg.bps_down)
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
println!("{:?}", update)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
let config = VeilidConfigInner {
|
||||||
|
program_name: "Example Veilid".into(),
|
||||||
|
namespace: "veilid-example".into(),
|
||||||
|
protected_store: VeilidConfigProtectedStore {
|
||||||
|
// avoid prompting for password, don't do this in production
|
||||||
|
always_use_insecure_storage: true,
|
||||||
|
directory: "./.veilid/block_store".into(),
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
block_store: VeilidConfigBlockStore {
|
||||||
|
directory: "./.veilid/block_store".into(),
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
table_store: VeilidConfigTableStore {
|
||||||
|
directory: "./.veilid/table_store".into(),
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
|
||||||
|
let veilid = veilid_core::api_startup_config(update_callback, config).await.unwrap();
|
||||||
|
println!("Node ID: {}", veilid.config().unwrap().get_veilid_state().config.network.routing_table.node_id);
|
||||||
|
veilid.attach().await.unwrap();
|
||||||
|
// Until CTRL+C is pressed, keep running
|
||||||
|
tokio::signal::ctrl_c().await.unwrap();
|
||||||
|
veilid.shutdown().await;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
If you're inclined to get involved in code and non-code development, please check out the [contributing](./CONTRIBUTING.md) guide. We're striving for this project to be developed in the open and by people for people. Specific areas in which we are looking for help include:
|
If you're inclined to get involved in code and non-code development, please check out the [contributing](./CONTRIBUTING.md) guide. We're striving for this project to be developed in the open and by people for people. Specific areas in which we are looking for help include:
|
||||||
|
Loading…
Reference in New Issue
Block a user