1 #include <../../nrnconf.h>
32 return strcmp(s1, s2) < 0;
38 return w1->todo_less_than(
w2);
43 char* s1 =
new char[strlen(
s) + 1];
51 printf(
"WorkItem %d\n",
id);
69 while (
w1->parent_ !=
w2->parent_) {
70 if (
w1->id_ <
w2->id_) {
77 printf(
"todo_less_than %d < %d return %d\n", this->
id_, w->
id_,
w1->id_ <
w2->id_);
79 return w1->id_ <
w2->id_;
82 class MessageList:
public std::multimap<const char*, const MessageValue*, ltstr> {};
84 class ReadyList:
public std::set<WorkItem*, ltWorkItem> {};
85 class ResultList:
public std::multimap<int, const WorkItem*> {};
97 args_.emplace_back(x);
102 args_.emplace_back(std::vector<double>(x, x +
n));
107 args_.emplace_back(std::string(str));
112 args_.emplace_back(std::vector<char>(
s));
120 if (
const auto* val = std::get_if<int>(
args_.data() +
index_)) {
129 if (
const auto* val = std::get_if<double>(
args_.data() +
index_)) {
138 if (
const auto* val = std::get_if<std::vector<double>>(
args_.data() +
index_)) {
139 for (std::size_t
i = 0;
i <
n; ++
i) {
149 if (
const auto* val = std::get_if<std::string>(
args_.data() +
index_)) {
150 for (std::size_t
i = 0;
i < val->size(); ++
i) {
153 s[val->size()] =
'\0';
161 if (
const auto* val = std::get_if<std::vector<char>>(
args_.data() +
index_)) {
181 printf(
"~BBSLocalServer not deleting everything\n");
191 char*
s = (
char*) ((*m).first);
200 printf(
"fail srvr_look_take |%s|\n",
key);
233 WorkList::iterator
p =
work_->find(parentid);
240 printf(
"srvr_post_todo id=%d pid=%d\n", w->
id_, parentid);
245 WorkList::iterator
i =
work_->find(
id);
257 ReadyList::iterator
i =
todo_->begin();
263 printf(
"srvr look_take_todo %d\n", w->
id_);
269 printf(
"srvr look_take_todo failed\n");
276 ResultList::iterator
i =
results_->find(pid);
283 WorkList::iterator
j =
work_->find(
id);
286 printf(
"srvr look_take_result %d for parent %d\n", w->
id_, pid);
292 printf(
"srvr look_take_result failed for parent %d\n", pid);
static char * newstr(const char *s)
bool look(const char *key, MessageValue **)
void post_result(int id, MessageValue *)
void post_todo(int parentid, MessageValue *)
virtual ~BBSLocalServer()
int look_take_result(int pid, MessageValue **)
void post(const char *key, MessageValue *)
bool look_take(const char *key, MessageValue **)
int look_take_todo(MessageValue **)
int pkpickle(const std::vector< char > &)
int upkvec(int, double *)
int upkpickle(std::vector< char > &)
std::vector< MessageItem > args_
virtual void unref() const
bool todo_less_than(const WorkItem *) const
WorkItem(int id, MessageValue *)
static double map(void *v)
int const size_t const size_t n
HOC interpreter function declarations (included by hocdec.h)
bool operator()(const WorkItem *w1, const WorkItem *w2) const
bool operator()(const char *s1, const char *s2) const