#ifndef NLWS_H
#define NLWS_H

#include "EXTERN.h"
#include "perl.h"

#define MAX_CLOSE_REASON_LENGTH 123

#define DEFAULT_POLL_TIMEOUT (5 * 60 * 1000)

#define WEBSOCKET_CLASS "Net::Libwebsockets::WebSocket::Client"
#define COURIER_CLASS "Net::Libwebsockets::WebSocket::Courier"
#define PAUSE_CLASS "Net::Libwebsockets::WebSocket::Pause"

#define NET_LWS_LOCAL_PROTOCOL_NAME "perl-net-libwebsockets"

#ifdef PL_phase
#   define IS_GLOBAL_DESTRUCTION (PL_phase == PERL_PHASE_DESTRUCT)
#else
#   define IS_GLOBAL_DESTRUCTION PL_dirty
#endif

#ifdef MULTIPLICITY
#   define PERL_CONTEXT_IN_STRUCT .aTHX = aTHX,
#   define PERL_CONTEXT_FROM_STRUCT(name) pTHX = name->aTHX
#else
#   define PERL_CONTEXT_IN_STRUCT
#   define PERL_CONTEXT_FROM_STRUCT(name) (void)(name)
#endif

#define UNUSED(x) (void)(x)

#define RING_DEPTH 1024

#endif