You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by nm...@apache.org on 2006/07/03 13:51:54 UTC
svn commit: r418749 [1/17] - in /incubator/activemq/trunk/activemq-cpp: ./
src/ src/main/ src/main/activemq/ src/main/activemq/concurrent/
src/main/activemq/connector/ src/main/activemq/connector/openwire/
src/main/activemq/connector/stomp/ src/main/ac...
Author: nmittler
Date: Mon Jul 3 04:51:36 2006
New Revision: 418749
URL: http://svn.apache.org/viewvc?rev=418749&view=rev
Log:
AMQ-517 - adding activemq-cpp project to support integration of c++ stomp and openwire projects.
Added:
incubator/activemq/trunk/activemq-cpp/makefile
incubator/activemq/trunk/activemq-cpp/makefile-linux-debug.cfg
incubator/activemq/trunk/activemq-cpp/makefile-linux-release.cfg
incubator/activemq/trunk/activemq-cpp/makefile-windows-debug.cfg
incubator/activemq/trunk/activemq-cpp/makefile-windows-release.cfg
incubator/activemq/trunk/activemq-cpp/makefile.cfg
incubator/activemq/trunk/activemq-cpp/pom.xml
incubator/activemq/trunk/activemq-cpp/readme.txt
incubator/activemq/trunk/activemq-cpp/src/
incubator/activemq/trunk/activemq-cpp/src/main/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Concurrent.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Lock.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Mutex.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Mutex.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/PooledThread.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/PooledThread.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/PooledThreadListener.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Runnable.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Synchronizable.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/TaskListener.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Thread.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Thread.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/ThreadPool.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/ThreadPool.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/Connector.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/ConnectorException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/ConnectorFactory.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/ConnectorFactoryMap.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/ConnectorFactoryMap.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/ConnectorFactoryMapRegistrar.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/ConnectorResource.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/ConsumerInfo.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/ConsumerMessageListener.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/ProducerInfo.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/SessionInfo.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/TransactionInfo.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/openwire/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompCommandListener.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompCommandReader.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompCommandReader.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompCommandWriter.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompCommandWriter.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnector.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnector.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorFactory.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConnectorFactory.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompConsumerInfo.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompDestination.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompFrame.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompProducerInfo.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompQueue.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSelector.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSessionInfo.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSessionManager.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompSessionManager.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompTopic.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/StompTransactionInfo.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/AbortCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/AbstractCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/AckCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/BeginCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/BytesMessageCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/CommandConstants.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/CommandConstants.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/CommitCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/ConnectCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/ConnectedCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/DisconnectCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/ErrorCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/MessageCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/ReceiptCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/StompCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/StompMessage.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/SubscribeCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/TextMessageCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/commands/UnsubscribeCommand.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/marshal/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/marshal/MarshalException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/marshal/Marshalable.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/marshal/Marshaler.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/connector/stomp/marshal/Marshaler.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQAckHandler.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnectionData.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnectionFactory.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnectionFactory.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConsumer.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConsumer.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQMessage.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQMessageListener.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQProducer.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQProducer.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQSession.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQSession.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQSessionResource.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQTransaction.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/core/ActiveMQTransaction.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/exceptions/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/exceptions/ActiveMQException.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/exceptions/ActiveMQException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/exceptions/ExceptionDefines.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/exceptions/IllegalArgumentException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/exceptions/IllegalMonitorStateException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/exceptions/InterruptedException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/exceptions/InvalidStateException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/exceptions/NoSuchElementException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/exceptions/NullPointerException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/exceptions/RuntimeException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/exceptions/UnsupportedOperationException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/BufferedInputStream.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/BufferedInputStream.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/BufferedOutputStream.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/BufferedOutputStream.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/ByteArrayInputStream.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/ByteArrayInputStream.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/ByteArrayOutputStream.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/ByteArrayOutputStream.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/EndianReader.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/EndianReader.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/EndianWriter.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/EndianWriter.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/IOException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/InputStream.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/OutputStream.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/Reader.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/StandardErrorOutputStream.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/io/Writer.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/ConsoleHandler.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/Filter.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/Formatter.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/Handler.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/LogManager.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/LogManager.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/LogRecord.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/LogWriter.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/LogWriter.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/Logger.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/Logger.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/LoggerCommon.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/LoggerDefines.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/LoggerHierarchy.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/LoggerHierarchy.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/MarkBlockLogger.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/PropertiesChangeListener.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/SimpleFormatter.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/SimpleLogger.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/SimpleLogger.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/logger/StreamHandler.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/BufferedSocket.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/BufferedSocket.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/ServerSocket.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/ServerSocket.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/Socket.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/SocketException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/SocketFactory.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/SocketFactory.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/SocketInputStream.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/SocketInputStream.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/SocketOutputStream.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/SocketOutputStream.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/TcpSocket.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/network/TcpSocket.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/support/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/support/InitDirector.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/support/InitDirector.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/support/LibraryInit.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/BrokerError.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/Command.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/CommandIOException.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/CommandListener.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/CommandReader.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/CommandWriter.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/ExceptionResponse.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/FutureResponse.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/IOTransport.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/IOTransport.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/IOTransportFactory.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/IOTransportFactory.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/Response.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/ResponseCorrelator.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/ResponseCorrelator.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/TcpTransport.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/TcpTransport.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/TcpTransportFactory.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/TcpTransportFactory.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/Transport.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/TransportExceptionListener.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/TransportFactory.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/TransportFactoryMap.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/TransportFactoryMap.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/TransportFactoryMapRegistrar.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/transport/TransportFilter.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/util/
incubator/activemq/trunk/activemq-cpp/src/main/activemq/util/Boolean.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/util/Endian.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/util/Guid.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/util/Guid.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/util/Integer.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/util/Long.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/util/Number.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/util/Properties.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/util/Queue.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/util/SimpleProperties.h
incubator/activemq/trunk/activemq-cpp/src/main/activemq/util/StringTokenizer.cpp
incubator/activemq/trunk/activemq-cpp/src/main/activemq/util/StringTokenizer.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/
incubator/activemq/trunk/activemq-cpp/src/main/cms/BytesMessage.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/CMSException.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/Closeable.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/Connection.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/ConnectionFactory.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/Destination.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/ExceptionListener.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/MapMessage.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/Message.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/MessageConsumer.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/MessageListener.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/MessageProducer.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/Queue.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/Session.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/Startable.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/Stoppable.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/TemporaryQueue.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/TemporaryTopic.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/TextMessage.h
incubator/activemq/trunk/activemq-cpp/src/main/cms/Topic.h
incubator/activemq/trunk/activemq-cpp/src/test/
incubator/activemq/trunk/activemq-cpp/src/test-integration/
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/common/
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/common/AbstractTester.cpp
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/common/AbstractTester.h
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/common/IntegrationCommon.cpp
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/common/IntegrationCommon.h
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/common/Tester.h
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/durable/
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/durable/DurableTester.cpp
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/durable/DurableTester.h
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/simple/
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/simple/SimpleTester.cpp
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/simple/SimpleTester.h
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/transactional/
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/transactional/TransactionTester.cpp
incubator/activemq/trunk/activemq-cpp/src/test-integration/integration/transactional/TransactionTester.h
incubator/activemq/trunk/activemq-cpp/src/test-integration/main.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/
incubator/activemq/trunk/activemq-cpp/src/test/activemq/concurrent/
incubator/activemq/trunk/activemq-cpp/src/test/activemq/concurrent/MutexTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/concurrent/MutexTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/concurrent/ThreadPoolTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/concurrent/ThreadPoolTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/concurrent/ThreadTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/concurrent/ThreadTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/ConnectorFactoryMapRegistrarTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/ConnectorFactoryMapRegistrarTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/ConnectorFactoryMapTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/ConnectorFactoryMapTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompCommandReaderTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompCommandReaderTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompCommandWriterTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompCommandWriterTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompConnectorTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompConnectorTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompFrameTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompFrameTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompResponseBuilder.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AbortCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AbortCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AckCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AckCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BeginCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BeginCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommandConstantsTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommandConstantsTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommitCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommitCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectedCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectedCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/DisconnectCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/DisconnectCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ErrorCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ErrorCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ReceiptCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ReceiptCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/SubscribeCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/SubscribeCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/TextMessageCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/TextMessageCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/UnsubscribeCommandTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/UnsubscribeCommandTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/marshal/
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/marshal/MarshalerTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/marshal/MarshalerTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/
incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQConnectionFactoryTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQConnectionFactoryTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQConnectionTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQConnectionTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQSessionTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/core/ActiveMQSessionTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/exceptions/
incubator/activemq/trunk/activemq-cpp/src/test/activemq/exceptions/ActiveMQExceptionTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/exceptions/ActiveMQExceptionTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/io/
incubator/activemq/trunk/activemq-cpp/src/test/activemq/io/BufferedInputStreamTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/io/BufferedInputStreamTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/io/BufferedOutputStreamTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/io/BufferedOutputStreamTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/io/ByteArrayInputStreamTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/io/ByteArrayInputStreamTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/io/ByteArrayOutputStreamTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/io/ByteArrayOutputStreamTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/io/EndianReaderTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/io/EndianReaderTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/io/EndianWriterTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/io/EndianWriterTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/logger/
incubator/activemq/trunk/activemq-cpp/src/test/activemq/logger/LoggerTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/logger/LoggerTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/network/
incubator/activemq/trunk/activemq-cpp/src/test/activemq/network/SocketFactoryTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/network/SocketFactoryTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/network/SocketTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/network/SocketTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/
incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/DummyTransport.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/DummyTransportFactory.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/DummyTransportFactory.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/IOTransportTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/IOTransportTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/ResponseCorrelatorTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/ResponseCorrelatorTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/TransportFactoryMapRegistrarTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/TransportFactoryMapRegistrarTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/TransportFactoryMapTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/transport/TransportFactoryMapTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/util/
incubator/activemq/trunk/activemq-cpp/src/test/activemq/util/BooleanTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/util/BooleanTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/util/GuidTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/util/GuidTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/util/IntegerTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/util/IntegerTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/util/LongTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/util/LongTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/util/QueueTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/util/QueueTest.h
incubator/activemq/trunk/activemq-cpp/src/test/activemq/util/StringTokenizerTest.cpp
incubator/activemq/trunk/activemq-cpp/src/test/activemq/util/StringTokenizerTest.h
incubator/activemq/trunk/activemq-cpp/src/test/main.cpp
incubator/activemq/trunk/activemq-cpp/todo.txt
incubator/activemq/trunk/activemq-cpp/unix/
incubator/activemq/trunk/activemq-cpp/unix/pom.xml
incubator/activemq/trunk/activemq-cpp/win32-gcc/
incubator/activemq/trunk/activemq-cpp/win32-gcc/pom.xml
incubator/activemq/trunk/activemq-cpp/win32-msvc/
incubator/activemq/trunk/activemq-cpp/win32-msvc/pom.xml
Added: incubator/activemq/trunk/activemq-cpp/makefile
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/makefile?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/makefile (added)
+++ incubator/activemq/trunk/activemq-cpp/makefile Mon Jul 3 04:51:36 2006
@@ -0,0 +1,142 @@
+SRCDIR = src
+MAKESUPPORT_HOME = $(PWD)
+
+OFILES = \
+ $(OUTDIR)/main/activemq/exceptions/ActiveMQException.o \
+ \
+ $(OUTDIR)/main/activemq/support/InitDirector.o \
+ \
+ $(OUTDIR)/main/activemq/transport/IOTransport.o \
+ $(OUTDIR)/main/activemq/transport/TcpTransport.o \
+ $(OUTDIR)/main/activemq/transport/ResponseCorrelator.o \
+ $(OUTDIR)/main/activemq/transport/TransportFactoryMap.o \
+ $(OUTDIR)/main/activemq/transport/IOTransportFactory.o \
+ $(OUTDIR)/main/activemq/transport/TcpTransportFactory.o \
+ \
+ $(OUTDIR)/main/activemq/connector/ConnectorFactoryMap.o \
+ \
+ $(OUTDIR)/main/activemq/connector/stomp/StompConnector.o \
+ $(OUTDIR)/main/activemq/connector/stomp/StompConnectorFactory.o \
+ $(OUTDIR)/main/activemq/connector/stomp/StompCommandReader.o \
+ $(OUTDIR)/main/activemq/connector/stomp/StompCommandWriter.o \
+ $(OUTDIR)/main/activemq/connector/stomp/StompSessionManager.o \
+ \
+ $(OUTDIR)/main/activemq/connector/stomp/commands/CommandConstants.o \
+ \
+ $(OUTDIR)/main/activemq/connector/stomp/marshal/Marshaler.o \
+ \
+ $(OUTDIR)/main/activemq/core/ActiveMQConnectionFactory.o \
+ $(OUTDIR)/main/activemq/core/ActiveMQConnection.o \
+ $(OUTDIR)/main/activemq/core/ActiveMQSession.o \
+ $(OUTDIR)/main/activemq/core/ActiveMQProducer.o \
+ $(OUTDIR)/main/activemq/core/ActiveMQConsumer.o \
+ $(OUTDIR)/main/activemq/core/ActiveMQTransaction.o \
+ \
+ $(OUTDIR)/main/activemq/io/EndianReader.o \
+ $(OUTDIR)/main/activemq/io/EndianWriter.o \
+ $(OUTDIR)/main/activemq/io/BufferedInputStream.o \
+ $(OUTDIR)/main/activemq/io/BufferedOutputStream.o \
+ $(OUTDIR)/main/activemq/io/ByteArrayInputStream.o \
+ $(OUTDIR)/main/activemq/io/ByteArrayOutputStream.o \
+ \
+ $(OUTDIR)/main/activemq/logger/SimpleLogger.o \
+ $(OUTDIR)/main/activemq/logger/LogWriter.o \
+ $(OUTDIR)/main/activemq/logger/LogManager.o \
+ $(OUTDIR)/main/activemq/logger/LoggerHierarchy.o \
+ \
+ $(OUTDIR)/main/activemq/network/ServerSocket.o \
+ $(OUTDIR)/main/activemq/network/TcpSocket.o \
+ $(OUTDIR)/main/activemq/network/BufferedSocket.o \
+ $(OUTDIR)/main/activemq/network/SocketFactory.o \
+ $(OUTDIR)/main/activemq/network/SocketInputStream.o \
+ $(OUTDIR)/main/activemq/network/SocketOutputStream.o\
+ \
+ $(OUTDIR)/main/activemq/util/Guid.o \
+ $(OUTDIR)/main/activemq/util/StringTokenizer.o \
+ \
+ $(OUTDIR)/main/activemq/concurrent/Thread.o \
+ $(OUTDIR)/main/activemq/concurrent/Mutex.o \
+ $(OUTDIR)/main/activemq/concurrent/ThreadPool.o \
+ $(OUTDIR)/main/activemq/concurrent/PooledThread.o
+
+OTESTFILES = \
+ $(OUTDIR)/test/main.o \
+ \
+ $(OUTDIR)/test/activemq/core/ActiveMQConnectionFactoryTest.o \
+ $(OUTDIR)/test/activemq/core/ActiveMQConnectionTest.o \
+ $(OUTDIR)/test/activemq/core/ActiveMQSessionTest.o \
+ \
+ $(OUTDIR)/test/activemq/concurrent/MutexTest.o \
+ $(OUTDIR)/test/activemq/concurrent/ThreadPoolTest.o \
+ $(OUTDIR)/test/activemq/concurrent/ThreadTest.o \
+ \
+ $(OUTDIR)/test/activemq/connector/stomp/StompConnectorTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/StompFrameTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/StompCommandReaderTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/StompCommandWriterTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/StompSessionManagerTest.o \
+ \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/CommandConstantsTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/AbortCommandTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/AckCommandTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/BeginCommandTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/CommitCommandTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/ConnectCommandTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/ConnectedCommandTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/DisconnectCommandTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/ErrorCommandTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/ReceiptCommandTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/SubscribeCommandTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/UnsubscribeCommandTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/MessageCommandTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/BytesMessageCommandTest.o \
+ $(OUTDIR)/test/activemq/connector/stomp/commands/TextMessageCommandTest.o \
+ \
+ $(OUTDIR)/test/activemq/connector/stomp/marshal/MarshalerTest.o \
+ \
+ $(OUTDIR)/test/activemq/connector/ConnectorFactoryMapRegistrarTest.o \
+ $(OUTDIR)/test/activemq/connector/ConnectorFactoryMapTest.o \
+ \
+ $(OUTDIR)/test/activemq/exceptions/ActiveMQExceptionTest.o \
+ \
+ $(OUTDIR)/test/activemq/io/BufferedInputStreamTest.o \
+ $(OUTDIR)/test/activemq/io/BufferedOutputStreamTest.o \
+ $(OUTDIR)/test/activemq/io/ByteArrayInputStreamTest.o \
+ $(OUTDIR)/test/activemq/io/ByteArrayOutputStreamTest.o \
+ $(OUTDIR)/test/activemq/io/EndianReaderTest.o \
+ $(OUTDIR)/test/activemq/io/EndianWriterTest.o \
+ \
+ $(OUTDIR)/test/activemq/logger/LoggerTest.o \
+ \
+ $(OUTDIR)/test/activemq/network/SocketFactoryTest.o \
+ $(OUTDIR)/test/activemq/network/SocketTest.o \
+ \
+ $(OUTDIR)/test/activemq/transport/DummyTransportFactory.o \
+ $(OUTDIR)/test/activemq/transport/IOTransportTest.o \
+ $(OUTDIR)/test/activemq/transport/ResponseCorrelatorTest.o \
+ $(OUTDIR)/test/activemq/transport/TransportFactoryMapTest.o \
+ $(OUTDIR)/test/activemq/transport/TransportFactoryMapRegistrarTest.o \
+ \
+ $(OUTDIR)/test/activemq/util/GuidTest.o \
+ $(OUTDIR)/test/activemq/util/IntegerTest.o \
+ $(OUTDIR)/test/activemq/util/LongTest.o \
+ $(OUTDIR)/test/activemq/util/BooleanTest.o \
+ $(OUTDIR)/test/activemq/util/QueueTest.o \
+ $(OUTDIR)/test/activemq/util/StringTokenizerTest.o
+
+OINTEGRATIONFILES = \
+ $(OUTDIR)/test-integration/main.o \
+ \
+ $(OUTDIR)/test-integration/integration/simple/SimpleTester.o \
+ $(OUTDIR)/test-integration/integration/transactional/TransactionTester.o \
+ $(OUTDIR)/test-integration/integration/common/AbstractTester.o \
+ $(OUTDIR)/test-integration/integration/common/IntegrationCommon.o
+
+LIBFILE = $(OUTDIR)/activemq.a
+TESTEXE = $(OUTDIR)/activemqTest
+INTEGRATIONEXE = $(OUTDIR)/activemqIntegrationTests
+
+DEFINES =
+
+include $(MAKESUPPORT_HOME)/makefile.cfg
+
Added: incubator/activemq/trunk/activemq-cpp/makefile-linux-debug.cfg
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/makefile-linux-debug.cfg?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/makefile-linux-debug.cfg (added)
+++ incubator/activemq/trunk/activemq-cpp/makefile-linux-debug.cfg Mon Jul 3 04:51:36 2006
@@ -0,0 +1,18 @@
+#
+# Compiler specific configuration
+#
+
+OUTDIR = out
+LIBRARY_NAME = activemq-cpp
+LIBFILE = $(OUTDIR)/lib$(LIBRARY_NAME).a
+
+#
+# GCC/G++ debug for Linux
+#
+CC = g++ -frtti -g -pthread -DDEBUG -D_DEBUG -D_REENTRANT
+LD = g++ -g -frtti -pthread
+CCFLAGS = -Wall
+LDFLAGS = -L$(OUTDIR) -l$(LIBRARY_NAME) -lcppunit -ldl -luuid
+ARFLAGS =
+
+
Added: incubator/activemq/trunk/activemq-cpp/makefile-linux-release.cfg
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/makefile-linux-release.cfg?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/makefile-linux-release.cfg (added)
+++ incubator/activemq/trunk/activemq-cpp/makefile-linux-release.cfg Mon Jul 3 04:51:36 2006
@@ -0,0 +1,19 @@
+#
+# Compiler specific configuration
+#
+
+OUTDIR = out
+LIBRARY_NAME = activemq-cpp
+LIBFILE = $(OUTDIR)/lib$(LIBRARY_NAME).a
+
+#
+# GCC/G++ release for Linux
+#
+CC = g++ -frtti -pthread -O3 -DNDEBUG -D_REENTRANT
+LD = g++ -frtti -pthread
+CCFLAGS = -Wall
+LDFLAGS = -L$(OUTDIR) -l$(LIBRARY_NAME) -lcppunit -ldl -luuid
+OUTDIR = out
+ARFLAGS =
+
+
Added: incubator/activemq/trunk/activemq-cpp/makefile-windows-debug.cfg
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/makefile-windows-debug.cfg?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/makefile-windows-debug.cfg (added)
+++ incubator/activemq/trunk/activemq-cpp/makefile-windows-debug.cfg Mon Jul 3 04:51:36 2006
@@ -0,0 +1,16 @@
+#
+# Compiler specific configuration
+#
+
+LIBFILE = $(OUTDIR)/libactivemq-cpp.a
+
+#
+# GCC/G++ debug for Linux
+#
+CC = g++ -fexceptions -frtti -O0 -g3 -DDEBUG -D_DEBUG -D_REENTRANT -D_WIN32 -DWINVER=0x0502 -DWIN32_LEAN_AND_MEAN
+LD = g++ -g3 -frtti
+CCFLAGS = -Wall
+LDFLAGS = -L$(OUTDIR) -lactivemq -lcppunit -lws2_32 -lrpcrt4
+OUTDIR = out
+ARFLAGS =
+
Added: incubator/activemq/trunk/activemq-cpp/makefile-windows-release.cfg
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/makefile-windows-release.cfg?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/makefile-windows-release.cfg (added)
+++ incubator/activemq/trunk/activemq-cpp/makefile-windows-release.cfg Mon Jul 3 04:51:36 2006
@@ -0,0 +1,17 @@
+#
+# Compiler specific configuration
+#
+
+LIBFILE = $(OUTDIR)/libactivemq-cpp.a
+
+#
+# GCC/G++ release for Linux
+#
+CC = g++ -fexceptions -frtti -O3 -DNDEBUG -D_REENTRANT -D__WIN32 -DWIN32_LEAN_AND_MEAN
+LD = g++ -frtti
+CCFLAGS = -Wall
+LDFLAGS = -L$(OUTDIR) -lactivemq -lcppunit -lws2_32 -lrpcrt4
+OUTDIR = out
+ARFLAGS =
+
+
Added: incubator/activemq/trunk/activemq-cpp/makefile.cfg
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/makefile.cfg?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/makefile.cfg (added)
+++ incubator/activemq/trunk/activemq-cpp/makefile.cfg Mon Jul 3 04:51:36 2006
@@ -0,0 +1,179 @@
+CURRENT = $(PWD)
+
+# --- select compiler for structure
+# ----------------------------------------------------------
+
+include $(MAKESUPPORT_HOME)/makefile-$(OSTYPE)-$(CONFIG).cfg
+
+# --- set generic commmands
+# ----------------------------------------------------------
+
+MV = mv
+RM = rm -f
+RMR = rm -rf
+CP = cp -p
+LN = ln -s
+LS = ls
+CAT = cat
+MD = mkdir
+AR = ar -r
+PURIFY = purify
+ECHO = echo
+TOUCH = touch
+CD = cd
+STRIP = strip
+
+# --- set default targets and their handling procedures
+# ----------------------------------------------------------
+
+.SILENT:
+.KEEP_STATE:
+
+.SUFFIXES:
+.SUFFIXES: .cpp .CC
+
+.INIT:
+ $(ECHO) " -<>- Compiling "$(CURRENT)
+
+.DONE:
+ $(ECHO) " -<>- Done"
+
+.FAILED:
+ $(ECHO) " *** Compilation of $(CURRENT) Failed"
+
+$(OUTDIR)/main/%.o: $(SRCDIR)/main/%.cpp
+ $(ECHO) " - "$(CC) "'"$<"'"
+ $(CC) -o $@ $(DEFINES) $(CCFLAGS) -I$(SRCDIR)/main \
+ $(LOCAL_INCLUDE) -c $<
+
+$(OUTDIR)/test/%.o: $(SRCDIR)/test/%.cpp
+ $(ECHO) " - "$(CC) "'"$<"'"
+ $(CC) -o $@ $(DEFINES) $(CCFLAGS) -I$(SRCDIR)/main -I$(SRCDIR)/test \
+ $(LOCAL_INCLUDE) -c $<
+
+$(OUTDIR)/test-integration/%.o: $(SRCDIR)/test-integration/%.cpp
+ $(ECHO) " - "$(CC) "'"$<"'"
+ $(CC) -o $@ $(DEFINES) $(CCFLAGS) -I$(SRCDIR)/main -I$(SRCDIR)/test-integration \
+ $(LOCAL_INCLUDE) -c $<
+
+# --- set generic targets and their handling procedures
+# ----------------------------------------------------------
+
+lib: \
+ prepare \
+ $(OFILES) \
+ $(LIBFILE) \
+ done
+
+test: \
+ prepare_test \
+ $(OTESTFILES) \
+ $(TESTEXE) \
+ done
+
+integration: \
+ prepare_integration \
+ $(OINTEGRATIONFILES) \
+ $(INTEGRATIONEXE) \
+ done
+
+all: lib test integration
+
+default: all
+
+
+$(LIBFILE): $(OFILES) $(DEPLIBS)
+ $(ECHO) " - Creating static library file "$@
+ $(AR) $(ARFLAGS) $@ $(OFILES)
+
+$(TESTEXE): $(OTESTFILES)
+ $(LD) -o $@ $(OTESTFILES) $(LDFLAGS)
+ $(ECHO) 'Finished building target: $@'
+
+$(INTEGRATIONEXE): $(OINTEGRATIONFILES)
+ $(LD) -o $@ $(OINTEGRATIONFILES) $(LDFLAGS)
+ $(ECHO) 'Finished building target: $@'
+
+clean:
+ $(ECHO) " - Cleaning up local directory "$(CURRENT)
+ $(ECHO) " - Removing object files"
+ $(RM) $(OFILES)
+ $(ECHO) " - Removing file "$(LIBFILE)
+ $(RM) -rf $(OUTDIR)
+ $(RM) $(LIBFILE)
+ $(RM) *~ *%
+ $(RM) #*
+ $(RM) core
+ $(RM) a.out
+
+prepare:
+ if test ! -d $(OUTDIR) ; \
+ then \
+ $(MD) $(OUTDIR); \
+ $(MD) $(OUTDIR)/main; \
+ $(MD) $(OUTDIR)/main/activemq; \
+ $(MD) $(OUTDIR)/main/activemq/exceptions; \
+ $(MD) $(OUTDIR)/main/activemq/commands; \
+ $(MD) $(OUTDIR)/main/activemq/connector; \
+ $(MD) $(OUTDIR)/main/activemq/connector/stomp; \
+ $(MD) $(OUTDIR)/main/activemq/connector/stomp/commands; \
+ $(MD) $(OUTDIR)/main/activemq/connector/stomp/marshal; \
+ $(MD) $(OUTDIR)/main/activemq/core; \
+ $(MD) $(OUTDIR)/main/activemq/io; \
+ $(MD) $(OUTDIR)/main/activemq/logger; \
+ $(MD) $(OUTDIR)/main/activemq/network; \
+ $(MD) $(OUTDIR)/main/activemq/util; \
+ $(MD) $(OUTDIR)/main/activemq/support; \
+ $(MD) $(OUTDIR)/main/activemq/concurrent; \
+ $(MD) $(OUTDIR)/main/activemq/transport; \
+ fi
+
+prepare_test:
+ if test ! -d $(OUTDIR) ; \
+ then \
+ $(MD) $(OUTDIR); \
+ fi
+ if test ! -d $(OUTDIR)/test ; \
+ then \
+ $(MD) $(OUTDIR)/test; \
+ $(MD) $(OUTDIR)/test/activemq; \
+ $(MD) $(OUTDIR)/test/activemq/exceptions; \
+ $(MD) $(OUTDIR)/test/activemq/commands; \
+ $(MD) $(OUTDIR)/test/activemq/connector; \
+ $(MD) $(OUTDIR)/test/activemq/connector/stomp; \
+ $(MD) $(OUTDIR)/test/activemq/connector/stomp/commands; \
+ $(MD) $(OUTDIR)/test/activemq/connector/stomp/marshal; \
+ $(MD) $(OUTDIR)/test/activemq/core; \
+ $(MD) $(OUTDIR)/test/activemq/io; \
+ $(MD) $(OUTDIR)/test/activemq/logger; \
+ $(MD) $(OUTDIR)/test/activemq/network; \
+ $(MD) $(OUTDIR)/test/activemq/util; \
+ $(MD) $(OUTDIR)/test/activemq/concurrent; \
+ $(MD) $(OUTDIR)/test/activemq/transport; \
+ fi
+
+prepare_integration:
+ if test ! -d $(OUTDIR) ; \
+ then \
+ $(MD) $(OUTDIR); \
+ fi
+ if test ! -d $(OUTDIR)/test-integration ; \
+ then \
+ $(MD) $(OUTDIR)/test-integration; \
+ $(MD) $(OUTDIR)/test-integration/integration; \
+ $(MD) $(OUTDIR)/test-integration/integration/common; \
+ $(MD) $(OUTDIR)/test-integration/integration/simple; \
+ $(MD) $(OUTDIR)/test-integration/integration/transactional; \
+ $(MD) $(OUTDIR)/test-integration/integration/durable; \
+ fi
+
+done:
+ $(ECHO) "Done."
+
+
+
+
+
+
+
+
Added: incubator/activemq/trunk/activemq-cpp/pom.xml
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/pom.xml?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/pom.xml (added)
+++ incubator/activemq/trunk/activemq-cpp/pom.xml Mon Jul 3 04:51:36 2006
@@ -0,0 +1,228 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>activemq</groupId>
+ <name>ActiveMQ :: CPP :: Parent</name>
+ <artifactId>activemq-cpp-parent</artifactId>
+ <packaging>pom</packaging>
+
+ <!-- these should be deleted when using a parent pom-->
+ <version>1.0-SNAPSHOT</version>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+
+ <!-- configure the Mojo native plugin -->
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>native-maven-plugin</artifactId>
+ <version>1.0-alpha-1-SNAPSHOT</version>
+ <extensions>true</extensions>
+
+ <!-- Make child POMs inherit this configuration -->
+ <inherited>true</inherited>
+
+ <configuration>
+
+ <!-- All compiler flags are determined by the profile -->
+ <compilerProvider>${compiler.provider}</compilerProvider>
+ <envFactoryName>${env.factory.name}</envFactoryName>
+ <compilerStartOptions>
+ <compilerStartOption>${compiler.options}</compilerStartOption>
+ </compilerStartOptions>
+ <linkerExecutable>${linker.executable}</linkerExecutable>
+ <linkerStartOptions>
+ <linkerStartOption>${linker.options}</linkerStartOption>
+ </linkerStartOptions>
+
+ <!-- Define the sources for the library build -->
+ <sources>
+
+ <!-- Standard include directories -->
+ <source><directory>../src/main</directory></source>
+ <source><directory>../src/test</directory></source>
+
+ <source>
+ <directory>../src/main/activemq/concurrent</directory>
+ <fileNames>
+ <fileName>Mutex.cpp</fileName>
+ <fileName>PooledThread.cpp</fileName>
+ <fileName>Thread.cpp</fileName>
+ <fileName>ThreadPool.cpp</fileName>
+ </fileNames>
+ </source>
+ <source>
+ <directory>../src/main/activemq/connector</directory>
+ <fileNames>
+ <fileName>ConnectorFactoryMap.cpp</fileName>
+ </fileNames>
+ </source>
+ <source>
+ <directory>../src/main/activemq/connector/stomp</directory>
+ <fileNames>
+ <fileName>StompCommandReader.cpp</fileName>
+ <fileName>StompCommandWriter.cpp</fileName>
+ <fileName>StompConnector.cpp</fileName>
+ <fileName>StompConnectorFactory.cpp</fileName>
+ <fileName>StompSessionManager.cpp</fileName>
+ </fileNames>
+ </source>
+ <source>
+ <directory>../src/main/activemq/connector/stomp/commands</directory>
+ <fileNames>
+ <fileName>CommandConstants.cpp</fileName>
+ </fileNames>
+ </source>
+ <source>
+ <directory>../src/main/activemq/connector/stomp/marshal</directory>
+ <fileNames>
+ <fileName>Marshaler.cpp</fileName>
+ </fileNames>
+ </source>
+ <source>
+ <directory>../src/main/activemq/core</directory>
+ <fileNames>
+ <fileName>ActiveMQConnection.cpp</fileName>
+ <fileName>ActiveMQConnectionFactory.cpp</fileName>
+ <fileName>ActiveMQConsumer.cpp</fileName>
+ <fileName>ActiveMQProducer.cpp</fileName>
+ <fileName>ActiveMQSession.cpp</fileName>
+ <fileName>ActiveMQTransaction.cpp</fileName>
+ </fileNames>
+ </source>
+ <source>
+ <directory>../src/main/activemq/exceptions</directory>
+ <fileNames>
+ <fileName>ActiveMQException.cpp</fileName>
+ </fileNames>
+ </source>
+ <source>
+ <directory>../src/main/activemq/io</directory>
+ <fileNames>
+ <fileName>BufferedInputStream.cpp</fileName>
+ <fileName>BufferedOutputStream.cpp</fileName>
+ <fileName>ByteArrayInputStream.cpp</fileName>
+ <fileName>ByteArrayOutputStream.cpp</fileName>
+ <fileName>EndianReader.cpp</fileName>
+ <fileName>EndianWriter.cpp</fileName>
+ </fileNames>
+ </source>
+ <source>
+ <directory>../src/main/activemq/logger</directory>
+ <fileNames>
+ <fileName>Logger.cpp</fileName>
+ <fileName>LoggerHierarchy.cpp</fileName>
+ <fileName>LogManager.cpp</fileName>
+ <fileName>LogWriter.cpp</fileName>
+ <fileName>SimpleLogger.cpp</fileName>
+ </fileNames>
+ </source>
+ <source>
+ <directory>../src/main/activemq/network</directory>
+ <fileNames>
+ <fileName>BufferedSocket.cpp</fileName>
+ <fileName>ServerSocket.cpp</fileName>
+ <fileName>SocketFactory.cpp</fileName>
+ <fileName>SocketInputStream.cpp</fileName>
+ <fileName>SocketOutputStream.cpp</fileName>
+ <fileName>TcpSocket.cpp</fileName>
+ </fileNames>
+ </source>
+ <source>
+ <directory>../src/main/activemq/support</directory>
+ <fileNames>
+ <fileName>InitDirector.cpp</fileName>
+ </fileNames>
+ </source>
+ <source>
+ <directory>../src/main/activemq/transport</directory>
+ <fileNames>
+ <fileName>IOTransport.cpp</fileName>
+ <fileName>IOTransportFactory.cpp</fileName>
+ <fileName>ResponseCorrelator.cpp</fileName>
+ <fileName>TcpTransport.cpp</fileName>
+ <fileName>TcpTransportFactory.cpp</fileName>
+ <fileName>TransportFactoryMap.cpp</fileName>
+ </fileNames>
+ </source>
+ <source>
+ <directory>../src/main/activemq/util</directory>
+ <fileNames>
+ <fileName>Guid.cpp</fileName>
+ <fileName>StringTokenizer.cpp</fileName>
+ </fileNames>
+ </source>
+ </sources>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+
+ <profiles>
+
+ <!-- Default profile for Windows: MSVC compiler -->
+ <profile>
+ <id>win32-msvc</id>
+ <activation>
+ <os>
+ <family>windows</family>
+ </os>
+ </activation>
+ <modules>
+ <module>win32-msvc</module>
+ </modules>
+ </profile>
+
+ <!-- Profile for building on windows (cygwin) with gcc -->
+ <profile>
+ <id>win32-gcc</id>
+ <modules>
+ <module>win32-gcc</module>
+ </modules>
+ </profile>
+
+ <!-- Profile for building on *nix with the default compiler -->
+ <profile>
+ <id>unix</id>
+ <activation>
+ <os>
+ <family>unix</family>
+ </os>
+ </activation>
+ <modules>
+ <module>unix</module>
+ </modules>
+ </profile>
+
+ </profiles>
+
+ <!-- Repos for using the mojo native plugin -->
+ <repositories>
+ <repository>
+ <id>Maven Snapshots</id>
+ <url>http://snapshots.maven.codehaus.org/maven2/</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>Maven Snapshots</id>
+ <url>http://snapshots.maven.codehaus.org/maven2/</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </pluginRepository>
+ </pluginRepositories>
+</project>
Added: incubator/activemq/trunk/activemq-cpp/readme.txt
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/readme.txt?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/readme.txt (added)
+++ incubator/activemq/trunk/activemq-cpp/readme.txt Mon Jul 3 04:51:36 2006
@@ -0,0 +1,109 @@
+--------------------------------------------------------------------------
+ActiveMQ CPP Library - Version 0.0.1
+--------------------------------------------------------------------------
+
+This library provides a JMS like interface to an ActiveMQ broker in c++.
+
+Currently the Library only supports the Stomp protocol, future versions
+will contain support for openwire.
+
+UNIT Tests
+--------------------------------------------------------------------------
+
+The package contains a complete set of cppunit tests. In order for you
+to build an run the tests, you will need to download and install the
+cppunit suite.
+
+http://cppunit.sourceforge.net/cppunit-wiki
+
+or on Fedora type
+
+yum install cppunit*
+
+Make sure that the path to the installed cpp unit library and includes is
+visible in your current shell before you try building the tets.
+
+Integration Tests
+--------------------------------------------------------------------------
+
+The library also contains a set of tests that are run against a real AMQ
+broker. Running these without a broker will result in failed tests.
+The tests currently hardcode the broker url to be tcp://127.0.0.1:61613,
+you can change this by changing the declaration in IntegrationCommon.cpp
+in the test-integration src tree.
+
+Notes for Windows users
+--------------------------------------------------------------------------
+
+The builds support using the GNU compiler on Windows, we used the MinGW
+package. There is an issues still outstanding with this in that the sockets
+break for no reason when built this way. We therefore suggest that you
+stick with using the MSVC compiler when on windows.
+
+There are a couple or things that you will need to setup to ensure that the
+MSVC compile succeeds.
+
+* You need to download and install the Platform SDK if you don't have it
+ installed already.
+* Ensure that the path to you MSVC install is set in the PATH env variable.
+ you can tests this buy typing cl.exe at the command line, if you get an
+ error complaining that its not found, then setup you PATH correctly.
+* Set the INCLUDE env variable to include the path to your MSVC includes,
+ and the platform SDK includes.
+
+ i.e. INCLUDE = D:\Program Files\Microsoft Visual Studio 8\VC\include;D:\Program Files\Microsoft Platform SDK\Include
+
+* Set the LIB env variable to include the path to your MSVC libs, and the
+ Platform SDK libs.
+
+ i.e. LIB = D:\Program Files\Microsoft Visual Studio 8\VC\lib;D:\Program Files\Microsoft Platform SDK\Lib
+
+Maven Builds
+--------------------------------------------------------------------------
+
+The pacakge currently supports building the library only using maven.
+
+The Mojo Native plugin (from the MOJO maven plugins site) is required.
+
+http://mojo.codehaus.org/maven-native/native-maven-plugin/introduction.html
+
+On the windows platform is was necessay to download the source for this
+plugin and build it locally, this shouldn't be necessary on non-windows
+platforms, but if you have problems, try that first.
+
+You can get the latest source via subversion:
+
+svn co https://svn.codehaus.org/mojo/trunk/mojo/maven-native
+
+Once you have downloaded the source, install the plugin into your local
+repository via: mvn install
+
+Using Maven with activemq-cpp
+
+* type mvn package
+
+This will build the library using the default target for the platform
+you are on, which is release, and the gnu compiler for unix platforms, or
+the MSVC compiler on windows platforms.
+
+Makefile Builds
+--------------------------------------------------------------------------
+
+The Makefile provided requires some env variable to be set
+
+OSTYPE: This is the OS you are on and is reflected in the names of the
+ makefiles. Currently your choices are Linux or Windows, both use
+ the GNU compiler.
+
+CONFIG: This is the build Mode you want to execute, i.e. debug or release.
+
+MAKESUPPORT_HOME: Path to the folder where the Makefiles are stored.
+
+There are three targets available in the Makefile, lib, test, and integration
+whose output is fairly obvious.
+
+Using the Makefile:
+
+* type make to build all targets: lib, tests and integration
+* type make < Target Name > to build only the target you need.
+* type make clean to remove all of the object, library, and executable files.
Added: incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Concurrent.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Concurrent.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Concurrent.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Concurrent.h Mon Jul 3 04:51:36 2006
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ACTIVEMQ_CONCURRENT_CONCURRENT_H_
+#define _ACTIVEMQ_CONCURRENT_CONCURRENT_H_
+
+#include <activemq/concurrent/Lock.h>
+
+namespace activemq{
+namespace concurrent{
+
+/**
+ * The synchronized macro defines a mechanism for snycronizing
+ * a scetion of code. The macro must be passed an object that
+ * implements the Syncronizable interface.
+ *
+ * The macro works by creating a for loop that will loop exactly
+ * once, creating a Lock object that is scoped to the loop. Once
+ * the loop conpletes and exits the Lock object goes out of scope
+ * releasing the lock on object W. For added safety the if else
+ * is used because not all compiles restrict the lifetime of
+ * loop variables to the loop, they will however restrict them
+ * to the scope of the else.
+ *
+ * The macro would be used as follows.
+ *
+ * <Syncronizable> X;
+ *
+ * somefunction()
+ * {
+ * syncronized(X)
+ * {
+ * // Do something that needs syncronizing.
+ * }
+ * }
+ */
+
+#define WAIT_INFINITE 0xFFFFFFFF
+
+#define synchronized(W) \
+ if(false){} \
+ else \
+ for(activemq::concurrent::Lock lock_W(W); \
+ lock_W.isLocked(); lock_W.unlock())
+
+}}
+
+#endif /*_ACTIVEMQ_CONCURRENT_CONCURRENT_H_*/
Added: incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Lock.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Lock.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Lock.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Lock.h Mon Jul 3 04:51:36 2006
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ACTIVEMQ_CONCURRENT_LOCK_H
+#define ACTIVEMQ_CONCURRENT_LOCK_H
+
+// Includes.
+#include <activemq/concurrent/Synchronizable.h>
+
+namespace activemq{
+namespace concurrent{
+
+ /**
+ * A wrapper class around a given synchronization mechanism that
+ * provides automatic release upon destruction.
+ * @author Nathan Mittler
+ */
+ class Lock
+ {
+ private: // Data
+
+ /**
+ * Flag to indicate whether or not this object has locked the
+ * sync object.
+ */
+ bool locked;
+
+ /**
+ * The synchronizable object to lock/unlock.
+ */
+ Synchronizable* syncObject;
+
+ public: // Interface
+
+ /**
+ * Constructor - initializes the object member and locks
+ * the object if desired.
+ * @param object The sync object to control
+ * @param intiallyLocked If true, the object will automatically
+ * be locked.
+ */
+ Lock( Synchronizable* object, const bool intiallyLocked = true )
+ {
+ try{
+ syncObject = object;
+ locked = false;
+
+ if( intiallyLocked )
+ {
+ lock();
+ }
+ }
+ AMQ_CATCH_RETHROW( exceptions::ActiveMQException )
+ AMQ_CATCHALL_THROW( exceptions::ActiveMQException )
+ }
+
+ /**
+ * Destructor - Unlocks the object if it is locked.
+ */
+ virtual ~Lock()
+ {
+ try{
+ if( locked )
+ {
+ syncObject->unlock();
+ }
+ }
+ AMQ_CATCH_RETHROW( exceptions::ActiveMQException )
+ AMQ_CATCHALL_THROW( exceptions::ActiveMQException )
+ }
+
+ /**
+ * Locks the object.
+ */
+ void lock()
+ {
+ try{
+ syncObject->lock();
+ locked = true;
+ }
+ AMQ_CATCH_RETHROW( exceptions::ActiveMQException )
+ AMQ_CATCHALL_THROW( exceptions::ActiveMQException )
+ }
+
+ /**
+ * Unlocks the object.
+ */
+ void unlock()
+ {
+ try{
+ if(locked)
+ {
+ syncObject->unlock();
+ locked = false;
+ }
+ }
+ AMQ_CATCH_RETHROW( exceptions::ActiveMQException )
+ AMQ_CATCHALL_THROW( exceptions::ActiveMQException )
+ }
+
+ /**
+ * Indicates whether or not the object is locked.
+ * @return true if the object is locked, otherwise false.
+ */
+ bool isLocked() const{ return locked; }
+ };
+
+}}
+
+#endif // ACTIVEMQ_CONCURRENT_LOCK_H
Added: incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Mutex.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Mutex.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Mutex.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Mutex.cpp Mon Jul 3 04:51:36 2006
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <activemq/concurrent/Mutex.h>
+
+using namespace activemq::concurrent;
+
+////////////////////////////////////////////////////////////////////////////////
Added: incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Mutex.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Mutex.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Mutex.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/Mutex.h Mon Jul 3 04:51:36 2006
@@ -0,0 +1,358 @@
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ACTIVEMQ_CONCURRENT_MUTEX_H
+#define ACTIVEMQ_CONCURRENT_MUTEX_H
+
+// Includes.
+#include <activemq/concurrent/Synchronizable.h>
+#include <activemq/concurrent/Concurrent.h>
+#include <activemq/concurrent/Thread.h>
+#include <list>
+
+#if (defined(__unix__) || defined(unix) || defined(MACOSX)) && !defined(USG)
+ #ifndef unix
+ #define unix
+ #endif
+
+ #include <pthread.h>
+ #include <sys/time.h>
+#endif
+
+#if defined(WIN32) || defined(__CYGWIN__) && !defined unix
+
+ #include <windows.h>
+
+ #if ( !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0400)
+ #if ( !defined(WINVER) || WINVER < 0x0400)
+ #pragma message ("Unsupported platform, Windows NT 4.0 or later required")
+ #endif
+ #endif
+
+#endif
+
+#include <assert.h>
+
+namespace activemq{
+namespace concurrent{
+
+ /**
+ * Creates a pthread_mutex_t object. The object is created
+ * such that successive locks from the same thread is allowed
+ * and will be successful.
+ * @see pthread_mutex_t
+ */
+ class Mutex : public Synchronizable
+ {
+ private: // Data
+
+ /**
+ * The mutex object.
+ */
+ #ifdef unix
+ pthread_mutex_t mutex;
+
+ std::list<pthread_cond_t*> eventQ;
+ #else
+ CRITICAL_SECTION mutex;
+
+ std::list<HANDLE> eventQ;
+ #endif
+
+ // Lock Status Members
+ int lock_count;
+ unsigned long lock_owner;
+
+ public:
+
+ /**
+ * Constructor - creates and initializes the mutex.
+ */
+ Mutex()
+ {
+ #ifdef unix
+ pthread_mutexattr_t attr;
+ pthread_mutexattr_init(&attr);
+ pthread_mutex_init(&mutex, &attr);
+ pthread_mutexattr_destroy(&attr);
+ #else
+ InitializeCriticalSection(&mutex);
+ #endif
+
+ lock_owner = 0;
+ lock_count = 0;
+ }
+
+ /**
+ * Destructor - destroys the mutex object.
+ */
+ virtual ~Mutex()
+ {
+ // Unlock the mutex.
+ unlock();
+
+ #ifdef unix
+ pthread_mutex_destroy(&mutex);
+ #else
+ DeleteCriticalSection(&mutex);
+ #endif
+ }
+
+ /**
+ * Locks the object.
+ */
+ virtual void lock() throw( exceptions::ActiveMQException )
+ {
+ if(isLockOwner())
+ {
+ lock_count++;
+ }
+ else
+ {
+ #ifdef unix
+ pthread_mutex_lock(&mutex);
+ #else
+ EnterCriticalSection(&mutex);
+ #endif
+
+ lock_count = 1;
+ lock_owner = Thread::getId();
+ }
+ }
+
+ /**
+ * Unlocks the object.
+ */
+ virtual void unlock() throw( exceptions::ActiveMQException )
+ {
+ if(lock_owner == 0)
+ {
+ return;
+ }
+
+ if(!isLockOwner())
+ {
+ throw exceptions::ActiveMQException(
+ __FILE__, __LINE__,
+ "Mutex::unlock - Failed, not Lock Owner!" );
+ }
+
+ lock_count--;
+
+ if(lock_count == 0)
+ {
+ lock_owner = 0;
+
+ #ifdef unix
+ pthread_mutex_unlock(&mutex);
+ #else
+ LeaveCriticalSection(&mutex);
+ #endif
+ }
+ }
+
+ /**
+ * Waits on a signal from this object, which is generated
+ * by a call to Notify.
+ */
+ virtual void wait() throw( exceptions::ActiveMQException )
+ {
+ // Delegate to the timed version
+ wait( WAIT_INFINITE );
+ }
+
+ /**
+ * Waits on a signal from this object, which is generated
+ * by a call to Notify. Must have this object locked before
+ * calling. This wait will timeout after the specified time
+ * interval.
+ */
+ virtual void wait( unsigned long millisecs )
+ throw( exceptions::ActiveMQException )
+ {
+ if(!isLockOwner())
+ {
+ throw exceptions::ActiveMQException(
+ __FILE__, __LINE__,
+ "Mutex::wait - Failed, not Lock Owner!");
+ }
+
+ // Save the current owner and Lock count as we are going to
+ // unlock and release for someone else to lock on potentially.
+ // When we come back and re-lock we want to restore to the
+ // state we were in before.
+ unsigned long lock_owner = this->lock_owner;
+ int lock_count = this->lock_count;
+
+ this->lock_count = 0;
+ this->lock_owner = 0;
+
+ #ifdef unix
+
+ // Create this threads wait event
+ pthread_cond_t waitEvent;
+ pthread_cond_init(&waitEvent, NULL);
+
+ // Store the event in the queue so that a notify can
+ // call it and wake up the thread.
+ eventQ.push_back(&waitEvent);
+
+ int returnValue = 0;
+ if(millisecs != WAIT_INFINITE)
+ {
+ timeval now = {};
+ gettimeofday(&now, NULL);
+
+ timespec wait = {};
+ wait.tv_sec = now.tv_sec + (millisecs / 1000);
+ wait.tv_nsec = (now.tv_usec * 1000) + ((millisecs % 1000) * 1000000);
+
+ if(wait.tv_nsec > 1000000000)
+ {
+ wait.tv_sec++;
+ wait.tv_nsec -= 1000000000;
+ }
+
+ returnValue = pthread_cond_timedwait(&waitEvent, &mutex, &wait);
+ }
+ else
+ {
+ returnValue = pthread_cond_wait(&waitEvent, &mutex);
+ }
+
+ // If the wait did not succeed for any reason, remove it
+ // from the queue.
+ if( returnValue != 0 ){
+ std::list<pthread_cond_t*>::iterator iter = eventQ.begin();
+ for( ; iter != eventQ.end(); ++iter ){
+ if( *iter == &waitEvent ){
+ eventQ.erase(iter);
+ break;
+ }
+ }
+ }
+
+ // Destroy our wait event now, the notify method will have removed it
+ // from the event queue.
+ pthread_cond_destroy(&waitEvent);
+
+ #else
+
+ // Create the event to wait on
+ HANDLE waitEvent = CreateEvent( NULL, false, false, NULL );
+
+ if(waitEvent == NULL)
+ {
+ throw exceptions::ActiveMQException(
+ __FILE__, __LINE__,
+ "Mutex::Mutex - Failed Creating Event." );
+ }
+
+ eventQ.push_back( waitEvent );
+
+ // Release the Lock
+ LeaveCriticalSection( &mutex );
+
+ // Wait for a signal
+ WaitForSingleObject( waitEvent, millisecs );
+
+ // Reaquire the Lock
+ EnterCriticalSection( &mutex );
+
+ // Clean up the event, the notif methods will have
+ // already poped it from the queue.
+ CloseHandle( waitEvent );
+
+ #endif
+
+ // restore the owner
+ this->lock_owner = lock_owner;
+ this->lock_count = lock_count;
+ }
+
+ /**
+ * Signals a waiter on this object that it can now wake
+ * up and continue.
+ */
+ virtual void notify() throw( exceptions::ActiveMQException )
+ {
+ if( !isLockOwner() )
+ {
+ throw exceptions::ActiveMQException(
+ __FILE__, __LINE__,
+ "Mutex::Notify - Failed, not Lock Owner!" );
+ }
+
+ if( !eventQ.empty() )
+ {
+ #ifdef unix
+ pthread_cond_signal( eventQ.front() );
+ eventQ.pop_front();
+ #else
+ SetEvent( eventQ.front() );
+ eventQ.pop_front();
+ #endif
+ }
+ }
+
+ /**
+ * Signals the waiters on this object that it can now wake
+ * up and continue.
+ */
+ virtual void notifyAll() throw( exceptions::ActiveMQException )
+ {
+ if(!isLockOwner())
+ {
+ throw exceptions::ActiveMQException(
+ __FILE__, __LINE__,
+ "Mutex::NotifyAll - Failed, not Lock Owner!" );
+ }
+
+ #ifdef unix
+
+ while(!eventQ.empty())
+ {
+ pthread_cond_signal( eventQ.front() );
+ eventQ.pop_front();
+ }
+
+ #else
+
+ while(!eventQ.empty())
+ {
+ SetEvent( eventQ.front() );
+ eventQ.pop_front();
+ }
+
+ #endif
+ }
+
+ private:
+
+ /**
+ * Check if the calling thread is the Lock Owner
+ */
+ bool isLockOwner()
+ {
+ return lock_owner == Thread::getId();
+ }
+
+ };
+
+}}
+
+#endif // ACTIVEMQ_CONCURRENT_MUTEX_H
Added: incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/PooledThread.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/PooledThread.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/PooledThread.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/main/activemq/concurrent/PooledThread.cpp Mon Jul 3 04:51:36 2006
@@ -0,0 +1,161 @@
+/*
+ * Copyright 2006 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <activemq/concurrent/PooledThread.h>
+#include <activemq/concurrent/ThreadPool.h>
+#include <activemq/concurrent/TaskListener.h>
+#include <activemq/exceptions/IllegalArgumentException.h>
+
+#include <iostream>
+
+using namespace activemq;
+using namespace activemq::concurrent;
+
+////////////////////////////////////////////////////////////////////////////////
+LOGCMS_INITIALIZE(logger, PooledThread, "com.activemq.concurrent.PooledThread");
+
+////////////////////////////////////////////////////////////////////////////////
+PooledThread::PooledThread(ThreadPool* pool)
+{
+ if(pool == NULL)
+ {
+ throw exceptions::IllegalArgumentException( __FILE__, __LINE__,
+ "PooledThread::PooledThread");
+ }
+
+ busy = false;
+ done = false;
+
+ listener = NULL;
+
+ // Store our Pool.
+ this->pool = pool;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+PooledThread::~PooledThread()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void PooledThread::run(void)
+{
+ ThreadPool::Task task;
+
+ try
+ {
+ while(!done)
+ {
+ //LOGCMS_DEBUG(logger, "PooledThread::run - Entering deQ");
+
+ // Blocks until there something to be done
+ task = pool->deQueueTask();
+
+ //LOGCMS_DEBUG(logger, "PooledThread::run - Exited deQ");
+
+ // Check if the Done Flag is set, in case it happened while we
+ // were waiting for a task
+ if(done)
+ {
+ break;
+ }
+
+ // If we got here and the runnable was null then something
+ // bad must have happened. Throw an Exception and bail.
+ if(!task.first)
+ {
+ throw exceptions::ActiveMQException( __FILE__, __LINE__,
+ "PooledThread::run - Retrieive NULL task from Pool.");
+ }
+
+ // Got some work to do, so set flag to busy
+ busy = true;
+
+ // Inform a listener that we are going to start
+ if(listener)
+ {
+ /*LOGCMS_DEBUG(logger,
+ "PooledThread::run - Inform Listener we are starting");*/
+ listener->onTaskStarted(this);
+ }
+
+ // Perform the work
+ task.first->run();
+
+ /*LOGCMS_DEBUG(logger,
+ "PooledThread::run - Inform Task Listener we are done");*/
+
+ // Notify the Task listener that we are done
+ task.second->onTaskComplete(task.first);
+
+ // Inform a listener that we are going to stop and wait
+ // for a new task
+ if(listener)
+ {
+ /*LOGCMS_DEBUG(logger,
+ "PooledThread::run - Inform Listener we are done");*/
+ listener->onTaskCompleted(this);
+ }
+
+ // Set flag to inactive, we will wait for work
+ busy = false;
+ }
+ }
+ catch(exceptions::ActiveMQException& ex)
+ {
+ ex.setMark( __FILE__, __LINE__ );
+
+ // Notify the Task owner
+ if(task.first && task.second)
+ {
+ task.second->onTaskException(task.first, ex);
+ }
+
+ busy = false;
+
+ // Notify the PooledThreadListener
+ if(listener)
+ {
+ listener->onTaskException(this, ex);
+ }
+ }
+ catch(...)
+ {
+ exceptions::ActiveMQException ex(
+ __FILE__, __LINE__,
+ "PooledThread::run - Caught Unknown Exception");
+
+ // Notify the Task owner
+ if(task.first && task.second)
+ {
+ task.second->onTaskException(task.first, ex);
+ }
+
+ busy = false;
+
+ // Notify the PooledThreadListener
+ if(listener)
+ {
+ listener->onTaskException(this, ex);
+ }
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void PooledThread::stop(void) throw ( cms::CMSException )
+{
+ done = true;
+}