Index: source/ariba/Makefile.am
===================================================================
--- source/ariba/Makefile.am	(revision 4625)
+++ source/ariba/Makefile.am	(revision 4679)
@@ -404,4 +404,5 @@
 libariba_la_SOURCES += \
   utility/system/BlockingMethod.cpp \
+  utility/system/EnterMethod.cpp \
   utility/system/SystemEvent.cpp \
   utility/system/SystemEventListener.cpp \
@@ -413,4 +414,5 @@
 nobase_libariba_la_HEADERS += \
   utility/system/BlockingMethod.h \
+  utility/system/EnterMethod.h \
   utility/system/SystemEvent.h \
   utility/system/SystemEventListener.h \
Index: source/ariba/utility/system/EnterMethod.cpp
===================================================================
--- source/ariba/utility/system/EnterMethod.cpp	(revision 4679)
+++ source/ariba/utility/system/EnterMethod.cpp	(revision 4679)
@@ -0,0 +1,81 @@
+// [License]
+// The Ariba-Underlay Copyright
+//
+// Copyright (c) 2008-2009, Institute of Telematics, UniversitÃ€t Karlsruhe (TH)
+//
+// Institute of Telematics
+// UniversitÃ€t Karlsruhe (TH)
+// Zirkel 2, 76128 Karlsruhe
+// Germany
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE INSTITUTE OF TELEMATICS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ARIBA PROJECT OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// The views and conclusions contained in the software and documentation
+// are those of the authors and should not be interpreted as representing
+// official policies, either expressed or implied, of the Institute of
+// Telematics.
+// [License]
+
+#include "EnterMethod.h"
+
+namespace ariba {
+namespace utility {
+
+SystemEventType EnterMethodType("EnterMethod");
+
+EnterMethod::EnterMethod(){
+}
+
+EnterMethod::~EnterMethod(){
+}
+
+void EnterMethod::enter(){
+
+	{ boost::mutex::scoped_lock lock( waitForEnterMutex );
+
+		SystemQueue::instance().scheduleEvent(
+			SystemEvent( this, EnterMethodType, NULL), 0 );
+		waitForEnter.wait( lock );
+	}
+}
+
+void EnterMethod::leave(){
+
+	{ boost::mutex::scoped_lock lock( waitForLeaveMutex );
+		waitForLeave.notify_one();
+	}
+}
+
+void EnterMethod::handleSystemEvent( const SystemEvent& event ){
+
+	{ boost::mutex::scoped_lock lock( waitForLeaveMutex );
+
+		{ boost::mutex::scoped_lock lock2( waitForEnterMutex );
+			waitForEnter.notify_one();
+		}
+
+		waitForLeave.wait( lock );
+	}
+}
+
+}} // namespace ariba, common
Index: source/ariba/utility/system/EnterMethod.h
===================================================================
--- source/ariba/utility/system/EnterMethod.h	(revision 4679)
+++ source/ariba/utility/system/EnterMethod.h	(revision 4679)
@@ -0,0 +1,79 @@
+// [License]
+// The Ariba-Underlay Copyright
+//
+// Copyright (c) 2008-2009, Institute of Telematics, UniversitÃ€t Karlsruhe (TH)
+//
+// Institute of Telematics
+// UniversitÃ€t Karlsruhe (TH)
+// Zirkel 2, 76128 Karlsruhe
+// Germany
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE INSTITUTE OF TELEMATICS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ARIBA PROJECT OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// The views and conclusions contained in the software and documentation
+// are those of the authors and should not be interpreted as representing
+// official policies, either expressed or implied, of the Institute of
+// Telematics.
+// [License]
+
+#ifndef ENTER_METHOD_H__
+#define ENTER_METHOD_H__
+
+#include "ariba/utility/system/SystemEventListener.h"
+#include "ariba/utility/system/SystemQueue.h"
+#include "ariba/utility/system/SystemEvent.h"
+#include "ariba/utility/system/SystemEventType.h"
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/thread.hpp>
+#include <boost/bind.hpp>
+
+using ariba::utility::SystemEventType;
+using ariba::utility::SystemQueue;
+using ariba::utility::SystemEventListener;
+
+namespace ariba {
+namespace utility {
+
+class EnterMethod : public SystemEventListener {
+public:
+	EnterMethod();
+	virtual ~EnterMethod();
+
+	void enter();
+	void leave();
+	
+protected:
+	void handleSystemEvent(const SystemEvent& event);
+	
+private:
+	boost::condition_variable waitForEnter;
+	boost::condition_variable waitForLeave;
+
+	boost::mutex waitForEnterMutex;
+	boost::mutex waitForLeaveMutex;
+
+};
+
+}} // namespace ariba, common
+
+#endif // ENTER_METHOD_H__
