diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 593636c13..d979ad1d9 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -211,7 +211,7 @@ jobs:
# - name: build release
# run: |
- # cargo build --profile optimized-release -p iroh -p iroh-gateway -p iroh-p2p -p iroh-store -p iroh-one
+ # cargo build --profile optimized-release -p beetle -p beetle-gateway -p beetle-p2p -p beetle-store -p beetle-one
# - name: Setup awscli on linux
# if: matrix.name == 'ubuntu-latest'
@@ -243,20 +243,20 @@ jobs:
# - name: push release
# if: matrix.os != 'windows-latest'
# run: |
- # aws s3 cp ./target/optimized-release/iroh-gateway s3://vorc/iroh-gateway-${RELEASE_OS}-${RELEASE_ARCH}-${GITHUB_SHA::7} --no-progress
- # aws s3 cp ./target/optimized-release/iroh-p2p s3://vorc/iroh-p2p-${RELEASE_OS}-${RELEASE_ARCH}-${GITHUB_SHA::7} --no-progress
- # aws s3 cp ./target/optimized-release/iroh-store s3://vorc/iroh-store-${RELEASE_OS}-${RELEASE_ARCH}-${GITHUB_SHA::7} --no-progress
- # aws s3 cp ./target/optimized-release/iroh s3://vorc/iroh-${RELEASE_OS}-${RELEASE_ARCH}-${GITHUB_SHA::7} --no-progress
- # aws s3 cp ./target/optimized-release/iroh-one s3://vorc/iroh-one-${RELEASE_OS}-${RELEASE_ARCH}-${GITHUB_SHA::7} --no-progress
+ # aws s3 cp ./target/optimized-release/beetle-gateway s3://vorc/beetle-gateway-${RELEASE_OS}-${RELEASE_ARCH}-${GITHUB_SHA::7} --no-progress
+ # aws s3 cp ./target/optimized-release/beetle-p2p s3://vorc/beetle-p2p-${RELEASE_OS}-${RELEASE_ARCH}-${GITHUB_SHA::7} --no-progress
+ # aws s3 cp ./target/optimized-release/beetle-store s3://vorc/beetle-store-${RELEASE_OS}-${RELEASE_ARCH}-${GITHUB_SHA::7} --no-progress
+ # aws s3 cp ./target/optimized-release/beetle s3://vorc/beetle-${RELEASE_OS}-${RELEASE_ARCH}-${GITHUB_SHA::7} --no-progress
+ # aws s3 cp ./target/optimized-release/beetle-one s3://vorc/beetle-one-${RELEASE_OS}-${RELEASE_ARCH}-${GITHUB_SHA::7} --no-progress
# - name: push release latest
# if: matrix.os != 'windows-latest'
# run: |
- # aws s3 cp ./target/optimized-release/iroh-gateway s3://vorc/iroh-gateway-${RELEASE_OS}-${RELEASE_ARCH}-latest --no-progress
- # aws s3 cp ./target/optimized-release/iroh-p2p s3://vorc/iroh-p2p-${RELEASE_OS}-${RELEASE_ARCH}-latest --no-progress
- # aws s3 cp ./target/optimized-release/iroh-store s3://vorc/iroh-store-${RELEASE_OS}-${RELEASE_ARCH}-latest --no-progress
- # aws s3 cp ./target/optimized-release/iroh s3://vorc/iroh-${RELEASE_OS}-${RELEASE_ARCH}-latest --no-progress
- # aws s3 cp ./target/optimized-release/iroh-one s3://vorc/iroh-one-${RELEASE_OS}-${RELEASE_ARCH}-latest --no-progress
+ # aws s3 cp ./target/optimized-release/beetle-gateway s3://vorc/beetle-gateway-${RELEASE_OS}-${RELEASE_ARCH}-latest --no-progress
+ # aws s3 cp ./target/optimized-release/beetle-p2p s3://vorc/beetle-p2p-${RELEASE_OS}-${RELEASE_ARCH}-latest --no-progress
+ # aws s3 cp ./target/optimized-release/beetle-store s3://vorc/beetle-store-${RELEASE_OS}-${RELEASE_ARCH}-latest --no-progress
+ # aws s3 cp ./target/optimized-release/beetle s3://vorc/beetle-${RELEASE_OS}-${RELEASE_ARCH}-latest --no-progress
+ # aws s3 cp ./target/optimized-release/beetle-one s3://vorc/beetle-one-${RELEASE_OS}-${RELEASE_ARCH}-latest --no-progress
coverage:
name: Coverage
diff --git a/.gitignore b/.gitignore
index 699c97053..68abe1446 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
/target
-/iroh_gateway/test_files/*
+/beetle_gateway/test_files/*
.env
Cargo.lock
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index 93751b316..000000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,367 +0,0 @@
-# [v0.2.0](https://github.com/n0-computer/iroh/compare/v0.1.1...v0.2.0) (2022-12-21)
-
-### First steps for iroh as a library
-Many folks have asked for iroh as a library embeddable in other rust projects, and with this release we land the the first version of `iroh-embed`. Check the [example](https://github.com/n0-computer/iroh/blob/e73a731769269c58b5d32e4a207e6577b3c50838/examples/embed/src/main.rs) for an initial guide.
-
-We still have a _lot_ of work to do on `iroh-api` to expose a clean API to consume as a library, but if you're the kind of project that's intersted in embedded IPFS, and willing to roll up your sleeves on a moving API, Iroh is ready for you to use today.
-
-
-### Gateway Subdomain & ETH domain support
-Our gateway [spec compatibility](https://github.com/ipfs/specs/tree/main/http-gateways) continues to grow. Both of these features were outside contributions by [@ppodolsky](https://github.com/ppodolsky), for which we're super grateful. Be sure to check out their work on [summa](https://github.com/izihawa/summa)!
-
-### QUIC Support
-The majority of traffic on public IPFS networks runs over QUIC, which we now support within iroh thanks to a [massive push by the rust-libp2p team](https://github.com/libp2p/rust-libp2p/pull/2289). Huge thanks to the libp2p team!
-
-
-### Bug Fixes
-
-* actually resolve and check paths ([#623](https://github.com/n0-computer/iroh/issues/623)) ([8b6844f](https://github.com/n0-computer/iroh/commit/8b6844fc8dab620f0477b5e1d6b1341ef11f86b9))
-* **ci:** Call cargo with beta toolchain from env var ([#622](https://github.com/n0-computer/iroh/issues/622)) ([b62030d](https://github.com/n0-computer/iroh/commit/b62030d3beb943f46b300a596a64c1c27a59ea21))
-* **ci:** Set the protoc-arch matrix for weekly job ([#619](https://github.com/n0-computer/iroh/issues/619)) ([22d68df](https://github.com/n0-computer/iroh/commit/22d68df1f60fff5eb9b677bbc7a5862fdcd3588d)), closes [#618](https://github.com/n0-computer/iroh/issues/618)
-* **ci:** Use beta toolchain for the clippy run ([#620](https://github.com/n0-computer/iroh/issues/620)) ([03624b5](https://github.com/n0-computer/iroh/commit/03624b55812b16c473e902a265cf7f6f1100f640))
-* **iroh-one:** Wire up mem addresses to each other ([#555](https://github.com/n0-computer/iroh/issues/555)) ([ee9677d](https://github.com/n0-computer/iroh/commit/ee9677d4001f15516068bf0f376e01199a1824aa))
-* **iroh:** do not use self version dep ([6f6fee0](https://github.com/n0-computer/iroh/commit/6f6fee0aed2f0d6d2381ac2b731d05cadfcfff52))
-* **iroh:** exclude tests and fixtures from publishing ([6ebee5f](https://github.com/n0-computer/iroh/commit/6ebee5f3082f08d19662b8ee84b257df27d60d15))
-* only use name if name is set ([#605](https://github.com/n0-computer/iroh/issues/605)) ([4dda2d0](https://github.com/n0-computer/iroh/commit/4dda2d05e4a0d230bcbf1ede35adbaa0cf5a8a00))
-* unixfs seeking ([#606](https://github.com/n0-computer/iroh/issues/606)) ([51e3ddf](https://github.com/n0-computer/iroh/commit/51e3ddf4bad2f815b138c3276bb49b7e1603c94a))
-* update quic-rpc to get rid of debug output ([bf4128b](https://github.com/n0-computer/iroh/commit/bf4128be1f742679dc35f061129b440c325a8c4e))
-* use http when creating hyper URL ([#591](https://github.com/n0-computer/iroh/issues/591)) ([e9e932d](https://github.com/n0-computer/iroh/commit/e9e932d9df54c1d3b8468b387be9ae642ed46347))
-* version handling in tests & git_version ([59c5dc7](https://github.com/n0-computer/iroh/commit/59c5dc78cf8067a3be3a19329d1998b69f9414a9))
-
-
-### Features
-
-* **ci:** improve protoc install & add code coverage checks ([#538](https://github.com/n0-computer/iroh/issues/538)) ([bcc20ce](https://github.com/n0-computer/iroh/commit/bcc20ce00fb19abc5ebbe03e9d315a01a7088881))
-* enable quic transport ([18e2f40](https://github.com/n0-computer/iroh/commit/18e2f400ed79c3522e290fe1c77b289879af6154))
-* **gateway:** add info page ([35955d6](https://github.com/n0-computer/iroh/commit/35955d6b9b505d2c35f99e4c618293c70bcca1a7))
-* minimal iroh-embed ([#565](https://github.com/n0-computer/iroh/issues/565)) ([c216440](https://github.com/n0-computer/iroh/commit/c216440ffcf528f406064d9cd4b1e56e7181dedf))
-* Send all the things ([#617](https://github.com/n0-computer/iroh/issues/617)) ([214d9ce](https://github.com/n0-computer/iroh/commit/214d9cecbc3dbb7fb425fb6ce50ca96474d38d98))
-* Support `eth` domains ([1d6b825](https://github.com/n0-computer/iroh/commit/1d6b825fe357a9fa958fdf426967516d3f689259))
-* support of Gateway Subdomain spec ([#546](https://github.com/n0-computer/iroh/issues/546)) ([dfe3134](https://github.com/n0-computer/iroh/commit/dfe3134212d52811aa1ea33fdb19c2769f07be93))
-* switch to released libp2p@0.50 ([ae30f9e](https://github.com/n0-computer/iroh/commit/ae30f9ebadb2e3cf7e8bb53ce955dc043d5a8cfe))
-* **unixfs:** add rabin based chunking ([b0a5783](https://github.com/n0-computer/iroh/commit/b0a57831ed4d5c2fcaeb535e6281216f81f7b108))
-
-
-# [v0.1.3](https://github.com/n0-computer/iroh/compare/iroh-v0.1.2...iroh-v0.1.3) (2022-11-28)
-
-Bug fix release, for issues discovered while publishing to crates.io.
-
-### Bug Fixes
-
-* **iroh:** do not use self version dep ([6f6fee0](https://github.com/n0-computer/iroh/commit/6f6fee0aed2f0d6d2381ac2b731d05cadfcfff52))
-* **iroh:** exclude tests and fixtures from publishing ([6ebee5f](https://github.com/n0-computer/iroh/commit/6ebee5f3082f08d19662b8ee84b257df27d60d15))
-* version handling in tests & git_version ([59c5dc7](https://github.com/n0-computer/iroh/commit/59c5dc78cf8067a3be3a19329d1998b69f9414a9))
-
-
-# [v0.1.2](https://github.com/n0-computer/iroh/compare/v0.1.1...iroh-v0.1.2) (2022-11-28)
-
-This relase brings about a couple of highlights, the first of which is the first relase of all `iroh-*` crates to crates.io. The second one being that we now support the experimental quic transport in libp2p.
-
-### Bug Fixes
-
-* **iroh-one:** Wire up mem addresses to each other ([#555](https://github.com/n0-computer/iroh/issues/555)) ([ee9677d](https://github.com/n0-computer/iroh/commit/ee9677d4001f15516068bf0f376e01199a1824aa))
-
-
-### Features
-
-* **ci:** improve protoc install & add code coverage checks ([#538](https://github.com/n0-computer/iroh/issues/538)) ([bcc20ce](https://github.com/n0-computer/iroh/commit/bcc20ce00fb19abc5ebbe03e9d315a01a7088881))
-* enable quic transport ([18e2f40](https://github.com/n0-computer/iroh/commit/18e2f400ed79c3522e290fe1c77b289879af6154))
-* **gateway:** add info page ([35955d6](https://github.com/n0-computer/iroh/commit/35955d6b9b505d2c35f99e4c618293c70bcca1a7))
-* Support `eth` domains ([1d6b825](https://github.com/n0-computer/iroh/commit/1d6b825fe357a9fa958fdf426967516d3f689259))
-* switch to released libp2p@0.50 ([ae30f9e](https://github.com/n0-computer/iroh/commit/ae30f9ebadb2e3cf7e8bb53ce955dc043d5a8cfe))
-* **unixfs:** add rabin based chunking ([b0a5783](https://github.com/n0-computer/iroh/commit/b0a57831ed4d5c2fcaeb535e6281216f81f7b108))
-
-
-# [v0.1.1](https://github.com/n0-computer/iroh/compare/v0.1.0...v0.1.1) (2022-11-21)
-
-## Bitswap client mode
-Iroh can now run in "client mode", which can _fetch_ content from bitswap, but not _provide_ content. This is useful if you're running on a lower-powered device or have limited bandwidth. To use client mode change your `p2p.config.toml`:
-```
-bitswap_server = false
-```
-
-## Use indexer nodes to find content providers
-Iroh can use network indexers like [cid.contact](https://cid.contact) to find providers of a given CID. To use the cid.contact indexer adjust your `gateway.config.toml` to add an `indexer_endpoint` URL:
-
-```
-indexer_endpoint = https://cid.contact/cid/
-```
-
-## Docker support
-Iroh now ships with docker images! Spin iroh up locally with:
-```
-$ cd iroh/docker
-$ docker-compose up
-```
-then run `iroh status` from another terminal if you already have iroh installed. Now you're backing iroh with docker! `docker-compose down` to stop. The docker compose file also includes helpful guidance on which ports to expose from each iroh service.
-
-We're shipping multi-arch [distroless](https://github.com/GoogleContainerTools/distroless) builds for amd64 & arm64 architectures.
-
-## Fixed a critical bug adding files
-We fixed a [known bug](https://github.com/n0-computer/iroh/issues/423) in iroh v0.1.0 that would break `iroh add` if files referenced the same CID on the way in. It's now fixed, and now we can happily do roundtrip add/get of the linux kernel, which is always fun 😊.
-
-
-## Benchmarks
-Benchmarks for this release coming soon. We'll update this readme once they're up.
-
-### Production Readiness
-Is this production ready? **Maybe**. Numerous projects are now using iroh in the wild. *You'll need to judge for yourself if iroh meets your needs.* Please reach out on our [discussion forums](https://github.com/n0-computer/iroh/discussions) if you have questions. We're going to keep the status at "Maybe" until we release a v1.0. v1.0 is currently slated for Q4 2023.
-
-
-### Bug Fixes
-
-* **`iroh-p2p`:** implement full local lookup ([#537](https://github.com/n0-computer/iroh/issues/537)) ([0c388b9](https://github.com/n0-computer/iroh/commit/0c388b959852a92e7955e6d2eeb1380948fb6f49))
-* breadcrumb links in gateway directory template ([#513](https://github.com/n0-computer/iroh/issues/513)) ([f429baa](https://github.com/n0-computer/iroh/commit/f429baac42b845de4f47cbacd103198fcba95d50))
-* **cli:** Respect the --cfg flag ([#506](https://github.com/n0-computer/iroh/issues/506)) ([e7bcac6](https://github.com/n0-computer/iroh/commit/e7bcac699dc677e94dd84d16c8b8b5e81eaa965f))
-* convert v0 -> v1 before base32 conversion ([#527](https://github.com/n0-computer/iroh/issues/527)) ([ab3969c](https://github.com/n0-computer/iroh/commit/ab3969c9318b3801bf3fc2ff6c6c5ee53f63c979))
-* Correct dependencies and build checks ([#484](https://github.com/n0-computer/iroh/issues/484)) ([7e9cdc3](https://github.com/n0-computer/iroh/commit/7e9cdc35918409b7c6820a5ba23ae417126cbfa9))
-* docker-compose RPC ports should only listen on loopback ([#524](https://github.com/n0-computer/iroh/issues/524)) ([8471e49](https://github.com/n0-computer/iroh/commit/8471e49b2d3a9031bc44ae47e3d80034b60db806)), closes [#520](https://github.com/n0-computer/iroh/issues/520)
-* iroh start service set construction ([#522](https://github.com/n0-computer/iroh/issues/522)) ([070be80](https://github.com/n0-computer/iroh/commit/070be80a56f6cf8f379cc7feeb454aa35c8f91a5))
-* **iroh-store:** `put_many` bug ([#507](https://github.com/n0-computer/iroh/issues/507)) ([88f1a49](https://github.com/n0-computer/iroh/commit/88f1a49feb64b732be82b3e3cc039f703bac8865))
-* Process -> Service in status command, add after help text ([#493](https://github.com/n0-computer/iroh/issues/493)) ([804255c](https://github.com/n0-computer/iroh/commit/804255cac91d637361c106bb2155df766fbbaa31))
-* **store:** Make store operations atomic ([#480](https://github.com/n0-computer/iroh/issues/480)) ([ac8ec35](https://github.com/n0-computer/iroh/commit/ac8ec35f0131347ad125e82b43356e16787ecf08))
-* Switch to tempfile for temporary test directories ([#509](https://github.com/n0-computer/iroh/issues/509)) ([89959cb](https://github.com/n0-computer/iroh/commit/89959cbf7b5d99de5ddc82121e85c111e5ffe055))
-* verify content fetched from racing http gateways ([e281a4a](https://github.com/n0-computer/iroh/commit/e281a4a1cd053f35299da4f735b65cc117b53338))
-
-
-### Features
-
-* bitswap client mode ([2a8a515](https://github.com/n0-computer/iroh/commit/2a8a515ad3175cdd68630c17e4a8831ff9e7af3d))
-* **cli:** Environment variables to override directories ([9a2220b](https://github.com/n0-computer/iroh/commit/9a2220b92a4bd008aaad015dea11bd651bbf4dbc))
-* dockerize iroh services ([#494](https://github.com/n0-computer/iroh/issues/494)) ([f8af48a](https://github.com/n0-computer/iroh/commit/f8af48a846e46a59243a8d30963ca188a04e68a3))
-* indexer resolution ([#476](https://github.com/n0-computer/iroh/issues/476)) ([f744949](https://github.com/n0-computer/iroh/commit/f7449493fb1f6b79beaa610c0c9f48224597b393))
-* **p2p:** dial MDNS peers ([5bee5b7](https://github.com/n0-computer/iroh/commit/5bee5b7a836e3948c80f683e28c3f2061df6dd87))
-* support lookup names in RPC addrs ([#500](https://github.com/n0-computer/iroh/issues/500)) ([144eef7](https://github.com/n0-computer/iroh/commit/144eef71681e8d56cb1441c52bd6dfe04c562e50))
-
-
-# v0.1.0 - 2022-10-28
-
-We’re on the board 🎉! This first release of iroh brings a new implementation of IPFS to the world.
-
-Key things to highlight about the first release of iroh:
-
-* **Exchange Data with Kubo**. Iroh can interoperate with [kubo](https://github.com/ipfs/kubo) nodes on the IPFS network, pushing & fetching data.
-* **Service Oriented architecture**. Don't want p2p? Turn it off! Iroh will still work without it.
-* **Single CLI to control all services**.
-* **Built for efficiency**. Iroh's memory footprint & CPU usage are either on par or better than the best interoperable IPFS implementations out there.
-* **Runs well on a laptop**. We have a custom installer script that will configure iroh for your laptop. See our [install docs](https://iroh.computer/docs/install)
-
-v0.1.0 ships as 4 binaries for Linux & macOS with zero external dependencies:
-* **iroh** - command line client
-* **iroh-store** - data storage daemon
-* **iroh-p2p** - peer 2 peer networking
-* **iroh-gateway** - IPFS-to-HTTP bridge
-
-You'll need to download all of them & put them on your $PATH to work with iroh. Our [install docs](https://iroh.computer/docs/install) have more info.
-
-Please do give iroh a try, we'd love to [hear your feedback](https://github.com/n0-computer/iroh/issues/new). Thanks!
-
-### Benchmarks
-We're runnning benchmarks on a relatively stock AWS box for ease-of-replication. We don't have benchmarks for IPFS network retrieval this round.
-
-### Adding Single Files
-Add a single file with `iroh add --no-wrap --offline`:
-
-| file size | real (s) | user(s) | sys(s) | cpu % | cpu/total % |
-| ---------- | -------- | ------- | -------- | ----------- | ------------ |
-| 100K | 0.0102 | 0.0162 | 0.0317 | 469.6078431 | 7.337622549 |
-| 1M | 0.0167 | 0.004 | 0.0519 | 334.7305389 | 5.230164671 |
-| 10M | 0.01345 | 0.0101 | 0.0418 | 385.87 | 6.03 |
-| 100M | 0.01345 | 0.0101 | 0.0418 | 385.87 | 6.03 |
-| 1G | 0.01345 | 0.0101 | 0.0418 | 385.87 | 6.03 |
-
-### Fetching Cached Gateway Content
-Repeatedly request the same CID of different file sizes to measure cached content throughput via HTTP request
-
-| File size | cpu/total (%) | rps | throughput/s | avg latency |
-|-------------|----------------|-----------|---------------|--------------|
-| 100K | 90.48072917 | 40,064.27 | 3.85GB | 5.08ms |
-| 1M | 87.66614583 | 6,926.95 | 6.77GB | 29.08ms |
-| 10M | 87.34010417 | 711.55 | 6.98GB | 278.86ms |
-| 100M | 88.00885417 | 66.52 | 6.82GB | 2.85s |
-| 1G | 87.84947917 | 6.65 | 6.85GB | 0.00s |
-
-### Production Readiness
-Is this production ready? **No. We need your help to kick tires & find bugs!**.
-
-The v0.1.0 moniker should testify to just how new this software is. Please don't deploy it anywhere mission critical until we've had at least a month or two to address bugs & write tests.
-
-### Things you should know about this release:
-There are two problems we couldn't properly address
-* _There is no delete command._ Data added to iroh will stay there until a future release where we add content removal. See [issue #432](https://github.com/n0-computer/iroh/issues/432) for details. The workaround for now is to blow away the storage database.
-* _We have one particularly nasty known bug that can cause iroh to not persist data for highly nested directories upon add_ we plan to address ASAP in a patch release. See [issue #423](https://github.com/n0-computer/iroh/issues/423).
-
-### Bug Fixes
-
-* `check` and `watch` should display the same service names ([#101](https://github.com/n0-computer/iroh/issues/101)) ([ef99fe5](https://github.com/n0-computer/iroh/commit/ef99fe5c6d519eca6f8ad972323526345dd155fb))
-* add --no-metrics support to p2p ([#65](https://github.com/n0-computer/iroh/issues/65)) ([a782fcb](https://github.com/n0-computer/iroh/commit/a782fcbb92af1e6b3a7f20ed0e40ee60b2670cbf))
-* add macos builds to ci ([#33](https://github.com/n0-computer/iroh/issues/33)) ([a0e79fb](https://github.com/n0-computer/iroh/commit/a0e79fb4d70dd56c152dcbd5433ab840ed386c47))
-* add missing metrics and update to fixed libp2p ([0f4f467](https://github.com/n0-computer/iroh/commit/0f4f4671369c12d7e08a6e1968dc96ad87eeb17c))
-* allow `Raw` as `UnixfsType` ([#327](https://github.com/n0-computer/iroh/issues/327)) ([275d88b](https://github.com/n0-computer/iroh/commit/275d88b2f49df0269e384b90a093b4d3f78b8229))
-* allow concurrent rpc calls & de-duplicate provider requests ([#60](https://github.com/n0-computer/iroh/issues/60)) ([a74f8dd](https://github.com/n0-computer/iroh/commit/a74f8dda299b4c58198267ff7921a203c2361eed))
-* auto-raise FD limits where possible ([#215](https://github.com/n0-computer/iroh/issues/215)) ([9e429bb](https://github.com/n0-computer/iroh/commit/9e429bbfbeb12cc0cc050cdc4b973a0deda9d1de))
-* avoid 0 divisions ([#76](https://github.com/n0-computer/iroh/issues/76)) ([8f491d5](https://github.com/n0-computer/iroh/commit/8f491d57c73e2ccc5b5c9d011ed38bfc03622953))
-* bitswap sessions shutdown ([6de85c9](https://github.com/n0-computer/iroh/commit/6de85c93bd541862558d498392256c091626d919))
-* **bitswap:** fetch provider loop ([93517a3](https://github.com/n0-computer/iroh/commit/93517a3157787eecc49b90a5815745adc2ffbce8))
-* ci release aarch64 linux ([#184](https://github.com/n0-computer/iroh/issues/184)) ([4cc66aa](https://github.com/n0-computer/iroh/commit/4cc66aa19877ae66869c395208012eed408f7af2))
-* CI, add macOS & windows builds, cargo audit ([5dbd907](https://github.com/n0-computer/iroh/commit/5dbd9074b8ee1b1945afb3345df21df39bc348ce))
-* correctly check headers parse result ([#227](https://github.com/n0-computer/iroh/issues/227)) ([82a1b82](https://github.com/n0-computer/iroh/commit/82a1b82e035de4210aa5355d798f4e13953c47b9))
-* correctly map memory channels ([0742fb2](https://github.com/n0-computer/iroh/commit/0742fb21cce63d2f3a1e9cc354ad511c69b226dc)), closes [#165](https://github.com/n0-computer/iroh/issues/165)
-* default off metrics & tracing ([#174](https://github.com/n0-computer/iroh/issues/174)) ([bbc2ec1](https://github.com/n0-computer/iroh/commit/bbc2ec19ebb082a758d948cb64d0277e71bdb6a0))
-* don't error on empty providers in the wrong place ([414a8f2](https://github.com/n0-computer/iroh/commit/414a8f2470962690b516be1cb015864565d571b7))
-* drop openssl requirement ([#72](https://github.com/n0-computer/iroh/issues/72)) ([b72ce04](https://github.com/n0-computer/iroh/commit/b72ce044bc32f0ccde02946cdd4fa34e577ad42f))
-* error when someone tries to start an unknown service ([#431](https://github.com/n0-computer/iroh/issues/431)) ([9a57fb7](https://github.com/n0-computer/iroh/commit/9a57fb7f36c78a1a395faed7fc984b1da1248f3c))
-* extend metrics ([#32](https://github.com/n0-computer/iroh/issues/32)) ([34c53da](https://github.com/n0-computer/iroh/commit/34c53da9069351821b0c9c56f1f5fc3dc5449074))
-* fix builds ([#173](https://github.com/n0-computer/iroh/issues/173)) ([932161c](https://github.com/n0-computer/iroh/commit/932161cab2b2991af278f0af131318fc7f703979))
-* Fix test that for some reason assumes sort order in a vec ([d57b12a](https://github.com/n0-computer/iroh/commit/d57b12a9ce8ead2a0ddaa1b0ab0e700a6292b8dd))
-* gateway readme ([#31](https://github.com/n0-computer/iroh/issues/31)) ([e94a7e0](https://github.com/n0-computer/iroh/commit/e94a7e055d567c6e2320c4d244d3c84f8bbc3899))
-* gateway upgrade ([#36](https://github.com/n0-computer/iroh/issues/36)) ([0bb4fe9](https://github.com/n0-computer/iroh/commit/0bb4fe915c28e0278c91b83801aed422f30517bf))
-* **gateway:** do not panic on missing location info ([c518ce7](https://github.com/n0-computer/iroh/commit/c518ce7c2ad7dbade6d87da62fbb94f868600e66))
-* **gateway:** populate directory listings ([c7217f1](https://github.com/n0-computer/iroh/commit/c7217f1a864e96c2e45b096245a477295976c5dd))
-* gha disk space hacks ([#387](https://github.com/n0-computer/iroh/issues/387)) ([a9d9c25](https://github.com/n0-computer/iroh/commit/a9d9c25af31795fa9ada3ee94c0757cc9024f19b))
-* hamt directory listings ([5187773](https://github.com/n0-computer/iroh/commit/5187773bfdb07a30c0e33c731105d3add9770fd1)), closes [#192](https://github.com/n0-computer/iroh/issues/192)
-* histogram metric assignment ([#119](https://github.com/n0-computer/iroh/issues/119)) ([b75bbbd](https://github.com/n0-computer/iroh/commit/b75bbbda08604c8174e5c0d3e69dcf9d4eb507f8))
-* Improve error handling ([#379](https://github.com/n0-computer/iroh/issues/379)) ([7a945ed](https://github.com/n0-computer/iroh/commit/7a945ed602af50f1a5f0d15f2079f351a3037650))
-* Improve error management and reporting when using unix domain sockets ([#228](https://github.com/n0-computer/iroh/issues/228)) ([8d13e4f](https://github.com/n0-computer/iroh/commit/8d13e4f691bd3eab5a8af93c34e2b93bc5c52995))
-* **iroh-car:** limit to 4MiB not 4GiB ([34eedb8](https://github.com/n0-computer/iroh/commit/34eedb83f39cf9fd581a62c7c91ed7f668a14bc8))
-* **iroh-gateway:** add `FileType::Raw` option ([#332](https://github.com/n0-computer/iroh/issues/332)) ([ff4ef02](https://github.com/n0-computer/iroh/commit/ff4ef0254cc663d1bb757559aed032bc38f25ea5))
-* **iroh-gateway:** increase timeouts ([c3d56c6](https://github.com/n0-computer/iroh/commit/c3d56c6c52a209e1cd850f9c5e89aede8a8073ee))
-* **iroh-one:** use default store path when no --store-path flag present ([#317](https://github.com/n0-computer/iroh/issues/317)) ([643fd43](https://github.com/n0-computer/iroh/commit/643fd43a2256db9e9bf622dcf4981d81b1ff48ff)), closes [#255](https://github.com/n0-computer/iroh/issues/255) [#309](https://github.com/n0-computer/iroh/issues/309)
-* limit max memory allocations per node ([9817b5a](https://github.com/n0-computer/iroh/commit/9817b5a77106a12225b457ff42a64b5628737a2e))
-* loger only on p2p ([b24c5fe](https://github.com/n0-computer/iroh/commit/b24c5fe2c8db05e4b75d4893192ba81d7e173ab9))
-* macos releases ([#34](https://github.com/n0-computer/iroh/issues/34)) ([2fc0109](https://github.com/n0-computer/iroh/commit/2fc0109830ba1edfb3d4daa2ddbbfce0e62b5d10))
-* make trace_id visible only if in use ([#359](https://github.com/n0-computer/iroh/issues/359)) ([c29bf85](https://github.com/n0-computer/iroh/commit/c29bf85d2d2a02e2a45bd4e3387c139c9693d20a))
-* metrics rework & update ([#69](https://github.com/n0-computer/iroh/issues/69)) ([6c1d003](https://github.com/n0-computer/iroh/commit/6c1d0035d480592271ddcc13a4f0d9d434a13326))
-* metrics toggle on store ([2b12158](https://github.com/n0-computer/iroh/commit/2b1215833bcea718f4e0ba47a3b9b71ffa0b8181))
-* move bitswap msg counters out of encode/decode ([#374](https://github.com/n0-computer/iroh/issues/374)) ([85d80b9](https://github.com/n0-computer/iroh/commit/85d80b9d5fc9441e1912d07adc67130f9b0fa6b2))
-* p2p subcommand output cleanup ([#427](https://github.com/n0-computer/iroh/issues/427)) ([0ca029c](https://github.com/n0-computer/iroh/commit/0ca029c143f5d6f9a9f5ebbfaafc0ccdd18340ad))
-* **p2p:** cleanup sessions when they are canceled ([#419](https://github.com/n0-computer/iroh/issues/419)) ([efa9e82](https://github.com/n0-computer/iroh/commit/efa9e820a8288746b6196dc3eb25fe64c4c32e63))
-* **p2p:** do not panic on shutdown of bs req ([b05b94a](https://github.com/n0-computer/iroh/commit/b05b94a124f81e8ca9eb180b751688d7c0cd3ba5))
-* **p2p:** enable rsa key keys again ([afeafb4](https://github.com/n0-computer/iroh/commit/afeafb4383b4428936b0bb14f50b95e623e29557))
-* **p2p:** ensure default grpc connections work ([eec218d](https://github.com/n0-computer/iroh/commit/eec218d1a7548aaac40a41b1cbd009babcd3d868))
-* **p2p:** Increase the size of the kad mem store ([#320](https://github.com/n0-computer/iroh/issues/320)) ([00f5660](https://github.com/n0-computer/iroh/commit/00f56604e2bd85cd418018d349a17105aaffbf03))
-* **p2p:** record Kad, Identify and Ping metrics ([af8eaa9](https://github.com/n0-computer/iroh/commit/af8eaa96b7f5a751ed703cbc61a3eaa76a025962))
-* **p2p:** remove debug logs ([#420](https://github.com/n0-computer/iroh/issues/420)) ([23e1b3a](https://github.com/n0-computer/iroh/commit/23e1b3aedf1efaa566db5495bb691cbb4a8ba487))
-* parameters and connection handling ([96514d3](https://github.com/n0-computer/iroh/commit/96514d36d54e604d97db8994805246838412e005))
-* params ([#128](https://github.com/n0-computer/iroh/issues/128)) ([1f47d7c](https://github.com/n0-computer/iroh/commit/1f47d7c946a2e4497d5c17058908cc34c03cad4b))
-* pass links to store when adding data ([#299](https://github.com/n0-computer/iroh/issues/299)) ([9476d9c](https://github.com/n0-computer/iroh/commit/9476d9ca3272e95630dc041400e0f6fadcd3d4a9))
-* prom metrics no longer ping on --no-metrics ([#44](https://github.com/n0-computer/iroh/issues/44)) ([7f9c81a](https://github.com/n0-computer/iroh/commit/7f9c81adc4ef186ea7d215ccadd379e1a83348d6))
-* properly saves filenames for hamt dirs ([#422](https://github.com/n0-computer/iroh/issues/422)) ([1fe8e69](https://github.com/n0-computer/iroh/commit/1fe8e69f690b1e28d20cc2f407054caca04663a1))
-* properly setup the default config for iroh-one ([#256](https://github.com/n0-computer/iroh/issues/256)) ([a1e4940](https://github.com/n0-computer/iroh/commit/a1e494055ceb06a07347e94c733acb0246544ef5))
-* protoc from release bins ([#42](https://github.com/n0-computer/iroh/issues/42)) ([28cc3ab](https://github.com/n0-computer/iroh/commit/28cc3ab8f761173795be00d933ebee60c1ef859c))
-* require passing providers to fetch_bitswap ([771ee00](https://github.com/n0-computer/iroh/commit/771ee001361ec19a3d8f62ea4edbe71308b144df)), closes [#73](https://github.com/n0-computer/iroh/issues/73)
-* **resolver:** handle trailing slashes in the path with more sense ([#414](https://github.com/n0-computer/iroh/issues/414)) ([9ef95e8](https://github.com/n0-computer/iroh/commit/9ef95e81f034cc9c36ed3e35367992fde8d1a8c0))
-* **resolver:** ipld, double-fetching, and trailing slash fixes ([#408](https://github.com/n0-computer/iroh/issues/408)) ([f861102](https://github.com/n0-computer/iroh/commit/f861102becd3d2f20f073c29e181805d01b8932d))
-* **resolver:** stop sessions when requests are done ([9c46cb0](https://github.com/n0-computer/iroh/commit/9c46cb07cb52a57e41d0a51296fd0b781d1861d7))
-* rpc creation no longer blocks the gateway ([#111](https://github.com/n0-computer/iroh/issues/111)) ([8f1d93c](https://github.com/n0-computer/iroh/commit/8f1d93c4955e95ed19f470176e76219982a066b9))
-* **rpc-client:** correct address format for clients ([8cde5cf](https://github.com/n0-computer/iroh/commit/8cde5cf4d405f1230acd1464c6b190ad12fe6973))
-* **rpc-client:** use multihash to query providers ([2b11a14](https://github.com/n0-computer/iroh/commit/2b11a142de5fa0fc7d68528909e3c1bb6846cdb2))
-* stop preventing any directory or file `foo` from existing in the project ([#334](https://github.com/n0-computer/iroh/issues/334)) ([3ef7ccc](https://github.com/n0-computer/iroh/commit/3ef7cccea1475bd288d53b70f753ca37c8b47944))
-* switch back to rust-libp2p master ([1336e9e](https://github.com/n0-computer/iroh/commit/1336e9ee1f56b4233659b36c49d52bf5b4199bcb))
-* tracing on request level ([#85](https://github.com/n0-computer/iroh/issues/85)) ([562e6d8](https://github.com/n0-computer/iroh/commit/562e6d8cc702c9ba1c82a61ae42031d2a760532a))
-* undo label change ([#219](https://github.com/n0-computer/iroh/issues/219)) ([3433340](https://github.com/n0-computer/iroh/commit/34333403f99d593276561fbbe43a35d8160cb048))
-* Update ipld in iroh-car to limit prost duplicates ([#307](https://github.com/n0-computer/iroh/issues/307)) ([ee43bd7](https://github.com/n0-computer/iroh/commit/ee43bd7063fcf6174025aea023151f519bd4b4fc))
-* use rustls ([#64](https://github.com/n0-computer/iroh/issues/64)) ([0c37cef](https://github.com/n0-computer/iroh/commit/0c37cef26981807aee1cb3b60122ba15c05f09cd))
-* use the uds-gateway feature only to control the http uds endpoint ([#252](https://github.com/n0-computer/iroh/issues/252)) ([9bcbb59](https://github.com/n0-computer/iroh/commit/9bcbb59ec0282ae3dfa962d20ceb25dfff5505b5))
-* windows symlink support ([#386](https://github.com/n0-computer/iroh/issues/386)) ([563aac0](https://github.com/n0-computer/iroh/commit/563aac0bfc42c662b69c418c2f1004d1c5f82e12))
-
-
-### Features
-
-* `iroh-ctl add` & `iroh-ctl get` ([#164](https://github.com/n0-computer/iroh/issues/164)) ([979a36f](https://github.com/n0-computer/iroh/commit/979a36f15ad982015743b288ec35d92510d6620a))
-* `iroh-ctl status -w` watches the health of each iroh process ([#84](https://github.com/n0-computer/iroh/issues/84)) ([22b2bb5](https://github.com/n0-computer/iroh/commit/22b2bb5cfd4a4cae0f2a58bd0872a34aef5b95fe))
-* abstract over internal rpc mechanism & add support for UDS & Mem RPC ([6e859c2](https://github.com/n0-computer/iroh/commit/6e859c2c3d4e12e1dfd1e795ec139b47cdee140a))
-* add car importer ([aabfb9a](https://github.com/n0-computer/iroh/commit/aabfb9a4df18ab8dc3bd9394fd73007704958817))
-* add iroh-car ([#27](https://github.com/n0-computer/iroh/issues/27)) ([26a1b86](https://github.com/n0-computer/iroh/commit/26a1b86b785f2dda1cf0d8027ec1549383b35336)), closes [#9](https://github.com/n0-computer/iroh/issues/9)
-* add placeholder iroh-bitswap and iroh-p2p crates ([9c4ab10](https://github.com/n0-computer/iroh/commit/9c4ab108796a4fb4179c95b3787bb8591eff3e47))
-* add rust-toolchain@1.61 ([b08ac2b](https://github.com/n0-computer/iroh/commit/b08ac2b52aa8078d3403f5458c85f204685a0340))
-* add trace id to responses ([#28](https://github.com/n0-computer/iroh/issues/28)) ([9d9c89e](https://github.com/n0-computer/iroh/commit/9d9c89e946096b5736e39917a1b2a696dd695bc7))
-* Allow to pass custom resolvers ([#220](https://github.com/n0-computer/iroh/issues/220)) ([9d319c5](https://github.com/n0-computer/iroh/commit/9d319c58468e583a809f058d82c0146b3ddacff8))
-* bad bits implementation ([#172](https://github.com/n0-computer/iroh/issues/172)) ([bda0173](https://github.com/n0-computer/iroh/commit/bda01739d6678d491726594a07c7e98679f41c30))
-* **bitswap:** add dial timeouts ([06e0104](https://github.com/n0-computer/iroh/commit/06e0104e4ba520252bf18130ca5d7620c0c0509b))
-* **bitswap:** add query errors and start cleanups ([72ae431](https://github.com/n0-computer/iroh/commit/72ae431c704bb4f20820f039050bd3d666cdf365))
-* **bitswap:** allow tracking queries based on ids ([21f75d5](https://github.com/n0-computer/iroh/commit/21f75d5c2967e001a3246ba89487e8fc5519e290))
-* **bitswap:** custom protocol handler for bitswap ([ff2ebc3](https://github.com/n0-computer/iroh/commit/ff2ebc3cedbd583632b753af10b2a7fb94d51a88))
-* **bitswap:** refactor & improve general strategy ([0747310](https://github.com/n0-computer/iroh/commit/07473107dc92419573d97c10cf132c1630eca5b2))
-* CLI get command improvements ([#331](https://github.com/n0-computer/iroh/issues/331)) ([b18b6c8](https://github.com/n0-computer/iroh/commit/b18b6c835af523ba8b300392af0d74cd4ad9f7a6)), closes [#269](https://github.com/n0-computer/iroh/issues/269)
-* CLI tests for iroh add, and API changes ([#343](https://github.com/n0-computer/iroh/issues/343)) ([fdf2170](https://github.com/n0-computer/iroh/commit/fdf2170bb62a646537aa976e18c1e01f9895dd47))
-* connect the dots ([4b15df5](https://github.com/n0-computer/iroh/commit/4b15df5a2a003ff28ebf843197cc204dcd57dc97))
-* connection pooling ([#404](https://github.com/n0-computer/iroh/issues/404)) ([b499751](https://github.com/n0-computer/iroh/commit/b4997515edadcbbba85d6ad1e8f1aa5c16c3d84f))
-* ctl ci ([#175](https://github.com/n0-computer/iroh/issues/175)) ([b7ebf02](https://github.com/n0-computer/iroh/commit/b7ebf021d4160c5ec1dad8288086f7c06084b7b2))
-* **deps:** update libp2p to 0.47 ([9dadadc](https://github.com/n0-computer/iroh/commit/9dadadca25c518b1f6bf21853c8ebd52dad8dbdb))
-* distributed tracing ([#46](https://github.com/n0-computer/iroh/issues/46)) ([3e555bc](https://github.com/n0-computer/iroh/commit/3e555bcab38faee61ff4da6689d28710f0e68018))
-* don't run 'dht_nice_tick()' when kadmelia is disabled ([#242](https://github.com/n0-computer/iroh/issues/242)) ([050ad48](https://github.com/n0-computer/iroh/commit/050ad4862c95f7535cae062d31b7014c5c0a00d9))
-* Enable the CompressionLayer middleware ([#236](https://github.com/n0-computer/iroh/issues/236)) ([9151fc1](https://github.com/n0-computer/iroh/commit/9151fc13daaf5c2535c2708ec81d69fe6a234ed2))
-* fetch providers via bitswap ([b16be5a](https://github.com/n0-computer/iroh/commit/b16be5a98430374ac7b86d93e4a70f170621c309))
-* gateway upgrade ([#87](https://github.com/n0-computer/iroh/issues/87)) ([4732a76](https://github.com/n0-computer/iroh/commit/4732a76a435b7b46b23d574c337ee9b81cee2449))
-* **gateway:** initial directory listing support ([#328](https://github.com/n0-computer/iroh/issues/328)) ([3316a53](https://github.com/n0-computer/iroh/commit/3316a53776311a38287b92126fdbacb21ad35897))
-* get config from files, environment vars, & command line flags ([#112](https://github.com/n0-computer/iroh/issues/112)) ([652b7ff](https://github.com/n0-computer/iroh/commit/652b7ffd3750b2bc40f8a305bb0626e446f4fc3c))
-* implement basic iroh-store ([a1b9586](https://github.com/n0-computer/iroh/commit/a1b9586a3b9829c0989232c9e910c4d6945b7802))
-* implement iroh-ctl find-provs ([#182](https://github.com/n0-computer/iroh/issues/182)) ([ec06238](https://github.com/n0-computer/iroh/commit/ec06238fe137c7e0fcd51a5f48aa1a9a9ba34d65))
-* import flatfs-store and rocks-store crates ([4ac82a8](https://github.com/n0-computer/iroh/commit/4ac82a88c5f2fe8566cca2d7ae6f265a96e00375))
-* **importer:** add hash verification ([96eda12](https://github.com/n0-computer/iroh/commit/96eda1247683d5f23be60381d7bb9dd8fc7b31da))
-* improve add experience ([#401](https://github.com/n0-computer/iroh/issues/401)) ([4f86388](https://github.com/n0-computer/iroh/commit/4f8638816d0fc4e8260ce06781b22baa4dbc2f44))
-* improve CLI texts and flags ([#342](https://github.com/n0-computer/iroh/issues/342)) ([9e0a03e](https://github.com/n0-computer/iroh/commit/9e0a03e7cc207e7ac76d7659db4a5500f97d131e))
-* improve provider fetching ([38ce246](https://github.com/n0-computer/iroh/commit/38ce24653261469c74ee354b4071340907bdd804))
-* iroh-api rename, iroh get basics, rpc client construction ([d24edc1](https://github.com/n0-computer/iroh/commit/d24edc1344fb2c14e58cd5272d9d968009d187de))
-* **iroh-api:** implement lookup & connect ([#372](https://github.com/n0-computer/iroh/issues/372)) ([a93dfb4](https://github.com/n0-computer/iroh/commit/a93dfb4eb77d5eb5d53a1504b3aed7fa19027e73))
-* **iroh-ctl:** implement available commands ([#123](https://github.com/n0-computer/iroh/issues/123)) ([c6bdca3](https://github.com/n0-computer/iroh/commit/c6bdca30401ac85be1076ce6cee574a8fc57efd6))
-* iroh-one ([#212](https://github.com/n0-computer/iroh/issues/212)) ([11fe705](https://github.com/n0-computer/iroh/commit/11fe705496e3b450aa677368bc32f5b1c5a3c0b1))
-* **iroh-resolver:** create a balanced tree dag ([3285d1f](https://github.com/n0-computer/iroh/commit/3285d1f50f170721e7c1abbe778f71f85621854c))
-* **iroh-resolver:** implement unixfs dir listing ([263b3c2](https://github.com/n0-computer/iroh/commit/263b3c2c91b53d00fa675a47f00946e2c85ea5f8))
-* **iroh-store:** add minimal main implementation ([b1c49a1](https://github.com/n0-computer/iroh/commit/b1c49a19c6436a3c2e89e9880fb5250fb22f4daf))
-* Map id to cid instead of multihash ([#336](https://github.com/n0-computer/iroh/issues/336)) ([092bdf7](https://github.com/n0-computer/iroh/commit/092bdf72b32e01099a6e3fd8ded818e3eeeebe41)), closes [#335](https://github.com/n0-computer/iroh/issues/335)
-* offline adding ([#415](https://github.com/n0-computer/iroh/issues/415)) ([7725508](https://github.com/n0-computer/iroh/commit/772550834f3861d3c38c2e9a0b97a24440df778d))
-* p2p api service calls with a p2p-specific error, better feedback ([#402](https://github.com/n0-computer/iroh/issues/402)) ([b565231](https://github.com/n0-computer/iroh/commit/b56523103224f3b77bf0b6d455911cf87b628c4f))
-* **p2p:** add `gossipsub` to p2p node & `gossipsub` rpc methods ([#132](https://github.com/n0-computer/iroh/issues/132)) ([f18d726](https://github.com/n0-computer/iroh/commit/f18d726c4f26f9ad91a3f28ed428a884a5583140))
-* **p2p:** improve default configurations for dht and bs ([791181a](https://github.com/n0-computer/iroh/commit/791181a9b11fdbcbedcad5c367f935a9762fb261))
-* **p2p:** integrate autonat protocol ([5c5c1b0](https://github.com/n0-computer/iroh/commit/5c5c1b046f55c5eaeb600dff882010c376854e02))
-* **p2p:** integrate relay and dcutr ([6555090](https://github.com/n0-computer/iroh/commit/6555090245c688f232d95a90338f2b277b0bfefe))
-* **p2p:** make bitswap toglable ([648bcbf](https://github.com/n0-computer/iroh/commit/648bcbffc8d08f7bb5d57644954063e8d3566c38))
-* **p2p:** make gossipsub configurable ([071fd1b](https://github.com/n0-computer/iroh/commit/071fd1bad42c8d3228a478a92af74bf321195dd8))
-* **p2p:** persist identity ([8f57278](https://github.com/n0-computer/iroh/commit/8f57278e2738baac0d528a28da5fcd89d6a658c3))
-* **p2p:** refresh kad buckets & rebootstrap regularly ([339ed13](https://github.com/n0-computer/iroh/commit/339ed13789352eb0abf56e18ea1e23593647e9c7))
-* **p2p:** respond to bitswap requests ([965e21c](https://github.com/n0-computer/iroh/commit/965e21c68d10e381e20f771e948e96ebf7a39c85))
-* progress bar for iroh add command ([#368](https://github.com/n0-computer/iroh/issues/368)) ([bff3560](https://github.com/n0-computer/iroh/commit/bff3560a22e4240e61d4558c7cf1f11b129b30df))
-* provide a mechanism to check if an iroh program is already running. ([#293](https://github.com/n0-computer/iroh/issues/293)) ([bddbae9](https://github.com/n0-computer/iroh/commit/bddbae90f49c7ea45a2900ad1fa4560d9482bd60))
-* provide only root, and only at the end of add ([#406](https://github.com/n0-computer/iroh/issues/406)) ([96c6148](https://github.com/n0-computer/iroh/commit/96c614839127a0b881ac100e3102abca70cb3a87))
-* race a http gateway with p2p in iroh-one's content loader ([#338](https://github.com/n0-computer/iroh/issues/338)) ([40cb232](https://github.com/n0-computer/iroh/commit/40cb232dc3ff69bfed90242eb986f853cab093c6))
-* range request support ([#330](https://github.com/n0-computer/iroh/issues/330)) ([074f0c6](https://github.com/n0-computer/iroh/commit/074f0c664578ff4f9108cb388aeb376f0baf3b9c))
-* recursive directories & directory link limits ([#213](https://github.com/n0-computer/iroh/issues/213)) ([be4e931](https://github.com/n0-computer/iroh/commit/be4e9311b3bf28ad3ae97bdffd8aa20164a0873c))
-* relases for p2p, store & some refactoring ([#45](https://github.com/n0-computer/iroh/issues/45)) ([d101e5a](https://github.com/n0-computer/iroh/commit/d101e5a5883dfaf378d2e15b384ae61c37dae1d7))
-* rename the iroh-ctl crate to the iroh crate ([#321](https://github.com/n0-computer/iroh/issues/321)) ([8b02977](https://github.com/n0-computer/iroh/commit/8b0297792cffb9cebf84ed1c64d2ff48b64aaf41))
-* **resolver:** add support for raw leaves in unixfs ([1d6d57d](https://github.com/n0-computer/iroh/commit/1d6d57d9de1c0ef1328bf1e5e982544d89982040))
-* **resolver:** expose metadata about the resolution result ([a229875](https://github.com/n0-computer/iroh/commit/a229875b1585e122552c3117c38aedae93fa07dd))
-* **resolver:** expose way to get directory content ([9b59326](https://github.com/n0-computer/iroh/commit/9b5932624b12866527310e6886354a201ed998a3))
-* **resolver:** handle symlinks properly ([5cc84ea](https://github.com/n0-computer/iroh/commit/5cc84eaa655f6f4ac3dfb1209877aed3f9b1ea18))
-* **resolver:** implement dsnlink resolution ([5fa893d](https://github.com/n0-computer/iroh/commit/5fa893d0d7550ddc541763f0b52670a15a2acf34))
-* **resolver:** stream content ([3d419b5](https://github.com/n0-computer/iroh/commit/3d419b5f59ea05badf95d90a25a52afbc6ba1e2b))
-* **resolver:** support raw codec ([25d5b28](https://github.com/n0-computer/iroh/commit/25d5b283387b7594b92e5f3579fd86ce3836840a))
-* **resolver:** unixfs: resolve simple multi chunk files ([fa94b6d](https://github.com/n0-computer/iroh/commit/fa94b6d064a8f1df65eea4b1bf622415e7203ac0))
-* rpc client that can handle out-going commands and incoming requests ([#26](https://github.com/n0-computer/iroh/issues/26)) ([f2fd5cb](https://github.com/n0-computer/iroh/commit/f2fd5cbae5ac7023f8e5c304323fe8f8be3ab946))
-* **rpc:** add rpc client and server for `store` process ([#41](https://github.com/n0-computer/iroh/issues/41)) ([854b605](https://github.com/n0-computer/iroh/commit/854b605e80c311152ecff54ceccf6b0f91b18e3c))
-* streaming providers ([a810e07](https://github.com/n0-computer/iroh/commit/a810e0744a66825413ae5772ae7445a4df4d922a))
-* switch to libp2p@0.45 ([f1dd5f7](https://github.com/n0-computer/iroh/commit/f1dd5f73341f0c8c71c21bc5d69f026fd3482267))
-* Unixfs Improvements ([42dee06](https://github.com/n0-computer/iroh/commit/42dee0644fe3605bbf6df3bd2415409fccb6bfe2))
-* **unixfs:** add `filesize` and `blocksizes` for `UnixfsNode::File` nodes ([#254](https://github.com/n0-computer/iroh/issues/254)) ([6ba6b57](https://github.com/n0-computer/iroh/commit/6ba6b576de067c44fc3fea80e67a5edcf05ec2c9))
-* **unixfs:** add symlink support ([#337](https://github.com/n0-computer/iroh/issues/337)) ([3157c15](https://github.com/n0-computer/iroh/commit/3157c15fb1dc359f3d45b53744d29f1dd548a1ec))
-* update libp2p to latest ([39b25e8](https://github.com/n0-computer/iroh/commit/39b25e874284d8f4218f75b82a6c73fcb10a25df))
-* update rust-libp2p ([c595c4d](https://github.com/n0-computer/iroh/commit/c595c4dbdeeb61b9bdd2aa1fba44e890e7eeb529))
-* update to libp2p@0.50 ([#391](https://github.com/n0-computer/iroh/issues/391)) ([8a906ee](https://github.com/n0-computer/iroh/commit/8a906eeb9889c28c28c3a6fd3802065ad5aadf82))
-* upload gateway builds to s3 (linux/amd64) ([#29](https://github.com/n0-computer/iroh/issues/29)) ([1918a83](https://github.com/n0-computer/iroh/commit/1918a8386dd90ac5e7c0c5b634ebb3e849719ed9))
-* use the store to cache received data ([9dac53a](https://github.com/n0-computer/iroh/commit/9dac53ae689e3ef46a4800aa5c1df22913daf1c3))
-
-
-### Performance Improvements
-
-* add parallelism to hashing ([#411](https://github.com/n0-computer/iroh/issues/411)) ([12db7ed](https://github.com/n0-computer/iroh/commit/12db7ede56ed16ecc18e83ec1e9f5b9f507239b9))
-* impl put_many and reuse column families ([#412](https://github.com/n0-computer/iroh/issues/412)) ([4cab5c7](https://github.com/n0-computer/iroh/commit/4cab5c79f5ba7c206be92729aad337ad3274e81e))
-* **resolver:** avoid some allocations ([9f2d718](https://github.com/n0-computer/iroh/commit/9f2d718b3e3717e9a8971b3d28652fa4434273e6))
-* use content_bytes instead of content_reader ([9dd0c22](https://github.com/n0-computer/iroh/commit/9dd0c228af91712a4a948a24e79068061078dbb9))
-* Use the libipld built in way to scrape references ([93546b1](https://github.com/n0-computer/iroh/commit/93546b11139bd54cfd4792613a3000d1ec8c8a27))
-
-
-### Reverts
-
-* Revert "fix dial metrics" ([5f4c063](https://github.com/n0-computer/iroh/commit/5f4c063cbd29aa1231c56334b4197cca0ff536a2))
-* Revert "update to libp2p@0.49 (#266)" ([59d7a3d](https://github.com/n0-computer/iroh/commit/59d7a3d4833001d1d22a54819337d80136183a80)), closes [#266](https://github.com/n0-computer/iroh/issues/266)
diff --git a/CONTRIBUTOR.md b/CONTRIBUTOR.md
index 78f8ae7cd..5f53baf0e 100644
--- a/CONTRIBUTOR.md
+++ b/CONTRIBUTOR.md
@@ -73,7 +73,7 @@ the effort we can spend fixing issues and adding new features, by not reporting
## Pull Request Submission Guidelines
Before you submit your pull request consider the following guidelines:
-* Search [GitHub](https://github.com/n0-computer/iroh/pulls) for an open or closed Pull Request
+* Search [GitHub](https://github.com/n0-computer/beetle/pulls) for an open or closed Pull Request
that relates to your submission. You don't want to duplicate effort.
* Create the [development environment][developers.setup]
* Make your changes in a new git branch:
@@ -99,7 +99,7 @@ Before you submit your pull request consider the following guidelines:
git push origin my-fix-branch
```
-* In GitHub, send a pull request to ` iroh:main`.
+* In GitHub, send a pull request to ` beetle:main`.
* Follow our [Pull Request Guidelines](developers.prs) to understand who to tag for review and how best to merge your work.
* If we suggest changes, then:
@@ -139,13 +139,13 @@ from the main (upstream) repository:
git pull --ff upstream main
```
-[coc]: https://github.com/n0-computer/iroh/blob/main/code_of_conduct.md
+[coc]: https://github.com/n0-computer/beetle/blob/main/code_of_conduct.md
[developers]: DEVELOPERS.md
[developers.setup]: DEVELOPERS.md#setup
[developers.commits]: DEVELOPERS.md#commits
[developers.rules]: DEVELOPERS.md#rules
-[github-issues]: https://github.com/n0-computer/iroh/issues
-[github]: https://github.com/n0-computer/iroh
+[github-issues]: https://github.com/n0-computer/beetle/issues
+[github]: https://github.com/n0-computer/beetle
[jsfiddle]: http://jsfiddle.net/
[plunker]: http://plnkr.co/edit
diff --git a/Cargo.toml b/Cargo.toml
index acbba7a43..cb955e9a0 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -2,23 +2,23 @@
members = [
"examples/embed",
"examples/importer",
- "iroh",
- "iroh-api",
- "iroh-bitswap",
- "iroh-car",
- "iroh-embed",
- "iroh-gateway",
- "iroh-localops",
- "iroh-metrics",
- "iroh-one",
- "iroh-p2p",
- "iroh-resolver",
- "iroh-rpc-client",
- "iroh-rpc-types",
- "iroh-share",
- "iroh-unixfs",
- "iroh-store",
- "iroh-util",
+ "beetle",
+ "beetle-api",
+ "beetle-bitswap",
+ "beetle-car",
+ "beetle-embed",
+ "beetle-gateway",
+ "beetle-localops",
+ "beetle-metrics",
+ "beetle-one",
+ "beetle-p2p",
+ "beetle-resolver",
+ "beetle-rpc-client",
+ "beetle-rpc-types",
+ "beetle-share",
+ "beetle-unixfs",
+ "beetle-store",
+ "beetle-util",
"xtask",
]
# even if all crates are set to edition 2021, we still need to force the
@@ -31,7 +31,7 @@ version = "0.2.0"
edition = "2021"
license = "Apache-2.0/MIT"
rust-version = "1.65"
-repository = "https://github.com/n0-computer/iroh"
+repository = "https://github.com/n0-computer/beetle"
[workspace.dependencies]
# We prefer to place all dependencies for our workspace crates here.
@@ -90,22 +90,22 @@ hyper = "0.14.23"
ignore = "0.4.18"
indicatif = "0.17.1"
integer-encoding = "3.0"
-iroh = { version = "0.2.0", path = "./iroh" }
-iroh-api = { version = "0.2.0", path = "./iroh-api" }
-iroh-bitswap = { version = "0.2.0", path = "./iroh-bitswap" }
-iroh-car = { version = "0.2.0", path = "./iroh-car" }
-iroh-embed = { version = "0.2.0", path = "./iroh-embed" }
-iroh-gateway = { version = "0.2.0", path = "./iroh-gateway" }
-iroh-localops = { version = "0.2.0", path = "./iroh-localops" }
-iroh-metrics = { version = "0.2.0", path = "./iroh-metrics" }
-iroh-one = { version = "0.2.0", path = "./iroh-one" }
-iroh-p2p = { version = "0.2.0", path = "./iroh-p2p" }
-iroh-resolver = { version = "0.2.0", path = "./iroh-resolver" }
-iroh-rpc-client = { version = "0.2.0", path = "./iroh-rpc-client" }
-iroh-rpc-types = { version = "0.2.0", path = "./iroh-rpc-types" }
-iroh-store = { version = "0.2.0", path = "./iroh-store" }
-iroh-unixfs = { version = "0.2.0", path = "./iroh-unixfs" }
-iroh-util = { version = "0.2.0", path = "./iroh-util" }
+beetle = { version = "0.2.0", path = "./beetle" }
+beetle-api = { version = "0.2.0", path = "./beetle-api" }
+beetle-bitswap = { version = "0.2.0", path = "./beetle-bitswap" }
+beetle-car = { version = "0.2.0", path = "./beetle-car" }
+beetle-embed = { version = "0.2.0", path = "./beetle-embed" }
+beetle-gateway = { version = "0.2.0", path = "./beetle-gateway" }
+beetle-localops = { version = "0.2.0", path = "./beetle-localops" }
+beetle-metrics = { version = "0.2.0", path = "./beetle-metrics" }
+beetle-one = { version = "0.2.0", path = "./beetle-one" }
+beetle-p2p = { version = "0.2.0", path = "./beetle-p2p" }
+beetle-resolver = { version = "0.2.0", path = "./beetle-resolver" }
+beetle-rpc-client = { version = "0.2.0", path = "./beetle-rpc-client" }
+beetle-rpc-types = { version = "0.2.0", path = "./beetle-rpc-types" }
+beetle-store = { version = "0.2.0", path = "./beetle-store" }
+beetle-unixfs = { version = "0.2.0", path = "./beetle-unixfs" }
+beetle-util = { version = "0.2.0", path = "./beetle-util" }
keyed_priority_queue = "0.4.1"
lazy_static = "1.4"
libipld = "0.15"
diff --git a/DEVELOPERS.md b/DEVELOPERS.md
index f70b34ba5..b70f3917a 100644
--- a/DEVELOPERS.md
+++ b/DEVELOPERS.md
@@ -52,15 +52,15 @@ Use `cargo` commands to build and run the various Iroh binaries.
For example:
```shell
-# run each command in a different terminal to simulate running iroh as
+# run each command in a different terminal to simulate running beetle as
# microservices on different boxes:
-$ cargo run -p iroh-p2p
-$ cargo run -p iroh-gateway
-$ cargo run -p iroh-store
-$ cargo run -p iroh -- status --watch
+$ cargo run -p beetle-p2p
+$ cargo run -p beetle-gateway
+$ cargo run -p beetle-store
+$ cargo run -p beetle -- status --watch
```
-If you want to use the `iroh` binary to start and stop the services, you can
+If you want to use the `beetle` binary to start and stop the services, you can
use `xtask` to move previously built binaries to the correct bin:
```shell
@@ -94,7 +94,7 @@ cargo clippy --workspace --all-features --all-targets && cargo test --workspace
## Dependencies
-Any crate added to iroh will need to use a license compatible with ours. Any PR that introduces a new crate will require additional review time to audit the crate being introduced, including rationale on why you chose *this* crate, and what alternatives you considered willl speed up the review process.
+Any crate added to beetle will need to use a license compatible with ours. Any PR that introduces a new crate will require additional review time to audit the crate being introduced, including rationale on why you chose *this* crate, and what alternatives you considered willl speed up the review process.
Crate lists in `Cargo.toml` files must be kept alphabetically sorted.
@@ -102,13 +102,13 @@ Crate lists in `Cargo.toml` files must be kept alphabetically sorted.
The tests must pass and you must get an approval from someone on the Iroh team before you can merge your PR.
-Depending on your permissions in the `iroh` repo, you may not have the the ability to "request a review". Instead, please tag your selected reviewers in the PR itself (using the `@`) and specify that you would like them to review. If you are a member of our discord community, you can and should ping your reviewer(s) there as well.
+Depending on your permissions in the `beetle` repo, you may not have the the ability to "request a review". Instead, please tag your selected reviewers in the PR itself (using the `@`) and specify that you would like them to review. If you are a member of our discord community, you can and should ping your reviewer(s) there as well.
-If you don't know who to tag for review, here are some good guidelines. For any markdown documentations changes, tag `ramfox` or `b5`. If your PR solves an issue that someone else created, tag that person in review. If it's an issue you have created, tag team members who have been discussing the issue. Otherwise, create the PR and note that you aren't sure who to tag! Someone will drop in to give you guidance. If you are apart of our discord community, ask who should be tagged in the `iroh` channel.
+If you don't know who to tag for review, here are some good guidelines. For any markdown documentations changes, tag `ramfox` or `b5`. If your PR solves an issue that someone else created, tag that person in review. If it's an issue you have created, tag team members who have been discussing the issue. Otherwise, create the PR and note that you aren't sure who to tag! Someone will drop in to give you guidance. If you are apart of our discord community, ask who should be tagged in the `beetle` channel.
### A note about our current CI testing set up
-The MacOS testing infrastructure currently does not work on forked branches of `iroh`. If you are working on a forked branch, you will notice that the MacOS tests on your PRs will always fail (because they will not run). This is the only case where you may have a "failing" test and still merge your PR.
+The MacOS testing infrastructure currently does not work on forked branches of `beetle`. If you are working on a forked branch, you will notice that the MacOS tests on your PRs will always fail (because they will not run). This is the only case where you may have a "failing" test and still merge your PR.
### Merging
@@ -163,7 +163,7 @@ Must be one of the following:
### Scope
-The scope could be anything specifying place of the commit change. For example, if I am refactoring something in the `iroh` package, I may start my commit with "refactor(iroh)".
+The scope could be anything specifying place of the commit change. For example, if I am refactoring something in the `beetle` package, I may start my commit with "refactor(beetle)".
You can use `*` when the change affects more than a single scope.
@@ -192,7 +192,7 @@ A detailed explanation can be found in this [document][commit-message-format].
[closing-issues]: https://help.github.com/articles/closing-issues-via-commit-messages/
[commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#
-[github]: https://github.com/n0-computer/iroh
+[github]: https://github.com/n0-computer/beetle
[git-revert]: https://git-scm.com/docs/git-revert
[git-setup]: https://help.github.com/articles/set-up-git
[git-hook]: https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
diff --git a/Dockerfile-ci b/Dockerfile-ci
index 257c0b7c3..6da2c0b44 100644
--- a/Dockerfile-ci
+++ b/Dockerfile-ci
@@ -1,7 +1,7 @@
# Dockerfile for CircleCI
# build with
-# `docker build -t dignifiedquire/iroh-ci:latest -f ./Dockerfile-ci .`
-# rebuild: `docker build --pull --no-cache -t dignifiedquire/iroh-ci:latest -f ./Dockerfile-ci .`
+# `docker build -t dignifiedquire/beetle-ci:latest -f ./Dockerfile-ci .`
+# rebuild: `docker build --pull --no-cache -t dignifiedquire/beetle-ci:latest -f ./Dockerfile-ci .`
FROM cimg/rust:1.62.0
diff --git a/README.md b/README.md
index 7a8d9282c..0ec36bfa3 100644
--- a/README.md
+++ b/README.md
@@ -1,21 +1,21 @@
-# iroh
+# beetle
-[](https://crates.io/crates/iroh)
-[](https://docs.rs/iroh)
-[](./LICENSE-MIT)
-[](https://github.com/n0-computer/iroh/actions?query=workflow%3A%22Continuous+integration%22)
+[](https://crates.io/crates/beetle)
+[](https://docs.rs/beetle)
+[](./LICENSE-MIT)
+[](https://github.com/n0-computer/beetle/actions?query=workflow%3A%22Continuous+integration%22)
Iroh is a next-generation implementation of the Interplanetary File System ([IPFS](https://ipfs.io)) for Cloud & Mobile platforms.
IPFS is a networking protocol for exchanging _content-addressed_ blocks of immutable data. “Content-addressed” means referring to data by the *hash of its content*, which makes the reference unique and verifiable. These two properties make it possible to get data from *any* node in the network that speaks the IPFS protocol, including IPFS content being served by other implementations of IPFS.
-This repo is a common core for three distributions of iroh:
+This repo is a common core for three distributions of beetle:
-- **Iroh Cloud:** core features of iroh split into configurable microservices, optimized for running at datacenter scale.
-- **Iroh One:** A select set of iroh cloud features packaged as a single binary for simplified deployment.
+- **Iroh Cloud:** core features of beetle split into configurable microservices, optimized for running at datacenter scale.
+- **Iroh One:** A select set of beetle cloud features packaged as a single binary for simplified deployment.
- **Iroh Mobile:** iOS & Android libraries that bring efficient data distribution to mobile apps.
-Here is an [install guide](https://iroh.computer/install).
+Here is an [install guide](https://beetle.computer/install).
## Working on Iroh
Check out the [CONTRIBUTOR docs](./CONTRIBUTOR.md) to get familiar with ways you can contribute to the Iroh project. The [DEVELOPERS docs](./DEVELOPERS.md) will help you get starting with building and developing Iroh.
@@ -26,7 +26,7 @@ A full suite of automated benchmarks is in the works. [this talk](https://www.yo
## Who's behind this?
-[Iroh](https://iroh.computer) is built & maintained by [number 0](https://n0.computer). We're a founder-backed startup hell-bent on building efficient distributed systems software.
+[Iroh](https://beetle.computer) is built & maintained by [number 0](https://n0.computer). We're a founder-backed startup hell-bent on building efficient distributed systems software.
## License
diff --git a/RELEASE.md b/RELEASE.md
index 5280fb773..6404b3678 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -7,7 +7,7 @@ Install dependencies
```sh
$ npm install -g conventional-changelog-cli
-$ cd iroh
+$ cd beetle
$ conventional-changelog -p angular
```
@@ -15,11 +15,11 @@ Add the output of that to `CHANGELOG.md`, and write a human-centric summary of c
Update the linked output to reference the new version, which conventional-changelog doesn't know about:
```md
-# [](https://github.com/n0-computer/iroh/compare/v0.1.1...v) (2022-11-28)
+# [](https://github.com/n0-computer/beetle/compare/v0.1.1...v) (2022-11-28)
```
becomes:
```md
-# [v0.1.2](https://github.com/n0-computer/iroh/compare/v0.1.1...v0.1.2) (2022-11-28)
+# [v0.1.2](https://github.com/n0-computer/beetle/compare/v0.1.1...v0.1.2) (2022-11-28)
```
## Publishing
@@ -28,7 +28,7 @@ Publishing on crates.io, bumping version & generating tags is done using [`cargo
This requires the following permissions
-- on github.com/n0-computer/iroh
+- on github.com/n0-computer/beetle
- creating tags
- pushing to `main`
- on crates.io
diff --git a/iroh-api/Cargo.toml b/beetle-api/Cargo.toml
similarity index 72%
rename from iroh-api/Cargo.toml
rename to beetle-api/Cargo.toml
index 8d750c0c8..d2e5245ee 100644
--- a/iroh-api/Cargo.toml
+++ b/beetle-api/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-name = "iroh-api"
+name = "beetle-api"
readme = "README.md"
description = "Rust API for Iroh"
version.workspace = true
@@ -16,12 +16,12 @@ bytes.workspace = true
cid.workspace = true
config.workspace = true
futures.workspace = true
-iroh-metrics.workspace = true
-iroh-resolver.workspace = true
-iroh-rpc-client.workspace = true
-iroh-rpc-types.workspace = true
-iroh-unixfs.workspace = true
-iroh-util.workspace = true
+beetle-metrics.workspace = true
+beetle-resolver.workspace = true
+beetle-rpc-client.workspace = true
+beetle-rpc-types.workspace = true
+beetle-unixfs.workspace = true
+beetle-util.workspace = true
libp2p.workspace = true
relative-path.workspace = true
serde = { workspace = true, features = ["derive"] }
@@ -31,8 +31,8 @@ tracing.workspace = true
[dev-dependencies]
criterion = { workspace = true, features = ["async_tokio"] }
-iroh-rpc-types.workspace = true
-iroh-store.workspace = true
+beetle-rpc-types.workspace = true
+beetle-store.workspace = true
tempfile.workspace = true
[[bench]]
diff --git a/beetle-api/README.md b/beetle-api/README.md
new file mode 100644
index 000000000..b800929b2
--- /dev/null
+++ b/beetle-api/README.md
@@ -0,0 +1,23 @@
+# beetle-api
+
+[](https://crates.io/crates/beetle-api)
+[](https://docs.rs/beetle-api)
+[](../LICENSE-MIT)
+[](https://github.com/n0-computer/beetle/actions?query=workflow%3A%22Continuous+integration%22)
+
+This contains the API for controlling [beetle](https://github.com/n0-computer/beetle).
+
+## License
+
+
+Licensed under either of Apache License, Version
+2.0 or MIT license at your option.
+
+
+
+
+
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in this crate by you, as defined in the Apache-2.0 license, shall
+be dual licensed as above, without any additional terms or conditions.
+
diff --git a/iroh-api/benches/add.rs b/beetle-api/benches/add.rs
similarity index 90%
rename from iroh-api/benches/add.rs
rename to beetle-api/benches/add.rs
index 170c0d4a6..65d91af35 100644
--- a/iroh-api/benches/add.rs
+++ b/beetle-api/benches/add.rs
@@ -1,16 +1,16 @@
-use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion};
-use futures::TryStreamExt;
-use iroh_resolver::resolver::Resolver;
-use iroh_rpc_client::{Client, Config as RpcClientConfig};
-use iroh_rpc_types::Addr;
-use iroh_store::{Config as StoreConfig, Store};
-use iroh_unixfs::{
+use beetle_resolver::resolver::Resolver;
+use beetle_rpc_client::{Client, Config as RpcClientConfig};
+use beetle_rpc_types::Addr;
+use beetle_store::{Config as StoreConfig, Store};
+use beetle_unixfs::{
chunker::{ChunkerConfig, DEFAULT_CHUNKS_SIZE},
content_loader::{FullLoader, FullLoaderConfig},
};
+use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion};
+use futures::TryStreamExt;
use tokio::runtime::Runtime;
-use iroh_api::{Api, UnixfsConfig, UnixfsEntry};
+use beetle_api::{Api, UnixfsConfig, UnixfsEntry};
fn add_benchmark(c: &mut Criterion) {
let mut group = c.benchmark_group("unixfs_add_file");
@@ -43,7 +43,7 @@ fn add_benchmark(c: &mut Criterion) {
let (_task, client, resolver) = executor.block_on(async {
let store = Store::create(config).await.unwrap();
let task = executor.spawn(async move {
- iroh_store::rpc::new(server_addr, store).await.unwrap()
+ beetle_store::rpc::new(server_addr, store).await.unwrap()
});
// wait for a moment until the transport is setup
// TODO: signal this more clearly
diff --git a/iroh-api/src/api.rs b/beetle-api/src/api.rs
similarity index 92%
rename from iroh-api/src/api.rs
rename to beetle-api/src/api.rs
index 947dd786c..51d31fa36 100644
--- a/iroh-api/src/api.rs
+++ b/beetle-api/src/api.rs
@@ -6,27 +6,27 @@ use crate::config::{Config, CONFIG_FILE_NAME, ENV_PREFIX};
use crate::IpfsPath;
use crate::P2pApi;
use anyhow::{ensure, Context, Result};
-use cid::Cid;
-use futures::stream::BoxStream;
-use futures::{StreamExt, TryStreamExt};
-use iroh_resolver::resolver::Resolver;
-use iroh_rpc_client::{Client, ClientStatus};
-use iroh_unixfs::{
+use beetle_resolver::resolver::Resolver;
+use beetle_rpc_client::{Client, ClientStatus};
+use beetle_unixfs::{
builder::Entry as UnixfsEntry,
content_loader::{FullLoader, FullLoaderConfig},
};
-use iroh_util::{iroh_config_path, make_config};
+use beetle_util::{beetle_config_path, make_config};
+use cid::Cid;
+use futures::stream::BoxStream;
+use futures::{StreamExt, TryStreamExt};
use relative_path::RelativePathBuf;
use tokio::io::{AsyncRead, AsyncReadExt};
use crate::store::add_blocks_to_store;
-/// API to interact with an iroh system.
+/// API to interact with an beetle system.
///
-/// This provides an API to use the iroh system consisting of several services working
+/// This provides an API to use the beetle system consisting of several services working
/// together. It offers both a higher level API as well as some lower-level APIs.
///
-/// Unless working on iroh directly this should probably be constructed via the `iroh-embed`
+/// Unless working on beetle directly this should probably be constructed via the `beetle-embed`
/// crate rather then directly.
#[derive(Debug, Clone)]
pub struct Api {
@@ -51,7 +51,7 @@ impl fmt::Debug for OutType {
}
impl Api {
- /// Creates a new instance from the iroh configuration.
+ /// Creates a new instance from the beetle configuration.
///
/// This loads configuration from an optional configuration file and environment
/// variables.
@@ -61,7 +61,7 @@ impl Api {
config_path: Option<&'a Path>,
overrides_map: HashMap,
) -> Result {
- let cfg_path = iroh_config_path(CONFIG_FILE_NAME)?;
+ let cfg_path = beetle_config_path(CONFIG_FILE_NAME)?;
let sources = [Some(cfg_path.as_path()), config_path];
let config = make_config(
// default
@@ -114,7 +114,7 @@ impl Api {
Ok(P2pApi::new(p2p_client))
}
- /// High level get, equivalent of CLI `iroh get`.
+ /// High level get, equivalent of CLI `beetle get`.
///
/// Returns a stream of items, where items can be either blobs or UnixFs components.
/// Each blob will be a full object, a file in case of UnixFs, and not raw chunks.
diff --git a/iroh-api/src/config.rs b/beetle-api/src/config.rs
similarity index 90%
rename from iroh-api/src/config.rs
rename to beetle-api/src/config.rs
index 564a9be2b..d33b91ea7 100644
--- a/iroh-api/src/config.rs
+++ b/beetle-api/src/config.rs
@@ -1,17 +1,17 @@
+use beetle_metrics::config::Config as MetricsConfig;
+use beetle_rpc_client::Config as RpcClientConfig;
+use beetle_unixfs::indexer::IndexerUrl;
+use beetle_util::insert_into_config_map;
use config::{ConfigError, Map, Source, Value};
-use iroh_metrics::config::Config as MetricsConfig;
-use iroh_rpc_client::Config as RpcClientConfig;
-use iroh_unixfs::indexer::IndexerUrl;
-use iroh_util::insert_into_config_map;
use serde::{Deserialize, Serialize};
-/// CONFIG_FILE_NAME is the name of the optional config file located in the iroh home directory
+/// CONFIG_FILE_NAME is the name of the optional config file located in the beetle home directory
pub const CONFIG_FILE_NAME: &str = "ctl.config.toml";
/// ENV_PREFIX should be used along side the config field name to set a config field using
/// environment variables
-pub const ENV_PREFIX: &str = "IROH_CTL";
+pub const ENV_PREFIX: &str = "BEETLE_CTL";
-/// Configuration for [`iroh-api`].
+/// Configuration for [`beetle-api`].
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Config {
pub rpc_client: RpcClientConfig,
diff --git a/iroh-api/src/error.rs b/beetle-api/src/error.rs
similarity index 100%
rename from iroh-api/src/error.rs
rename to beetle-api/src/error.rs
diff --git a/iroh-api/src/fs.rs b/beetle-api/src/fs.rs
similarity index 100%
rename from iroh-api/src/fs.rs
rename to beetle-api/src/fs.rs
diff --git a/iroh-api/src/lib.rs b/beetle-api/src/lib.rs
similarity index 62%
rename from iroh-api/src/lib.rs
rename to beetle-api/src/lib.rs
index 370bd21c9..46947cd5a 100644
--- a/iroh-api/src/lib.rs
+++ b/beetle-api/src/lib.rs
@@ -4,15 +4,15 @@ pub use crate::config::Config;
pub use crate::error::ApiError;
pub use crate::p2p::P2p as P2pApi;
pub use crate::p2p::PeerIdOrAddr;
-pub use bytes::Bytes;
-pub use cid::Cid;
-pub use iroh_resolver::resolver::Path as IpfsPath;
-pub use iroh_rpc_client::{ClientStatus, Lookup, ServiceStatus, ServiceType, StatusType};
-pub use iroh_unixfs::builder::{
+pub use beetle_resolver::resolver::Path as IpfsPath;
+pub use beetle_rpc_client::{ClientStatus, Lookup, ServiceStatus, ServiceType, StatusType};
+pub use beetle_unixfs::builder::{
Config as UnixfsConfig, DirectoryBuilder, Entry as UnixfsEntry, FileBuilder, SymlinkBuilder,
};
-pub use iroh_unixfs::chunker::{ChunkerConfig, DEFAULT_CHUNKS_SIZE};
-pub use iroh_unixfs::Block;
+pub use beetle_unixfs::chunker::{ChunkerConfig, DEFAULT_CHUNKS_SIZE};
+pub use beetle_unixfs::Block;
+pub use bytes::Bytes;
+pub use cid::Cid;
pub use libp2p::gossipsub::MessageId;
pub use libp2p::{Multiaddr, PeerId};
diff --git a/iroh-api/src/p2p.rs b/beetle-api/src/p2p.rs
similarity index 97%
rename from iroh-api/src/p2p.rs
rename to beetle-api/src/p2p.rs
index 82bb77ca8..b3e9505dd 100644
--- a/iroh-api/src/p2p.rs
+++ b/beetle-api/src/p2p.rs
@@ -1,6 +1,6 @@
use crate::error::map_service_error;
use anyhow::Result;
-use iroh_rpc_client::{Lookup, P2pClient};
+use beetle_rpc_client::{Lookup, P2pClient};
use libp2p::{multiaddr::Protocol, Multiaddr, PeerId};
use std::collections::HashMap;
diff --git a/iroh-api/src/store.rs b/beetle-api/src/store.rs
similarity index 98%
rename from iroh-api/src/store.rs
rename to beetle-api/src/store.rs
index 921f39e1a..5cdbe7101 100644
--- a/iroh-api/src/store.rs
+++ b/beetle-api/src/store.rs
@@ -3,11 +3,11 @@ use std::{pin::Pin, sync::Arc};
use anyhow::Result;
use async_stream::stream;
use async_trait::async_trait;
+use beetle_rpc_client::Client;
+use beetle_unixfs::Block;
use bytes::Bytes;
use cid::Cid;
use futures::{Stream, StreamExt};
-use iroh_rpc_client::Client;
-use iroh_unixfs::Block;
/// How many chunks to buffer up when adding content.
const _ADD_PAR: usize = 24;
diff --git a/iroh-bitswap/Cargo.toml b/beetle-bitswap/Cargo.toml
similarity index 93%
rename from iroh-bitswap/Cargo.toml
rename to beetle-bitswap/Cargo.toml
index a063467f6..feb133769 100644
--- a/iroh-bitswap/Cargo.toml
+++ b/beetle-bitswap/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-name = "iroh-bitswap"
+name = "beetle-bitswap"
authors = ["dignifiedquire "]
description = "Implementation of the bitswap protocol"
version.workspace = true
@@ -24,8 +24,8 @@ cid.workspace = true
deadqueue.workspace = true
derivative.workspace = true
futures.workspace = true
-iroh-metrics = { workspace = true, features = ["bitswap"] }
-iroh-util.workspace = true
+beetle-metrics = { workspace = true, features = ["bitswap"] }
+beetle-util.workspace = true
keyed_priority_queue.workspace = true
libp2p = { workspace = true, features = ["ping"] }
multihash.workspace = true
diff --git a/iroh-bitswap/README.md b/beetle-bitswap/README.md
similarity index 55%
rename from iroh-bitswap/README.md
rename to beetle-bitswap/README.md
index e817e22af..b12f86202 100644
--- a/iroh-bitswap/README.md
+++ b/beetle-bitswap/README.md
@@ -1,16 +1,16 @@
-# iroh bitswap
+# beetle bitswap
-[](https://crates.io/crates/iroh-bitswap)
-[](https://docs.rs/iroh-bitswap)
-[](../LICENSE-MIT)
-[](https://github.com/n0-computer/iroh/actions?query=workflow%3A%22Continuous+integration%22)
+[](https://crates.io/crates/beetle-bitswap)
+[](https://docs.rs/beetle-bitswap)
+[](../LICENSE-MIT)
+[](https://github.com/n0-computer/beetle/actions?query=workflow%3A%22Continuous+integration%22)
This contains an implementation of the [IPFS bitswap
protocol](https://docs.ipfs.tech/concepts/bitswap/). It sends blocks of data to
other peers in the IPFS network who want them, and receives blocks requested by
the client from the network.
-It is part of [iroh](https://github.com/n0-computer/iroh).
+It is part of [beetle](https://github.com/n0-computer/beetle).
## License
diff --git a/iroh-bitswap/benches/message.rs b/beetle-bitswap/benches/message.rs
similarity index 99%
rename from iroh-bitswap/benches/message.rs
rename to beetle-bitswap/benches/message.rs
index e50c7d77a..f08a114e3 100644
--- a/iroh-bitswap/benches/message.rs
+++ b/beetle-bitswap/benches/message.rs
@@ -1,9 +1,9 @@
-use bytes::Bytes;
-use criterion::{black_box, criterion_group, criterion_main, BatchSize, Criterion};
-use iroh_bitswap::{
+use beetle_bitswap::{
create_block_v1 as create_test_block,
message::{BitswapMessage, Priority, WantType},
};
+use bytes::Bytes;
+use criterion::{black_box, criterion_group, criterion_main, BatchSize, Criterion};
pub fn criterion_benchmark(c: &mut Criterion) {
{
diff --git a/iroh-bitswap/build.rs b/beetle-bitswap/build.rs
similarity index 100%
rename from iroh-bitswap/build.rs
rename to beetle-bitswap/build.rs
diff --git a/iroh-bitswap/src/bitswap_pb.proto b/beetle-bitswap/src/bitswap_pb.proto
similarity index 100%
rename from iroh-bitswap/src/bitswap_pb.proto
rename to beetle-bitswap/src/bitswap_pb.proto
diff --git a/iroh-bitswap/src/block.rs b/beetle-bitswap/src/block.rs
similarity index 100%
rename from iroh-bitswap/src/block.rs
rename to beetle-bitswap/src/block.rs
diff --git a/iroh-bitswap/src/client.rs b/beetle-bitswap/src/client.rs
similarity index 99%
rename from iroh-bitswap/src/client.rs
rename to beetle-bitswap/src/client.rs
index 3f648abe2..fc4c20214 100644
--- a/iroh-bitswap/src/client.rs
+++ b/beetle-bitswap/src/client.rs
@@ -1,7 +1,7 @@
use std::{sync::Arc, time::Duration};
-use iroh_metrics::bitswap::BitswapMetrics;
-use iroh_metrics::{core::MRecorder, inc, record};
+use beetle_metrics::bitswap::BitswapMetrics;
+use beetle_metrics::{core::MRecorder, inc, record};
use ahash::AHashSet;
use anyhow::Result;
diff --git a/iroh-bitswap/src/client/block_presence_manager.rs b/beetle-bitswap/src/client/block_presence_manager.rs
similarity index 100%
rename from iroh-bitswap/src/client/block_presence_manager.rs
rename to beetle-bitswap/src/client/block_presence_manager.rs
diff --git a/iroh-bitswap/src/client/message_queue.rs b/beetle-bitswap/src/client/message_queue.rs
similarity index 99%
rename from iroh-bitswap/src/client/message_queue.rs
rename to beetle-bitswap/src/client/message_queue.rs
index 7c9676b9a..e8e027709 100644
--- a/iroh-bitswap/src/client/message_queue.rs
+++ b/beetle-bitswap/src/client/message_queue.rs
@@ -5,9 +5,9 @@ use std::{
use ahash::AHashSet;
use anyhow::{ensure, Result};
+use beetle_metrics::core::MRecorder;
+use beetle_metrics::{bitswap::BitswapMetrics, inc};
use cid::Cid;
-use iroh_metrics::core::MRecorder;
-use iroh_metrics::{bitswap::BitswapMetrics, inc};
use libp2p::PeerId;
use tokio::{sync::mpsc, task::JoinHandle};
use tracing::{debug, error, warn};
diff --git a/iroh-bitswap/src/client/message_queue/dont_have_timeout_manager.rs b/beetle-bitswap/src/client/message_queue/dont_have_timeout_manager.rs
similarity index 99%
rename from iroh-bitswap/src/client/message_queue/dont_have_timeout_manager.rs
rename to beetle-bitswap/src/client/message_queue/dont_have_timeout_manager.rs
index 6a45551b7..056441180 100644
--- a/iroh-bitswap/src/client/message_queue/dont_have_timeout_manager.rs
+++ b/beetle-bitswap/src/client/message_queue/dont_have_timeout_manager.rs
@@ -6,10 +6,10 @@ use std::{
use ahash::{AHashMap, AHashSet};
use anyhow::Result;
+use beetle_metrics::core::MRecorder;
+use beetle_metrics::{bitswap::BitswapMetrics, inc};
use cid::Cid;
use derivative::Derivative;
-use iroh_metrics::core::MRecorder;
-use iroh_metrics::{bitswap::BitswapMetrics, inc};
use libp2p::PeerId;
use tokio::{
sync::{oneshot, Mutex},
diff --git a/iroh-bitswap/src/client/message_queue/wantlist.rs b/beetle-bitswap/src/client/message_queue/wantlist.rs
similarity index 100%
rename from iroh-bitswap/src/client/message_queue/wantlist.rs
rename to beetle-bitswap/src/client/message_queue/wantlist.rs
diff --git a/iroh-bitswap/src/client/peer_manager.rs b/beetle-bitswap/src/client/peer_manager.rs
similarity index 99%
rename from iroh-bitswap/src/client/peer_manager.rs
rename to beetle-bitswap/src/client/peer_manager.rs
index 58d3d21a0..629d3dfb8 100644
--- a/iroh-bitswap/src/client/peer_manager.rs
+++ b/beetle-bitswap/src/client/peer_manager.rs
@@ -2,10 +2,10 @@ use std::{fmt::Debug, sync::Arc};
use ahash::{AHashMap, AHashSet};
use anyhow::{Context, Result};
+use beetle_metrics::{bitswap::BitswapMetrics, core::MRecorder, inc};
use cid::Cid;
use derivative::Derivative;
use futures::{future::BoxFuture, FutureExt};
-use iroh_metrics::{bitswap::BitswapMetrics, core::MRecorder, inc};
use libp2p::PeerId;
use tokio::sync::{mpsc, oneshot};
use tracing::{debug, error, trace, warn};
diff --git a/iroh-bitswap/src/client/peer_want_manager.rs b/beetle-bitswap/src/client/peer_want_manager.rs
similarity index 100%
rename from iroh-bitswap/src/client/peer_want_manager.rs
rename to beetle-bitswap/src/client/peer_want_manager.rs
diff --git a/iroh-bitswap/src/client/session.rs b/beetle-bitswap/src/client/session.rs
similarity index 99%
rename from iroh-bitswap/src/client/session.rs
rename to beetle-bitswap/src/client/session.rs
index 55137e31f..9640eacdd 100644
--- a/iroh-bitswap/src/client/session.rs
+++ b/beetle-bitswap/src/client/session.rs
@@ -2,9 +2,9 @@ use std::{ops::Deref, pin::Pin, sync::Arc, time::Duration};
use ahash::AHashSet;
use anyhow::{anyhow, ensure, Result};
+use beetle_metrics::{bitswap::BitswapMetrics, core::MRecorder, inc, record};
use cid::Cid;
use futures::{future, stream, StreamExt};
-use iroh_metrics::{bitswap::BitswapMetrics, core::MRecorder, inc, record};
use libp2p::PeerId;
use tokio::{
sync::oneshot,
diff --git a/iroh-bitswap/src/client/session/cid_queue.rs b/beetle-bitswap/src/client/session/cid_queue.rs
similarity index 100%
rename from iroh-bitswap/src/client/session/cid_queue.rs
rename to beetle-bitswap/src/client/session/cid_queue.rs
diff --git a/iroh-bitswap/src/client/session/peer_response_tracker.rs b/beetle-bitswap/src/client/session/peer_response_tracker.rs
similarity index 100%
rename from iroh-bitswap/src/client/session/peer_response_tracker.rs
rename to beetle-bitswap/src/client/session/peer_response_tracker.rs
diff --git a/iroh-bitswap/src/client/session/sent_want_blocks_tracker.rs b/beetle-bitswap/src/client/session/sent_want_blocks_tracker.rs
similarity index 100%
rename from iroh-bitswap/src/client/session/sent_want_blocks_tracker.rs
rename to beetle-bitswap/src/client/session/sent_want_blocks_tracker.rs
diff --git a/iroh-bitswap/src/client/session/session_want_sender.rs b/beetle-bitswap/src/client/session/session_want_sender.rs
similarity index 99%
rename from iroh-bitswap/src/client/session/session_want_sender.rs
rename to beetle-bitswap/src/client/session/session_want_sender.rs
index 858b142f2..44dc2683e 100644
--- a/iroh-bitswap/src/client/session/session_want_sender.rs
+++ b/beetle-bitswap/src/client/session/session_want_sender.rs
@@ -2,9 +2,9 @@ use std::cmp::Ordering;
use ahash::{AHashMap, AHashSet};
use anyhow::Result;
+use beetle_metrics::core::MRecorder;
+use beetle_metrics::{bitswap::BitswapMetrics, inc};
use cid::Cid;
-use iroh_metrics::core::MRecorder;
-use iroh_metrics::{bitswap::BitswapMetrics, inc};
use libp2p::PeerId;
use tokio::{sync::oneshot, task::JoinHandle};
use tracing::{debug, error, info, warn};
diff --git a/iroh-bitswap/src/client/session/session_wants.rs b/beetle-bitswap/src/client/session/session_wants.rs
similarity index 100%
rename from iroh-bitswap/src/client/session/session_wants.rs
rename to beetle-bitswap/src/client/session/session_wants.rs
diff --git a/iroh-bitswap/src/client/session_interest_manager.rs b/beetle-bitswap/src/client/session_interest_manager.rs
similarity index 100%
rename from iroh-bitswap/src/client/session_interest_manager.rs
rename to beetle-bitswap/src/client/session_interest_manager.rs
diff --git a/iroh-bitswap/src/client/session_manager.rs b/beetle-bitswap/src/client/session_manager.rs
similarity index 99%
rename from iroh-bitswap/src/client/session_manager.rs
rename to beetle-bitswap/src/client/session_manager.rs
index 9b843e914..32c399cd2 100644
--- a/iroh-bitswap/src/client/session_manager.rs
+++ b/beetle-bitswap/src/client/session_manager.rs
@@ -8,9 +8,9 @@ use std::{
use ahash::AHashMap;
use anyhow::{anyhow, Result};
+use beetle_metrics::{bitswap::BitswapMetrics, core::MRecorder, inc};
use cid::Cid;
use futures::FutureExt;
-use iroh_metrics::{bitswap::BitswapMetrics, core::MRecorder, inc};
use libp2p::PeerId;
use tokio::sync::RwLock;
use tracing::debug;
diff --git a/iroh-bitswap/src/client/wantlist.rs b/beetle-bitswap/src/client/wantlist.rs
similarity index 100%
rename from iroh-bitswap/src/client/wantlist.rs
rename to beetle-bitswap/src/client/wantlist.rs
diff --git a/iroh-bitswap/src/error.rs b/beetle-bitswap/src/error.rs
similarity index 100%
rename from iroh-bitswap/src/error.rs
rename to beetle-bitswap/src/error.rs
diff --git a/iroh-bitswap/src/handler.rs b/beetle-bitswap/src/handler.rs
similarity index 73%
rename from iroh-bitswap/src/handler.rs
rename to beetle-bitswap/src/handler.rs
index 0cff541d4..68605ad17 100644
--- a/iroh-bitswap/src/handler.rs
+++ b/beetle-bitswap/src/handler.rs
@@ -6,12 +6,12 @@ use std::{
};
use asynchronous_codec::Framed;
+use beetle_metrics::{bitswap::BitswapMetrics, core::MRecorder, inc};
use futures::StreamExt;
use futures::{
prelude::*,
stream::{BoxStream, SelectAll},
};
-use iroh_metrics::{bitswap::BitswapMetrics, core::MRecorder, inc};
use libp2p::core::{
muxing::SubstreamBox,
upgrade::{InboundUpgrade, NegotiationError, OutboundUpgrade, UpgradeError},
@@ -173,65 +173,124 @@ impl ConnectionHandler for BitswapHandler {
self.listen_protocol.clone()
}
- fn inject_fully_negotiated_inbound(
- &mut self,
- substream: >::Output,
- _info: Self::InboundOpenInfo,
- ) {
- let protocol_id = substream.codec().protocol;
- if self.protocol.is_none() {
- self.protocol = Some(protocol_id);
+ fn map_in_event(
+ self,
+ map: TMap,
+ ) -> libp2p::swarm::handler::MapInEvent
+ where
+ Self: Sized,
+ TMap: Fn(&TNewIn) -> Option<&Self::InEvent>,
+ {
+ libp2p::swarm::handler::MapInEvent {
+ inner: self,
+ map,
+ marker: None,
}
-
- trace!("New inbound substream request: {:?}", protocol_id);
- self.inbound_substreams
- .push(Box::pin(inbound_substream(substream)));
}
- fn inject_fully_negotiated_outbound(
- &mut self,
- substream: >::Output,
- message: Self::OutboundOpenInfo,
- ) {
- let protocol_id = substream.codec().protocol;
- if self.protocol.is_none() {
- self.protocol = Some(protocol_id);
- }
-
- trace!("New outbound substream: {:?}", protocol_id);
- self.outbound_substreams
- .push(Box::pin(outbound_substream(substream, message)));
+ fn map_out_event(
+ self,
+ map: TMap,
+ ) -> libp2p::swarm::handler::MapOutEvent
+ where
+ Self: Sized,
+ TMap: FnMut(Self::OutEvent) -> TNewOut,
+ {
}
- fn inject_event(&mut self, message: BitswapHandlerIn) {
- match message {
- BitswapHandlerIn::Message(m, response) => {
- self.send_queue.push_back((m, response));
+ fn on_behaviour_event(&mut self, _event: Self::InEvent) {}
- // sending a message, reset keepalive
- self.keep_alive = KeepAlive::Until(Instant::now() + self.idle_timeout);
- }
- BitswapHandlerIn::Protect => {
- self.keep_alive = KeepAlive::Yes;
- }
- BitswapHandlerIn::Unprotect => {
- self.keep_alive =
- KeepAlive::Until(Instant::now() + Duration::from_secs(INITIAL_KEEP_ALIVE));
- }
- }
- }
-
- fn inject_dial_upgrade_error(
+ fn on_connection_event(
&mut self,
- _: Self::OutboundOpenInfo,
- e: ConnectionHandlerUpgrErr<
- >::Error,
+ event: libp2p::swarm::handler::ConnectionEvent<
+ Self::InboundProtocol,
+ Self::OutboundProtocol,
+ Self::InboundOpenInfo,
+ Self::OutboundOpenInfo,
>,
) {
- warn!("Dial upgrade error {:?}", e);
- self.upgrade_errors.push_back(e);
}
+ fn select(
+ self,
+ other: TProto2,
+ ) -> libp2p::swarm::ConnectionHandlerSelect
+ where
+ Self: Sized,
+ {
+ return self;
+ }
+
+ // fn map_in_event(
+ // self,
+ // map: TMap,
+ // ) -> libp2p::swarm::handler::MapInEvent
+ // where
+ // Self: Sized,
+ // TMap: Fn(&TNewIn) -> Option<&Self::InEvent>,
+ // {
+ // libp2p::swarm::handler::MapInEvent::new(self, map)
+ // }
+
+ // fn inject_fully_negotiated_inbound(
+ // &mut self,
+ // substream: >::Output,
+ // _info: Self::InboundOpenInfo,
+ // ) {
+ // let protocol_id = substream.codec().protocol;
+ // if self.protocol.is_none() {
+ // self.protocol = Some(protocol_id);
+ // }
+
+ // trace!("New inbound substream request: {:?}", protocol_id);
+ // self.inbound_substreams
+ // .push(Box::pin(inbound_substream(substream)));
+ // }
+
+ // fn inject_fully_negotiated_outbound(
+ // &mut self,
+ // substream: >::Output,
+ // message: Self::OutboundOpenInfo,
+ // ) {
+ // let protocol_id = substream.codec().protocol;
+ // if self.protocol.is_none() {
+ // self.protocol = Some(protocol_id);
+ // }
+
+ // trace!("New outbound substream: {:?}", protocol_id);
+ // self.outbound_substreams
+ // .push(Box::pin(outbound_substream(substream, message)));
+ // }
+
+ // fn inject_event(&mut self, message: BitswapHandlerIn) {
+ // match message {
+ // BitswapHandlerIn::Message(m, response) => {
+ // self.send_queue.push_back((m, response));
+
+ // // sending a message, reset keepalive
+ // self.keep_alive = KeepAlive::Until(Instant::now() + self.idle_timeout);
+ // }
+ // BitswapHandlerIn::Protect => {
+ // self.keep_alive = KeepAlive::Yes;
+ // }
+ // BitswapHandlerIn::Unprotect => {
+ // self.keep_alive =
+ // KeepAlive::Until(Instant::now() + Duration::from_secs(INITIAL_KEEP_ALIVE));
+ // }
+ // }
+ // }
+
+ // fn inject_dial_upgrade_error(
+ // &mut self,
+ // _: Self::OutboundOpenInfo,
+ // e: ConnectionHandlerUpgrErr<
+ // >::Error,
+ // >,
+ // ) {
+ // warn!("Dial upgrade error {:?}", e);
+ // self.upgrade_errors.push_back(e);
+ // }
+
fn connection_keep_alive(&self) -> KeepAlive {
self.keep_alive
}
diff --git a/iroh-bitswap/src/lib.rs b/beetle-bitswap/src/lib.rs
similarity index 83%
rename from iroh-bitswap/src/lib.rs
rename to beetle-bitswap/src/lib.rs
index ae1b3f1ba..9144a34d8 100644
--- a/iroh-bitswap/src/lib.rs
+++ b/beetle-bitswap/src/lib.rs
@@ -12,13 +12,13 @@ use std::time::{Duration, Instant};
use ahash::AHashMap;
use anyhow::Result;
use async_trait::async_trait;
+use beetle_metrics::record;
+use beetle_metrics::{bitswap::BitswapMetrics, core::MRecorder, inc};
use cid::Cid;
use handler::{BitswapHandler, HandlerEvent};
-use iroh_metrics::record;
-use iroh_metrics::{bitswap::BitswapMetrics, core::MRecorder, inc};
-use libp2p::core::connection::ConnectionId;
use libp2p::core::ConnectedPoint;
use libp2p::swarm::dial_opts::DialOpts;
+use libp2p::swarm::ConnectionId;
use libp2p::swarm::{
CloseConnection, DialError, IntoConnectionHandler, NetworkBehaviour, NetworkBehaviourAction,
NotifyHandler, PollParameters,
@@ -410,101 +410,153 @@ impl NetworkBehaviour for Bitswap {
Default::default()
}
- fn inject_connection_established(
+ // fn inject_connection_established(
+ // &mut self,
+ // peer_id: &PeerId,
+ // connection: &ConnectionId,
+ // _endpoint: &ConnectedPoint,
+ // _failed_addresses: Option<&Vec>,
+ // other_established: usize,
+ // ) {
+ // trace!("connection established {} ({})", peer_id, other_established);
+ // self.set_peer_state(peer_id, PeerState::Connected(*connection));
+ // self.pause_dialing = false;
+ // }
+
+ fn handle_established_inbound_connection(
&mut self,
- peer_id: &PeerId,
- connection: &ConnectionId,
- _endpoint: &ConnectedPoint,
- _failed_addresses: Option<&Vec>,
- other_established: usize,
- ) {
- trace!("connection established {} ({})", peer_id, other_established);
- self.set_peer_state(peer_id, PeerState::Connected(*connection));
+ connection_id: ConnectionId,
+ peer: PeerId,
+ local_addr: &Multiaddr,
+ remote_addr: &Multiaddr,
+ ) -> std::result::Result, libp2p::swarm::ConnectionDenied> {
+ trace!("connection established {} (inbound)", peer);
+ self.set_peer_state(&peer, PeerState::Connected(connection_id));
self.pause_dialing = false;
+ Ok(self.new_handler())
}
- fn inject_connection_closed(
+ fn handle_established_outbound_connection(
&mut self,
- peer_id: &PeerId,
- _conn: &ConnectionId,
- _endpoint: &ConnectedPoint,
- _handler: ::Handler,
- remaining_established: usize,
- ) {
+ connection_id: ConnectionId,
+ peer: PeerId,
+ addr: &Multiaddr,
+ role_override: libp2p::core::Endpoint,
+ ) -> std::result::Result, libp2p::swarm::ConnectionDenied> {
+ trace!("connection established {} (outbound)", peer);
+ self.set_peer_state(&peer, PeerState::Connected(connection_id));
self.pause_dialing = false;
- if remaining_established == 0 {
- // Last connection, close it
- self.set_peer_state(peer_id, PeerState::Disconnected)
- }
- }
-
- fn inject_dial_failure(
+ Ok(self.new_handler())
+ }
+
+ // fn inject_connection_closed(
+ // &mut self,
+ // peer_id: &PeerId,
+ // _conn: &ConnectionId,
+ // _endpoint: &ConnectedPoint,
+ // _handler: ::Handler,
+ // remaining_established: usize,
+ // ) {
+ // self.pause_dialing = false;
+ // if remaining_established == 0 {
+ // // Last connection, close it
+ // self.set_peer_state(peer_id, PeerState::Disconnected)
+ // }
+ // }
+
+ // fn inject_dial_failure(
+ // &mut self,
+ // peer_id: Option,
+ // _handler: Self::ConnectionHandler,
+ // error: &DialError,
+ // ) {
+ // if let Some(peer_id) = peer_id {
+ // if let DialError::ConnectionLimit(_) = error {
+ // self.pause_dialing = true;
+ // self.set_peer_state(&peer_id, PeerState::Disconnected);
+ // } else {
+ // self.set_peer_state(&peer_id, PeerState::DialFailure(Instant::now()));
+ // }
+
+ // trace!("inject_dial_failure {}, {:?}", peer_id, error);
+ // let dials = &mut self.dials.lock().unwrap();
+ // if let Some(mut dials) = dials.remove(&peer_id) {
+ // while let Some((_id, sender)) = dials.pop() {
+ // let _ = sender.send(Err(error.to_string()));
+ // }
+ // }
+ // }
+ // }
+
+ // fn on_swarm_event(&mut self, event: libp2p::swarm::FromSwarm) {
+
+ // }
+
+ fn handle_pending_inbound_connection(
&mut self,
- peer_id: Option,
- _handler: Self::ConnectionHandler,
- error: &DialError,
- ) {
- if let Some(peer_id) = peer_id {
- if let DialError::ConnectionLimit(_) = error {
- self.pause_dialing = true;
- self.set_peer_state(&peer_id, PeerState::Disconnected);
- } else {
- self.set_peer_state(&peer_id, PeerState::DialFailure(Instant::now()));
- }
-
- trace!("inject_dial_failure {}, {:?}", peer_id, error);
- let dials = &mut self.dials.lock().unwrap();
- if let Some(mut dials) = dials.remove(&peer_id) {
- while let Some((_id, sender)) = dials.pop() {
- let _ = sender.send(Err(error.to_string()));
- }
- }
- }
+ _connection_id: ConnectionId,
+ _local_addr: &Multiaddr,
+ _remote_addr: &Multiaddr,
+ ) -> std::result::Result<(), libp2p::swarm::ConnectionDenied> {
+ Ok(())
}
- fn inject_event(&mut self, peer_id: PeerId, connection: ConnectionId, event: HandlerEvent) {
- // trace!("inject_event from {}, event: {:?}", peer_id, event);
- match event {
- HandlerEvent::Connected { protocol } => {
- self.set_peer_state(&peer_id, PeerState::Responsive(connection, protocol));
- {
- let dials = &mut *self.dials.lock().unwrap();
- if let Some(mut dials) = dials.remove(&peer_id) {
- while let Some((id, sender)) = dials.pop() {
- if let Err(err) = sender.send(Ok((connection, Some(protocol)))) {
- warn!("dial:{}: failed to send dial response {:?}", id, err)
- }
- }
- }
- }
- }
- HandlerEvent::ProtocolNotSuppported => {
- self.set_peer_state(&peer_id, PeerState::Unresponsive);
-
- let dials = &mut *self.dials.lock().unwrap();
- if let Some(mut dials) = dials.remove(&peer_id) {
- while let Some((id, sender)) = dials.pop() {
- if let Err(err) = sender.send(Err("protocol not supported".into())) {
- warn!("dial:{} failed to send dial response {:?}", id, err)
- }
- }
- }
- }
- HandlerEvent::Message {
- mut message,
- protocol,
- } => {
- // mark peer as responsive
- self.set_peer_state(&peer_id, PeerState::Responsive(connection, protocol));
-
- message.verify_blocks();
- self.receive_message(peer_id, message);
- }
- HandlerEvent::FailedToSendMessage { .. } => {
- // Handle
- }
+ fn handle_pending_outbound_connection(
+ &mut self,
+ _connection_id: ConnectionId,
+ maybe_peer: Option,
+ _addresses: &[Multiaddr],
+ _effective_role: libp2p::core::Endpoint,
+ ) -> std::result::Result, libp2p::swarm::ConnectionDenied> {
+ if let Some(peer) = maybe_peer {
+ self.set_peer_state(&peer, PeerState::Disconnected);
}
- }
+ Ok(Vec::new())
+ }
+
+ // fn inject_event(&mut self, peer_id: PeerId, connection: ConnectionId, event: HandlerEvent) {
+ // // trace!("inject_event from {}, event: {:?}", peer_id, event);
+ // match event {
+ // HandlerEvent::Connected { protocol } => {
+ // self.set_peer_state(&peer_id, PeerState::Responsive(connection, protocol));
+ // {
+ // let dials = &mut *self.dials.lock().unwrap();
+ // if let Some(mut dials) = dials.remove(&peer_id) {
+ // while let Some((id, sender)) = dials.pop() {
+ // if let Err(err) = sender.send(Ok((connection, Some(protocol)))) {
+ // warn!("dial:{}: failed to send dial response {:?}", id, err)
+ // }
+ // }
+ // }
+ // }
+ // }
+ // HandlerEvent::ProtocolNotSuppported => {
+ // self.set_peer_state(&peer_id, PeerState::Unresponsive);
+
+ // let dials = &mut *self.dials.lock().unwrap();
+ // if let Some(mut dials) = dials.remove(&peer_id) {
+ // while let Some((id, sender)) = dials.pop() {
+ // if let Err(err) = sender.send(Err("protocol not supported".into())) {
+ // warn!("dial:{} failed to send dial response {:?}", id, err)
+ // }
+ // }
+ // }
+ // }
+ // HandlerEvent::Message {
+ // mut message,
+ // protocol,
+ // } => {
+ // // mark peer as responsive
+ // self.set_peer_state(&peer_id, PeerState::Responsive(connection, protocol));
+
+ // message.verify_blocks();
+ // self.receive_message(peer_id, message);
+ // }
+ // HandlerEvent::FailedToSendMessage { .. } => {
+ // // Handle
+ // }
+ // }
+ // }
#[allow(clippy::type_complexity)]
fn poll(
diff --git a/iroh-bitswap/src/message.rs b/beetle-bitswap/src/message.rs
similarity index 99%
rename from iroh-bitswap/src/message.rs
rename to beetle-bitswap/src/message.rs
index 92248192d..cb0917187 100644
--- a/iroh-bitswap/src/message.rs
+++ b/beetle-bitswap/src/message.rs
@@ -219,7 +219,7 @@ impl BitswapMessage {
pub fn verify_blocks(&mut self) {
self.blocks.retain(|_, block| {
let now = Instant::now();
- let is_valid = iroh_util::verify_hash(&block.cid, &block.data);
+ let is_valid = beetle_util::verify_hash(&block.cid, &block.data);
trace!("block validated in {}ms", now.elapsed().as_millis());
match is_valid {
Some(true) => {
diff --git a/iroh/src/metrics.rs b/beetle-bitswap/src/metrics.rs
similarity index 89%
rename from iroh/src/metrics.rs
rename to beetle-bitswap/src/metrics.rs
index 339f97d08..a6017b40a 100644
--- a/iroh/src/metrics.rs
+++ b/beetle-bitswap/src/metrics.rs
@@ -1,4 +1,4 @@
-use iroh_metrics::config::Config as MetricsConfig;
+use beetle_metrics::config::Config as MetricsConfig;
pub fn metrics_config_with_compile_time_info(cfg: MetricsConfig) -> MetricsConfig {
// compile time configuration
diff --git a/iroh-bitswap/src/network.rs b/beetle-bitswap/src/network.rs
similarity index 98%
rename from iroh-bitswap/src/network.rs
rename to beetle-bitswap/src/network.rs
index 1180e9b21..df868c276 100644
--- a/iroh-bitswap/src/network.rs
+++ b/beetle-bitswap/src/network.rs
@@ -6,12 +6,13 @@ use std::{
time::Duration,
};
-use anyhow::{anyhow, bail, Context as _, Result};
+use anyhow::{anyhow, bail, Result};
+use beetle_metrics::{bitswap::BitswapMetrics, inc};
+use beetle_metrics::{core::MRecorder, record};
use cid::Cid;
use futures::Stream;
-use iroh_metrics::{bitswap::BitswapMetrics, inc};
-use iroh_metrics::{core::MRecorder, record};
-use libp2p::{core::connection::ConnectionId, PeerId};
+use libp2p::swarm::ConnectionId;
+use libp2p::PeerId;
use tokio::sync::{mpsc, oneshot};
use tracing::{debug, error, info, trace};
diff --git a/iroh-bitswap/src/peer_task_queue.rs b/beetle-bitswap/src/peer_task_queue.rs
similarity index 100%
rename from iroh-bitswap/src/peer_task_queue.rs
rename to beetle-bitswap/src/peer_task_queue.rs
diff --git a/iroh-bitswap/src/peer_task_queue/peer_task.rs b/beetle-bitswap/src/peer_task_queue/peer_task.rs
similarity index 100%
rename from iroh-bitswap/src/peer_task_queue/peer_task.rs
rename to beetle-bitswap/src/peer_task_queue/peer_task.rs
diff --git a/iroh-bitswap/src/peer_task_queue/peer_tracker.rs b/beetle-bitswap/src/peer_task_queue/peer_tracker.rs
similarity index 100%
rename from iroh-bitswap/src/peer_task_queue/peer_tracker.rs
rename to beetle-bitswap/src/peer_task_queue/peer_tracker.rs
diff --git a/iroh-bitswap/src/prefix.rs b/beetle-bitswap/src/prefix.rs
similarity index 100%
rename from iroh-bitswap/src/prefix.rs
rename to beetle-bitswap/src/prefix.rs
diff --git a/iroh-bitswap/src/protocol.rs b/beetle-bitswap/src/protocol.rs
similarity index 100%
rename from iroh-bitswap/src/protocol.rs
rename to beetle-bitswap/src/protocol.rs
diff --git a/iroh-bitswap/src/server.rs b/beetle-bitswap/src/server.rs
similarity index 98%
rename from iroh-bitswap/src/server.rs
rename to beetle-bitswap/src/server.rs
index c43feb305..00310c92f 100644
--- a/iroh-bitswap/src/server.rs
+++ b/beetle-bitswap/src/server.rs
@@ -1,12 +1,12 @@
use std::sync::Arc;
use anyhow::{anyhow, Result};
+use beetle_metrics::bitswap::BitswapMetrics;
+use beetle_metrics::core::MRecorder;
+use beetle_metrics::inc;
use cid::Cid;
use futures::future::BoxFuture;
use futures::FutureExt;
-use iroh_metrics::bitswap::BitswapMetrics;
-use iroh_metrics::core::MRecorder;
-use iroh_metrics::inc;
use libp2p::PeerId;
use tokio::sync::{mpsc, oneshot, Mutex};
use tokio::task::JoinHandle;
@@ -58,8 +58,8 @@ pub struct Stat {
#[derive(Debug, Clone)]
pub struct Server {
- // sent_histogram -> iroh-metrics
- // send_time_histogram -> iroh-metric
+ // sent_histogram -> beetle-metrics
+ // send_time_histogram -> beetle-metric
/// Decision engine for which who to send which blocks to.
engine: Arc>,
inner: Arc,
diff --git a/iroh-bitswap/src/server/blockstore_manager.rs b/beetle-bitswap/src/server/blockstore_manager.rs
similarity index 96%
rename from iroh-bitswap/src/server/blockstore_manager.rs
rename to beetle-bitswap/src/server/blockstore_manager.rs
index 318a9411b..cd08354c9 100644
--- a/iroh-bitswap/src/server/blockstore_manager.rs
+++ b/beetle-bitswap/src/server/blockstore_manager.rs
@@ -9,8 +9,8 @@ use crate::{block::Block, Store};
#[derive(Debug)]
pub struct BlockstoreManager {
store: S,
- // pending_gauge -> iroh-metrics
- // active_gauge -> iroh-metrics
+ // pending_gauge -> beetle-metrics
+ // active_gauge -> beetle-metrics
}
impl BlockstoreManager {
diff --git a/iroh-bitswap/src/server/decision.rs b/beetle-bitswap/src/server/decision.rs
similarity index 99%
rename from iroh-bitswap/src/server/decision.rs
rename to beetle-bitswap/src/server/decision.rs
index 1b832032c..b1a2ececf 100644
--- a/iroh-bitswap/src/server/decision.rs
+++ b/beetle-bitswap/src/server/decision.rs
@@ -2,8 +2,8 @@ use std::{fmt::Debug, sync::Arc, time::Duration};
use ahash::{AHashMap, AHashSet};
use anyhow::{anyhow, Result};
+use beetle_metrics::{bitswap::BitswapMetrics, inc, record};
use cid::Cid;
-use iroh_metrics::{bitswap::BitswapMetrics, inc, record};
use libp2p::PeerId;
use tokio::{
sync::{oneshot, Mutex, Notify, RwLock},
@@ -26,7 +26,7 @@ use super::{
score_ledger::{DefaultScoreLedger, Receipt},
task_merger::{TaskData, TaskMerger},
};
-use iroh_metrics::core::MRecorder;
+use beetle_metrics::core::MRecorder;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct TaskInfo {
@@ -111,8 +111,8 @@ pub struct Engine {
/// replace a want-have with a want-block.
max_block_size_replace_has_with_block: usize,
send_dont_haves: bool,
- // pending_gauge -> iroh-metrics
- // active_guage -> iroh-metrics
+ // pending_gauge -> beetle-metrics
+ // active_guage -> beetle-metrics
metrics_update_counter: Mutex, // ?? atomic
peer_block_request_filter: Option>,
/// List of handles to worker threads.
diff --git a/iroh-bitswap/src/server/ewma.rs b/beetle-bitswap/src/server/ewma.rs
similarity index 100%
rename from iroh-bitswap/src/server/ewma.rs
rename to beetle-bitswap/src/server/ewma.rs
diff --git a/iroh-bitswap/src/server/ledger.rs b/beetle-bitswap/src/server/ledger.rs
similarity index 100%
rename from iroh-bitswap/src/server/ledger.rs
rename to beetle-bitswap/src/server/ledger.rs
diff --git a/iroh-bitswap/src/server/peer_ledger.rs b/beetle-bitswap/src/server/peer_ledger.rs
similarity index 100%
rename from iroh-bitswap/src/server/peer_ledger.rs
rename to beetle-bitswap/src/server/peer_ledger.rs
diff --git a/iroh-bitswap/src/server/score_ledger.rs b/beetle-bitswap/src/server/score_ledger.rs
similarity index 99%
rename from iroh-bitswap/src/server/score_ledger.rs
rename to beetle-bitswap/src/server/score_ledger.rs
index e26a6ae05..b03ede927 100644
--- a/iroh-bitswap/src/server/score_ledger.rs
+++ b/beetle-bitswap/src/server/score_ledger.rs
@@ -6,8 +6,8 @@ use std::{
use ahash::AHashMap;
use anyhow::{anyhow, Result};
-use iroh_metrics::core::MRecorder;
-use iroh_metrics::{bitswap::BitswapMetrics, inc};
+use beetle_metrics::core::MRecorder;
+use beetle_metrics::{bitswap::BitswapMetrics, inc};
use libp2p::PeerId;
use tokio::{
sync::{oneshot, RwLock},
diff --git a/iroh-bitswap/src/server/task_merger.rs b/beetle-bitswap/src/server/task_merger.rs
similarity index 100%
rename from iroh-bitswap/src/server/task_merger.rs
rename to beetle-bitswap/src/server/task_merger.rs
diff --git a/iroh-car/Cargo.toml b/beetle-car/Cargo.toml
similarity index 89%
rename from iroh-car/Cargo.toml
rename to beetle-car/Cargo.toml
index 4a4be28fe..a51caaed4 100644
--- a/iroh-car/Cargo.toml
+++ b/beetle-car/Cargo.toml
@@ -1,7 +1,7 @@
[package]
-name = "iroh-car"
+name = "beetle-car"
authors = ["dignifiedquire "]
-description = "Implementation the car files for iroh"
+description = "Implementation the car files for beetle"
version.workspace = true
edition.workspace = true
license.workspace = true
diff --git a/iroh-car/README.md b/beetle-car/README.md
similarity index 55%
rename from iroh-car/README.md
rename to beetle-car/README.md
index a46c65b4d..71accc6f0 100644
--- a/iroh-car/README.md
+++ b/beetle-car/README.md
@@ -1,11 +1,11 @@
-# iroh-car
+# beetle-car
-[](https://crates.io/crates/iroh-car)
-[](https://docs.rs/iroh-car)
-[](../LICENSE-MIT)
-[](https://github.com/n0-computer/iroh/actions?query=workflow%3A%22Continuous+integration%22)
+[](https://crates.io/crates/beetle-car)
+[](https://docs.rs/beetle-car)
+[](../LICENSE-MIT)
+[](https://github.com/n0-computer/beetle/actions?query=workflow%3A%22Continuous+integration%22)
-[CAR file](https://ipld.io/specs/transport/car/) support for iroh. "CAR" stands
+[CAR file](https://ipld.io/specs/transport/car/) support for beetle. "CAR" stands
for Content Addressable aRchives. A CAR file typically contains a serialized
representation of an [IPLD
DAG](https://docs.ipfs.tech/concepts/merkle-dag/#merkle-directed-acyclic-graphs-dags),
@@ -13,7 +13,7 @@ though is general enough to contain arbitrary IPLD blocks.
Currently supports only [v1](https://ipld.io/specs/transport/car/carv1/).
-It is part of [iroh](https://github.com/n0-computer/iroh).
+It is part of [beetle](https://github.com/n0-computer/beetle).
## License
diff --git a/iroh-car/src/error.rs b/beetle-car/src/error.rs
similarity index 100%
rename from iroh-car/src/error.rs
rename to beetle-car/src/error.rs
diff --git a/iroh-car/src/header.rs b/beetle-car/src/header.rs
similarity index 100%
rename from iroh-car/src/header.rs
rename to beetle-car/src/header.rs
diff --git a/iroh-car/src/lib.rs b/beetle-car/src/lib.rs
similarity index 100%
rename from iroh-car/src/lib.rs
rename to beetle-car/src/lib.rs
diff --git a/iroh-car/src/reader.rs b/beetle-car/src/reader.rs
similarity index 100%
rename from iroh-car/src/reader.rs
rename to beetle-car/src/reader.rs
diff --git a/iroh-car/src/util.rs b/beetle-car/src/util.rs
similarity index 100%
rename from iroh-car/src/util.rs
rename to beetle-car/src/util.rs
diff --git a/iroh-car/src/writer.rs b/beetle-car/src/writer.rs
similarity index 100%
rename from iroh-car/src/writer.rs
rename to beetle-car/src/writer.rs
diff --git a/iroh-car/tests/car_file_test.rs b/beetle-car/tests/car_file_test.rs
similarity index 99%
rename from iroh-car/tests/car_file_test.rs
rename to beetle-car/tests/car_file_test.rs
index 28340d48e..c8ce0136b 100644
--- a/iroh-car/tests/car_file_test.rs
+++ b/beetle-car/tests/car_file_test.rs
@@ -1,5 +1,5 @@
+use beetle_car::*;
use futures::TryStreamExt;
-use iroh_car::*;
use tokio::fs::{self, File};
use tokio::io::BufReader;
diff --git a/iroh-car/tests/carv1_basic.car b/beetle-car/tests/carv1_basic.car
similarity index 100%
rename from iroh-car/tests/carv1_basic.car
rename to beetle-car/tests/carv1_basic.car
diff --git a/iroh-car/tests/testv1.car b/beetle-car/tests/testv1.car
similarity index 100%
rename from iroh-car/tests/testv1.car
rename to beetle-car/tests/testv1.car
diff --git a/iroh-embed/Cargo.toml b/beetle-embed/Cargo.toml
similarity index 52%
rename from iroh-embed/Cargo.toml
rename to beetle-embed/Cargo.toml
index 7738d75d6..b2f9ec415 100644
--- a/iroh-embed/Cargo.toml
+++ b/beetle-embed/Cargo.toml
@@ -1,7 +1,7 @@
[package]
-name = "iroh-embed"
+name = "beetle-embed"
authors = ["Floris Bruynooghe "]
-description = "Embedable iroh library"
+description = "Embedable beetle library"
version.workspace = true
edition.workspace = true
license.workspace = true
@@ -11,16 +11,16 @@ rust-version.workspace = true
[dependencies]
anyhow.workspace = true
futures.workspace = true
-iroh-api.workspace = true
-iroh-gateway.workspace = true
-iroh-metrics.workspace = true
-iroh-one.workspace = true
-iroh-p2p.workspace = true
-iroh-resolver.workspace = true
-iroh-rpc-client.workspace = true
-iroh-rpc-types.workspace = true
-iroh-store.workspace = true
-iroh-unixfs.workspace = true
+beetle-api.workspace = true
+beetle-gateway.workspace = true
+beetle-metrics.workspace = true
+beetle-one.workspace = true
+beetle-p2p.workspace = true
+beetle-resolver.workspace = true
+beetle-rpc-client.workspace = true
+beetle-rpc-types.workspace = true
+beetle-store.workspace = true
+beetle-unixfs.workspace = true
reqwest = { workspace = true, features = ["rustls-tls", "json"] }
tokio.workspace = true
diff --git a/iroh-embed/README.md b/beetle-embed/README.md
similarity index 50%
rename from iroh-embed/README.md
rename to beetle-embed/README.md
index 547259dd7..19e3da6d8 100644
--- a/iroh-embed/README.md
+++ b/beetle-embed/README.md
@@ -1,12 +1,12 @@
-# iroh embed
+# beetle embed
-[](https://crates.io/crates/iroh-embed)
-[](https://docs.rs/iroh-embed)
-[](../LICENSE-MIT)
-[](https://github.com/n0-computer/iroh/actions?query=workflow%3A%22Continuous+integration%22)
+[](https://crates.io/crates/beetle-embed)
+[](https://docs.rs/beetle-embed)
+[](../LICENSE-MIT)
+[](https://github.com/n0-computer/beetle/actions?query=workflow%3A%22Continuous+integration%22)
This provides an API to embed
-[iroh](https://github.com/n0-computer/iroh) into other applications,
+[beetle](https://github.com/n0-computer/beetle) into other applications,
allowing them to interact directly with [IPFS](https://ipfs.tech/).
## License
diff --git a/iroh-embed/src/lib.rs b/beetle-embed/src/lib.rs
similarity index 81%
rename from iroh-embed/src/lib.rs
rename to beetle-embed/src/lib.rs
index 9a09b17a8..096d52e82 100644
--- a/iroh-embed/src/lib.rs
+++ b/beetle-embed/src/lib.rs
@@ -1,10 +1,10 @@
-//! Using iroh's peer-to-peer IPFS as a library.
+//! Using beetle's peer-to-peer IPFS as a library.
//!
-//! This crate supports embedding iroh in another application, enables running an IPFS node.
-//! By default the system will not interfere with any other IPFS node, iroh or otherwise, on
+//! This crate supports embedding beetle in another application, enables running an IPFS node.
+//! By default the system will not interfere with any other IPFS node, beetle or otherwise, on
//! the same host.
//!
-//! An iroh system consists of several services, depending on how the IPFS node should
+//! An beetle system consists of several services, depending on how the IPFS node should
//! behave not all of them may be needed:
//!
//! - The **store** service. Iroh needs somewhere to store data, currently only an on-disk
@@ -12,14 +12,14 @@
//! be available too.
//! - The **p2p** service. This service communicates with the wider IPFS network.
//! - The **gateway** service. This provides an HTTP gateway into IPFS. Currently not yet
-//! supported in iroh-embed.
+//! supported in beetle-embed.
//!
-//! The current work-in-progress version of iroh-embed only allows using both a store and
+//! The current work-in-progress version of beetle-embed only allows using both a store and
//! p2p service. Future combinations will become available as features are added.
//!
//! # Getting started
//!
-//! To create an iroh system you will need a few things:
+//! To create an beetle system you will need a few things:
//!
//! - Create a store service using [`RocksStoreService`].
//! - Create a p2p service using [`P2pService`] and hooking it up to your earlier created
@@ -30,28 +30,28 @@
//! An example is available in the repository under `examples/embed`.
use anyhow::{bail, Result};
-use iroh_rpc_client::Config as RpcClientConfig;
+use beetle_rpc_client::Config as RpcClientConfig;
-pub use iroh_api::Api;
-pub use iroh_p2p::Libp2pConfig;
-pub use iroh_unixfs::indexer::IndexerUrl;
+pub use beetle_api::Api;
+pub use beetle_p2p::Libp2pConfig;
+pub use beetle_unixfs::indexer::IndexerUrl;
pub use reqwest::Url;
-/// An address allowing internal communication with the iroh peer-to-peer service.
+/// An address allowing internal communication with the beetle peer-to-peer service.
///
/// This is only needed to wire up the several services together and should not be used to
/// communicate directly to the service.
///
/// Can be created from [`p2p::P2pService::addr`].
-pub use iroh_rpc_types::p2p::P2pAddr;
+pub use beetle_rpc_types::p2p::P2pAddr;
-/// An address allowing internal communication with the iroh store service.
+/// An address allowing internal communication with the beetle store service.
///
/// This is only needed to wire up the several services together and should not be used to
/// communicate directly to the service.
///
/// Can be created from [`store::RocksStoreService::addr`].
-pub use iroh_rpc_types::store::StoreAddr;
+pub use beetle_rpc_types::store::StoreAddr;
mod p2p;
mod store;
@@ -67,7 +67,7 @@ pub use store::RocksStoreService;
/// # Examples
///
/// ```no_run
-/// use iroh_embed::{Iroh, IrohBuilder, Libp2pConfig, P2pService, RocksStoreService};
+/// use beetle_embed::{Iroh, IrohBuilder, Libp2pConfig, P2pService, RocksStoreService};
/// use testdir::testdir;
/// # tokio_test::block_on(async {
/// let dir = testdir!();
@@ -78,7 +78,7 @@ pub use store::RocksStoreService;
/// "/ip4/0.0.0.0/udp/0/quic-v1".parse().unwrap(), // random port
/// ];
/// let p2p = P2pService::new(p2p_config, dir, store.addr()).await.unwrap();
-/// let _iroh: Iroh = IrohBuilder::new()
+/// let _beetle: Iroh = IrohBuilder::new()
/// .store(store)
/// .p2p(p2p)
/// .build()
@@ -130,7 +130,7 @@ impl IrohBuilder {
self
}
- /// Adds IPFS HTTP gateways as resolvers to the iroh system.
+ /// Adds IPFS HTTP gateways as resolvers to the beetle system.
///
/// IPFS HTTP gateways can be used to resolve IPFS content in addition to retrieving the
/// content from the IPFS peer-to-peer system.
@@ -140,12 +140,12 @@ impl IrohBuilder {
self
}
- /// Use the given IPFS indexer with this iroh system.
+ /// Use the given IPFS indexer with this beetle system.
///
/// An IPFS indexer keeps an index of CIDs and IPFS nodes which currently provide the
/// data for the CID.
///
- /// By default this uses the [`iroh_unixfs::indexer::CID_CONTACT`] indexer.
+ /// By default this uses the [`beetle_unixfs::indexer::CID_CONTACT`] indexer.
pub fn indexer(mut self, indexer: IndexerUrl) -> Self {
self.indexer = Some(indexer);
self
@@ -157,7 +157,7 @@ impl IrohBuilder {
self
}
- /// Builds the iroh system.
+ /// Builds the beetle system.
pub async fn build(self) -> Result {
// TODO: would be good if we can verify the p2p service is correctly hooked up to
// the store service.
@@ -180,7 +180,7 @@ impl IrohBuilder {
store_addr: Some(store.addr()),
channels: Some(1),
};
- let api_config = iroh_api::config::Config {
+ let api_config = beetle_api::config::Config {
rpc_client: rpc_config,
metrics: Default::default(),
http_resolvers,
@@ -192,9 +192,9 @@ impl IrohBuilder {
}
}
-/// The full iroh system.
+/// The full beetle system.
///
-/// This is constructed using [`IrohBuilder`]. Creating an iroh system will start various
+/// This is constructed using [`IrohBuilder`]. Creating an beetle system will start various
/// tokio tasks, which can be gracefully terminated again using [`Iroh::stop`] or they will
/// be aborted when dropping this struct.
///
@@ -207,7 +207,7 @@ pub struct Iroh {
}
impl Iroh {
- /// Returns a reference to the iroh API.
+ /// Returns a reference to the beetle API.
///
/// This API gives you some high level functionality using the built-in p2p and store
/// nodes as well as a few lower-level and p2p-specific functions.
@@ -215,7 +215,7 @@ impl Iroh {
&self.api
}
- /// Gracefully stop the iroh system.
+ /// Gracefully stop the beetle system.
pub async fn stop(self) -> Result<()> {
self.p2p.stop().await?;
self.store.stop().await?;
@@ -245,7 +245,7 @@ impl Iroh {
// .await
// .unwrap();
-// let iroh = IrohBuilder::new()
+// let beetle = IrohBuilder::new()
// .store(store)
// .p2p(p2p)
// .build()
@@ -254,7 +254,7 @@ impl Iroh {
// // TODO: call an API function, e.g. version would be good.
-// let res = dbg!(iroh.stop().await);
+// let res = dbg!(beetle.stop().await);
// assert!(res.is_ok());
// }
diff --git a/iroh-embed/src/p2p.rs b/beetle-embed/src/p2p.rs
similarity index 87%
rename from iroh-embed/src/p2p.rs
rename to beetle-embed/src/p2p.rs
index a35b2f12e..15c947f73 100644
--- a/iroh-embed/src/p2p.rs
+++ b/beetle-embed/src/p2p.rs
@@ -1,13 +1,13 @@
-//! The p2p service to use in an iroh system.
+//! The p2p service to use in an beetle system.
use std::path::PathBuf;
use anyhow::Result;
-use iroh_one::mem_p2p;
-use iroh_p2p::{Config as P2pConfig, Libp2pConfig};
-use iroh_rpc_types::p2p::P2pAddr;
-use iroh_rpc_types::store::StoreAddr;
-use iroh_rpc_types::Addr;
+use beetle_one::mem_p2p;
+use beetle_p2p::{Config as P2pConfig, Libp2pConfig};
+use beetle_rpc_types::p2p::P2pAddr;
+use beetle_rpc_types::store::StoreAddr;
+use beetle_rpc_types::Addr;
use tokio::task::JoinHandle;
// TODO:
@@ -15,9 +15,9 @@ use tokio::task::JoinHandle;
// - Need to allow configuring in memory keystore
// - make Lib2p2Config non_exhaustive and provide a builder
-/// The iroh peer-to-peer (p2p) service.
+/// The beetle peer-to-peer (p2p) service.
///
-/// An iroh system needs a p2p service to participate in the IPFS network.
+/// An beetle system needs a p2p service to participate in the IPFS network.
#[derive(Debug)]
pub struct P2pService {
task: JoinHandle<()>,
@@ -25,7 +25,7 @@ pub struct P2pService {
}
impl P2pService {
- /// Starts a new iroh peer-to-peer service.
+ /// Starts a new beetle peer-to-peer service.
///
/// This implicitly starts a task on the tokio runtime to manage the storage node.
///
@@ -53,7 +53,7 @@ impl P2pService {
/// Returns the internal RPC address of this p2p service.
///
- /// This can be used to connect this service to other iroh services, like the gateway
+ /// This can be used to connect this service to other beetle services, like the gateway
/// service.
pub fn addr(&self) -> P2pAddr {
self.addr.clone()
diff --git a/iroh-embed/src/store.rs b/beetle-embed/src/store.rs
similarity index 83%
rename from iroh-embed/src/store.rs
rename to beetle-embed/src/store.rs
index 1fc6a321b..be7afab48 100644
--- a/iroh-embed/src/store.rs
+++ b/beetle-embed/src/store.rs
@@ -1,17 +1,17 @@
-//! Store services to use in an iroh system.
+//! Store services to use in an beetle system.
use std::path::PathBuf;
use anyhow::Result;
-use iroh_one::mem_store;
-use iroh_rpc_types::store::StoreAddr;
-use iroh_rpc_types::Addr;
-use iroh_store::Config as StoreConfig;
+use beetle_one::mem_store;
+use beetle_rpc_types::store::StoreAddr;
+use beetle_rpc_types::Addr;
+use beetle_store::Config as StoreConfig;
use tokio::task::JoinHandle;
-/// A iroh store backed by an on-disk RocksDB.
+/// A beetle store backed by an on-disk RocksDB.
///
-/// An iroh system needs a store service for keeping local state and IPFS data. This one
+/// An beetle system needs a store service for keeping local state and IPFS data. This one
/// uses RocksDB in a directory on disk.
#[derive(Debug)]
pub struct RocksStoreService {
@@ -20,7 +20,7 @@ pub struct RocksStoreService {
}
impl RocksStoreService {
- /// Starts a new iroh Store service with RocksDB storage.
+ /// Starts a new beetle Store service with RocksDB storage.
///
/// This implicitly starts a task on the tokio runtime to manage the storage node.
pub async fn new(path: PathBuf) -> Result {
@@ -32,7 +32,7 @@ impl RocksStoreService {
/// Returns the internal RPC address of this store node.
///
- /// This is used by the other iroh services, like the p2p and gateway services, to use
+ /// This is used by the other beetle services, like the p2p and gateway services, to use
/// the store.
pub fn addr(&self) -> StoreAddr {
self.addr.clone()
diff --git a/iroh-gateway/Cargo.toml b/beetle-gateway/Cargo.toml
similarity index 85%
rename from iroh-gateway/Cargo.toml
rename to beetle-gateway/Cargo.toml
index 69f3c5a56..24ea0a577 100644
--- a/iroh-gateway/Cargo.toml
+++ b/beetle-gateway/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-name = "iroh-gateway"
+name = "beetle-gateway"
readme = "README.md"
description = "IPFS gateway"
version.workspace = true
@@ -28,13 +28,13 @@ http-body.workspace = true
http-serde.workspace = true
http.workspace = true
hyper.workspace = true
-iroh-car.workspace = true
-iroh-metrics = { workspace = true, features = ["gateway"] }
-iroh-resolver.workspace = true
-iroh-rpc-client.workspace = true
-iroh-rpc-types.workspace = true
-iroh-unixfs.workspace = true
-iroh-util.workspace = true
+beetle-car.workspace = true
+beetle-metrics = { workspace = true, features = ["gateway"] }
+beetle-resolver.workspace = true
+beetle-rpc-client.workspace = true
+beetle-rpc-types.workspace = true
+beetle-unixfs.workspace = true
+beetle-util.workspace = true
libp2p.workspace = true
mime.workspace = true
mime_classifier.workspace = true
@@ -64,5 +64,5 @@ urlencoding.workspace = true
testdir.workspace = true
[dev-dependencies]
-iroh-store.workspace = true
+beetle-store.workspace = true
tempfile.workspace = true
diff --git a/iroh-gateway/README.md b/beetle-gateway/README.md
similarity index 74%
rename from iroh-gateway/README.md
rename to beetle-gateway/README.md
index 2f0540e80..db5b97b44 100644
--- a/iroh-gateway/README.md
+++ b/beetle-gateway/README.md
@@ -1,12 +1,12 @@
-# iroh gateway
+# beetle gateway
-[](https://crates.io/crates/iroh-gateway)
-[](https://docs.rs/iroh-gateway)
-[](../LICENSE-MIT)
-[](https://github.com/n0-computer/iroh/actions?query=workflow%3A%22Continuous+integration%22)
+[](https://crates.io/crates/beetle-gateway)
+[](https://docs.rs/beetle-gateway)
+[](../LICENSE-MIT)
+[](https://github.com/n0-computer/beetle/actions?query=workflow%3A%22Continuous+integration%22)
A Rust implementation of an [IPFS gateway](https://docs.ipfs.tech/concepts/ipfs-gateway/) based on
-[iroh](https://github.com/n0-computer/iroh). An IPFS gateway allows you to
+[beetle](https://github.com/n0-computer/beetle). An IPFS gateway allows you to
access content on the IPFS network over HTTP.
## Running / Building
@@ -21,8 +21,8 @@ access content on the IPFS network over HTTP.
## ENV Variables
-- `IROH_INSTANCE_ID` - unique instance identifier, preferably some name than hard id (default: generated lower & snake case name)
-- `IROH_ENV` - indicates the service environment (default: `dev`)
+- `BEETLE_INSTANCE_ID` - unique instance identifier, preferably some name than hard id (default: generated lower & snake case name)
+- `BEETLE_ENV` - indicates the service environment (default: `dev`)
## Endpoints
diff --git a/iroh-gateway/assets/404.html b/beetle-gateway/assets/404.html
similarity index 92%
rename from iroh-gateway/assets/404.html
rename to beetle-gateway/assets/404.html
index e2d50089e..beb20f4f3 100644
--- a/iroh-gateway/assets/404.html
+++ b/beetle-gateway/assets/404.html
@@ -54,16 +54,12 @@