activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tab...@apache.org
Subject svn commit: r476837 - /incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/connector/openwire/utils/BooleanStream.cpp
Date Sun, 19 Nov 2006 15:14:42 GMT
Author: tabish
Date: Sun Nov 19 07:14:41 2006
New Revision: 476837

URL: http://svn.apache.org/viewvc?view=rev&rev=476837
Log:
Code Submit for planned Openwire Support

Modified:
    incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/connector/openwire/utils/BooleanStream.cpp

Modified: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/connector/openwire/utils/BooleanStream.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/connector/openwire/utils/BooleanStream.cpp?view=diff&rev=476837&r1=476836&r2=476837
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/connector/openwire/utils/BooleanStream.cpp
(original)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/connector/openwire/utils/BooleanStream.cpp
Sun Nov 19 07:14:41 2006
@@ -20,6 +20,7 @@
 using namespace std;
 using namespace activemq;
 using namespace activemq::io;
+using namespace activemq::exceptions;
 using namespace activemq::connector;
 using namespace activemq::connector::openwire;
 using namespace activemq::connector::openwire::utils;
@@ -41,98 +42,130 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 bool BooleanStream::readBoolean() throw ( IOException ) {
-    //assert arrayPos <= arrayLimit;
-    unsigned char b = data[arrayPos];
-    bool rc = ( ( b >> bytePos ) & 0x01 ) != 0;
-    bytePos++;
-    if( bytePos >= 8 ) {
-        bytePos = 0;
-        arrayPos++;
+
+    try {
+        //assert arrayPos <= arrayLimit;
+        unsigned char b = data[arrayPos];
+        bool rc = ( ( b >> bytePos ) & 0x01 ) != 0;
+        bytePos++;
+        if( bytePos >= 8 ) {
+            bytePos = 0;
+            arrayPos++;
+        }
+        return rc;
     }
-    return rc;
+    AMQ_CATCH_RETHROW( IOException )
+    AMQ_CATCH_EXCEPTION_CONVERT( ActiveMQException, IOException )
+    AMQ_CATCHALL_THROW( IOException )
 }
 
 ///////////////////////////////////////////////////////////////////////////////
 void BooleanStream::writeBoolean( bool value ) throw ( IOException ) {
-    if( bytePos == 0 ) {
-        arrayLimit++;
+
+    try{
         
-        if( (size_t)arrayLimit >= data.capacity() ) {
-            // re-grow the array if necessary
-            data.resize( data.size() * 2 );
+        if( bytePos == 0 ) {
+            arrayLimit++;
+            
+            if( (size_t)arrayLimit >= data.capacity() ) {
+                // re-grow the array if necessary
+                data.resize( data.size() * 2 );
+            }
+        }
+        
+        if( value ) {
+            data[arrayPos] |= ( 0x01 << bytePos ); 
+        }
+        
+        bytePos++;
+        
+        // Wrap around when we hit the next byte
+        if( bytePos >= 8 ) {
+            bytePos=0;
+            arrayPos++;
         }
     }
-    
-    if( value ) {
-        data[arrayPos] |= ( 0x01 << bytePos ); 
-    }
-    
-    bytePos++;
-    
-    // Wrap around when we hit the next byte
-    if( bytePos >= 8 ) {
-        bytePos=0;
-        arrayPos++;
-    }
+    AMQ_CATCH_RETHROW( IOException )
+    AMQ_CATCH_EXCEPTION_CONVERT( ActiveMQException, IOException )
+    AMQ_CATCHALL_THROW( IOException )
 }
 
 ///////////////////////////////////////////////////////////////////////////////    
 void BooleanStream::marshal( DataOutputStream* dataOut ) throw ( IOException ) {
-    if( arrayLimit < 64 ) {
-        dataOut->writeByte( arrayLimit );
-    } else if( arrayLimit < 256 ) { // max value of unsigned char
-        dataOut->writeByte( 0xC0 );
-        dataOut->writeByte( arrayLimit );            
-    } else {
-        dataOut->writeByte( 0x80 );
-        dataOut->writeShort( arrayLimit );            
-    }
-    
-    // Dump the payload
-    dataOut->write( &data[0], arrayLimit );
-    clear();
+
+    try {
+        
+        if( arrayLimit < 64 ) {
+            dataOut->writeByte( arrayLimit );
+        } else if( arrayLimit < 256 ) { // max value of unsigned char
+            dataOut->writeByte( 0xC0 );
+            dataOut->writeByte( arrayLimit );            
+        } else {
+            dataOut->writeByte( 0x80 );
+            dataOut->writeShort( arrayLimit );            
+        }
+        
+        // Dump the payload
+        dataOut->write( &data[0], arrayLimit );
+        clear();
+    }
+    AMQ_CATCH_RETHROW( IOException )
+    AMQ_CATCH_EXCEPTION_CONVERT( ActiveMQException, IOException )
+    AMQ_CATCHALL_THROW( IOException )
 }
 
 ///////////////////////////////////////////////////////////////////////////////    
 void BooleanStream::marshal( std::vector< unsigned char >& dataOut ) {
-    if( arrayLimit < 64 ) {
-        dataOut.push_back( ( unsigned char ) arrayLimit );
-    } else if( arrayLimit < 256 ) { // max value of unsigned byte
-        dataOut.push_back( ( unsigned char ) 0xC0 );
-        dataOut.push_back( ( unsigned char ) arrayLimit );            
-    } else {
-        dataOut.push_back( ( unsigned char ) 0x80 );
-        dataOut.push_back( arrayLimit >> 8 );   // High Byte
-        dataOut.push_back( arrayLimit & 0xFF ); // Low Byte 
-    }
     
-    // Insert all data from data into the passed buffer
-    dataOut.insert( dataOut.end(), &data[0], &data[arrayLimit] );
+    try{
+        if( arrayLimit < 64 ) {
+            dataOut.push_back( ( unsigned char ) arrayLimit );
+        } else if( arrayLimit < 256 ) { // max value of unsigned byte
+            dataOut.push_back( ( unsigned char ) 0xC0 );
+            dataOut.push_back( ( unsigned char ) arrayLimit );            
+        } else {
+            dataOut.push_back( ( unsigned char ) 0x80 );
+            dataOut.push_back( arrayLimit >> 8 );   // High Byte
+            dataOut.push_back( arrayLimit & 0xFF ); // Low Byte 
+        }
+        
+        // Insert all data from data into the passed buffer
+        dataOut.insert( dataOut.end(), &data[0], &data[arrayLimit] );
+    }
+    AMQ_CATCH_RETHROW( IOException )
+    AMQ_CATCH_EXCEPTION_CONVERT( ActiveMQException, IOException )
+    AMQ_CATCHALL_THROW( IOException )
 }
 
 ///////////////////////////////////////////////////////////////////////////////    
 void BooleanStream::unmarshal( DataInputStream* dataIn ) throw ( IOException ) {
-    
-    arrayLimit = (short)( dataIn->readByte() & 0xFF );
-    
-    if ( arrayLimit == 0xC0 ) {
+
+    try{
+            
         arrayLimit = (short)( dataIn->readByte() & 0xFF );
-    } else if( arrayLimit == 0x80 ) {
-        arrayLimit = dataIn->readShort();
-    } 
+        
+        if ( arrayLimit == 0xC0 ) {
+            arrayLimit = (short)( dataIn->readByte() & 0xFF );
+        } else if( arrayLimit == 0x80 ) {
+            arrayLimit = dataIn->readShort();
+        } 
+        
+        // Reserve space all at once if needed.
+        if( data.capacity() < (size_t)arrayLimit ) {
+            data.reserve( arrayLimit );
+        }
+        
+        // Make sure we can accomodate all the data.
+        data.resize( arrayLimit );
     
-    // Reserve space all at once if needed.
-    if( data.capacity() < (size_t)arrayLimit ) {
-        data.reserve( arrayLimit );
+        // Make sure we get all the data we are expecting
+        dataIn->readFully( &data[0], 0, arrayLimit );
+        
+        clear();
     }
-    
-    // Make sure we can accomodate all the data.
-    data.resize( arrayLimit );
-
-    // Make sure we get all the data we are expecting
-    dataIn->readFully( &data[0], 0, arrayLimit );
-    
-    clear();
+    AMQ_CATCH_RETHROW( IOException )
+    AMQ_CATCH_EXCEPTION_CONVERT( ActiveMQException, IOException )
+    AMQ_CATCHALL_THROW( IOException )
 }
 
 ///////////////////////////////////////////////////////////////////////////////    



Mime
View raw message