Класс для общения с BOB в I2P на C#

Таки буду краток, как говаривал один небезызвестный дядя.

В общем, есть в I2P такая чудная приблуда как BOB — Basic Open Bridge. Протокол сей позволяет создавать/уничтожать I2P тоннели с заданными параметрами. Фактически, вы создаёте точку подключения для своего приложения — например 127.0.0.1:12345 — и работаете с ней как с обычным сетевым адресом, посредством тех же сокетов. Проблема в том, что для инициализации тоннеля надо отправить несколько команд на адрес 127.0.0.1:2827. Протокол текстовый, достаточно простой и в целом удобный… Но для прикладных программ надо ещё проще :)

В результате на C# был написан класс-посредник, позволяющий создавать тоннели i2p в своей программе, не задумываясь над реализацией обмена, работающий вот так:

CBob bob = new CBob();
CBob.DataForCreateTonnel data = new CBob.DataForCreateTonnel();
// Можно задавать, можно не задавать - тогда автоматически сгенерируется
// data.nickTonnel = "abrahas";
data.inHost = "localhost";
data.inPort = 12345;
data.inboundLength = 3;
data.inboundLengthVariance = 2;
data.inboundAllowZeroHop = "false";
data.outHost = "localhost";
data.outPort = 44010;
data.outboundLength = 3;
data.outboundLengthVariance = 2;
data.outboundAllowZeroHop = "false";
bob.SendTonnelOptions(data);
bob.StartTonnel();

Т.е. он позволяет создавать тоннель десятком строчек и не заботиться о внутренней реализации на сокетах. Кстати по поводу внутренней реализации — там использована асинхронная отправка-получение команд-ответов. И очень сильно сырой код — аффтар не пишет постоянно на C#. Код правда документирован, по мере возможностей. Любые улучшения, замечания,  и прочее — приветствуется.

Соответственно ссылка на скачивание: http://www.shpargalko.com/files/CBob.zip

Это документация по BOB: http://www.i2p2.de/bob.html

А это полезная ссылка по I2CP: http://www.i2p2.de/i2cp