Untested Attenion from legacy network -> XMPP

This commit is contained in:
Jan Kaluza 2011-06-22 14:25:05 +02:00
parent fb420ef125
commit 67c1817031
5 changed files with 53 additions and 1 deletions

View file

@ -913,6 +913,14 @@ static void buddyTypingStopped(PurpleAccount *account, const char *who, gpointer
np->handleBuddyStoppedTyping(np->m_accounts[account], w);
}
static void gotAttention(PurpleAccount *account, const char *who, PurpleConversation *conv, guint type) {
std::string w = who;
size_t pos = w.find("/");
if (pos != std::string::npos)
w.erase((int) pos, w.length() - (int) pos);
np->handleAttention(np->m_accounts[account], w, "");
}
static bool initPurple(Config &cfg) {
bool ret;
@ -958,6 +966,7 @@ static bool initPurple(Config &cfg) {
purple_signal_connect(purple_conversations_get_handle(), "buddy-typing", &conversation_handle, PURPLE_CALLBACK(buddyTyping), NULL);
purple_signal_connect(purple_conversations_get_handle(), "buddy-typed", &conversation_handle, PURPLE_CALLBACK(buddyTyped), NULL);
purple_signal_connect(purple_conversations_get_handle(), "buddy-typing-stopped", &conversation_handle, PURPLE_CALLBACK(buddyTypingStopped), NULL);
purple_signal_connect(purple_conversations_get_handle(), "got-attention", &conversation_handle, PURPLE_CALLBACK(gotAttention), NULL);
purple_signal_connect(purple_connections_get_handle(), "signed-on", &blist_handle,PURPLE_CALLBACK(signed_on), NULL);
// purple_signal_connect(purple_blist_get_handle(), "buddy-removed", &blist_handle,PURPLE_CALLBACK(buddyRemoved), NULL);
// purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", &blist_handle,PURPLE_CALLBACK(buddySignedOn), NULL);

View file

@ -66,6 +66,8 @@ class NetworkPlugin {
void handleAuthorization(const std::string &user, const std::string &buddyName);
void handleAttention(const std::string &user, const std::string &buddyName, const std::string &message);
virtual void handleLoginRequest(const std::string &user, const std::string &legacyName, const std::string &password) = 0;
virtual void handleLogoutRequest(const std::string &user, const std::string &legacyName) = 0;
virtual void handleMessageSendRequest(const std::string &user, const std::string &legacyName, const std::string &message) = 0;

View file

@ -69,6 +69,7 @@ class NetworkPluginServer {
void handleVCardPayload(const std::string &payload);
void handleChatStatePayload(const std::string &payload, Swift::ChatState::ChatStateType type);
void handleAuthorizationPayload(const std::string &payload);
void handleAttentionPayload(const std::string &payload);
void handleUserCreated(User *user);
void handleRoomJoined(User *user, const std::string &room, const std::string &nickname, const std::string &password);

View file

@ -73,7 +73,20 @@ void NetworkPlugin::handleMessage(const std::string &user, const std::string &le
m.SerializeToString(&message);
WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_CONV_MESSAGE);
// std::cout << "SENDING MESSAGE\n";
send(message);
}
void NetworkPlugin::handleAttention(const std::string &user, const std::string &buddyName, const std::string &msg) {
pbnetwork::ConversationMessage m;
m.set_username(user);
m.set_buddyname(buddyName);
m.set_message(msg);
std::string message;
m.SerializeToString(&message);
WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_ATTENTION);
send(message);
}

View file

@ -400,6 +400,30 @@ void NetworkPluginServer::handleConvMessagePayload(const std::string &data, bool
conv->handleMessage(msg, payload.nickname());
}
void NetworkPluginServer::handleAttentionPayload(const std::string &data) {
pbnetwork::ConversationMessage payload;
if (payload.ParseFromString(data) == false) {
// TODO: ERROR
return;
}
User *user = m_userManager->getUser(payload.username());
if (!user)
return;
boost::shared_ptr<Swift::Message> msg(new Swift::Message());
msg->setBody(payload.message());
msg->addPayload(boost::make_shared<Swift::AttentionPayload>());
NetworkConversation *conv = (NetworkConversation *) user->getConversationManager()->getConversation(payload.buddyname());
if (!conv) {
conv = new NetworkConversation(user->getConversationManager(), payload.buddyname());
conv->onMessageToSend.connect(boost::bind(&NetworkPluginServer::handleMessageReceived, this, _1, _2));
}
conv->handleMessage(msg);
}
void NetworkPluginServer::handleDataRead(Client *c, const Swift::SafeByteArray &data) {
c->data.insert(c->data.end(), data.begin(), data.end());
while (c->data.size() != 0) {
@ -463,6 +487,9 @@ void NetworkPluginServer::handleDataRead(Client *c, const Swift::SafeByteArray &
case pbnetwork::WrapperMessage_Type_TYPE_AUTH_REQUEST:
handleAuthorizationPayload(wrapper.payload());
break;
case pbnetwork::WrapperMessage_Type_TYPE_ATTENTION:
handleAttentionPayload(wrapper.payload());
break;
default:
return;
}