MODULE = UniEvent::WebSocket PACKAGE = UniEvent::WebSocket::Client
PROTOTYPES: DISABLE
BOOT {
Stash(__PACKAGE__).inherit("UniEvent::WebSocket::Connection");
}
Client* Client::new (Client::Config config = {}, LoopSP loop = Loop::default_loop()) {
RETVAL = new XSClient(loop, config);
}
void Client::connect (Sv host_or_request, bool secure = false, uint16_t port = 0) {
if (SvROK(host_or_request)) {
auto req = xs::in<ClientConnectRequestSP>(host_or_request);
THIS->connect(req);
} else {
string host_path = xs::in<string>(host_or_request);
THIS->connect(host_path, secure, port);
}
}
XSCallbackDispatcher* Client::connect_event () {
RETVAL = XSCallbackDispatcher::create(THIS->connect_event);
}
void Client::connect_callback (Client::connect_fn cb) {
THIS->connect_event.remove_all();
if (cb) THIS->connect_event.add(cb);
}