<!--
  -- AUTOGENERATED WARNING --
  If this file is not crates/tx5-core/src/README.tpl
  then it is autogenerated and will be replaced
  the next time make is run.
-->
- :warning: This code is new and should not yet be considered secure for production use!

[![Project](https://img.shields.io/badge/project-holochain-blue)](http://holochain.org/)
[![Forum](https://img.shields.io/badge/chat-forum%2eholochain%2enet-blue)](https://forum.holochain.org)
[![Chat](https://img.shields.io/badge/chat-chat%2eholochain%2enet-blue)](https://chat.holochain.org)

[![License: MIT](https://img.shields.io/badge/License-MIT-blue)](https://opensource.org/licenses/MIT)
[![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue)](https://www.apache.org/licenses/LICENSE-2.0)

### Tx5

- [ tx5 ](https://github.com/holochain/tx5/tree/main/crates/tx5-core) - [ ![crates.io](https://img.shields.io/crates/v/tx5) ](https://crates.io/crates/tx5) - The main holochain tx5 webrtc networking crate integrating the other code in this monorepo.

### Tx5 Support Crates

- [ tx5-connection ](https://github.com/holochain/tx5/tree/main/crates/tx5-connection) - [ ![crates.io](https://img.shields.io/crates/v/tx5-connection) ](https://crates.io/crates/tx5-connection) - Holochain webrtc connection.
- [ tx5-core ](https://github.com/holochain/tx5/tree/main/crates/tx5-core) - [ ![crates.io](https://img.shields.io/crates/v/tx5-core) ](https://crates.io/crates/tx5-core) - Core types used in other tx5 crates.
- [ tx5-online ](https://github.com/holochain/tx5/tree/main/crates/tx5-online) - [ ![crates.io](https://img.shields.io/crates/v/tx5-online) ](https://crates.io/crates/tx5-online) - Network online connectivity status events.
- [ tx5-go-pion-turn ](https://github.com/holochain/tx5/tree/main/crates/tx5-go-pion-turn) - [ ![crates.io](https://img.shields.io/crates/v/tx5-go-pion-turn) ](https://crates.io/crates/tx5-go-pion-turn) - Rust process wrapper around tx5-go-pion-turn executable.
- [ tx5-go-pion-sys ](https://github.com/holochain/tx5/tree/main/crates/tx5-go-pion-sys) - [ ![crates.io](https://img.shields.io/crates/v/tx5-go-pion-sys) ](https://crates.io/crates/tx5-go-pion-sys) - Low level rust bindings to the go pion webrtc library.
- [ tx5-go-pion ](https://github.com/holochain/tx5/tree/main/crates/tx5-go-pion) - [ ![crates.io](https://img.shields.io/crates/v/tx5-go-pion) ](https://crates.io/crates/tx5-go-pion) - Higher level rust bindings to the go pion webrtc library.
- [ tx5-signal ](https://github.com/holochain/tx5/tree/main/crates/tx5-signal) - [ ![crates.io](https://img.shields.io/crates/v/tx5-signal) ](https://crates.io/crates/tx5-signal) - Holochain webrtc signal client.
- [ tx5-demo ](https://github.com/holochain/tx5/tree/main/crates/tx5-demo) - [ ![crates.io](https://img.shields.io/crates/v/tx5-demo) ](https://crates.io/crates/tx5-demo) - Demo showing off tx5 p2p connectivity.

<!-- cargo-rdme start -->

#### tx5-connection

Holochain webrtc connection.
Starts by sending messages over the sbd signal server, if we can
upgrade to a proper webrtc p2p connection, we do so.

#### WebRTC Backend Features

Tx5 can be backed currently by 1 of 2 backend webrtc libraries.

- <b><i>`*`DEFAULT`*`</i></b> `backend-go-pion` - The pion webrtc library
  writen in go (golang).
  - [https://github.com/pion/webrtc](https://github.com/pion/webrtc)
- `backend-webrtc-rs` - The rust webrtc library.
  - [https://github.com/webrtc-rs/webrtc](https://github.com/webrtc-rs/webrtc)

The go pion library is currently the default as it is more mature
and well tested, but comes with some overhead of calling into a different
memory/runtime. When the rust library is stable enough for holochain's
needs, we will switch the default. To switch now, or if you want to
make sure the backend doesn't change out from under you, set
no-default-features and explicitly enable the backend of your choice.

<!-- cargo-rdme end -->