diff options
author | Mateusz Piekos <mateuszpiekos@gmail.com> | 2012-07-05 10:12:45 (GMT) |
---|---|---|
committer | Mateusz Piekos <mateuszpiekos@gmail.com> | 2012-07-05 10:12:45 (GMT) |
commit | 349cda4b8e178dc4a6694c47a3eb45e5a1368fb8 (patch) | |
tree | b0576f3c60bf13a8f62396cac332edc2a421e4bd /Swiften/Whiteboard/WhiteboardServer.cpp | |
parent | fadd51fbed5111aba266a3b8b22be2c57ea11262 (diff) | |
download | swift-contrib-349cda4b8e178dc4a6694c47a3eb45e5a1368fb8.zip swift-contrib-349cda4b8e178dc4a6694c47a3eb45e5a1368fb8.tar.bz2 |
Created simple WhiteboardServer with unit tests
Purpose of WhiteboardServer is to handle server side Operational
Transformation operations
Diffstat (limited to 'Swiften/Whiteboard/WhiteboardServer.cpp')
-rw-r--r-- | Swiften/Whiteboard/WhiteboardServer.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/Swiften/Whiteboard/WhiteboardServer.cpp b/Swiften/Whiteboard/WhiteboardServer.cpp new file mode 100644 index 0000000..89fb00d --- /dev/null +++ b/Swiften/Whiteboard/WhiteboardServer.cpp @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2012 Mateusz Piękos + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#include <Swiften/Whiteboard/WhiteboardServer.h> +#include <Swiften/Whiteboard/WhiteboardTransformer.h> + +namespace Swift { + void WhiteboardServer::handleLocalOperationReceived(WhiteboardOperation::ref operation) { + operations_.push_back(operation); + } + + WhiteboardOperation::ref WhiteboardServer::handleClientOperationReceived(WhiteboardInsertOperation::ref operation) { + std::list<WhiteboardOperation::ref>::iterator it; + for (it = operations_.begin(); it != operations_.end(); ++it) { + if (operation->getParentID() == (*it)->getParentID()) { + WhiteboardInsertOperation::ref insertOperation = boost::dynamic_pointer_cast<WhiteboardInsertOperation>(*it); + if (insertOperation) { + std::pair<WhiteboardInsertOperation::ref, WhiteboardInsertOperation::ref> tResult = WhiteboardTransformer::transform(operation, insertOperation); + operations_.push_back(tResult.second); + return tResult.second; + } + else { + operations_.push_back(*it); + return *it; + } + } + } + } +} |