summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMateusz Piekos <mateuszpiekos@gmail.com>2012-07-11 12:34:21 (GMT)
committerMateusz Piekos <mateuszpiekos@gmail.com>2012-07-11 12:34:21 (GMT)
commitf858a761e115ee20b8c5102da8bfead2dde8ffcf (patch)
tree6d96a72180c2c630e33034988a97da9f09c52b21 /Swiften/Whiteboard/WhiteboardClient.cpp
parent648327e0eb09e125b95314bc2f97dad03dafe6d8 (diff)
downloadswift-contrib-f858a761e115ee20b8c5102da8bfead2dde8ffcf.zip
swift-contrib-f858a761e115ee20b8c5102da8bfead2dde8ffcf.tar.bz2
Tidied up WhitebaordClientTest code
Diffstat (limited to 'Swiften/Whiteboard/WhiteboardClient.cpp')
-rw-r--r--Swiften/Whiteboard/WhiteboardClient.cpp36
1 files changed, 28 insertions, 8 deletions
diff --git a/Swiften/Whiteboard/WhiteboardClient.cpp b/Swiften/Whiteboard/WhiteboardClient.cpp
index 02ee48d..447e5de 100644
--- a/Swiften/Whiteboard/WhiteboardClient.cpp
+++ b/Swiften/Whiteboard/WhiteboardClient.cpp
@@ -11,39 +11,58 @@
namespace Swift {
WhiteboardOperation::ref WhiteboardClient::handleLocalOperationReceived(WhiteboardOperation::ref operation) {
localOperations_.push_back(operation);
+// if (bridge_.size() > 0) {
+ WhiteboardOperation::ref op = boost::make_shared<WhiteboardInsertOperation>(*boost::dynamic_pointer_cast<WhiteboardInsertOperation>(operation).get());
if (bridge_.size() > 0) {
- WhiteboardOperation::ref op = boost::make_shared<WhiteboardInsertOperation>(*boost::dynamic_pointer_cast<WhiteboardInsertOperation>(operation).get());
op->setParentID(bridge_.back()->getID());
- bridge_.push_back(op);
}
+ bridge_.push_back(op);
+// }
if (lastSentOperationID_.empty())
{
+ WhiteboardOperation::ref op = boost::make_shared<WhiteboardInsertOperation>(*boost::dynamic_pointer_cast<WhiteboardInsertOperation>(operation).get());
+ if (serverOperations_.size() > 0) {
+ op->setParentID(serverOperations_.back()->getID());
+ }
lastSentOperationID_ = operation->getID();
- return operation;
+ return op;
+ } else {
+ return WhiteboardOperation::ref();
}
- return WhiteboardOperation::ref();
}
std::pair<WhiteboardOperation::ref, WhiteboardOperation::ref> WhiteboardClient::handleServerOperationReceived(WhiteboardOperation::ref operation) {
serverOperations_.push_back(operation);
WhiteboardOperation::ref clientOp;
WhiteboardOperation::ref serverOp;
- if (localOperations_.empty()) {// || localOperations_.back()->getID() == operation->getParentID()) {
+// if (localOperations_.empty()) {// || localOperations_.back()->getID() == operation->getParentID()) {
+ //Situation where client and server are in sync
+ if (localOperations_.size() == serverOperations_.size()-1) {
localOperations_.push_back(operation);
clientOp = operation;
} else if (lastSentOperationID_ == operation->getID()) {
- if (lastSentOperationID_ == bridge_.front()->getID()) {
+ //Client received confirmation about own operation and it sends next operation to server
+ if (bridge_.size() > 0 && lastSentOperationID_ == bridge_.front()->getID()) {
bridge_.erase(bridge_.begin());
}
- std::list<WhiteboardOperation::ref>::iterator it;
+ /*std::list<WhiteboardOperation::ref>::iterator it;
for (it = bridge_.begin(); it != bridge_.end(); ++it) {
if ((*it)->getParentID() == lastSentOperationID_) {
lastSentOperationID_ = (*it)->getID();
- //serverOperations_.push_back(*it);
serverOp = *it;
serverOp->setOrigin(WhiteboardOperation::Other);
break;
}
+ }*/
+
+ if (bridge_.size() > 0 && (bridge_.front())->getParentID() == lastSentOperationID_) {
+ lastSentOperationID_ = (bridge_.front())->getID();
+ serverOp = bridge_.front();
+ serverOp->setOrigin(WhiteboardOperation::Other);
+ }
+
+ if (!serverOp) {
+ lastSentOperationID_.clear();
}
} else {
if (bridge_.size() > 0 && bridge_.front()->getParentID() == operation->getParentID()) {
@@ -68,6 +87,7 @@ namespace Swift {
localOperations_.push_back(temp);
clientOp = 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);