-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Timidger
committed
Jun 20, 2019
0 parents
commit d23c530
Showing
2 changed files
with
27 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
/target | ||
**/*.rs.bk | ||
Cargo.lock | ||
example/target/ | ||
*.so | ||
*.a |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Telegraf Rust Plugin | ||
|
||
Allowing you to write telegraf plugins in Rust. | ||
|
||
## Adding to a project | ||
|
||
Copy `makefile-template.toml` and `lib.go` from this project into the root of | ||
your project directory. | ||
|
||
Edit the `makefile-template.toml` script, specifically the location of where | ||
your static library is built. Make sure to change your project to build a static | ||
library with `crate_type = ["staticlib"]` in your `Cargo.toml`! | ||
|
||
## How this works | ||
|
||
Using some glue Go code a ["go plugin" ](https://golang.org/pkg/plugin/) | ||
is generated to be used in telegraf. Rust talks to the Go using C FFI and is | ||
statically linked into the resulting dynamic library. | ||
|
||
A cargo make script is necessary because `go` needs to build the final artifact. | ||
It generates magic in its `.so` that allows other Go code to load it at runtime. |