Bredbandskollen CLI
1.2
Asynchronous network task engine
|
Public Member Functions | |
WSBlistener (Task *bridge, const TaskConfig &cfg) | |
bool | newWsRequest (HttpServerConnection *conn, const std::string &uri) override |
Request from client for a websocket upgrade. More... | |
bool | wsTextMessage (HttpConnection *conn, const std::string &msg) override |
Incoming websocket text message. Return false to kill connection. | |
void | sendMsgToClient (const std::string &msg) |
void | connAdded (SocketConnection *s) override |
void | serverAdded (ServerSocket *s) override |
void | connRemoved (SocketConnection *s) override |
void | serverRemoved (ServerSocket *s) override |
uint16_t | listenPort () const |
void | run_browser (const std::string &url) |
void | processFinished (int pid, int wstatus) override |
Will be called to notify when an external process has terminated. | |
std::string | url () const |
bool | clientConnected () const |
Public Member Functions inherited from WebServerTask | |
WebServerTask (const std::string &name, const TaskConfig &cfg=TaskConfig()) | |
double | start () override |
std::string | headers (const std::string &code) |
std::string | setCookie (const std::string &name, const std::string &val, long expiry=0, const std::string &path="/", std::string domain="") const |
Return a string that may be inserted into the HTTP response headers. More... | |
virtual HttpState | newGetRequest (HttpServerConnection *, const std::string &) |
virtual size_t | sendResponseData (HttpServerConnection *, size_t) |
virtual HttpState | newPostRequest (HttpServerConnection *conn, const std::string &uri) |
virtual bool | partialPostData (HttpServerConnection *conn, const char *buffer, size_t len) |
Retrieve part of a post message from client. More... | |
virtual HttpState | lastPostData (HttpServerConnection *conn, const char *buffer, size_t len) |
Retrieve last part of a post message from client. | |
virtual void | wsHandshakeFinished (HttpServerConnection *conn, const std::string &uri) |
virtual HttpState | preflightRequest (HttpServerConnection *, const std::string &) |
Override this to implement a response to a preflight (OPTIONS) request. | |
void | setFixedHeaders (const std::string &hdr) |
One or more HTTP response header lines that always should be sent. More... | |
SocketConnection * | newClient (int fd, const char *ip, uint16_t port, ServerSocket *) final |
std::string | webRoot () const |
void | setWebRoot (const std::string &path) |
void | newWorkerChannel (SocketReceiver *srv, unsigned int chan) override |
Public Member Functions inherited from HttpTask | |
HttpTask (const std::string &name) | |
virtual bool | wsBinMessage (HttpConnection *, const std::string &msg) |
Incoming websocket binary message. Return false to kill connection. | |
virtual bool | wsBinHeader (HttpConnection *, size_t) |
Called when headers of a binary message are read. More... | |
virtual bool | wsTextHeader (HttpConnection *, size_t) |
Called when headers of a text message are read. More... | |
virtual bool | wsBinData (HttpConnection *, const char *, size_t) |
Incoming partial websocket binary message. More... | |
virtual bool | wsTextData (HttpConnection *, const char *, size_t) |
Incoming partial websocket text message. More... | |
virtual size_t | sendWsData (HttpConnection *conn) |
Public Member Functions inherited from Task | |
Task (const std::string &task_name) | |
Create a task with the given name. More... | |
virtual | ~Task () |
virtual double | timerEvent () |
void | resetTimer (double s) |
Run timerEvent after s seconds instead of previous value. | |
bool | finishedOK () const |
Return true if the task has finished normally. More... | |
bool | wasKilled () const |
Return true if the task is finished and was aborted by another task. More... | |
bool | wasError () const |
Return true if the task terminated with an error. More... | |
bool | wasTimeout () const |
Return true if the task terminated with a timeout. More... | |
bool | hasStarted () const |
void | killChildTaskWhenFinished () |
virtual bool | adoptConnection (Socket *conn) |
std::string | result () const |
To get the "result" of the task after it has finished. | |
std::set< Socket * > | getMyConnections () const |
Return all current connections. | |
bool | isActive (Socket *conn) const |
Return true if the connection still exists. | |
void | wakeUp () |
Restart all idle connections. | |
bool | wakeUpConnection (SocketConnection *s) |
If s is idle, restart it and return true. Otherwise return false. | |
void | cancelConnection (SocketConnection *s) |
Terminate and remove a connection. | |
std::string | message () const |
Return the current (outgoing) message. | |
bool | startObserving (Task *to) |
void | executeHandler (Task *receiver, const std::string &message) |
double | elapsed () const |
Return number of seconds since the task was started. More... | |
virtual Task * | createWorkerTask (unsigned int wno) |
virtual void | finishWorkerTask (unsigned int) |
virtual void | workerMessage (SocketReceiver *, const char *buf, size_t len) |
Called if parent/worker sends a message through a SocketReceiver: | |
virtual PollState | connectionReady (SocketConnection *) |
virtual PollState | msgFromConnection (SocketConnection *, const std::string &) |
uint64_t | bytesSent () const |
Number of bytes sent through SocketConnection objects owned by me. | |
uint64_t | bytesReceived () const |
Number of bytes received through SocketConnection objects owned by me. | |
void | resetByteCount () |
Reset the values for the methods Task::bytesSent and Task::bytesReceived. | |
void | notifyBytesSent (uint64_t n) |
Notify the task that data has been sent on its behalf. More... | |
void | notifyBytesReceived (uint64_t n) |
Notify the task that data has been received on its behalf. More... | |
Public Member Functions inherited from Logger | |
Logger (std::string label) | |
std::string | label () const |
Return the object's log label. | |
void | resetLabel (const std::string &new_label) |
Modify the object's log label. | |
Additional Inherited Members | |
Static Public Member Functions inherited from WebServerTask | |
static std::string | corsHeader (HttpServerConnection *conn, const std::string &domain) |
Static Public Member Functions inherited from Logger | |
static void | setLogFile (std::ostream &stream) |
Set global log destination. More... | |
static void | reopenLogFile (const std::string &filename) |
If current log is a file (ofstream), reopen it with new filename: | |
static void | setLogLimit (unsigned int loglines=0, unsigned int warnlines=0, unsigned int errlines=0) |
Set max number of lines of info/warn/err log. More... | |
static void | sayTime (std::ostream &stream) |
Write current local time to the given stream. | |
static bool | inError () |
Return true if any error has been logged (globally since start) | |
static std::ostream & | err_log (const std::string &label) |
Write a line of error log. More... | |
static std::ostream & | warn_log (const std::string &label) |
Write a line of warning log. More... | |
static std::ostream & | log (const std::string &label) |
Write a line of info log. More... | |
static void | flushLogFile () |
static void | pauseLogging () |
Disable all log output until next call to Logger::setLogFile. | |
static double | secondsSince (const TimePoint &t) |
static double | secondsTo (const TimePoint &t) |
static int64_t | msSince (const TimePoint &t) |
static int64_t | msTo (const TimePoint &t) |
static bool | hasExpired (const TimePoint &t) |
Return true if current time is after the given TimePoint. | |
static TimePoint | timeNow () |
Return current time. | |
static TimePoint | timeAfter (double s) |
Return current time plus s seconds. | |
static TimePoint | timeMax () |
Return a very distant time. | |
static std::chrono::microseconds | toUs (double t) |
Convert s (seconds) to std::chrono::microseconds. | |
static std::string | dateString (time_t t=0) |
Return local time, formatted as 2023-10-14T09:38:47+0200. | |
static std::string | dateString2 (time_t t=0) |
Return local time, formatted as Sat, 14 Oct 2023 09:38:47. | |
static std::string | createHashKey (unsigned int length=20) |
Return a random string. More... | |
Protected Member Functions inherited from Task | |
bool | addConnection (SocketConnection *conn) |
bool | addConnected (SocketConnection *conn) |
bool | addServer (ServerSocket *conn) |
As Task::addConnected, but with a server connection. | |
bool | parseListen (const TaskConfig &tc, const std::string &log_label) |
virtual bool | tlsSetKey (ServerSocket *conn, const std::string &crt_path, const std::string &key_path, const std::string &password) |
Use SSL certificate for a listening socket. | |
void | setResult (const std::string &res) |
virtual void | setError (const std::string &msg) |
virtual void | setTimeout () |
void | setMessage (const std::string &msg) |
virtual void | taskFinished (Task *task) |
virtual void | taskMessage (Task *task) |
virtual void | handleExecution (Task *sender, const std::string &message) |
Callback to execute code on behalf of another Task. | |
bool | terminated () const |
Return true if task is finished. More... | |
void | addNewTask (Task *task, Task *parent=nullptr) |
Insert another Task for execution by the EventLoop. | |
void | addNewThread (Task *task, const std::string &name="ThreadLoop", std::ostream *log_file=nullptr, Task *parent=nullptr) |
Run task in a new thread. | |
void | getMyTasks (std::set< Task * > &tset) |
Add all my child tasks to the given set. | |
void | abortMyTasks () |
Terminate all my child tasks. | |
void | abortTask (Task *task) |
Terminate a task. | |
void | abortAllTasks () |
Terminate all tasks and exit the EventLoop. | |
int | runProcess (const char *const argv[]) |
WorkerProcess * | createWorker (std::ostream *log_file=nullptr, unsigned int channels=1, unsigned int wno=0) |
Run task returned by this->createWorkerTask in a child process. Return nullptr on failure. | |
WorkerProcess * | createWorker (const std::string &log_file_name, unsigned int channels=1, unsigned int wno=0) |
Run task returned by this->createWorkerTask in a child process. Return nullptr on failure. | |
Protected Member Functions inherited from Logger | |
std::ostream & | errno_log () const |
Write a line of error log after a failed system call has set the global errno to a non-zero value. More... | |
std::ostream & | err_log () const |
Write a line of error log. More... | |
std::ostream & | warn_log () const |
Write a line of warning log. More... | |
std::ostream & | log () const |
Write a line of info log. More... | |
std::ostream & | dbg_log () const |
Write a line of debug log. More... | |
Protected Attributes inherited from WebServerTask | |
TaskConfig | the_config |
|
overridevirtual |
This will be called to notify us when a new client socket object has been successfully added to this task. If you need to know that, override this method.
Reimplemented from WebServerTask.
|
overridevirtual |
This will be called when a client socket object has been removed from this task, just before it is deleted. If you need to know that, override this method.
Reimplemented from WebServerTask.
|
overridevirtual |
Request from client for a websocket upgrade.
Return true to accept, false to close.
Reimplemented from WebServerTask.
|
overridevirtual |
This will be called to notify us when a new server (listening) socket object has been successfully added to this task. If you need to know that, override this method.
Reimplemented from Task.
|
overridevirtual |
This will be called when a server socket object has been removed from this task, just before it is deleted. If you need to know that, override this method.
Reimplemented from Task.