# Reflex Bindings to libtelnet
This is a [reflex](https://reflex-frp.org/) wrapper around
[libtelnet](https://git.sr.ht/~jack/libtelnet-haskell), which lets you
describe data flows through the telnet state tracker using reflex
`Event`s.
This library thinly wraps the libtelnet functions, so you should read
[the libtelnet
documentation](http://hackage.haskell.org/package/libtelnet) alongside
the haddocks for this package.
## Quick Start
1. Assemble a `config :: TelnetConfig t`, which holds the event
streams that feed into a telnet state tracker. The easiest way to
do this is to call `def` (there is an `instance Reflex t => Default
(TelnetConfig t)`) and overwrite the fields you care about using
record updates or lenses. You will almost certainly want to
overwrite `_cRecv` to be the stream of incoming data from a socket,
and `_cSend` to be the stream of outgoing data from your application.
2. Call `telnet config`, and save the resulting `TelnetEvents t`. This
structure holds the output event streams from a single telnet state
tracker.
3. Wire the ouput events into your application.
## Other Resources
* A [telnet echo
server](https://git.sr.ht/~jack/reflex-libtelnet/tree/master/reflex-libtelnet-example/src/Main.hs)
exists in the [`reflex-libtelnet`
repo](https://git.sr.ht/~jack/reflex-libtelnet), outside this
package. It is packaged separately so that it can be licensed more
permissively, and to minimise `reflex-libtelnet`'s dependency
footprint.
* Questions should go to the
[reflex-libtelnet-discuss](https://lists.sr.ht/~jack/reflex-libtelnet-discuss)
mailing list.
* Bug reports should go to the
[bug tracker](https://todo.sr.ht/~jack/reflex-libtelnet).