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/11/26 17:27:09 UTC
svn commit: r479374 - in
/incubator/activemq/activemq-cpp/trunk/activemq-cpp: ./ src/main/
src/main/activemq/util/ src/test/ src/test/activemq/util/
Author: nmittler
Date: Sun Nov 26 08:27:08 2006
New Revision: 479374
URL: http://svn.apache.org/viewvc?view=rev&rev=479374
Log:
[AMQCPP-14] Adding activemq::util::Date class to support proper handling of CMS Expiration
Added:
incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Date.cpp
incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Date.h
incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/util/DateTest.cpp
incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/util/DateTest.h
Modified:
incubator/activemq/activemq-cpp/trunk/activemq-cpp/configure.ac
incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am
incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Config.h
incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/Makefile.am
Modified: incubator/activemq/activemq-cpp/trunk/activemq-cpp/configure.ac
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/configure.ac?view=diff&rev=479374&r1=479373&r2=479374
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/configure.ac (original)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/configure.ac Sun Nov 26 08:27:08 2006
@@ -77,6 +77,10 @@
AC_CHECK_HEADERS([sys/filio.h])
AC_CHECK_HEADERS([sys/ioctl.h])
AC_CHECK_HEADERS([sys/select.h])
+AC_CHECK_HEADERS([sys/time.h])
+AC_CHECK_HEADERS([sys/timeb.h])
+
+AC_CHECK_FUNCS([ioctl select gettimeofday time ftime])
AM_PATH_CPPUNIT(1.10.2, cppunit=yes, cppunit=no; AC_MSG_RESULT([no. Unit and Integration tests disabled]))
AM_CONDITIONAL(BUILD_CPPUNIT_TESTS, test x$cppunit = xyes)
@@ -103,7 +107,6 @@
*) ## Unix configuration
- AC_CHECK_FUNCS([ioctl select])
AC_CHECK_LIB(pthread, pthread_create,[have_pthread="yes"],
AC_MSG_ERROR([libpthread not found!]))
Modified: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am?view=diff&rev=479374&r1=479373&r2=479374
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am (original)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am Sun Nov 26 08:27:08 2006
@@ -66,6 +66,7 @@
activemq/transport/TcpTransportFactory.cpp \
activemq/util/StringTokenizer.cpp \
activemq/util/Guid.cpp \
+ activemq/util/Date.cpp \
activemq/util/Math.cpp
h_sources = \
@@ -222,6 +223,7 @@
activemq/util/Boolean.h \
activemq/util/StringTokenizer.h \
activemq/util/Queue.h \
+ activemq/util/Date.h \
activemq/util/Math.h \
cms/DeliveryMode.h \
cms/TemporaryQueue.h \
Modified: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Config.h
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Config.h?view=diff&rev=479374&r1=479373&r2=479374
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Config.h (original)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Config.h Sun Nov 26 08:27:08 2006
@@ -25,7 +25,7 @@
#if defined(HAVE_CONFIG_H)
// config.h is generated by the ./configure script and it only
- // used by unix like systems (includeing cygwin)
+ // used by unix like systems (including cygwin)
#include <config.h>
@@ -40,6 +40,8 @@
#define HAVE_RPCDCE_H
#define HAVE_WINSOCK2_H
#define HAVE_STRUCT_ADDRINFO
+ #define HAVE_SYS_TIMEB_H
+ #define HAVE_FTIME
#elif defined( unix )
#define HAVE_UUID_UUID_H
#else
Added: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Date.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Date.cpp?view=auto&rev=479374
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Date.cpp (added)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Date.cpp Sun Nov 26 08:27:08 2006
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 "Date.h"
+#include "Config.h"
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#ifdef HAVE_SYS_TIMEB_H
+#include <sys/timeb.h>
+#endif
+
+#include <activemq/exceptions/UnsupportedOperationException.h>
+
+using namespace activemq::util;
+using namespace activemq::exceptions;
+
+////////////////////////////////////////////////////////////////////////////////
+long long Date::getCurrentTimeMilliseconds(){
+
+#if defined (HAVE_GETTIMEOFDAY)
+ timeval tv;
+ gettimeofday (&tv, NULL);
+ return (tv.tv_sec * 1000LL) + (tv.tv_usec / 1000LL);
+#elif defined (HAVE_TIME)
+ return time (NULL) * 1000LL;
+#elif defined (HAVE_FTIME)
+ struct timeb t;
+ ftime (&t);
+ return (t.time * 1000LL) + t.millitm;
+#else
+
+ // This platform doesn't support any of the standard time methods
+ // ... should never get here.
+ #error "No current time function available on the local platform";
+
+#endif
+}
+
Added: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Date.h
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Date.h?view=auto&rev=479374
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Date.h (added)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Date.h Sun Nov 26 08:27:08 2006
@@ -0,0 +1,128 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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_UTIL_DATE_H_
+#define ACTIVEMQ_UTIL_DATE_H_
+
+namespace activemq{
+namespace util{
+
+ /**
+ * Wrapper class around a time value in milliseconds. This
+ * class is comparable to Java's java.util.Date class.
+ */
+ class Date
+ {
+ private:
+
+ /**
+ * The underlying time value in millisecondsĀ§
+ */
+ long long time;
+
+ public:
+
+ /**
+ * Default constructor - sets time to now.
+ */
+ Date(){
+ time = getCurrentTimeMilliseconds();
+ }
+
+ /**
+ * Constructs the date with a given time value.
+ * @param milliseconds The time in milliseconds;
+ */
+ Date( long long milliseconds ){
+ this->time = milliseconds;
+ }
+
+ /**
+ * Copy constructor.
+ */
+ Date( const Date& source ){
+ (*this) = source;
+ }
+
+ virtual ~Date(){}
+
+ /**
+ * Gets the underlying time.
+ * @return The underlying time value in milliseconds.
+ */
+ long long getTime() const{
+ return time;
+ }
+
+ /**
+ * Sets the underlying time.
+ * @param milliseconds The underlying time value in
+ * milliseconds.
+ */
+ void setTime( long long milliseconds ){
+ this->time = milliseconds;
+ }
+
+ /**
+ * Determines wether or not this date falls after the
+ * specified time.
+ * @param when The date to compare
+ * @return true if this date falls after when.
+ */
+ bool after( Date& when ) const{
+ return time > when.time;
+ }
+
+ /**
+ * Determines wether or not this date falls before the
+ * specified time.
+ * @param when The date to compare
+ * @return true if this date falls before when.
+ */
+ bool before( Date& when ) const{
+ return time < when.time;
+ }
+
+ /**
+ * Determines wether or not this date is equal to the
+ * specified time.
+ * @param when The date to compare
+ * @return true if this date is equal to when.
+ */
+ bool equals( Date& when ) const{
+ return time == when.time;
+ }
+
+ /**
+ * Assignment operator.
+ */
+ Date& operator =( const Date& source ){
+ this->time = source.time;
+ return *this;
+ }
+
+ /**
+ * Returns the current time in milliseconds. Comparable
+ * to Java's System.currentTimeMillis method.
+ * @return The current time in milliseconds.
+ */
+ static long long getCurrentTimeMilliseconds();
+ };
+
+}}
+
+#endif /*ACTIVEMQ_UTIL_DATE_H_*/
Modified: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/Makefile.am?view=diff&rev=479374&r1=479373&r2=479374
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/Makefile.am (original)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/Makefile.am Sun Nov 26 08:27:08 2006
@@ -64,6 +64,7 @@
activemq/transport/TransportFactoryMapRegistrarTest.cpp \
activemq/transport/TransportFactoryMapTest.cpp \
activemq/util/BooleanTest.cpp \
+ activemq/util/DateTest.cpp \
activemq/util/GuidTest.cpp \
activemq/util/IntegerTest.cpp \
activemq/util/LongTest.cpp \
Added: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/util/DateTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/util/DateTest.cpp?view=auto&rev=479374
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/util/DateTest.cpp (added)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/util/DateTest.cpp Sun Nov 26 08:27:08 2006
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 "DateTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::util::DateTest );
Added: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/util/DateTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/util/DateTest.h?view=auto&rev=479374
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/util/DateTest.h (added)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/util/DateTest.h Sun Nov 26 08:27:08 2006
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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_UTIL_DATETEST_H_
+#define _ACTIVEMQ_UTIL_DATETEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/util/Date.h>
+#include <activemq/concurrent/Thread.h>
+
+namespace activemq{
+namespace util{
+
+ class DateTest : public CppUnit::TestFixture
+ {
+ CPPUNIT_TEST_SUITE( DateTest );
+ CPPUNIT_TEST( test );
+ CPPUNIT_TEST_SUITE_END();
+
+ public:
+ DateTest(){};
+ virtual ~DateTest(){};
+
+ void test(){
+
+ Date date1;
+ CPPUNIT_ASSERT( date1.getTime() != 0 );
+
+ activemq::concurrent::Thread::sleep(10);
+
+ Date date2;
+ CPPUNIT_ASSERT( date1.before(date2) == true );
+ CPPUNIT_ASSERT( date1.after(date2) == false );
+
+ Date date3 = date1;
+ CPPUNIT_ASSERT( date1.equals( date3 ) == true );
+ }
+
+ };
+
+}}
+
+#endif /*_ACTIVEMQ_UTIL_DATETEST_H_*/