#ifndef NLWS_LOGGER_H
#define NLWS_LOGGER_H

#define PERL_NO_GET_CONTEXT
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#include "xshelper/xshelper.h"

#include <libwebsockets.h>

#define LOGGER_CLASS "Net::Libwebsockets::Logger"

typedef struct {
#ifdef MULTIPLICITY
    pTHX;
#endif

    pid_t pid;

    SV* callback;

    SV* perlobj;
} nlws_logger_opaque_t;

//lws_log_emit_cx_t nlws_logger_emit;
void nlws_logger_emit(struct lws_log_cx *cx, int level, const char *line, size_t len);

void nlws_logger_on_refcount_change (struct lws_log_cx *cx, int _new);

int nlws_get_global_lwsl_level();

#endif