|
From: <mm...@us...> - 2012-11-20 22:28:02
|
Revision: 3292
http://dmcs.svn.sourceforge.net/dmcs/?rev=3292&view=rev
Author: mmsc
Date: 2012-11-20 22:27:55 +0000 (Tue, 20 Nov 2012)
Log Message:
-----------
Unify joiners by introducing LeafJoiner. Prepare to fix NormalContext's processing of requests.
Modified Paths:
--------------
dmcs/branches/dmcs1.5/include/mcs/BaseJoiner.h
dmcs/branches/dmcs1.5/include/mcs/Makefile.am
dmcs/branches/dmcs1.5/include/mcs/NormalContext.h
dmcs/branches/dmcs1.5/include/mcs/StreamingJoiner.h
dmcs/branches/dmcs1.5/src/mcs/Makefile.am
dmcs/branches/dmcs1.5/src/mcs/NewContext.cpp
dmcs/branches/dmcs1.5/src/mcs/NormalContext.cpp
Added Paths:
-----------
dmcs/branches/dmcs1.5/include/mcs/LeafJoiner.h
dmcs/branches/dmcs1.5/src/mcs/LeafJoiner.cpp
Modified: dmcs/branches/dmcs1.5/include/mcs/BaseJoiner.h
===================================================================
--- dmcs/branches/dmcs1.5/include/mcs/BaseJoiner.h 2012-11-20 16:47:06 UTC (rev 3291)
+++ dmcs/branches/dmcs1.5/include/mcs/BaseJoiner.h 2012-11-20 22:27:55 UTC (rev 3292)
@@ -33,9 +33,11 @@
#include <vector>
#include <boost/shared_ptr.hpp>
#include "mcs/NewBeliefState.h"
-#include "network/NewJoinerDispatcher.h"
+#include "mcs/ForwardMessage.h"
#include "mcs/NewNeighbor.h"
+#include "mcs/ReturnedBeliefState.h"
#include "network/NewConcurrentMessageDispatcher.h"
+#include "network/NewJoinerDispatcher.h"
namespace dmcs {
@@ -48,6 +50,18 @@
registerJoinIn(std::size_t offset,
NewConcurrentMessageDispatcherPtr md);
+ virtual ReturnedBeliefState*
+ first_join(std::size_t query_id,
+ const NewHistory& history,
+ NewConcurrentMessageDispatcherPtr md,
+ NewJoinerDispatcherPtr jd) = 0;
+
+ virtual ReturnedBeliefState*
+ next_join(std::size_t query_id,
+ const NewHistory& history,
+ NewConcurrentMessageDispatcherPtr md,
+ NewJoinerDispatcherPtr jd) = 0;
+
protected:
void
init();
@@ -65,6 +79,8 @@
ReturnedBeliefStateList joined_results;
};
+typedef boost::shared_ptr<BaseJoiner> BaseJoinerPtr;
+
} // namespace dmcs
#endif // BASE_JOINER_H
Added: dmcs/branches/dmcs1.5/include/mcs/LeafJoiner.h
===================================================================
--- dmcs/branches/dmcs1.5/include/mcs/LeafJoiner.h (rev 0)
+++ dmcs/branches/dmcs1.5/include/mcs/LeafJoiner.h 2012-11-20 22:27:55 UTC (rev 3292)
@@ -0,0 +1,66 @@
+/* DMCS -- Distributed Nonmonotonic Multi-Context Systems.
+ * Copyright (C) 2009, 2010 Minh Dao-Tran, Thomas Krennwallner
+ *
+ * This file is part of DMCS.
+ *
+ * DMCS is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DMCS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with DMCS. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ /**
+ * @file LeafJoiner.h
+ * @author Minh Dao Tran <da...@kr...>
+ * @date Tue Nov 20 11:04:06 2012
+ *
+ * @brief
+ *
+ *
+ */
+
+#ifndef __LEAF_JOINER_H__
+#define __LEAF_JOINER_H__
+
+#include "mcs/BaseJoiner.h"
+#include "mcs/BeliefStateOffset.h"
+
+namespace dmcs {
+
+class LeafJoiner : public BaseJoiner
+{
+public:
+ LeafJoiner(NewNeighborVecPtr n);
+
+ ReturnedBeliefState*
+ first_join(std::size_t query_id,
+ const NewHistory& history,
+ NewConcurrentMessageDispatcherPtr md = NewConcurrentMessageDispatcherPtr(),
+ NewJoinerDispatcherPtr jd = NewJoinerDispatcherPtr());
+
+
+ ReturnedBeliefState*
+ next_join(std::size_t query_id,
+ const NewHistory& history,
+ NewConcurrentMessageDispatcherPtr md = NewConcurrentMessageDispatcherPtr(),
+ NewJoinerDispatcherPtr jd = NewJoinerDispatcherPtr());
+};
+
+typedef boost::shared_ptr<LeafJoiner> LeafJoinerPtr;
+
+} // namespace dmcs
+
+#endif // __LEAF_JOINER_H__
+
+
+// Local Variables:
+// mode: C++
+// End:
Modified: dmcs/branches/dmcs1.5/include/mcs/Makefile.am
===================================================================
--- dmcs/branches/dmcs1.5/include/mcs/Makefile.am 2012-11-20 16:47:06 UTC (rev 3291)
+++ dmcs/branches/dmcs1.5/include/mcs/Makefile.am 2012-11-20 22:27:55 UTC (rev 3292)
@@ -19,6 +19,7 @@
NewBeliefState.h \
NewContext.h \
CycleBreaker.h \
+ LeafJoiner.h \
NewMessage.h \
NormalContext.h \
NewNeighbor.h \
Modified: dmcs/branches/dmcs1.5/include/mcs/NormalContext.h
===================================================================
--- dmcs/branches/dmcs1.5/include/mcs/NormalContext.h 2012-11-20 16:47:06 UTC (rev 3291)
+++ dmcs/branches/dmcs1.5/include/mcs/NormalContext.h 2012-11-20 22:27:55 UTC (rev 3292)
@@ -36,7 +36,7 @@
#include "mcs/BridgeRuleEvaluator.h"
#include "mcs/QueryPlan.h"
#include "network/RequestDispatcher.h"
-#include "mcs/StreamingJoiner.h"
+#include "mcs/BaseJoiner.h"
#include "network/NewConcurrentMessageDispatcher.h"
#include "mcs/NewContext.h"
@@ -110,7 +110,7 @@
// For opt topologies where some links are cut to break cycles.
NewNeighborVecPtr guessing_neighbors;
- StreamingJoinerPtr joiner;
+ BaseJoinerPtr joiner;
// to deal with cycles
boost::thread* cycle_breaker_thread;
Modified: dmcs/branches/dmcs1.5/include/mcs/StreamingJoiner.h
===================================================================
--- dmcs/branches/dmcs1.5/include/mcs/StreamingJoiner.h 2012-11-20 16:47:06 UTC (rev 3291)
+++ dmcs/branches/dmcs1.5/include/mcs/StreamingJoiner.h 2012-11-20 22:27:55 UTC (rev 3292)
@@ -53,17 +53,7 @@
NewConcurrentMessageDispatcherPtr md,
NewJoinerDispatcherPtr jd);
-private:
- void
- reset();
-
ReturnedBeliefState*
- process(std::size_t query_id,
- const NewHistory& history,
- NewConcurrentMessageDispatcherPtr md,
- NewJoinerDispatcherPtr jd);
-
- ReturnedBeliefState*
first_join(std::size_t query_id,
const NewHistory& history,
NewConcurrentMessageDispatcherPtr md,
@@ -75,7 +65,16 @@
NewConcurrentMessageDispatcherPtr md,
NewJoinerDispatcherPtr jd);
+private:
+ void
+ reset();
+ ReturnedBeliefState*
+ process(std::size_t query_id,
+ const NewHistory& history,
+ NewConcurrentMessageDispatcherPtr md,
+ NewJoinerDispatcherPtr jd);
+
bool
do_join(std::size_t query_id);
Added: dmcs/branches/dmcs1.5/src/mcs/LeafJoiner.cpp
===================================================================
--- dmcs/branches/dmcs1.5/src/mcs/LeafJoiner.cpp (rev 0)
+++ dmcs/branches/dmcs1.5/src/mcs/LeafJoiner.cpp 2012-11-20 22:27:55 UTC (rev 3292)
@@ -0,0 +1,71 @@
+/* DMCS -- Distributed Nonmonotonic Multi-Context Systems.
+ * Copyright (C) 2009, 2010 Minh Dao-Tran, Thomas Krennwallner
+ *
+ * This file is part of DMCS.
+ *
+ * DMCS is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DMCS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with DMCS. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ /**
+ * @file LeafJoiner.cpp
+ * @author Minh Dao Tran <da...@kr...>
+ * @date Tue Nov 20 11:13:26 2012
+ *
+ * @brief
+ *
+ *
+ */
+
+#include "mcs/LeafJoiner.h"
+
+namespace dmcs {
+
+
+
+LeafJoiner::LeafJoiner(NewNeighborVecPtr n)
+ : BaseJoiner(n)
+{ }
+
+
+
+ReturnedBeliefState*
+LeafJoiner::first_join(std::size_t query_id,
+ const NewHistory& history,
+ NewConcurrentMessageDispatcherPtr md,
+ NewJoinerDispatcherPtr jd)
+{
+ NewBeliefState* input = new NewBeliefState(BeliefStateOffset::instance()->NO_BLOCKS(),
+ BeliefStateOffset::instance()->SIZE_BS());
+
+ ReturnedBeliefState* rbs = new ReturnedBeliefState(input, query_id);
+ return rbs;
+}
+
+
+
+ReturnedBeliefState*
+LeafJoiner::next_join(std::size_t query_id,
+ const NewHistory& history,
+ NewConcurrentMessageDispatcherPtr md,
+ NewJoinerDispatcherPtr jd)
+{
+ ReturnedBeliefState* rbs = new ReturnedBeliefState(NULL, query_id);
+ return rbs;
+}
+
+} // namespace dmcs
+
+// Local Variables:
+// mode: C++
+// End:
Modified: dmcs/branches/dmcs1.5/src/mcs/Makefile.am
===================================================================
--- dmcs/branches/dmcs1.5/src/mcs/Makefile.am 2012-11-20 16:47:06 UTC (rev 3291)
+++ dmcs/branches/dmcs1.5/src/mcs/Makefile.am 2012-11-20 22:27:55 UTC (rev 3292)
@@ -42,6 +42,7 @@
NewBeliefState.cpp \
NewContext.cpp \
CycleBreaker.cpp \
+ LeafJoiner.cpp \
NormalContext.cpp \
Pool.cpp \
QueryID.cpp \
Modified: dmcs/branches/dmcs1.5/src/mcs/NewContext.cpp
===================================================================
--- dmcs/branches/dmcs1.5/src/mcs/NewContext.cpp 2012-11-20 16:47:06 UTC (rev 3291)
+++ dmcs/branches/dmcs1.5/src/mcs/NewContext.cpp 2012-11-20 22:27:55 UTC (rev 3292)
@@ -81,7 +81,7 @@
return false;
}
- DBGLOG(DBG, "NormalContext[" << ctx_id << "]::compute(): heads = " << *(heads->getHeads()));
+ DBGLOG(DBG, "NewContext[" << ctx_id << "]::compute(): heads = " << *(heads->getHeads()));
// send heads to Evaluator
int timeout = 0;
md->send(NewConcurrentMessageDispatcher::EVAL_IN_MQ, eval->getInQueue(), heads, timeout);
Modified: dmcs/branches/dmcs1.5/src/mcs/NormalContext.cpp
===================================================================
--- dmcs/branches/dmcs1.5/src/mcs/NormalContext.cpp 2012-11-20 16:47:06 UTC (rev 3291)
+++ dmcs/branches/dmcs1.5/src/mcs/NormalContext.cpp 2012-11-20 22:27:55 UTC (rev 3292)
@@ -31,8 +31,11 @@
#include "mcs/NormalContext.h"
#include "mcs/CycleBreaker.h"
#include "mcs/ForwardMessage.h"
+#include "mcs/LeafJoiner.h"
+#include "mcs/StreamingJoiner.h"
#include "dmcs/DLVEvaluator.h"
+
namespace dmcs {
NormalContext::NormalContext(std::size_t cid,
@@ -53,7 +56,7 @@
guessing_neighbors(gnbs)
{
if (nbs->size() == 0)
- joiner = StreamingJoinerPtr();
+ joiner = LeafJoinerPtr(new LeafJoiner(nbs));
else
joiner = StreamingJoinerPtr(new StreamingJoiner(pack_size, nbs));
@@ -228,7 +231,7 @@
{
std::size_t this_qid = query_id(ctx_id, ++query_counter);
DBGLOG(DBG, "NormalContext[" << ctx_id << "]::process_request: trigger join with query_id = " << this_qid << " " << detailprint(this_qid));
- ReturnedBeliefState* rbs = joiner->trigger_join(this_qid, history, md, jd);
+ ReturnedBeliefState* rbs = joiner->first_join(this_qid, history, md, jd);
if (rbs->belief_state == NULL)
{
break;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|