diff options
Diffstat (limited to 'TAO/utils/IOR-parser')
-rw-r--r-- | TAO/utils/IOR-parser/IOR_Parser.dsp | 101 | ||||
-rw-r--r-- | TAO/utils/IOR-parser/IOR_Parser.dsw | 29 | ||||
-rw-r--r-- | TAO/utils/IOR-parser/Makefile | 82 | ||||
-rw-r--r-- | TAO/utils/IOR-parser/Orbix.IOR | 1 | ||||
-rw-r--r-- | TAO/utils/IOR-parser/README | 23 | ||||
-rw-r--r-- | TAO/utils/IOR-parser/Tao.IOR | 1 | ||||
-rw-r--r-- | TAO/utils/IOR-parser/TaoSimple.IOR | 1 | ||||
-rw-r--r-- | TAO/utils/IOR-parser/VisiBroker.IOR | 1 | ||||
-rw-r--r-- | TAO/utils/IOR-parser/ior-handler.cpp | 610 | ||||
-rw-r--r-- | TAO/utils/IOR-parser/ior-handler.h | 137 | ||||
-rw-r--r-- | TAO/utils/IOR-parser/ior-parser.cpp | 38 |
11 files changed, 0 insertions, 1024 deletions
diff --git a/TAO/utils/IOR-parser/IOR_Parser.dsp b/TAO/utils/IOR-parser/IOR_Parser.dsp deleted file mode 100644 index 35a4bc8dfc7..00000000000 --- a/TAO/utils/IOR-parser/IOR_Parser.dsp +++ /dev/null @@ -1,101 +0,0 @@ -# Microsoft Developer Studio Project File - Name="IOR Parser" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=IOR Parser - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "IOR_Parser.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "IOR_Parser.mak" CFG="IOR Parser - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "IOR Parser - Win32 Release" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE "IOR Parser - Win32 Debug" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "IOR Parser - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\\" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x407 /d "NDEBUG"
-# ADD RSC /l 0x407 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 ace.lib /nologo /subsystem:console /machine:I386 /out:"Release/parseIor.exe" /libpath:"..\..\..\ace"
-
-!ELSEIF "$(CFG)" == "IOR Parser - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x407 /d "_DEBUG"
-# ADD RSC /l 0x407 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 aced.lib /nologo /subsystem:console /debug /machine:I386 /out:"parseIor.exe" /pdbtype:sept /libpath:"..\..\..\ace"
-
-!ENDIF
-
-# Begin Target
-
-# Name "IOR Parser - Win32 Release"
-# Name "IOR Parser - Win32 Debug"
-# Begin Source File
-
-SOURCE="ior-handler.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="ior-handler.h"
-# End Source File
-# Begin Source File
-
-SOURCE="ior-parser.cpp"
-# End Source File
-# End Target
-# End Project
diff --git a/TAO/utils/IOR-parser/IOR_Parser.dsw b/TAO/utils/IOR-parser/IOR_Parser.dsw deleted file mode 100644 index 14ece8c7c41..00000000000 --- a/TAO/utils/IOR-parser/IOR_Parser.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "IOR_Parser"="IOR_Parser.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/TAO/utils/IOR-parser/Makefile b/TAO/utils/IOR-parser/Makefile deleted file mode 100644 index b019d793f16..00000000000 --- a/TAO/utils/IOR-parser/Makefile +++ /dev/null @@ -1,82 +0,0 @@ -#---------------------------------------------------------------------------- -# $Id$ -# -# Makefile for the IOR Parser -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = ior-parser - -FILES = ior-handler - -LIBNAME = libIOR -LIB = $(LIBNAME).a -SHLIB = $(LIBNAME).$(SOEXT) - -SRC = $(addsuffix .cpp,$(FILES)) -LSRC = $(addsuffix .cpp,$(FILES)) -OBJ = $(addsuffix .o,$(FILES)) - -#BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -.obj/ior-handler.o .obj/ior-handler.so .shobj/ior-handler.o .shobj/ior-handler.so: ior-handler.cpp ior-handler.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Log_Record.i -.obj/ior-handler.o .obj/ior-handler.so .shobj/ior-handler.o .shobj/ior-handler.so: ior-handler.cpp ior-handler.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Log_Record.i - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/TAO/utils/IOR-parser/Orbix.IOR b/TAO/utils/IOR-parser/Orbix.IOR deleted file mode 100644 index 7731ac20965..00000000000 --- a/TAO/utils/IOR-parser/Orbix.IOR +++ /dev/null @@ -1 +0,0 @@ -IOR:000000000000001249444c3a4563686f54657374733a312e3000000000000001000000000000005600010000000000146c616d6264612e6563652e756373622e6564750006220000000000323a5c6c616d6264612e6563652e756373622e6564753a4563686f5365727665723a303a3a49523a4563686f5465737473003a diff --git a/TAO/utils/IOR-parser/README b/TAO/utils/IOR-parser/README deleted file mode 100644 index 44ca61a2fad..00000000000 --- a/TAO/utils/IOR-parser/README +++ /dev/null @@ -1,23 +0,0 @@ -// FILENAME : README -// AUTHOR : Priya Narasimhan <priya@alpha.ece.ucsb.edu> -// LAST MODIFIED : September 18, 1998 -// DESCRIPTION : Description of the IOR Parser - -The "ior-parser" utility parses IORs generated by most ORBs. It has been -tested with Orbix, VisiBroker and TAO so far. - -USAGE: ior-parser <IOR filename> - -There are sample IORs (Tao.IOR, Orbix.IOR and Visibroker.IOR) in this -directory. You can run the "ior-parser" utility against these to see -what the normal output looks like. - -RELEASE NOTES: - -The "ior-parser" does not currently work if multi-component profiles are -embedded in the IOR. Since Visibroker IORs normally contain -multi-component (LIOP and IIOP) profiles, this version of the IOR Parser -will work only if the Visibroker server is forced to generate a -single-component (IIOP) profile by passing it the command-line option -"-OAlocalIPC 0". - diff --git a/TAO/utils/IOR-parser/Tao.IOR b/TAO/utils/IOR-parser/Tao.IOR deleted file mode 100644 index 830ed119a9c..00000000000 --- a/TAO/utils/IOR-parser/Tao.IOR +++ /dev/null @@ -1 +0,0 @@ -IOR:000000000000001649444c3a73696d706c655f6f626a6563743a312e3000000000000001000000000000003600010000000000036d750000aada00000000002250333564623666626130303062383766612f6368696c645f706f612f736572766572
\ No newline at end of file diff --git a/TAO/utils/IOR-parser/TaoSimple.IOR b/TAO/utils/IOR-parser/TaoSimple.IOR deleted file mode 100644 index 830ed119a9c..00000000000 --- a/TAO/utils/IOR-parser/TaoSimple.IOR +++ /dev/null @@ -1 +0,0 @@ -IOR:000000000000001649444c3a73696d706c655f6f626a6563743a312e3000000000000001000000000000003600010000000000036d750000aada00000000002250333564623666626130303062383766612f6368696c645f706f612f736572766572
\ No newline at end of file diff --git a/TAO/utils/IOR-parser/VisiBroker.IOR b/TAO/utils/IOR-parser/VisiBroker.IOR deleted file mode 100644 index 168d2418032..00000000000 --- a/TAO/utils/IOR-parser/VisiBroker.IOR +++ /dev/null @@ -1 +0,0 @@ -IOR:002020200000001049444c3a4163636f756e743a312e300000000001000000000000004e00010020000000103132382e3131312e3139332e31323000842920200000002e00504d43000000000000001049444c3a4163636f756e743a312e30000000000e4a61636b20422e20517569636b00 diff --git a/TAO/utils/IOR-parser/ior-handler.cpp b/TAO/utils/IOR-parser/ior-handler.cpp deleted file mode 100644 index 9d36047089f..00000000000 --- a/TAO/utils/IOR-parser/ior-handler.cpp +++ /dev/null @@ -1,610 +0,0 @@ -// $Id$ - -#include "ior-handler.h" - -IorHandler::IorHandler (void) -{ -} - -int -IorHandler::hexChar2int (char thisChar) -{ - switch (thisChar) - { - case '0': return (0); - case '1': return (1); - case '2': return (2); - case '3': return (3); - case '4': return (4); - case '5': return (5); - case '6': return (6); - case '7': return (7); - case '8': return (8); - case '9': return (9); - case 'a': return (10); - case 'b': return (11); - case 'c': return (12); - case 'd': return (13); - case 'e': return (14); - case 'f': return (15); - } - return -1; -} - -u_long -IorHandler::getOctet8Field (char *readPtr, int *hexCharsRead) -{ - char octet8Holder[8]; - u_long value; - int i; - - for (i = 0; i < 8; i++) - octet8Holder[i] = * (readPtr + i); - - *hexCharsRead = 8; - - value = 16*hexChar2int (octet8Holder[6]) + hexChar2int (octet8Holder[7]); - return (value); -} - -u_long -IorHandler::getOctet4Field (char *readPtr, int *hexCharsRead) -{ - char octet4Holder[4]; - u_long value; - int i; - - for (i = 0; i < 4; i++) - octet4Holder[i] = * (readPtr + i); - - *hexCharsRead = 4; - -#ifdef ACE_BIG_ENDIAN - // On a big endian platform, the MSB is first and the LSB is next - value = 16*16*16* hexChar2int (octet4Holder[0]) + - 16*16* hexChar2int (octet4Holder[1]) + - 16* hexChar2int (octet4Holder[2]) + - hexChar2int (octet4Holder[3]); -#endif - - -#ifdef ACE_LITTLE_ENDIAN - // On a little endian platform, the LSB is first and the MSB is next - value = 16*16*16* hexChar2int (octet4Holder[2]) + - 16*16* hexChar2int (octet4Holder[3]) + - 16* hexChar2int (octet4Holder[0]) + - hexChar2int (octet4Holder[1]); -#endif - - - return (value); -} - -u_long -IorHandler::getOctet2Field (char *readPtr, int *hexCharsRead) -{ - char octet2Holder[2]; - u_long value; - int i; - - for (i = 0; i < 2; i++) - octet2Holder[i] = * (readPtr + i); - - *hexCharsRead = 2; - - value = 16 * hexChar2int (octet2Holder[0]) + hexChar2int (octet2Holder[1]); - return (value); -} - -void -IorHandler::skipSpaceIfAny(char *readPtr, int *hexCharsRead) -{ - char nullOctet[2]; - int offset; - - *hexCharsRead = 0; - offset = 0; - - // Some ORBs tend to insert a single space character, ie, ASCII - // equivalent 20, at the end of certain fields in the IOR. Use - // skipSpaceIfAny() with care since in certain cases, it might - // actually represent an unsigned long. - - nullOctet[0] = *(readPtr + offset); - nullOctet[1] = *(readPtr + offset + 1); - - if ((nullOctet[0] == '2') && (nullOctet[1] == '0')) - offset += 2; - - *hexCharsRead = offset; -} - -void -IorHandler::skipNullOctets (char *readPtr, int *hexCharsRead, int expectingStr) -{ - char nullOctet[4]; - int offset; - - *hexCharsRead = 0; - offset = 0; - - // There sometimes occurs a null padding of 2 octets after strings - // such as the type_id in order to ensure even number of octets. - - while (1) - { - nullOctet[0] = *(readPtr + offset); - nullOctet[1] = *(readPtr + offset + 1); - nullOctet[2] = *(readPtr + offset + 2); - nullOctet[3] = *(readPtr + offset + 3); - - // Some ORBs tend to pad the IORs with double space characters, - // ie., 2020 in ASCII equivalent - - if ((nullOctet[0] == '2') && (nullOctet[1] == '0') && - (nullOctet[2] == '2') && (nullOctet[3] == '0')) - { - offset += 4; - continue; - } - - if ((nullOctet[0] == '0') && (nullOctet[1] == '0')) - offset += 2; - else - if ((expectingStr) && (hexChar2int(nullOctet[0]) >= 8)) - offset += 2; - else - break; - } - - *hexCharsRead = offset; -} - -int -IorHandler::findIfVisiIor(char *readPtr, int *hexCharsRead) -{ - int offset; - int hasVisiPreamble = 0; - - *hexCharsRead = 0; - offset = 0; - - if ((getCharacter(readPtr, &offset) == 'P') && - (getCharacter(readPtr, &offset) == 'M') && - (getCharacter(readPtr, &offset) == 'C')) - { - hasVisiPreamble = 1; - *hexCharsRead = offset; - } - - return (hasVisiPreamble); -} - -char -IorHandler::getCharacter (char *readPtr, int *offset) -{ - char octetPair[2]; - int intEquiv; - - octetPair[0] = *(readPtr + *offset); - octetPair[1] = *(readPtr + *offset + 1); - - intEquiv = 16 * hexChar2int(octetPair[0]) + hexChar2int(octetPair[1]); - *offset += 2; - - return ((char) intEquiv); -} - -char * -IorHandler::getString (char *readPtr, int givenLen) -{ - static char parsedStr[MAX_IOR_FIELD_LEN]; - char octetPair[2]; - char parsedOctetPair[2]; - int intEquiv; - int i = 0; - int j = 0; - - // i indexes hexChars while j indexes octet pairs - - while (i <= (givenLen - 2)) - { - octetPair[0] = * (readPtr + i); - octetPair[1] = * (readPtr + i + 1); - - intEquiv = 16 * hexChar2int (octetPair[0]) + hexChar2int (octetPair[1]); - sprintf (parsedOctetPair, "%c", intEquiv); - parsedStr[j] = parsedOctetPair[0]; - j ++; - - i += 2; - } - - return (parsedStr); -} - -void -IorHandler::interpretIor (char *thisIor, struct IOR *thisIorInfo) -{ - int numCharsToSkip; - int validTypeId = 0; - int isVisiIor = 0; - int ulongValue; - - // Skip the prefix "IOR:" - int numHexCharsRead = 4; - - // Type ID must be at least 4 bytes in length since type_id is prefixed - // by the string "IDL:" - int validTypeIdLen = 0; - - while (!validTypeIdLen) - { - skipNullOctets((char *)(thisIor + numHexCharsRead), &numCharsToSkip, 1); - numHexCharsRead += numCharsToSkip; - - // Read the length of the type_id field - ulongValue = getOctet2Field((char *)(thisIor + numHexCharsRead), - &numCharsToSkip); - - if (ulongValue == 0) - { - ACE_DEBUG ((LM_DEBUG, - "type_id len seems to be 0 \n")); - ACE_OS::exit (1); - } - - numHexCharsRead += numCharsToSkip; - - if (ulongValue > 4) - { - validTypeIdLen = 1; - thisIorInfo->typeIdLen = ulongValue; - } - - skipNullOctets((char *)(thisIor + numHexCharsRead), &numCharsToSkip, 1); - numHexCharsRead += numCharsToSkip; - - // Read the Type ID - ACE_OS::strncpy (thisIorInfo->typeId, - getString((char *)(thisIor + numHexCharsRead), - 2 * thisIorInfo->typeIdLen), - thisIorInfo->typeIdLen); - - // Confirm that this is a valid TypeId by looking for the IDL - // interface. Additionally, the IDL interface could be extracted - // and used for other purposes. - getIdlInterface(thisIorInfo->typeId, &validTypeId); - - if (!validTypeId) - { - validTypeIdLen = 0; - numHexCharsRead -= numCharsToSkip; - } - } - - numHexCharsRead += 2 * thisIorInfo->typeIdLen; - - ACE_DEBUG ((LM_DEBUG, - "\nTypeId\t\t: %s (%d bytes)\n", - thisIorInfo->typeId, - thisIorInfo->typeIdLen)); - - skipNullOctets((char *)(thisIor + numHexCharsRead), &numCharsToSkip, 0); - numHexCharsRead += numCharsToSkip; - - // Read the 4 octets, which should equal 1 (numTaggedProfiles = 1) - // for a single-component profile. - ulongValue = getOctet2Field((char *)(thisIor + numHexCharsRead), - &numCharsToSkip); - - if (ulongValue != 1) - { - ACE_DEBUG ((LM_DEBUG, - "numTaggedProfiles = %d\n", - ulongValue)); - ACE_OS::exit (1); - } - - numHexCharsRead += numCharsToSkip; - - // Read the 4 octets, which should equal 0 (TAG_INTERNET_IOP = 0) - ulongValue = getOctet8Field((char *)(thisIor + numHexCharsRead), - &numCharsToSkip); - - if (ulongValue != 0) - { - ACE_DEBUG ((LM_DEBUG, - "TAG_INTERNET_IOP != 0\n")); - ACE_OS::exit (1); - } - - numHexCharsRead += numCharsToSkip; - - skipNullOctets((char *)(thisIor + numHexCharsRead), &numCharsToSkip, 0); - numHexCharsRead += numCharsToSkip; - - // Read the 4 octets, which represent the length of the ProfileBody - ulongValue = getOctet2Field((char *)(thisIor + numHexCharsRead), - &numCharsToSkip); - - if (ulongValue == 0) - { - ACE_DEBUG ((LM_DEBUG, - "ProfileBody len equals 0\n")); - ACE_OS::exit (1); - } - - numHexCharsRead += numCharsToSkip; - thisIorInfo->profileBodyLen = ulongValue; - - ACE_DEBUG ((LM_DEBUG, - "\nTAG_INTERNET_IOP Profile (%d bytes):\n", - ulongValue)); - - skipNullOctets((char *)(thisIor + numHexCharsRead), &numCharsToSkip, 1); - numHexCharsRead += numCharsToSkip; - - // Read the 4 octets, which represent the IIOP version number = 1 - // Read the major number of the IIOP Version (should be 1) - ulongValue = getOctet2Field((char *)(thisIor + numHexCharsRead), - &numCharsToSkip); - - if (ulongValue != 1) - { - ACE_DEBUG ((LM_DEBUG, - "IIOP major version != 1\n")); - ACE_OS::exit (1); - } - - numHexCharsRead += numCharsToSkip; - ACE_DEBUG ((LM_DEBUG, - "IIOP Version: %d.", - ulongValue)); - - // Read the minor number of the IIOP Version (can be 0 or 1) - ulongValue = getOctet2Field((char *)(thisIor + numHexCharsRead), - &numCharsToSkip); - - if ((ulongValue != 0) && (ulongValue != 1)) - { - ACE_DEBUG ((LM_DEBUG, - "IIOP minor version != 0 or 1\n")); - ACE_OS::exit (1); - } - - numHexCharsRead += numCharsToSkip; - ACE_DEBUG ((LM_DEBUG, - "%d\n", - ulongValue)); - - skipSpaceIfAny((char *)(thisIor + numHexCharsRead), &numCharsToSkip); - numHexCharsRead += numCharsToSkip; - skipNullOctets((char *)(thisIor + numHexCharsRead), &numCharsToSkip, 0); - numHexCharsRead += numCharsToSkip; - - // Read the 2 octets, which represent the length of the hostname - ulongValue = getOctet2Field((char *)(thisIor + numHexCharsRead), - &numCharsToSkip); - - if (ulongValue == 0) - { - ACE_DEBUG ((LM_DEBUG, - "hostLen equals 0\n")); - ACE_OS::exit (1); - } - - numHexCharsRead += numCharsToSkip; - thisIorInfo->hostLen = ulongValue; - skipNullOctets((char *)(thisIor + numHexCharsRead), &numCharsToSkip, 1); - numHexCharsRead += numCharsToSkip; - - // Read the hostname and store it - ACE_OS::strncpy (thisIorInfo->HostName, - getString((char *)(thisIor + numHexCharsRead), - 2 * thisIorInfo->hostLen), thisIorInfo->hostLen); - numHexCharsRead += 2 * thisIorInfo->hostLen; - - ACE_DEBUG ((LM_DEBUG, - " HostName : %s (%d bytes)\n", - thisIorInfo->HostName, - thisIorInfo->hostLen)); - - skipNullOctets((char *)(thisIor + numHexCharsRead), &numCharsToSkip, 0); - numHexCharsRead += numCharsToSkip; - - // Read the port number and store it - ulongValue = getOctet4Field((char *)(thisIor + numHexCharsRead), - &numCharsToSkip); - - if (ulongValue == 0) - { - ACE_DEBUG ((LM_DEBUG, - "port number equals 0\n")); - ACE_OS::exit (1); - } - - numHexCharsRead += numCharsToSkip; - thisIorInfo->portNum = ulongValue; - - ACE_DEBUG ((LM_DEBUG, - " Port Number: %d\n", - thisIorInfo->portNum)); - - skipNullOctets((char *)(thisIor + numHexCharsRead), &numCharsToSkip, 0); - numHexCharsRead += numCharsToSkip; - - // Read the object key length - ulongValue = getOctet2Field((char *)(thisIor + numHexCharsRead), - &numCharsToSkip); - - if (ulongValue == 0) - { - ACE_DEBUG ((LM_DEBUG, - "objectKeyLen equals 0\n")); - ACE_OS::exit (1); - } - - numHexCharsRead += numCharsToSkip; - thisIorInfo->objectKeyLen = ulongValue; - - skipNullOctets((char *)(thisIor + numHexCharsRead), &numCharsToSkip, 1); - numHexCharsRead += numCharsToSkip; - - // VisiBroker tends to insert the preamble "PMC" (=> Post Modern - // Computing), before the "real" object key actually starts. Identify - // if this is the case. - isVisiIor = findIfVisiIor((char *)(thisIor + numHexCharsRead), - &numCharsToSkip); - if (isVisiIor) - { - numHexCharsRead += numCharsToSkip; - skipNullOctets((char *)(thisIor + numHexCharsRead), &numCharsToSkip, 0); - numHexCharsRead += numCharsToSkip; - - ACE_DEBUG ((LM_DEBUG, - " ObjectKey : PMC")); - - skipNullOctets((char *)(thisIor + numHexCharsRead), &numCharsToSkip, 0); - numHexCharsRead += numCharsToSkip; - - // Read the real object key length and then the real object key - ulongValue = getOctet2Field((char *)(thisIor + numHexCharsRead), - &numCharsToSkip); - - if (ulongValue == 0) - { - ACE_DEBUG ((LM_DEBUG, - "VisiBroker IOR - real objectKeyLen equals 0\n")); - ACE_OS::exit (1); - } - - numHexCharsRead += numCharsToSkip; - - ACE_OS::strncpy (thisIorInfo->objectKey, - getString((char *)(thisIor + numHexCharsRead), - 2 * ulongValue), ulongValue); - - numHexCharsRead += 2 * ulongValue; - - ACE_DEBUG ((LM_DEBUG, - "%s", - thisIorInfo->objectKey, - ulongValue)); - - skipNullOctets((char *)(thisIor + numHexCharsRead), &numCharsToSkip, 1); - numHexCharsRead += numCharsToSkip; - - // Read the object name length and then the object name - ulongValue = getOctet2Field((char *)(thisIor + numHexCharsRead), - &numCharsToSkip); - - if (ulongValue == 0) - { - ACE_DEBUG ((LM_DEBUG, - "\n[No object name] (%d bytes)\n\n", - thisIorInfo->objectKeyLen)); - ACE_OS::exit (1); - } - - numHexCharsRead += numCharsToSkip; - - ACE_OS::strncpy (thisIorInfo->objectKey, - getString((char *)(thisIor + numHexCharsRead), - 2 * ulongValue), ulongValue); - - numHexCharsRead += 2 * ulongValue; - - ACE_DEBUG ((LM_DEBUG, - "[object name: %s] (%d bytes)\n\n", - thisIorInfo->objectKey, - thisIorInfo->objectKeyLen)); - } - - else - { - // Non-VisiBroker IOR - Read the object_key and store it - ACE_OS::strncpy (thisIorInfo->objectKey, - getString((char *)(thisIor + numHexCharsRead), - 2 * thisIorInfo->objectKeyLen), - thisIorInfo->objectKeyLen); - - numHexCharsRead += 2 * thisIorInfo->objectKeyLen; - - ACE_DEBUG ((LM_DEBUG, - " ObjectKey : %s (%d bytes)\n\n", - thisIorInfo->objectKey, - thisIorInfo->objectKeyLen)); - } - -} - - -char * -IorHandler::getIdlInterface (char *typeId, int *validTypeId) -{ - static char idlInterface[MAX_TYPE_ID_LEN]; - int lenInterface; - - // A sample type_id for an IDL interface name "EchoTests" is - // IDL:EchoTests:1.0 => the trick is to isolate the parts between - // the two colons. - if ((*typeId != 'I') && (*(typeId+1) != 'D') && (*(typeId+2) != 'L')) - { - *validTypeId = 0; - return ((char *)typeId); - } - - char *readStart = strchr(typeId, ':'); - - if (readStart == NULL) - { - ACE_DEBUG ((LM_DEBUG, - "getIdlInterface: type_id contains no starting :\n")); - ACE_OS::exit (1); - } - - - char *readEnd = strrchr (typeId, ':'); - - if (readEnd == NULL) - { - ACE_DEBUG ((LM_DEBUG, - "getIdlInterface: type_id contains no ending:\n")); - ACE_OS::exit (1); - } - - // Now, count the number of bytes between the two colons. - lenInterface = readEnd - readStart - 1; - - // Copy the IDL interface part of the type_id. - ACE_OS::strncpy ((char *)idlInterface, - readStart+1, - lenInterface); - idlInterface[lenInterface] = '\0'; - - *validTypeId = 1; - return (char *) idlInterface; -} - -void -IorHandler::readIorFromFile (char *filename) -{ - FILE *fp = ACE_OS::fopen (filename, "r"); - - // Read the real IOR from the file REAL_IOR_FILE. - if (fp == NULL) - { - ACE_ERROR ((LM_ERROR, - "%p\n", - "Unable to open file")); - ACE_OS::exit (1); - } - - fscanf (fp, - "%s", - stringIOR); - ACE_OS::fclose (fp); - - interpretIor (stringIOR, &parsedIOR); -} diff --git a/TAO/utils/IOR-parser/ior-handler.h b/TAO/utils/IOR-parser/ior-handler.h deleted file mode 100644 index ff8970d488f..00000000000 --- a/TAO/utils/IOR-parser/ior-handler.h +++ /dev/null @@ -1,137 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// TAO/utils/IOR-parser -// -// = FILENAME -// ior-handler.h -// -// = DESCRIPTION -// Provides the definition of a class that parses real (valid) IORs. -// -// = AUTHORS -// Priya Narasimhan <priya@lambda.ece.ucsb.edu> -// -// ============================================================================ - -#ifndef __IORPARSER_H__ -#define __IORPARSER_H__ - -#include "ace/OS.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/Basic_Types.h" // To determine BYTE_ORDER - -// Maximum length of the stringified IOR, the type_id, and the -// object_key and hostname fields. Tentatively assigned. -#define MAX_IOR_LEN 600 -#define MAX_IOR_FIELD_LEN 200 -#define MAX_TYPE_ID_LEN 100 -#define MAX_OBJ_KEY_LEN 100 -#define MAX_HOSTNAME_LEN 64 - - -class IOR -{ - // = TITLE - // This is the useful information obtained from parsing an IOR. - // - // = DESCRIPTION - // This structure assumes that the profile_id is - // TAG_INTERNET_IOP and that there is only one TaggedProfile in - // the IOR. -public: - u_long typeIdLen; - // The length of the type_id field of the IOR - - char typeId[MAX_TYPE_ID_LEN]; - // The string in the type_id field of the IOR - - char idlInterface[MAX_TYPE_ID_LEN]; - // The IDL interface of the server that published the IOR (can be extracted - // from the type_id field) - - u_long profileBodyLen; - // The length of the body of the profile field of the IOR - - u_long hostLen; - // The length of the hostname embedded in the IOR - - char HostName[MAX_HOSTNAME_LEN]; - // The server's hostname embedded in the IOR - - u_long portNum; - // The server's port number embedded in the IOR - - u_long objectKeyLen; - // The length of the object_key field of the IOR - - char objectKey[MAX_OBJ_KEY_LEN]; - // The object_key field of the IOR -}; - -class IorHandler -{ - // = TITLE - // This is the class that takes in a real (valid) IOR and - // parses it. - // - // = DESCRIPTION - // This class prints out the useful information in the - // IORs generated by VisiBroker, Orbix and TAO -public: - IorHandler (void); - // Constructor - - void interpretIor (char *thisIor, struct IOR *thisIorInfo); - // The main IOR parsing routine - - char *getIdlInterface (char *typeId, int *validTypeId); - // Extracts the IDL interface from the type_id field in the IOR - - void readIorFromFile (char *filename); - // Reads in the IOR from a specified file - - char stringIOR[MAX_IOR_LEN]; - // Holds the stringified IOR during parsing - - struct IOR parsedIOR; - // Holds the parsed IOR - -private: - int hexChar2int (char thisChar); - // Converts a pair of hexadecimal-encoded characters in the stringified - // IOR into their integer value - - u_long getOctet8Field (char *readPtr, int *hexCharsRead); - // Interpret the next 8 octets into an unsigned long - - u_long getOctet4Field (char *readPtr, int *hexCharsRead); - // Interpret the next 4 octets into an unsigned long - - u_long getOctet2Field (char *readPtr, int *hexCharsRead); - // Interpret the next 2 octets into an unsigned long - - void skipSpaceIfAny (char *readPtr, int *hexCharsRead); - // Skip the space character encountered while parsing the IOR - - void skipNullOctets (char *readPtr, int *hexCharsRead, int expectingStr); - // Skip the null octets encountered while parsing the IOR - - int findIfVisiIor (char *readPtr, int *hexCharsRead); - // Finds out if VisiBroker generated this IOR - - char getCharacter (char *readPtr, int *offset); - // Extracts a single character from the IOR - - char *getString (char *readPtr, int givenLen); - // Extracts a character string of a given length from the IOR - -}; - -#endif /* __IORPARSER_H__ */ diff --git a/TAO/utils/IOR-parser/ior-parser.cpp b/TAO/utils/IOR-parser/ior-parser.cpp deleted file mode 100644 index 6099966470c..00000000000 --- a/TAO/utils/IOR-parser/ior-parser.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// TAO/utils/IOR-parser -// -// = FILENAME -// ior-parser.cpp -// -// = DESCRIPTION -// Main loop of the IOR Parser. -// -// = AUTHORS -// Priya Narasimhan <priya@lambda.ece.ucsb.edu> -// -// ============================================================================ - -#include "ior-handler.h" - -IorHandler parser; - -int -main (int argc, char **argv) -{ - if (argc <= 1 || argc >= 3) - ACE_ERROR_RETURN ((LM_ERROR, - "USAGE: parseIor <IOR filename>\n"), - 1); - - parser.readIorFromFile (argv[1]); - return 0; -} - - - - - |