diff options
author | schmidt <douglascraigschmidt@users.noreply.github.com> | 1997-05-15 03:00:52 +0000 |
---|---|---|
committer | schmidt <douglascraigschmidt@users.noreply.github.com> | 1997-05-15 03:00:52 +0000 |
commit | fee951cea2abb0770870fb273d21b4cbe06f20d2 (patch) | |
tree | 419f029ad1b04cdecd8147b71e4b992e9e1342dc | |
parent | d4e30a27d69fe8e2d297688931a15abdac933da8 (diff) | |
download | ATCD-fee951cea2abb0770870fb273d21b4cbe06f20d2.tar.gz |
*** empty log message ***
-rw-r--r-- | ChangeLog-97a | 8 | ||||
-rw-r--r-- | ace/Singleton.cpp | 18 | ||||
-rw-r--r-- | ace/Singleton.h | 2 | ||||
-rw-r--r-- | ace/Stream.h | 3 | ||||
-rw-r--r-- | ace/UPIPE_Stream.cpp | 4 |
5 files changed, 29 insertions, 6 deletions
diff --git a/ChangeLog-97a b/ChangeLog-97a index d33584f3705..3f9d358a8aa 100644 --- a/ChangeLog-97a +++ b/ChangeLog-97a @@ -1,4 +1,10 @@ -Wed May 14 15:45:30 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu> +Wed May 14 21:52:22 1997 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * ace/UPIPE_Stream.cpp (control): We need to "cast away const" so + that this method can call the Stream's control() method + (which is non-const). Thanks to David Levine for locating this. + + * ace/Singleton.cpp: Finished re-implementing ACE_Singleton. * examples/ASX/Message_Queue/buffer_stream.cpp: Updated this example to illustrate (1) how filters work in an ACE_Stream and diff --git a/ace/Singleton.cpp b/ace/Singleton.cpp index a715f776d85..cffdfbe0080 100644 --- a/ace/Singleton.cpp +++ b/ace/Singleton.cpp @@ -77,13 +77,13 @@ ACE_Singleton<TYPE, LOCK>::instance (TYPE *new_instance) { ACE_TRACE ("ACE_Singleton::set_instance"); - TYPE *&singleton = ACE_Singleton<TYPE, LOCK>::instance_i (); ACE_GUARD_RETURN (LOCK, ace_mon, (ACE_Singleton<TYPE, LOCK>::singleton_lock_i ()), 0); + TYPE *&singleton = ACE_Singleton<TYPE, LOCK>::instance_i (); TYPE *old_instance = singleton; singleton = new_instance; - return singleton; + return old_instance; } #if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) @@ -160,6 +160,20 @@ ACE_SingletonEx<TYPE, LOCK, MEMORY>::instance (void) return singleton->ts_object (); } +template <class TYPE, class LOCK, ACE_SingletonEx_Strategy MEMORY> TYPE * +ACE_Singleton<TYPE, LOCK, MEMORY>::instance (TYPE *new_instance) +{ + ACE_TRACE ("ACE_Singleton<TYPE, LOCK, MEMORY>::set_instance"); + + ACE_GUARD_RETURN (LOCK, ace_mon, (ACE_SingletonEx<TYPE, LOCK, MEMORY>::singleton_lock_i ()), 0); + + TYPE *&singleton = ACE_Singleton<TYPE, LOCK, MEMORY>::instance_i (); + TYPE *old_instance = singleton; + singleton = new_instance; + + return old_instance; +} + #if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) // Pointer to the Singleton instance. template <class TYPE, class LOCK, ACE_SingletonEx_Strategy MEMORY> TYPE * diff --git a/ace/Singleton.h b/ace/Singleton.h index 853910ad172..1304087a840 100644 --- a/ace/Singleton.h +++ b/ace/Singleton.h @@ -71,7 +71,7 @@ public: static TYPE *instance (void); // Global access point to the Singleton. - static TYPE *instance (TYPE*); + static TYPE *instance (TYPE *); // Set the Singleton instance. static void dump (void); diff --git a/ace/Stream.h b/ace/Stream.h index 2d81e618a0b..d0a9a2addeb 100644 --- a/ace/Stream.h +++ b/ace/Stream.h @@ -114,7 +114,8 @@ public: // Wait for upto <timeout> amount of time for the operation to // complete (or block forever if <timeout> == 0). - int control (ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds cmd, void *args); + int control (ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds cmd, + void *args); // Send control message down the stream. int wait (void); diff --git a/ace/UPIPE_Stream.cpp b/ace/UPIPE_Stream.cpp index adda14c1855..596265045db 100644 --- a/ace/UPIPE_Stream.cpp +++ b/ace/UPIPE_Stream.cpp @@ -32,7 +32,9 @@ ACE_UPIPE_Stream::control (int cmd, void * val) const { ACE_TRACE ("ACE_UPIPE_Stream::control"); - return this->stream_.control ((ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds) cmd, val); + + return ((ACE_UPIPE_Stream *) this)->stream_.control + ((ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds) cmd, val); } void |