summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2006-10-21 18:51:54 +0000
committerSteve Huston <shuston@riverace.com>2006-10-21 18:51:54 +0000
commit3104dd867fb4f4c3dacd64afdd4c63419dd81278 (patch)
tree034f649379b8695a53c730802e1189099d6c5606
parent05f8f9198808c736ca5bbc3b4226446da42bb613 (diff)
downloadATCD-3104dd867fb4f4c3dacd64afdd4c63419dd81278.tar.gz
ChangeLogTag:Sat Oct 21 14:49:21 UTC 2006 Steve Huston <shuston@riverace.com>
-rw-r--r--ACE/ChangeLog31
-rw-r--r--ACE/ace/Logging_Strategy.h8
-rw-r--r--ACE/ace/Sock_Connect.cpp2
-rw-r--r--ACE/ace/TSS_T.cpp6
-rw-r--r--ACE/ace/TSS_T.h2
-rw-r--r--ACE/ace/Task_T.h12
-rw-r--r--ACE/ace/Token_Request_Reply.inl3
7 files changed, 48 insertions, 16 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog
index 72f9a749db3..aad8e17429f 100644
--- a/ACE/ChangeLog
+++ b/ACE/ChangeLog
@@ -1,3 +1,34 @@
+Sat Oct 21 14:49:21 UTC 2006 Steve Huston <shuston@riverace.com>
+
+ * ace/TSS_T.{h cpp}: Added "volatile" keyword to once_ member
+ since it can be changed by other threads. Removed the lock
+ acquiring from the ts_object() methods - after once_ is checked,
+ there are no further needs for locks. When needed, the key_ is
+ set up by ts_init() which does acquire a lock. This avoids a lock
+ acquire/release cycle on all calls when initialization of the
+ ACE_TSS object is not required, speeding up performance. Thanks to
+ Guy Peleg <guy dot peleg at amdocs dot com> for reporting this and
+ to Russell Mora <russell_mora at symantec dot com> for assisting in
+ analyzing the situation and recommending the particular fixes.
+
+ * ace/Logging_Strategy.h: Minor doxygen improvements.
+
+ * ace/Sock_Connect.cpp: When checking for IPv6 interfaces on Windows,
+ there's two conditionally compiled blocks of code. One block was
+ built if ACE_HAS_IPV6 SIO_ADDRESS_LIST_QUERY are both defined; the
+ other was built if ACE_HAS_IPV6 is defined. Added the check for
+ SIO_ADDRESS_LIST_QUERY to the second case as well since it makes
+ no sense to run it if the first isn't built. Thanks to Andre
+ Kostur for this fix. Also see:
+ Mon Oct 16 14:24:25 UTC 2006 Steve Huston <shuston@riverace.com>
+
+ * ace/Task_T.h (reply): Clarified what happens on a reply(). Thanks
+ to Doug Schmidt for explaining the rationale for this.
+
+ * ace/Token_Request_Reply.inl (token_name): VC7.1 had trouble grokking
+ the ACE_Utils::Truncate arguments in this case, so add the types
+ to a more complete specification of what template is desired.
+
Sat Oct 21 15:19:46 UTC 2006 Steve Huston <shuston@riverace.com>
* configure.ac: Removed the check for LINUX_VERSION that disabled
diff --git a/ACE/ace/Logging_Strategy.h b/ACE/ace/Logging_Strategy.h
index 89b4427e0eb..bef98026f97 100644
--- a/ACE/ace/Logging_Strategy.h
+++ b/ACE/ace/Logging_Strategy.h
@@ -30,8 +30,9 @@ ACE_BEGIN_VERSIONED_NAMESPACE_DECL
/**
* @class ACE_Logging_Strategy
*
- * @brief This class provides the hooks to control the output produced
- * by any of the network services.
+ * @brief This class provides a way to dynamically configure the ACE logging
+ * mechanism at run time as well as enable the mechanisms for limiting
+ * log file size and log file backup/rotation capability.
*
* Depending upon when this service is invoked and with what
* flags, the output of other network services can be
@@ -73,7 +74,8 @@ ACE_BEGIN_VERSIONED_NAMESPACE_DECL
* and then logging_strategy will use your reactor. If you're
* dynamically linking the @c ACE_Logging_Strategy then you can use
* the @c ACE_Dynamic_Service template to get a pointer to the
- * @c ACE_Logging_Strategy. */
+ * @c ACE_Logging_Strategy.
+ */
class ACE_Export ACE_Logging_Strategy : public ACE_Service_Object
{
public:
diff --git a/ACE/ace/Sock_Connect.cpp b/ACE/ace/Sock_Connect.cpp
index 1817f6d3372..f7b3e3f2129 100644
--- a/ACE/ace/Sock_Connect.cpp
+++ b/ACE/ace/Sock_Connect.cpp
@@ -632,7 +632,7 @@ ACE::get_ip_interfaces (size_t &count,
++count;
}
-# if defined (ACE_HAS_IPV6)
+# if defined (ACE_HAS_IPV6) && defined (SIO_ADDRESS_LIST_QUERY)
// Now go through the list and transfer the good ones to the list of
// because they're down or don't have an IP address.
for (i = 0; i < n_v6_interfaces; i++)
diff --git a/ACE/ace/TSS_T.cpp b/ACE/ace/TSS_T.cpp
index 1157bcbd38d..97490760507 100644
--- a/ACE/ace/TSS_T.cpp
+++ b/ACE/ace/TSS_T.cpp
@@ -263,9 +263,6 @@ ACE_TSS<TYPE>::ts_get (void) const
template <class TYPE> TYPE *
ACE_TSS<TYPE>::ts_object (void) const
{
- // Ensure that we are serialized!
- ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, (ACE_Thread_Mutex &) this->keylock_, 0);
-
if (this->once_ == 0) // Return 0 if we've never been initialized.
return 0;
@@ -312,9 +309,6 @@ ACE_TSS<TYPE>::ts_object (TYPE *new_ts_obj)
return 0;
}
- // Ensure that we are serialized!
- ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->keylock_, 0);
-
TYPE *ts_obj = 0;
#if defined (ACE_HAS_THR_C_DEST)
diff --git a/ACE/ace/TSS_T.h b/ACE/ace/TSS_T.h
index ee336ebe870..f0ba4479b45 100644
--- a/ACE/ace/TSS_T.h
+++ b/ACE/ace/TSS_T.h
@@ -190,7 +190,7 @@ protected:
ACE_Thread_Mutex keylock_;
/// "First time in" flag.
- int once_;
+ volatile int once_;
/// Key for the thread-specific error data.
ACE_thread_key_t key_;
diff --git a/ACE/ace/Task_T.h b/ACE/ace/Task_T.h
index 285972f9d1f..83e148e4a4e 100644
--- a/ACE/ace/Task_T.h
+++ b/ACE/ace/Task_T.h
@@ -96,9 +96,15 @@ public: // Should be protected:
int ungetq (ACE_Message_Block *, ACE_Time_Value *timeout = 0);
/**
- * Turn the message around and send it back down the Stream. Note
- * that <timeout> uses <{absolute}> time rather than <{relative}>
- * time.
+ * Turn the message around, sending it in the opposite direction in
+ * the stream. To do this, the message is put onto the task next in
+ * the stream after this task's sibling.
+ *
+ * @param ACE_Message_Block Pointer to the block that is used in the reply.
+ * @param timeout The absolute time at which the put operation used to
+ * send the message block to the next module in the stream
+ * will time out. If 0, this call blocks until it can be
+ * completed.
*/
int reply (ACE_Message_Block *, ACE_Time_Value *timeout = 0);
diff --git a/ACE/ace/Token_Request_Reply.inl b/ACE/ace/Token_Request_Reply.inl
index 9955c4c66ea..e75d6e15b63 100644
--- a/ACE/ace/Token_Request_Reply.inl
+++ b/ACE/ace/Token_Request_Reply.inl
@@ -147,8 +147,7 @@ ACE_Token_Request::token_name (const ACE_TCHAR *token_name,
// ... then add in the amount of the variable-sized portion.
len += token_name_length + client_id_length + 1;
-
- this->length (ACE_Utils::Truncate (len));
+ this->length (ACE_Utils::Truncate<ACE_UINT32, size_t> (len));
}
// = Set/get the id of the client.