boB Rudis
6 years ago
9 changed files with 66 additions and 105 deletions
@ -1,72 +0,0 @@ |
|||||
#ifndef EASYWSCLIENT_HPP_20120819_MIOFVASDTNUASZDQPLFD |
|
||||
#define EASYWSCLIENT_HPP_20120819_MIOFVASDTNUASZDQPLFD |
|
||||
|
|
||||
// This code comes from:
|
|
||||
// https://github.com/dhbaird/easywsclient
|
|
||||
//
|
|
||||
// To get the latest version:
|
|
||||
// wget https://raw.github.com/dhbaird/easywsclient/master/easywsclient.hpp
|
|
||||
// wget https://raw.github.com/dhbaird/easywsclient/master/easywsclient.cpp
|
|
||||
|
|
||||
#include <string> |
|
||||
#include <vector> |
|
||||
|
|
||||
namespace easywsclient { |
|
||||
|
|
||||
struct Callback_Imp { virtual void operator()(const std::string& message) = 0; }; |
|
||||
struct BytesCallback_Imp { virtual void operator()(const std::vector<uint8_t>& message) = 0; }; |
|
||||
|
|
||||
class WebSocket { |
|
||||
public: |
|
||||
typedef WebSocket * pointer; |
|
||||
typedef enum readyStateValues { CLOSING, CLOSED, CONNECTING, OPEN } readyStateValues; |
|
||||
|
|
||||
// Factories:
|
|
||||
static pointer create_dummy(); |
|
||||
static pointer from_url(const std::string& url, const std::string& origin = std::string()); |
|
||||
static pointer from_url_no_mask(const std::string& url, const std::string& origin = std::string()); |
|
||||
|
|
||||
// Interfaces:
|
|
||||
virtual ~WebSocket() { } |
|
||||
virtual void poll(int timeout = 0) = 0; // timeout in milliseconds
|
|
||||
virtual void send(const std::string& message) = 0; |
|
||||
virtual void sendBinary(const std::string& message) = 0; |
|
||||
virtual void sendBinary(const std::vector<uint8_t>& message) = 0; |
|
||||
virtual void sendPing() = 0; |
|
||||
virtual void close() = 0; |
|
||||
virtual readyStateValues getReadyState() const = 0; |
|
||||
|
|
||||
template<class Callable> |
|
||||
void dispatch(Callable callable) |
|
||||
// For callbacks that accept a string argument.
|
|
||||
{ // N.B. this is compatible with both C++11 lambdas, functors and C function pointers
|
|
||||
struct _Callback : public Callback_Imp { |
|
||||
Callable& callable; |
|
||||
_Callback(Callable& callable) : callable(callable) { } |
|
||||
void operator()(const std::string& message) { callable(message); } |
|
||||
}; |
|
||||
_Callback callback(callable); |
|
||||
_dispatch(callback); |
|
||||
} |
|
||||
|
|
||||
template<class Callable> |
|
||||
void dispatchBinary(Callable callable) |
|
||||
// For callbacks that accept a std::vector<uint8_t> argument.
|
|
||||
{ // N.B. this is compatible with both C++11 lambdas, functors and C function pointers
|
|
||||
struct _Callback : public BytesCallback_Imp { |
|
||||
Callable& callable; |
|
||||
_Callback(Callable& callable) : callable(callable) { } |
|
||||
void operator()(const std::vector<uint8_t>& message) { callable(message); } |
|
||||
}; |
|
||||
_Callback callback(callable); |
|
||||
_dispatchBinary(callback); |
|
||||
} |
|
||||
|
|
||||
protected: |
|
||||
virtual void _dispatch(Callback_Imp& callable) = 0; |
|
||||
virtual void _dispatchBinary(BytesCallback_Imp& callable) = 0; |
|
||||
}; |
|
||||
|
|
||||
} // namespace easywsclient
|
|
||||
|
|
||||
#endif /* EASYWSCLIENT_HPP_20120819_MIOFVASDTNUASZDQPLFD */ |
|
@ -1,28 +0,0 @@ |
|||||
#include <Rcpp.h> |
|
||||
|
|
||||
#ifdef _WIN32 |
|
||||
#pragma comment( lib, "ws2_32" ) |
|
||||
#include <WinSock2.h> |
|
||||
#endif |
|
||||
|
|
||||
#include <assert.h> |
|
||||
#include <stdio.h> |
|
||||
#include <string> |
|
||||
#include <iostream> |
|
||||
#include <thread> |
|
||||
#include <chrono> |
|
||||
#include <condition_variable> |
|
||||
|
|
||||
#include "easywsclient.hpp" |
|
||||
|
|
||||
typedef struct _chromeWs chromeWs; |
|
||||
typedef chromeWs *chromeWsPtr; |
|
||||
struct _chromeWs { |
|
||||
easywsclient::WebSocket::pointer ws; |
|
||||
std::string response; |
|
||||
bool ready; |
|
||||
}; |
|
||||
|
|
||||
inline void finaliseWs(chromeWsPtr ws) {} |
|
||||
|
|
||||
typedef Rcpp::XPtr<chromeWs,Rcpp::PreserveStorage,finaliseWs> XPtrWs; |
|
Binary file not shown.
Loading…
Reference in new issue