#include "example_config.h"
#if COMPILE_TELNET_ECHO
#include "knet.h"
kloop_t* loop = 0;
void client_cb(kchannel_ref_t* channel, knet_channel_cb_event_e e) {
int bytes = 0;
char buffer[16] = {0};
kstream_t* stream = knet_channel_ref_get_stream(channel);
if (e & channel_cb_event_recv) {
bytes = knet_stream_available(stream);
memset(buffer, 0, sizeof(buffer));
knet_stream_pop(stream, buffer, sizeof(buffer));
if (*buffer == 'q') {
printf("bye...\n");
knet_loop_exit(loop);
return;
}
printf("recv: %s\n", buffer);
knet_stream_push(stream, buffer, bytes);
}
}
void acceptor_cb(kchannel_ref_t* channel, knet_channel_cb_event_e e) {
if (e & channel_cb_event_accept) {
printf("telnet client accepted...\n");
knet_channel_ref_set_cb(channel, client_cb);
}
}
int main() {
kchannel_ref_t* acceptor = 0;
loop = knet_loop_create();
acceptor = knet_loop_create_channel(loop, 8, 1024);
knet_channel_ref_set_cb(acceptor, acceptor_cb);
knet_channel_ref_accept(acceptor, 0, 23, 10);
knet_loop_run(loop);
knet_loop_destroy(loop);
return 0;
}
#endif