index 7ca4902121fc08fe3d8cd3ac0710d3dd8856a09c..a5f2e25887be6a70648a2f366fedfdfaf1faca97 100644 (file)
getClient().disconnect();
}
-void
-SessionManager::processXmppEvent(const Pedro::XmppEvent &event)
-{
- int type = event.getType();
-
- switch (type) {
- case Pedro::XmppEvent::EVENT_STATUS:
- {
- break;
- }
- case Pedro::XmppEvent::EVENT_ERROR:
- {
- break;
- }
- case Pedro::XmppEvent::EVENT_CONNECTED:
- {
- break;
- }
- case Pedro::XmppEvent::EVENT_DISCONNECTED:
- {
- break;
- }
- case Pedro::XmppEvent::EVENT_MUC_MESSAGE:
- case Pedro::XmppEvent::EVENT_MESSAGE:
- {
- g_warning("## SM message:%s\n", event.getFrom().c_str());
- Pedro::Element *root = event.getDOM();
-
- if (root && root->getTagAttribute("wb", "xmlns") == Vars::INKBOARD_XMLNS)
- processWhiteboardEvent(event);
-
- break;
- }
- case Pedro::XmppEvent::EVENT_PRESENCE:
- {
- break;
- }
- case Pedro::XmppEvent::EVENT_MUC_JOIN:
- {
- break;
- }
- case Pedro::XmppEvent::EVENT_MUC_LEAVE:
- {
- break;
- }
- case Pedro::XmppEvent::EVENT_MUC_PRESENCE:
- {
- break;
- }
- default:
- {
- break;
- }
- }
-}
-
/**
* Initiates a shared session with a user or conference room.
*
@@ -177,6 +121,7 @@ SessionManager::initialiseSession(Glib::ustring const& to, State::SessionType ty
inkdoc->setSessionId(sessionId);
+ makeInkboardDesktop(doc);
addSession(WhiteboardRecord(sessionId, inkdoc));
inkdoc->startSessionNegotiation();
return NULL;
}
+void
+SessionManager::processXmppEvent(const Pedro::XmppEvent &event)
+{
+ int type = event.getType();
+
+ switch (type) {
+ case Pedro::XmppEvent::EVENT_STATUS:
+ {
+ break;
+ }
+ case Pedro::XmppEvent::EVENT_ERROR:
+ {
+ break;
+ }
+ case Pedro::XmppEvent::EVENT_CONNECTED:
+ {
+ break;
+ }
+ case Pedro::XmppEvent::EVENT_DISCONNECTED:
+ {
+ break;
+ }
+ case Pedro::XmppEvent::EVENT_MUC_MESSAGE:
+ case Pedro::XmppEvent::EVENT_MESSAGE:
+ {
+ Pedro::Element *root = event.getDOM();
+
+ if (root && root->getTagAttribute("wb", "xmlns") == Vars::INKBOARD_XMLNS)
+ processWhiteboardEvent(event);
+
+ break;
+ }
+ case Pedro::XmppEvent::EVENT_PRESENCE:
+ {
+ break;
+ }
+ case Pedro::XmppEvent::EVENT_MUC_JOIN:
+ {
+ break;
+ }
+ case Pedro::XmppEvent::EVENT_MUC_LEAVE:
+ {
+ break;
+ }
+ case Pedro::XmppEvent::EVENT_MUC_PRESENCE:
+ {
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+}
/**
* Handles all incoming messages from pedro within a valid namespace, CONNECT_REQUEST messages
}
Pedro::DOMString session = root->getTagAttribute("wb", "session");
+ Pedro::DOMString type = root->getTagAttribute("message", "type");
Pedro::DOMString domwrapper = root->getFirstChild()->getFirstChild()->getFirstChild()->getName();
if (session.empty()) {
return;
}
- if(root->exists(Message::CONNECT_REQUEST))
+ if(root->exists(Message::CONNECT_REQUEST) && type == State::WHITEBOARD_PEER)
+ {
handleIncomingInvitation(Invitation(event.getFrom(),session));
- else
+ }else
{
- Message::Wrapper wrapper = domwrapper.c_str();
+ Message::Wrapper wrapper = static_cast< Message::Wrapper >(domwrapper);
InkboardDocument* doc = getInkboardSession(session);
- doc->processInkboardEvent(wrapper, event.getData());
+
+ if(doc != NULL)
+ doc->recieve(wrapper, root->getFirstChild());
}
}
switch (reply) {
case Dialog::ACCEPT_INVITATION:{
- inkdoc->sendProtocol(from, Message::PROTOCOL,Message::ACCEPT_INVITATION);
+ inkdoc->send(from, Message::PROTOCOL,Message::ACCEPT_INVITATION);
makeInkboardDesktop(doc);
break; }
case Dialog::DECLINE_INVITATION: default: {
- inkdoc->sendProtocol(from, Message::PROTOCOL,Message::DECLINE_INVITATION);
+ inkdoc->send(from, Message::PROTOCOL,Message::DECLINE_INVITATION);
terminateSession(sessionId);
break; }
}
sp_create_window(dtw, TRUE);
dt = static_cast<SPDesktop*>(dtw->view);
sp_namedview_window_from_document(dt);
+ sp_namedview_update_layers_from_document(dt);
}
return dt;