From d2ddb9d6c8b109de924685430af5b942b0be4f9a Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Fri, 8 Jan 2010 13:42:46 -0800 Subject: [PATCH] csyn: properly use multiple clients --- src/csyn.cc | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/csyn.cc b/src/csyn.cc index 1765f044c99d7..9968fbbf9c1a7 100644 --- a/src/csyn.cc +++ b/src/csyn.cc @@ -54,23 +54,27 @@ int main(int argc, const char **argv, char *envp[]) if (mc.build_initial_monmap() < 0) return -1; - // start up network - SimpleMessenger *messenger = new SimpleMessenger(); cout << "starting csyn" << std::endl; list clients; list synclients; + SimpleMessenger* messengers[g_conf.num_client]; + MonClient* mclients[g_conf.num_client]; cout << "mounting and starting " << g_conf.num_client << " syn client(s)" << std::endl; for (int i=0; iregister_entity(entity_name_t(entity_name_t::TYPE_CLIENT,-1)); - Client *client = new Client(messenger, &mc); + messengers[i] = new SimpleMessenger(); + messengers[i]->register_entity(entity_name_t(entity_name_t::TYPE_CLIENT,-1)); + messengers[i]->bind(); + mclients[i] = new MonClient(); + mclients[i]->build_initial_monmap(); + Client *client = new Client(messengers[i], mclients[i]); SyntheticClient *syn = new SyntheticClient(client); clients.push_back(client); synclients.push_back(syn); + messengers[i]->start(); } - messenger->start(); for (list::iterator p = synclients.begin(); p != synclients.end(); @@ -82,15 +86,18 @@ int main(int argc, const char **argv, char *envp[]) Client *client = clients.front(); SyntheticClient *syn = synclients.front(); clients.pop_front(); - synclients.pop_front(); + synclients.pop_front(); syn->join_thread(); delete syn; delete client; } - - // wait for messenger to finish - messenger->wait(); - + + for (int i = 0; i < g_conf.num_client; ++i) { + // wait for messenger to finish + delete mclients[i]; + messengers[i]->wait(); + messengers[i]->destroy(); + } return 0; } -- 2.39.5