summaryrefslogtreecommitdiff
path: root/context.h
diff options
context:
space:
mode:
Diffstat (limited to 'context.h')
-rw-r--r--context.h120
1 files changed, 7 insertions, 113 deletions
diff --git a/context.h b/context.h
index 468f768..a52d296 100644
--- a/context.h
+++ b/context.h
@@ -912,125 +912,19 @@ private:
int m_is_encrypted;
public:
WEAK_FUNC TTcpSocket(TObject *parent = nullptr);
+ virtual ~TTcpSocket();
- virtual ~TTcpSocket() {
- close();
- };
-
- virtual void recv() {
- if (sock_fd() != -1) {
- packet_buffer().fill(0);
- set_buffer_cleared(true);
- (int)tcp_receive(sock_fd(), notify, packet_buffer().size(), packet_buffer().data());
- }
- };
-
- virtual int send(u8 *data, size_t size) {
- if (sock_fd() != -1) {
- if (!m_is_encrypted) {
- m_send_crypt.encrypt(data, size);
- }
-
- const s8 flags = sock_flags();
- if (flags || !get_link_status()) {
- return -1;
- } else {
- if (int status = stat()) {
- log(get_sock_status_name(status));
- set_flags(1);
- return 1;
- } else {
- if (send_window() <= size) {
- set_flags(1);
- return 1;
- } else {
- if (stat_val() < 0) {
- set_flags(1);
- return 1;
- } else {
- struct send_buffs sb;
- sb.buff = data;
- sb.len = size;
- set_unused(0);
- int ret = tcp_send(sock_fd(), nullptr, 1, &sb);
- if (ret >= 1 || ret < -1) {
- set_flags(1);
- log(get_sock_status_name(ret));
- close();
- return ret;
- }
- }
- }
- }
- }
- } else {
- return -1;
- }
- };
-
- virtual short send(u8 *data) {
- if (sock_fd() != -1) {
- const s8 flags = sock_flags();
- if (flags || !get_link_status()) {
- return -1;
- } else {
- if (short status = stat()) {
- log(get_sock_status_name(status));
- set_flags(1);
- return 1;
- } else {
- if (stat_val() < 0) {
- set_flags(1);
- return 1;
- } else {
- s8 len = strlen(reinterpret_cast<const char *>(data));
- struct send_buffs sb;
- sb.buff = data;
- sb.len = len;
- if (send_window() <= len) {
- set_flags(1);
- return 1;
- } else {
- short ret = tcp_send(sock_fd(), nullptr, 1, &sb);
- if (ret) {
- close();
- }
- return ret;
- }
- }
- }
- }
- } else {
- return -1;
- }
- };
-
- virtual short open();
- virtual short close();
+ virtual short open() override;
+ virtual short close() override;
+ virtual void recv() override;
+ virtual short send(u8 *data) override;
+ virtual int send(u8 *data, size_t size) override;
short stat();
void some_stub();
int test_connection();
- static void notify(short size, short sock_fd) {
- char tmp_str[64];
- TTcpSocket *socket = tcp_socket_table[sock_fd];
-
- if (socket != nullptr) {
- if (size > 0) {
- socket->set_buffer_cleared(false);
- socket->set_size(size);
- socket->set_buffer_offset(0);
- sprintf(tmp_str, "Rcv:%d byte", size);
- socket->log(tmp_str);
- if (socket->callback() != nullptr) {
- socket->callback()(socket);
- }
- } else {
- socket->set_flags(1);
- }
- }
- };
+ static void notify(short size, short sock_fd);
PRIVATE_MEMBER_ACCESSORS(PSOV3EncryptionTCP, send_crypt);
PRIVATE_MEMBER_ACCESSORS(PSOV3EncryptionTCP, recv_crypt);