From f69ecb2cc2c44ff6b31ccec7e311df02a7128ef8 Mon Sep 17 00:00:00 2001
From: Roman Khlopkov <roman.khlopkov@demlabs.net>
Date: Fri, 11 Mar 2022 19:58:19 +0300
Subject: [PATCH] [+] Py srv client remote

---
 ...wrapping_dap_chain_net_srv_client_remote.h | 85 +++++++++++++++++++
 ...wrapping_dap_chain_net_srv_client_remote.c | 50 +++++++++++
 2 files changed, 135 insertions(+)
 create mode 100644 modules/cellframe-sdk/net/srv/include/wrapping_dap_chain_net_srv_client_remote.h
 create mode 100644 modules/cellframe-sdk/net/srv/src/wrapping_dap_chain_net_srv_client_remote.c

diff --git a/modules/cellframe-sdk/net/srv/include/wrapping_dap_chain_net_srv_client_remote.h b/modules/cellframe-sdk/net/srv/include/wrapping_dap_chain_net_srv_client_remote.h
new file mode 100644
index 00000000..d8b8d19a
--- /dev/null
+++ b/modules/cellframe-sdk/net/srv/include/wrapping_dap_chain_net_srv_client_remote.h
@@ -0,0 +1,85 @@
+//
+// Created by blus on 05.02.2022.
+//
+
+#include "Python.h"
+#include "datetime.h"
+#include "dap_chain_net_srv.h"
+
+#ifndef WRAPPING_DAP_CHAIN_NET_SRV_CLIENT_REMOTE_H
+#define WRAPPING_DAP_CHAIN_NET_SRV_CLIENT_REMOTE_H
+
+typedef struct PyDapChainNetSrvClientRemote{
+    PyObject_HEAD
+    dap_chain_net_srv_client_remote_t *srv_client_remote;
+}PyDapChainNetSrvClientRemoteObject;
+
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_ch(PyObject *self, void *closure);
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_ts_created(PyObject *self, void *closure);
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_created(PyObject *self, void *closure);
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_stream_worker(PyObject *self, void *closure);
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_session_id(PyObject *self, void *closure);
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_bytes_received(PyObject *self, void *closure);
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_bytes_send(PyObject *self, void *closure);
+//PyObject *wrapping_dap_chain_net_srv_client_remote_get_bytes_prev(PyObject *self, void *closure);
+//PyObject *wrapping_dap_chain_net_srv_client_remote_get_bytes_next(PyObject *self, void *closure);
+
+static PyMethodDef DapChainNetSrvClientRemoteMethods[]={
+        {NULL, NULL, 0, NULL}
+};
+
+static PyGetSetDef DapChaiNetSrvClientRemoteGetsSets[] = {
+        {"ch", (getter)wrapping_dap_chain_net_srv_client_remote_get_ch, NULL, NULL, NULL},
+        {"tsCreated", (getter)wrapping_dap_chain_net_srv_client_remote_get_ts_created, NULL, NULL, NULL},
+        {"created", (getter)wrapping_dap_chain_net_srv_client_remote_get_created, NULL, NULL, NULL},
+        {"streamWorker", (getter)wrapping_dap_chain_net_srv_client_remote_get_stream_worker, NULL, NULL, NULL},
+        {"sessionId", (getter)wrapping_dap_chain_net_srv_client_remote_get_session_id, NULL, NULL, NULL},
+        {"bytesReceived", (getter)wrapping_dap_chain_net_srv_client_remote_get_bytes_received, NULL, NULL, NULL},
+        {"bytesSend", (getter)wrapping_dap_chain_net_srv_client_remote_get_bytes_send, NULL, NULL, NULL},
+        {NULL}
+};
+
+static PyTypeObject DapChainNetSrvClientRemoteObject_DapChainNetSrvClientRemoteObjectType = {
+        PyVarObject_HEAD_INIT(NULL, 0)
+        "CellFrame.ChainNetSrvClientRemote",        /* tp_name */
+        sizeof(PyDapChainNetSrvClientRemoteObject), /* tp_basicsize */
+        0,                                /* tp_itemsize */
+        0,                                /* tp_dealloc */
+        0,                                /* tp_print */
+        0,                                /* tp_getattr */
+        0,                                /* tp_setattr */
+        0,                                /* tp_reserved */
+        0,                                /* tp_repr */
+        0,                                /* tp_as_number */
+        0,                                /* tp_as_sequence */
+        0,                                /* tp_as_mapping */
+        0,                                /* tp_hash  */
+        0,                                /* tp_call */
+        0,                                /* tp_str */
+        0,                                /* tp_getattro */
+        0,                                /* tp_setattro */
+        0,                                /* tp_as_buffer */
+        Py_TPFLAGS_DEFAULT |
+        Py_TPFLAGS_BASETYPE,          /* tp_flags */
+        "Chain net service client remote object",               /* tp_doc */
+        0,		                          /* tp_traverse */
+        0,		                          /* tp_clear */
+        0,		                          /* tp_richcompare */
+        0,                                /* tp_weaklistoffset */
+        0,		                          /* tp_iter */
+        0,		                          /* tp_iternext */
+        DapChainNetSrvClientRemoteMethods,        /* tp_methods */
+        0,                                /* tp_members */
+        DapChaiNetSrvClientRemoteGetsSets,        /* tp_getset */
+        0,                                /* tp_base */
+        0,                                /* tp_dict */
+        0,                                /* tp_descr_get */
+        0,                                /* tp_descr_set */
+        0,                                /* tp_dictoffset */
+        0,                                /* tp_init */
+        0,                                /* tp_alloc */
+        PyType_GenericNew,                /* tp_new */
+};
+
+#endif //WRAPPING_DAP_CHAIN_NET_SRV_CLIENT_REMOTE_H
+
diff --git a/modules/cellframe-sdk/net/srv/src/wrapping_dap_chain_net_srv_client_remote.c b/modules/cellframe-sdk/net/srv/src/wrapping_dap_chain_net_srv_client_remote.c
new file mode 100644
index 00000000..d57b3a0f
--- /dev/null
+++ b/modules/cellframe-sdk/net/srv/src/wrapping_dap_chain_net_srv_client_remote.c
@@ -0,0 +1,50 @@
+//#include "wrapping_dap_chain_net_"
+#include "wrapping_dap_chain_net_srv_client_remote.h"
+
+#define WRAPPING_DAP_CHAIN_NET_SRV_CLIENT(a) ((dap_chain_net_srv_client_remote_t*)((PyDapPyDapChainNetSrvClientObject*)a)->srv_client)
+#define _PyDapChainNetSrvClient(a) ((PyDapChainNetSrvClient*)a)
+
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_ch(PyObject *self, void *closure){
+    (void)closure;
+    //TODO
+    return Py_None;
+}
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_ts_created(PyObject *self, void *closure){
+    (void)closure;
+    return Py_BuildValue("k", ((PyDapChainNetSrvClientRemoteObject*)self)->srv_client_remote->ts_created);
+}
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_created(PyObject *self, void *closure){
+    (void)closure;
+    PyDateTime_IMPORT;
+    PyObject *l_obj_long_ts = PyLong_FromDouble(((PyDapChainNetSrvClientRemoteObject*)self)->srv_client_remote->ts_created);
+    PyObject *l_obj_tuple = Py_BuildValue("(O)", l_obj_long_ts);
+    PyObject *l_obj_dateTime = PyDateTime_FromTimestamp(l_obj_tuple);
+    return l_obj_dateTime;
+}
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_stream_worker(PyObject *self, void *closure){
+    (void)closure;
+    //TODO
+    return Py_None;
+}
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_session_id(PyObject *self, void *closure){
+    (void)closure;
+    return Py_BuildValue("i", ((PyDapChainNetSrvClientRemoteObject*)self)->srv_client_remote->session_id);
+}
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_bytes_received(PyObject *self, void *closure){
+    (void)closure;
+    dap_chain_net_srv_client_remote_t *l_client = ((PyDapChainNetSrvClientRemoteObject*)self)->srv_client_remote;
+    return Py_BuildValue("k", l_client->bytes_received);
+}
+PyObject *wrapping_dap_chain_net_srv_client_remote_get_bytes_send(PyObject *self, void *closure){
+    (void)closure;
+    dap_chain_net_srv_client_remote_t *l_client = ((PyDapChainNetSrvClientRemoteObject*)self)->srv_client_remote;
+    return Py_BuildValue("k", l_client->bytes_sent);
+}
+//PyObject *wrapping_dap_chain_net_srv_client_remote_get_bytes_prev(PyObject *self, void *closure){
+//    (void)closure;
+//}
+//PyObject *wrapping_dap_chain_net_srv_client_remote_get_bytes_next(PyObject *self, void *closure){
+//    (void)closure;
+//    PyDapChain
+//}
+
-- 
GitLab