summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Clayton <alex.clayton@isode.com>2016-02-26 16:51:13 (GMT)
committerAlex Clayton <alex.clayton@isode.com>2016-03-09 16:44:17 (GMT)
commit8f112a856705b800d1a8797bec5d9396a9c00b34 (patch)
tree6468ad42172e1d1f68138a26679dbaf85b58e6b9 /src/com/isode/stroke/whiteboard/WhiteboardResponder.java
parent8fe752626726ca8d058ce437127a37d5d738a5eb (diff)
downloadstroke-8f112a856705b800d1a8797bec5d9396a9c00b34.zip
stroke-8f112a856705b800d1a8797bec5d9396a9c00b34.tar.bz2
Add Whiteboard Functionality
Add the Whiteboard classes to stroke. Test-information: Unit tests all pass. Change-Id: Id409c09d0fc1f82864e5d706c413b9d984a7db82
Diffstat (limited to 'src/com/isode/stroke/whiteboard/WhiteboardResponder.java')
-rw-r--r--src/com/isode/stroke/whiteboard/WhiteboardResponder.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/com/isode/stroke/whiteboard/WhiteboardResponder.java b/src/com/isode/stroke/whiteboard/WhiteboardResponder.java
new file mode 100644
index 0000000..6f80115
--- /dev/null
+++ b/src/com/isode/stroke/whiteboard/WhiteboardResponder.java
@@ -0,0 +1,52 @@
+/* Copyright (c) 2016, Isode Limited, London, England.
+ * All rights reserved.
+ *
+ * Acquisition and use of this software and related materials for any
+ * purpose requires a written license agreement from Isode Limited,
+ * or a written license from an organisation licensed by Isode Limited
+ * to grant such a license.
+ *
+ */
+package com.isode.stroke.whiteboard;
+
+import com.isode.stroke.elements.WhiteboardPayload;
+import com.isode.stroke.jid.JID;
+import com.isode.stroke.queries.IQRouter;
+import com.isode.stroke.queries.SetResponder;
+import com.isode.stroke.elements.ErrorPayload;
+
+public class WhiteboardResponder extends SetResponder<WhiteboardPayload> {
+
+ private final WhiteboardSessionManager sessionManager_;
+ private final IQRouter router_;
+
+ public WhiteboardResponder(WhiteboardSessionManager sessionManager,IQRouter router) {
+ super(new WhiteboardPayload(),router);
+ sessionManager_ = sessionManager;
+ router_ = router;
+ }
+
+ @Override
+ protected boolean handleSetRequest(JID from, JID to, String id,
+ WhiteboardPayload payload) {
+ if (payload.getType() == WhiteboardPayload.Type.SessionRequest) {
+ if (sessionManager_.getSession(from) != null) {
+ sendError(from, id, ErrorPayload.Condition.Conflict, ErrorPayload.Type.Cancel);
+ }
+ else {
+ sendResponse(from, id, null);
+ IncomingWhiteboardSession session = new IncomingWhiteboardSession(from, router_);
+ sessionManager_.handleIncomingSession(session);
+ }
+ }
+ else {
+ sendResponse(from, id, null);
+ WhiteboardSession session = sessionManager_.getSession(from);
+ if (session != null) {
+ session.handleIncomingAction(payload);
+ }
+ }
+ return true;
+ }
+
+}