24 #include "valuevar.hpp"
27 #include "globals.hpp"
28 #include "net_handler.hpp"
50 val::SpVI v = make_shared<val::VI>();
51 for (
size_t j=0; j<t.ncols(); ++j) {
52 v->push_back(t.getcol(j).isOrdered());
57 val::Value convertToList(
const vector<unique_ptr<arr::Dname>>& names);
74 Global::conn_id_t peerid_p,
75 Global::reqid_t reqid_p,
76 Global::reqid_t sourceid_p,
77 Global::MsgType msgt_p) :
78 com(c), peerid(peerid_p), reqid(reqid_p), sourceid(sourceid_p), msgt(msgt_p),
79 offset(net::INIT_OFFSET),
82 *
this << uint64_t(msgt);
88 const Global::conn_id_t peerid;
89 const Global::reqid_t reqid;
90 const Global::reqid_t sourceid;
91 const Global::MsgType msgt;
93 char buf[Global::CHUNKSZ];
97 Encode& operator <<(
const val::Value& v);
98 Encode& operator <<(
const E* e);
101 Encode& operator <<(
const T& t) {
102 if (offset +
sizeof(T) > Global::CHUNKSZ) {
106 memcpy(buf + offset, &h,
sizeof(T));
117 rlist.push_back(make_pair(
"", val::Value(make_shared<val::VI>(t.dim))));
118 rlist.push_back(make_pair(
"", convertToList(t.names)));
119 rlist.push_back(make_pair(
"", getOrderedVector(t)));
120 *this << val::Value(make_cow<val::VList>(
false, rlist));
124 for (idx_type col=0; col < t.v.size(); ++col) {
125 for (idx_type j=0; j < t.dim[0]; ++j) {
126 *this << static_cast<T>(t.getcol(col)[j]);
138 Encode& operator <<(
const string& t);
143 Encode& operator <<(
const bool t);
147 auto res = com.
send(peerid, buf, offset);
151 offset = net::INIT_OFFSET;
160 ssize_t flush_end() {
161 auto res = com.
send(peerid, buf, offset);
165 offset = net::INIT_OFFSET;
181 size_t codeLength(
const E* e);
184 E* readCode(
const char* buf,
size_t len);
189 void readValue(
const char* buf,
size_t len,
size_t& off, vector<ValState>& ss,
size_t& idx);
192 bool isTransmissible(
const val::Value& v);