/* - Attach some user data to disk1 */
XBT_INFO("*** Get/set data for storage element: Disk4 ***");
- char* data = static_cast<char*>(storage->getUserdata());
+ std::string* data = static_cast<std::string*>(storage->getUserdata());
- XBT_INFO("Get storage data: '%s'", data);
+ XBT_INFO("Get storage data: '%s'", data ? data->c_str() : "No user data");
- storage->setUserdata(xbt_strdup("Some user data"));
- data = static_cast<char*>(storage->getUserdata());
- XBT_INFO("Set and get data: '%s'", data);
- xbt_free(data);
+ storage->setUserdata(new std::string("Some user data"));
+ data = static_cast<std::string*>(storage->getUserdata());
+ XBT_INFO("Set and get data: '%s'", data->c_str());
+ delete data;
}
int main(int argc, char** argv)
> [ 0.003333] (1:@denise) Wrote 200000 bytes on 'Disk4'
> [ 0.004333] (1:@denise) Read 200000 bytes on 'Disk4'
> [ 0.004333] (1:@denise) *** Get/set data for storage element: Disk4 ***
-> [ 0.004333] (1:@denise) Get storage data: '(null)'
+> [ 0.004333] (1:@denise) Get storage data: 'No user data'
> [ 0.004333] (1:@denise) Set and get data: 'Some user data'
> [ 0.004333] (0:maestro@) Simulated time: 0.00433333
{
simgrid::s4u::MailboxPtr mailbox = simgrid::s4u::Mailbox::byName("mailbox");
- simgrid::s4u::CommPtr sendComm = mailbox->put_async(xbt_strdup("Some data"), 0);
+ simgrid::s4u::CommPtr sendComm = mailbox->put_async(new std::string("Some data"), 0);
xbt_assert(mailbox->listen()); // True (1)
XBT_INFO("Task listen works on regular mailboxes");
- char* res = static_cast<char*>(mailbox->get());
+ std::string* res = static_cast<std::string*>(mailbox->get());
- xbt_assert(not strcmp("Some data", res), "Data received: %s", res);
+ xbt_assert(*res == "Some data", "Data received: %s", res->c_str());
XBT_INFO("Data successfully received from regular mailbox");
- xbt_free(res);
+ delete res;
sendComm->wait();
simgrid::s4u::MailboxPtr mailbox2 = simgrid::s4u::Mailbox::byName("mailbox2");
mailbox2->setReceiver(simgrid::s4u::Actor::self());
- mailbox2->put_init(xbt_strdup("More data"), 0)->detach();
+ mailbox2->put_init(new std::string("More data"), 0)->detach();
xbt_assert(mailbox2->listen()); // used to break.
XBT_INFO("Task listen works on asynchronous mailboxes");
- res = static_cast<char*>(mailbox2->get());
- xbt_assert(not strcmp("More data", res));
- xbt_free(res);
+ res = static_cast<std::string*>(mailbox2->get());
+ xbt_assert(*res == "More data");
+ delete res;
XBT_INFO("Data successfully received from asynchronous mailbox");
}
XBT_INFO("*** GET/SET DATA for storage element: %s ***", storage_name.c_str());
simgrid::s4u::Storage* storage = simgrid::s4u::Storage::byName(storage_name);
- char* data = static_cast<char*>(storage->getUserdata());
- XBT_INFO("Get data: '%s'", data);
- storage->setUserdata(xbt_strdup("Some data"));
- data = static_cast<char*>(storage->getUserdata());
- XBT_INFO("\tSet and get data: '%s'", data);
- xbt_free(data);
+ std::string* data = static_cast<std::string*>(storage->getUserdata());
+ XBT_INFO("Get data: '%s'", data ? data->c_str() : "No User Data");
+ storage->setUserdata(new std::string("Some data"));
+ data = static_cast<std::string*>(storage->getUserdata());
+ XBT_INFO("\tSet and get data: '%s'", data->c_str());
+ delete data;
}
static void dump_platform_storages()
> [ 1.207952] (server@alice) Free size: 534479367024 bytes
> [ 1.207952] (server@alice) Used size: 2391544976 bytes
> [ 1.207952] (client@bob) *** GET/SET DATA for storage element: Disk1 ***
-> [ 1.207952] (client@bob) Get data: '(null)'
+> [ 1.207952] (client@bob) Get data: 'No User Data'
> [ 1.207952] (client@bob) Set and get data: 'Some data'
> [ 1.207952] (server@alice) No property attached.
> [ 1.207952] (server@alice) *** Dump a storage element ***