static int run_tests(ACEXML_String test_strings[NUM_TEST_STRS], int iterations) { // Test 1 - Escape the strings using a new temporary string each iteration. ACE_Time_Value start = ACE_OS::gettimeofday(); int i = 0; for (i = 0; i < iterations; ++i) { ACEXML_String tmp = ACEXML_escape_string(test_strings[i % NUM_TEST_STRS]); if (! is_escaped(tmp)) { ACE_ERROR((LM_ERROR, "Error: Failed to escape string\n")); return 1; } } ACE_DEBUG((LM_DEBUG, "Test1 took %dms\n", (ACE_OS::gettimeofday() - start).msec())); // Test 2 - Escape the strings using a shared temporary string. This shouldn't // be any faster than Test 1 as long as the compiler has return value optimization. ACEXML_String tmp; start = ACE_OS::gettimeofday(); for (i = 0; i < iterations; ++i) { tmp = ACEXML_escape_string(test_strings[i % NUM_TEST_STRS]); if (! is_escaped(tmp)) { ACE_ERROR((LM_ERROR, "Error: Failed to escape string\n")); return 1; } } ACE_DEBUG((LM_DEBUG, "Test2 took %dms\n", (ACE_OS::gettimeofday() - start).msec())); // Test 3 - Escape the strings using a shared temporary string. This time, we use // the alternate form of ACEXML_escape_string() so that our temporary buffer is reused. tmp.clear(1); start = ACE_OS::gettimeofday(); for (i = 0; i < iterations; ++i) { ACEXML_escape_string(test_strings[i % NUM_TEST_STRS], tmp); if (! is_escaped(tmp)) { ACE_ERROR((LM_ERROR, "Error: Failed to escape string\n")); return 1; } } ACE_DEBUG((LM_DEBUG, "Test3 took %dms\n", (ACE_OS::gettimeofday() - start).msec())); // Test 4 - Same as Test 3, except that the tmp buffer shouldn't have to resize. start = ACE_OS::gettimeofday(); for (i = 0; i < iterations; ++i) { ACEXML_escape_string(test_strings[i % NUM_TEST_STRS], tmp); if (! is_escaped(tmp)) { ACE_ERROR((LM_ERROR, "Error: Failed to escape string\n")); return 1; } } ACE_DEBUG((LM_DEBUG, "Test4 took %dms\n", (ACE_OS::gettimeofday() - start).msec())); return 0; }
bool XML_Saver::begin_object(CORBA::Long id, const ACE_CString& type, const NVPList& attrs, bool /* changed */) { ACE_ASSERT(this->output_ != 0); FILE * const out = this->output_; ACE_OS::fprintf (out, "%s%s%s", indent_.c_str(), "<", type.c_str()); if (id != 0) { // not all ostreams know what to do with a CORBA::Long long const lid = id; ACE_OS::fprintf (out, " %s%s%ld%s", TOPOLOGY_ID_NAME, "=\"", lid, "\""); } ACE_TString::size_type const BUF_SIZE = 512; ACE_TString tmp(BUF_SIZE); for (size_t idx = 0; idx < attrs.size(); ++idx) { ACE_TString valuetmp (ACE_TEXT_CHAR_TO_TCHAR (attrs[idx].value.c_str())); ACEXML_escape_string(valuetmp, tmp); ACE_OS::fprintf (out, "%s%s%s%s%s"," ", attrs[idx].name.c_str (), "=\"", ACE_TEXT_ALWAYS_CHAR (tmp.c_str()), "\""); } ACE_OS::fprintf (out, ">\n"); this->indent_ += " "; return true; }
void XML_Backing_Store::persist (FILE* fp, const Server_Info& info, const char* tag_prepend, const NameValues& name_values) { ACE_CString server_id = ACEXML_escape_string (info.server_id); ACE_CString pname = ACEXML_escape_string (info.poa_name); ACE_CString keyname = ACEXML_escape_string (info.key_name_); ACE_CString altkey = ""; if (!info.alt_info_.null()) { altkey = ACEXML_escape_string (info.alt_info_->key_name_); } ACE_CString activator = ACEXML_escape_string (info.activator); ACE_CString cmdline = ACEXML_escape_string (info.cmdline); ACE_CString wdir = ACEXML_escape_string (info.dir); ACE_CString partial_ior = ACEXML_escape_string (info.partial_ior); ACE_CString ior = ACEXML_escape_string (info.ior); ACE_CString amodestr = ImR_Utils::activationModeToString (info.activation_mode_); ACE_OS::fprintf (fp,"%s<%s", tag_prepend, Locator_XMLHandler::SERVER_INFO_TAG); ACE_OS::fprintf (fp, " %s=\"%s\"", Locator_XMLHandler::SERVER_TAG, server_id.c_str ()); ACE_OS::fprintf (fp, " %s=\"%s\"", Locator_XMLHandler::POANAME_TAG, pname.c_str ()); ACE_OS::fprintf (fp, " %s=\"%s\"", Locator_XMLHandler::ACTNAME_TAG, activator.c_str ()); ACE_OS::fprintf (fp, " %s=\"%s\"", Locator_XMLHandler::CMDLINE_TAG, cmdline.c_str ()); ACE_OS::fprintf (fp, " %s=\"%s\"", Locator_XMLHandler::DIR_TAG, wdir.c_str ()); ACE_OS::fprintf (fp, " %s=\"%s\"", Locator_XMLHandler::MODE_TAG, amodestr.c_str ()); ACE_OS::fprintf (fp, " %s=\"%d\"", Locator_XMLHandler::LIMIT_TAG, info.start_limit_); ACE_OS::fprintf (fp, " %s=\"%s\"", Locator_XMLHandler::PARTIOR_TAG, partial_ior.c_str ()); ACE_OS::fprintf (fp, " %s=\"%s\"", Locator_XMLHandler::IOR_TAG, ior.c_str ()); ACE_OS::fprintf (fp, " %s=\"%d\"", Locator_XMLHandler::STARTED_TAG, !CORBA::is_nil(info.server.in())); ACE_OS::fprintf (fp, " %s=\"%d\"", Locator_XMLHandler::JACORB_TAG, info.is_jacorb); ACE_OS::fprintf (fp, " %s=\"%d\"", Locator_XMLHandler::PID_TAG, info.pid); ACE_OS::fprintf (fp, " %s= \"%s\"", Locator_XMLHandler::KEYNAME_TAG, keyname.c_str ()); ACE_OS::fprintf (fp, " %s= \"%s\"", Locator_XMLHandler::ALTKEY_TAG, altkey.c_str ()); NameValues::const_iterator name_value; for (name_value = name_values.begin(); name_value != name_values.end(); ++name_value) { ACE_OS::fprintf (fp," %s=\"%s\"", name_value->first.c_str(), name_value->second.c_str()); } CORBA::ULong elen = info.env_vars.length (); CORBA::ULong plen = info.peers.length (); if (elen + plen > 0) { ACE_OS::fprintf (fp,">\n"); for (CORBA::ULong i = 0; i < elen; ++i) { ACE_OS::fprintf (fp,"%s\t<%s", tag_prepend, Locator_XMLHandler::ENVIRONMENT_TAG); ACE_OS::fprintf (fp," name=\"%s\"", info.env_vars[i].name.in ()); ACE_CString val = ACEXML_escape_string(info.env_vars[i].value.in()); ACE_OS::fprintf (fp," value=\"%s\"", val.c_str()); ACE_OS::fprintf (fp,"/>\n"); } for (CORBA::ULong i = 0; i < plen; ++i) { ACE_OS::fprintf (fp,"%s\t<%s", tag_prepend, Locator_XMLHandler::PEER_TAG); ACE_CString name = ACEXML_escape_string(info.peers[i].in()); ACE_OS::fprintf (fp," name=\"%s\"", name.c_str()); ACE_OS::fprintf (fp,"/>\n"); } ACE_OS::fprintf (fp,"%s</%s>\n", tag_prepend, Locator_XMLHandler::SERVER_INFO_TAG); } else { ACE_OS::fprintf (fp,"/>\n"); } }
ACEXML_String ACEXML_escape_string(const ACEXML_String& str) { ACEXML_String ret(str.length ()); ACEXML_escape_string(str, ret); return ret; }