Skip to content
Snippets Groups Projects
Commit 09d363e6 authored by Micah Elizabeth Scott's avatar Micah Elizabeth Scott
Browse files

Optional verbose logging

parent 5e695331
No related branches found
No related tags found
No related merge requests found
...@@ -37,6 +37,7 @@ The following example config file supports two Fadecandy devices with distinct s ...@@ -37,6 +37,7 @@ The following example config file supports two Fadecandy devices with distinct s
{ {
"listen": ["127.0.0.1", 7890], "listen": ["127.0.0.1", 7890],
"verbose": true,
"color": { "color": {
"gamma": 2.5, "gamma": 2.5,
......
...@@ -25,14 +25,16 @@ ...@@ -25,14 +25,16 @@
#include "fcserver.h" #include "fcserver.h"
#include <netdb.h> #include <netdb.h>
#include <ctype.h> #include <ctype.h>
#include <iostream>
FCServer::FCServer(rapidjson::Document &config) FCServer::FCServer(rapidjson::Document &config)
: mListen(config["listen"]), : mListen(config["listen"]),
mColor(config["color"]), mColor(config["color"]),
mDevices(config["devices"]), mDevices(config["devices"]),
mVerbose(config["verbose"].IsTrue()),
mListenAddr(0), mListenAddr(0),
mOPCSink(opcCallback, this) mOPCSink(opcCallback, this, mVerbose)
{ {
/* /*
* Parse the listen [host, port] list. * Parse the listen [host, port] list.
...@@ -81,7 +83,6 @@ void FCServer::start(struct ev_loop *loop) ...@@ -81,7 +83,6 @@ void FCServer::start(struct ev_loop *loop)
mOPCSink.start(loop, mListenAddr); mOPCSink.start(loop, mListenAddr);
} }
void FCServer::opcCallback(OPCSink::Message &msg, void *context) void FCServer::opcCallback(OPCSink::Message &msg, void *context)
{ {
FCServer *self = static_cast<FCServer*>(context); FCServer *self = static_cast<FCServer*>(context);
......
...@@ -48,6 +48,7 @@ private: ...@@ -48,6 +48,7 @@ private:
const Value& mListen; const Value& mListen;
const Value& mColor; const Value& mColor;
const Value& mDevices; const Value& mDevices;
bool mVerbose;
struct addrinfo *mListenAddr; struct addrinfo *mListenAddr;
OPCSink mOPCSink; OPCSink mOPCSink;
......
...@@ -26,10 +26,12 @@ ...@@ -26,10 +26,12 @@
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
#include <arpa/inet.h>
#include <iostream>
OPCSink::OPCSink(callback_t cb, void *context) OPCSink::OPCSink(callback_t cb, void *context, bool verbose)
: mCallback(cb), mContext(context) {} : mVerbose(verbose), mCallback(cb), mContext(context) {}
void OPCSink::start(struct ev_loop *loop, struct addrinfo *listenAddr) void OPCSink::start(struct ev_loop *loop, struct addrinfo *listenAddr)
{ {
...@@ -52,6 +54,11 @@ void OPCSink::start(struct ev_loop *loop, struct addrinfo *listenAddr) ...@@ -52,6 +54,11 @@ void OPCSink::start(struct ev_loop *loop, struct addrinfo *listenAddr)
// Get a callback when we're ready to accept a new connection // Get a callback when we're ready to accept a new connection
ev_io_init(&mIOAccept, cbAccept, sock, EV_READ); ev_io_init(&mIOAccept, cbAccept, sock, EV_READ);
ev_io_start(loop, &mIOAccept); ev_io_start(loop, &mIOAccept);
if (mVerbose) {
struct sockaddr_in *sin = (struct sockaddr_in*) listenAddr->ai_addr;
std::clog << "Listening on " << inet_ntoa(sin->sin_addr) << ":" << ntohs(sin->sin_port) << "\n";
}
} }
void OPCSink::cbAccept(struct ev_loop *loop, struct ev_io *watcher, int revents) void OPCSink::cbAccept(struct ev_loop *loop, struct ev_io *watcher, int revents)
...@@ -72,6 +79,10 @@ void OPCSink::cbAccept(struct ev_loop *loop, struct ev_io *watcher, int revents) ...@@ -72,6 +79,10 @@ void OPCSink::cbAccept(struct ev_loop *loop, struct ev_io *watcher, int revents)
ev_io_init(&cli->ioRead, cbRead, sock, EV_READ); ev_io_init(&cli->ioRead, cbRead, sock, EV_READ);
ev_io_start(loop, &cli->ioRead); ev_io_start(loop, &cli->ioRead);
if (self->mVerbose) {
std::clog << "Client connected from " << inet_ntoa(clientAddr.sin_addr) << "\n";
}
} }
void OPCSink::cbRead(struct ev_loop *loop, struct ev_io *watcher, int revents) void OPCSink::cbRead(struct ev_loop *loop, struct ev_io *watcher, int revents)
...@@ -89,6 +100,11 @@ void OPCSink::cbRead(struct ev_loop *loop, struct ev_io *watcher, int revents) ...@@ -89,6 +100,11 @@ void OPCSink::cbRead(struct ev_loop *loop, struct ev_io *watcher, int revents)
if (r == 0) { if (r == 0) {
// Client disconnecting // Client disconnecting
if (self->mVerbose) {
std::clog << "Client disconnected\n";
}
ev_io_stop(loop, watcher); ev_io_stop(loop, watcher);
delete cli; delete cli;
return; return;
......
...@@ -46,10 +46,11 @@ public: ...@@ -46,10 +46,11 @@ public:
typedef void (*callback_t)(Message &msg, void *context); typedef void (*callback_t)(Message &msg, void *context);
OPCSink(callback_t cb, void *context); OPCSink(callback_t cb, void *context, bool verbose = false);
void start(struct ev_loop *loop, struct addrinfo *listenAddr); void start(struct ev_loop *loop, struct addrinfo *listenAddr);
private: private:
bool mVerbose;
callback_t mCallback; callback_t mCallback;
void *mContext; void *mContext;
struct ev_io mIOAccept; struct ev_io mIOAccept;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment