summaryrefslogtreecommitdiffstats
path: root/xmrstak/net/socket.hpp
diff options
context:
space:
mode:
authorpsychocrypt <psychocrypt@users.noreply.github.com>2017-09-29 20:32:31 +0200
committerpsychocrypt <psychocrypt@users.noreply.github.com>2017-09-30 23:46:08 +0200
commitcc429b68fadc502b981fd0acd64a5ff6e2ae1d15 (patch)
tree3fb23fc4db15dbdd08af4c7ea20134b9d82e58fd /xmrstak/net/socket.hpp
parente5b0319d5a9f58762fa934ad700113908940cb31 (diff)
downloadxmr-stak-cc429b68fadc502b981fd0acd64a5ff6e2ae1d15.zip
xmr-stak-cc429b68fadc502b981fd0acd64a5ff6e2ae1d15.tar.gz
group files
- move source code to `src` - categorize files and move to group folder - change upper case class files to lower case - change C++ header to `*.hpp`
Diffstat (limited to 'xmrstak/net/socket.hpp')
-rw-r--r--xmrstak/net/socket.hpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/xmrstak/net/socket.hpp b/xmrstak/net/socket.hpp
new file mode 100644
index 0000000..94bbf03
--- /dev/null
+++ b/xmrstak/net/socket.hpp
@@ -0,0 +1,57 @@
+#pragma once
+#include "socks.h"
+class jpsock;
+
+class base_socket
+{
+public:
+ virtual bool set_hostname(const char* sAddr) = 0;
+ virtual bool connect() = 0;
+ virtual int recv(char* buf, unsigned int len) = 0;
+ virtual bool send(const char* buf) = 0;
+ virtual void close(bool free) = 0;
+};
+
+class plain_socket : public base_socket
+{
+public:
+ plain_socket(jpsock* err_callback);
+
+ bool set_hostname(const char* sAddr);
+ bool connect();
+ int recv(char* buf, unsigned int len);
+ bool send(const char* buf);
+ void close(bool free);
+
+private:
+ jpsock* pCallback;
+ addrinfo *pSockAddr;
+ addrinfo *pAddrRoot;
+ SOCKET hSocket;
+};
+
+typedef struct ssl_ctx_st SSL_CTX;
+typedef struct bio_st BIO;
+typedef struct ssl_st SSL;
+
+class tls_socket : public base_socket
+{
+public:
+ tls_socket(jpsock* err_callback);
+
+ bool set_hostname(const char* sAddr);
+ bool connect();
+ int recv(char* buf, unsigned int len);
+ bool send(const char* buf);
+ void close(bool free);
+
+private:
+ void init_ctx();
+ void print_error();
+
+ jpsock* pCallback;
+
+ SSL_CTX* ctx = nullptr;
+ BIO* bio = nullptr;
+ SSL* ssl = nullptr;
+};
OpenPOWER on IntegriCloud