diff options
Diffstat (limited to 'TAO/tao/HTTP_Parser.cpp')
-rw-r--r-- | TAO/tao/HTTP_Parser.cpp | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/TAO/tao/HTTP_Parser.cpp b/TAO/tao/HTTP_Parser.cpp deleted file mode 100644 index 496734e91b0..00000000000 --- a/TAO/tao/HTTP_Parser.cpp +++ /dev/null @@ -1,150 +0,0 @@ -// $Id$ - -#include "tao/HTTP_Parser.h" -#include "tao/HTTP_Client.h" -#include "tao/ORB.h" -#include "tao/Environment.h" -#include "tao/Object.h" - -#include "ace/Read_Buffer.h" -#include "ace/Malloc_Base.h" -#include "ace/Log_Msg.h" -#include "ace/OS_NS_stdio.h" -#include "ace/OS_NS_string.h" - -ACE_RCSID (tao, - HTTP_Parser, - "$Id$") - -static const char file_prefix[] = "http:"; - -TAO_BEGIN_VERSIONED_NAMESPACE_DECL - -TAO_HTTP_Parser::~TAO_HTTP_Parser (void) -{ -} - - -bool -TAO_HTTP_Parser::match_prefix (const char *ior_string) const -{ - return (ACE_OS::strncmp (ior_string, - ::file_prefix, - sizeof (::file_prefix) - 1) == 0); -} - -CORBA::Object_ptr -TAO_HTTP_Parser::parse_string (const char *ior, - CORBA::ORB_ptr orb - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - // Skip the prefix, we know it is there because this method in only - // called if <match_prefix> returns 1. - const char *http_url = - ior + sizeof (::file_prefix) + 1; - - ACE_TCHAR *hostname = 0; - ACE_TCHAR *filename = 0; - const ACE_TCHAR *ptr = 0; - u_short port = 80; - - if (http_url[0] == '/') - { - filename = ACE_OS::strdup (http_url); - } - else - { - ptr = ACE_OS::strstr (http_url, ":"); - if (ptr) - port = ACE_OS::atoi (ptr + 1); - else - ptr = ACE_OS::strstr (http_url, "/"); - - if(!ptr) - return 0; - else - { - size_t const host_len = ptr - http_url; - ACE_NEW_RETURN (hostname, char [host_len + 1], 0 ); - ACE_OS::strncpy (hostname, http_url, host_len); - hostname [host_len] = '\0'; - ptr = ACE_OS::strstr (ptr, "/"); - if (ptr) - { - filename = ACE_OS::strdup(ptr); - } - else - return 0; - } - } - - ACE_Message_Block* mb = 0; - ACE_NEW_THROW_EX (mb, - ACE_Message_Block (), - CORBA::INTERNAL ()); - - // Create a client - TAO_HTTP_Client client; - - if (TAO_debug_level > 4) - { - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO (%P|%t) HTTP_Parser::parse_string, getting IOR from <%s> <%s> <%d>\n"), - hostname, filename, port)); - } - - // Open the client - if (client.open (filename, - hostname, - port) == -1) - { - client.close (); - return 0; - } - - delete [] hostname; - ACE_OS::free (filename); - - // Read from it - if (client.read (mb) <= 0) - { - client.close (); - return 0; - } - - // We get multiple message blocks back, concatenate them to - // one large string - ACE_CString string; - for (ACE_Message_Block * curr = mb; curr != 0; curr = curr->cont ()) - string += curr->rd_ptr(); - - CORBA::Object_ptr object = CORBA::Object::_nil (); - ACE_TRY - { - object = orb->string_to_object (string.c_str() ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_RE_THROW; - } - ACE_ENDTRY; - ACE_CHECK_RETURN (CORBA::Object::_nil ()); - - return object; -} - -TAO_END_VERSIONED_NAMESPACE_DECL - -ACE_STATIC_SVC_DEFINE (TAO_HTTP_Parser, - ACE_TEXT ("HTTP_Parser"), - ACE_SVC_OBJ_T, - &ACE_SVC_NAME (TAO_HTTP_Parser), - ACE_Service_Type::DELETE_THIS | - ACE_Service_Type::DELETE_OBJ, - 0) - -ACE_FACTORY_DEFINE (TAO, TAO_HTTP_Parser) - - |