summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Whiteboard/WhiteboardClient.cpp')
-rw-r--r--Swiften/Whiteboard/WhiteboardClient.cpp79
1 files changed, 19 insertions, 60 deletions
diff --git a/Swiften/Whiteboard/WhiteboardClient.cpp b/Swiften/Whiteboard/WhiteboardClient.cpp
index ce47fe5..4dacc90 100644
--- a/Swiften/Whiteboard/WhiteboardClient.cpp
+++ b/Swiften/Whiteboard/WhiteboardClient.cpp
@@ -11,7 +11,7 @@
namespace Swift {
WhiteboardOperation::ref WhiteboardClient::handleLocalOperationReceived(WhiteboardOperation::ref operation) {
localOperations_.push_back(operation);
-// if (bridge_.size() > 0) {
+
WhiteboardOperation::ref op;
WhiteboardInsertOperation::ref insertOp = boost::dynamic_pointer_cast<WhiteboardInsertOperation>(operation);
if (insertOp) {
@@ -30,7 +30,7 @@ namespace Swift {
op->setParentID(bridge_.back()->getID());
}
bridge_.push_back(op);
-// }
+
if (lastSentOperationID_.empty())
{
WhiteboardInsertOperation::ref insertOp = boost::dynamic_pointer_cast<WhiteboardInsertOperation>(operation);
@@ -59,8 +59,6 @@ namespace Swift {
WhiteboardClient::Result WhiteboardClient::handleServerOperationReceived(WhiteboardOperation::ref operation) {
serverOperations_.push_back(operation);
-// WhiteboardOperation::ref clientOp;
-// WhiteboardOperation::ref serverOp;
Result result;
// if (localOperations_.empty()) {// || localOperations_.back()->getID() == operation->getParentID()) {
//Situation where client and server are in sync
@@ -73,15 +71,6 @@ namespace Swift {
if (bridge_.size() > 0 && lastSentOperationID_ == bridge_.front()->getID()) {
bridge_.erase(bridge_.begin());
}
- /*std::list<WhiteboardOperation::ref>::iterator it;
- for (it = bridge_.begin(); it != bridge_.end(); ++it) {
- if ((*it)->getParentID() == lastSentOperationID_) {
- lastSentOperationID_ = (*it)->getID();
- serverOp = *it;
- serverOp->setOrigin(WhiteboardOperation::Other);
- break;
- }
- }*/
if (bridge_.size() > 0 && (bridge_.front())->getParentID() == lastSentOperationID_) {
lastSentOperationID_ = (bridge_.front())->getID();
@@ -91,56 +80,26 @@ namespace Swift {
lastSentOperationID_.clear();
}
} else {
- if (bridge_.size() > 0 && bridge_.front()->getParentID() == operation->getParentID()) {
- std::list<WhiteboardOperation::ref>::iterator it = bridge_.begin();
- std::pair<WhiteboardOperation::ref, WhiteboardOperation::ref> opPair;
- WhiteboardOperation::ref temp;
- opPair = WhiteboardTransformer::transform(*it, operation);
- temp = opPair.first;
+ std::list<WhiteboardOperation::ref>::iterator it = bridge_.begin();
+ std::pair<WhiteboardOperation::ref, WhiteboardOperation::ref> opPair;
+ WhiteboardOperation::ref temp;
+ opPair = WhiteboardTransformer::transform(*it, operation);
+ temp = opPair.first;
+ *it = opPair.second;
+ std::string previousID = (*it)->getID();
+ ++it;
+ for (; it != bridge_.end(); ++it) {
+ opPair = WhiteboardTransformer::transform(*it, temp);
+ temp = opPair.first;
*it = opPair.second;
- std::string previousID = (*it)->getID();
- ++it;
- for (; it != bridge_.end(); ++it) {
- opPair = WhiteboardTransformer::transform(*it, temp);
- temp = opPair.first;
- *it = opPair.second;
- (*it)->setParentID(previousID);
- previousID = (*it)->getID();
- }
-
- temp->setParentID(localOperations_.back()->getID());
- localOperations_.push_back(temp);
- result.client = temp;
- } else {
-//doesn't get executed
-/* std::list<WhiteboardOperation::ref>::reverse_iterator it;
- std::pair<WhiteboardInsertOperation::ref, WhiteboardInsertOperation::ref> opPair;
- WhiteboardInsertOperation::ref temp = boost::dynamic_pointer_cast<WhiteboardInsertOperation>(operation);
- bool end = false;
- for (it = localOperations_.rbegin(); it != localOperations_.rend(); ++it) {
- while ((*it)->getParentID() == temp->getParentID()) {
- opPair = WhiteboardTransformer::transform(boost::dynamic_pointer_cast<WhiteboardInsertOperation>(*it), temp);
- if (bridge_.size() > 0) {
- opPair.second->setParentID(bridge_.back()->getID());
- }
- temp = opPair.first;
- bridge_.push_back(opPair.second);
- if (it == localOperations_.rbegin()) {
- localOperations_.push_back(temp);
- result.client = temp;
- end = true;
- break;
- } else {
- --it;
- }
- }
- if (end) {
- break;
- }*/
-
-
+ (*it)->setParentID(previousID);
+ previousID = (*it)->getID();
}
+
+ temp->setParentID(localOperations_.back()->getID());
+ localOperations_.push_back(temp);
+ result.client = temp;
}
return result;