adding in use of username

This commit is contained in:
talksik
2024-01-27 14:05:30 -08:00
parent afc1d8cfc5
commit c364dbc170
2 changed files with 633 additions and 569 deletions
+572 -524
View File
File diff suppressed because it is too large Load Diff
+61 -45
View File
@@ -13,58 +13,74 @@
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; };
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;
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());
// Factories:
static pointer create_dummy();
static pointer from_url(const std::string &url,
const std::string &origin = std::string(),
const std::string &username = "Anonymous");
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;
// 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 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);
}
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;
protected:
virtual void _dispatch(Callback_Imp &callable) = 0;
virtual void _dispatchBinary(BytesCallback_Imp &callable) = 0;
};
} // namespace easywsclient