1 #include <../../nrnconf.h>
30 request_ = nrnmpi_newbuf(100);
37 nrnmpi_unref(sendbuf_);
38 nrnmpi_unref(recvbuf_);
39 nrnmpi_unref(request_);
44 printf(
"BBSClient error: %s\n",
s);
47 void BBSClient::upkbegin() {
48 nrnmpi_upkbegin(recvbuf_);
51 char* BBSClient::getkey() {
52 return nrnmpi_getkey(recvbuf_);
55 int BBSClient::getid() {
56 return nrnmpi_getid(recvbuf_);
60 return nrnmpi_upkint(recvbuf_);
64 return nrnmpi_upkdouble(recvbuf_);
68 nrnmpi_upkvec(
n, x, recvbuf_);
72 return nrnmpi_upkstr(recvbuf_);
77 char*
s = nrnmpi_upkpickle(&len, recvbuf_);
78 std::vector<char> ret(
s,
s + len);
85 sendbuf_ = nrnmpi_newbuf(100);
88 nrnmpi_pkbegin(sendbuf_);
92 nrnmpi_pkint(
i, sendbuf_);
96 nrnmpi_pkdouble(x, sendbuf_);
100 nrnmpi_pkvec(
n, x, sendbuf_);
104 nrnmpi_pkstr(
s, sendbuf_);
108 nrnmpi_pkpickle(
s.data(),
s.size(), sendbuf_);
116 nrnmpi_enddata(sendbuf_);
117 nrnmpi_pkstr(
key, sendbuf_);
118 nrnmpi_bbssend(
sid_,
POST, sendbuf_);
119 nrnmpi_unref(sendbuf_);
128 nrnmpi_enddata(sendbuf_);
129 nrnmpi_pkint(parentid, sendbuf_);
131 nrnmpi_unref(sendbuf_);
140 nrnmpi_enddata(sendbuf_);
141 nrnmpi_pkint(
id, sendbuf_);
143 nrnmpi_unref(sendbuf_);
152 nrnmpi_pkbegin(request_);
153 nrnmpi_enddata(request_);
154 nrnmpi_pkstr(
key, request_);
163 nrnmpi_pkbegin(request_);
164 nrnmpi_enddata(request_);
165 nrnmpi_pkint(
key, request_);
173 nrnmpi_unref(recvbuf_);
174 recvbuf_ = nrnmpi_newbuf(100);
175 nrnmpi_ref(recvbuf_);
176 int msgtag = nrnmpi_bbssendrecv(
sid_,
type, request_, recvbuf_);
183 if (msgtag ==
QUIT) {
251 nrnmpi_ref(sendbuf_);
258 nrnmpi_unref(recvbuf_);
261 recvbuf_ = (*i).second;
262 nrnmpi_ref(recvbuf_);
270 #if defined(USE_PYTHON)
286 #if defined(USE_PYTHON)
293 #if defined(USE_PYTHON)
295 (*p_nrnpython_finalize)();
314 nrnmpi_pkbegin(request_);
315 nrnmpi_enddata(request_);
void pkstr(const char *) override
void return_args(int) override
double upkdouble() override
std::vector< char > upkpickle() override
void post_result(int id) override
bool look(const char *) override
int get(const char *key, int type)
void post_todo(int parentid) override
void pkvec(int, double *) override
void save_args(int) override
void perror(const char *) override
int look_take_result(int pid) override
int look_take_todo() override
void upkvec(int, double *) override
void pkpickle(const std::vector< char > &) override
void pkdouble(double) override
void post(const char *) override
void take(const char *) override
bool look_take(const char *) override
virtual void return_args(int userid)
std::vector< char > execute_helper(int id, bool exec=true)
void(* p_nrnpython_finalize)()
static double map(void *v)
impl_ptrs methods
Collection of pointers to functions with python-version-specific implementations.
#define nrn_assert(x)
assert()-like macro, independent of NDEBUG status
int const size_t const size_t n
int nrnmpi_numprocs_world
static double userid(void *v)
static void nrnmpi_int_broadcast(int *, int, int)
int(* interpreter_start)(int)