Implemented the Version() method.
This commit is contained in:
parent
5e4e5d68c4
commit
a9df932fec
|
@ -16,6 +16,9 @@
|
||||||
|
|
||||||
#include <libsupport/SHA1.h>
|
#include <libsupport/SHA1.h>
|
||||||
|
|
||||||
|
#include <libgloox/chatstatefilter.h>
|
||||||
|
#include <libgloox/messageeventfilter.h>
|
||||||
|
|
||||||
#include "JabberHandler.h"
|
#include "JabberHandler.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -43,7 +46,8 @@ connect_thread(void* data)
|
||||||
JabberHandler::JabberHandler()
|
JabberHandler::JabberHandler()
|
||||||
:
|
:
|
||||||
fClient(NULL),
|
fClient(NULL),
|
||||||
fVCardManager(NULL)
|
fVCardManager(NULL),
|
||||||
|
fSession(NULL)
|
||||||
{
|
{
|
||||||
fAvatars = new BList();
|
fAvatars = new BList();
|
||||||
}
|
}
|
||||||
|
@ -51,7 +55,6 @@ JabberHandler::JabberHandler()
|
||||||
|
|
||||||
JabberHandler::~JabberHandler()
|
JabberHandler::~JabberHandler()
|
||||||
{
|
{
|
||||||
fVCardManager->cancelVCardOperations(this);
|
|
||||||
Shutdown();
|
Shutdown();
|
||||||
|
|
||||||
BString* item = NULL;
|
BString* item = NULL;
|
||||||
|
@ -126,8 +129,14 @@ JabberHandler::Process(BMessage* msg)
|
||||||
status_t
|
status_t
|
||||||
JabberHandler::Shutdown()
|
JabberHandler::Shutdown()
|
||||||
{
|
{
|
||||||
if (fClient)
|
if (fVCardManager)
|
||||||
|
fVCardManager->cancelVCardOperations(this);
|
||||||
|
|
||||||
|
if (fClient) {
|
||||||
|
fClient->disposeMessageSession(fSession);
|
||||||
fClient->disconnect();
|
fClient->disconnect();
|
||||||
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,7 +187,7 @@ JabberHandler::UpdateSettings(BMessage* msg)
|
||||||
if (fPort > 0)
|
if (fPort > 0)
|
||||||
fClient->setPort(fPort);
|
fClient->setPort(fPort);
|
||||||
fClient->registerConnectionListener(this);
|
fClient->registerConnectionListener(this);
|
||||||
fClient->registerMessageHandler(this);
|
fClient->registerMessageSessionHandler(this);
|
||||||
fClient->rosterManager()->registerRosterListener(this);
|
fClient->rosterManager()->registerRosterListener(this);
|
||||||
fClient->disco()->setVersion("Caya", VERSION);
|
fClient->disco()->setVersion("Caya", VERSION);
|
||||||
fClient->disco()->setIdentity("client", "caya");
|
fClient->disco()->setIdentity("client", "caya");
|
||||||
|
@ -214,6 +223,13 @@ JabberHandler::MessengerInterface() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint32
|
||||||
|
JabberHandler::Version() const
|
||||||
|
{
|
||||||
|
return CAYA_VERSION_1_PRE_ALPHA_1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
gloox::Client*
|
gloox::Client*
|
||||||
JabberHandler::Client() const
|
JabberHandler::Client() const
|
||||||
{
|
{
|
||||||
|
@ -797,6 +813,29 @@ JabberHandler::handleRoster(const gloox::Roster& roster)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
JabberHandler::handleMessageSession(gloox::MessageSession* session)
|
||||||
|
{
|
||||||
|
// Delete previous session
|
||||||
|
if (fSession)
|
||||||
|
fClient->disposeMessageSession(fSession);
|
||||||
|
fSession = session;
|
||||||
|
|
||||||
|
// Register message handler
|
||||||
|
fSession->registerMessageHandler(this);
|
||||||
|
|
||||||
|
// Message event filter
|
||||||
|
gloox::MessageEventFilter* messageFilter
|
||||||
|
= new gloox::MessageEventFilter(fSession);
|
||||||
|
messageFilter->registerMessageEventHandler(this);
|
||||||
|
|
||||||
|
// Chat state filter
|
||||||
|
gloox::ChatStateFilter* chatFilter
|
||||||
|
= new gloox::ChatStateFilter(fSession);
|
||||||
|
chatFilter->registerChatStateHandler(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
JabberHandler::handleMessage(const gloox::Message& m, gloox::MessageSession*)
|
JabberHandler::handleMessage(const gloox::Message& m, gloox::MessageSession*)
|
||||||
{
|
{
|
||||||
|
@ -804,16 +843,53 @@ JabberHandler::handleMessage(const gloox::Message& m, gloox::MessageSession*)
|
||||||
if (m.subtype() != gloox::Message::Chat)
|
if (m.subtype() != gloox::Message::Chat)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (m.body() == "") {
|
// We need a body
|
||||||
// TODO: Started and stopped typing
|
if (m.body() == "")
|
||||||
} else {
|
return;
|
||||||
|
|
||||||
|
// Notify that a chat message was received
|
||||||
BMessage msg(IM_MESSAGE);
|
BMessage msg(IM_MESSAGE);
|
||||||
msg.AddInt32("im_what", IM_MESSAGE_RECEIVED);
|
|
||||||
msg.AddString("id", m.from().bare().c_str());
|
msg.AddString("id", m.from().bare().c_str());
|
||||||
|
msg.AddInt32("im_what", IM_MESSAGE_RECEIVED);
|
||||||
|
if (m.subject() != "")
|
||||||
msg.AddString("subject", m.subject().c_str());
|
msg.AddString("subject", m.subject().c_str());
|
||||||
msg.AddString("body", m.body().c_str());
|
msg.AddString("body", m.body().c_str());
|
||||||
_SendMessage(&msg);
|
_SendMessage(&msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
JabberHandler::handleMessageEvent(const gloox::JID& from, gloox::MessageEventType event)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
JabberHandler::handleChatState(const gloox::JID& from, gloox::ChatStateType state)
|
||||||
|
{
|
||||||
|
printf("------ %d\n", state);
|
||||||
|
// We're interested only in some states
|
||||||
|
if (state == gloox::ChatStateActive || state == gloox::ChatStateInvalid)
|
||||||
|
return;
|
||||||
|
|
||||||
|
BMessage msg(IM_MESSAGE);
|
||||||
|
msg.AddString("id", from.bare().c_str());
|
||||||
|
|
||||||
|
switch (state) {
|
||||||
|
case gloox::ChatStateComposing:
|
||||||
|
msg.AddInt32("im_what", IM_CONTACT_STARTED_TYPING);
|
||||||
|
break;
|
||||||
|
case gloox::ChatStatePaused:
|
||||||
|
msg.AddInt32("im_what", IM_CONTACT_STOPPED_TYPING);
|
||||||
|
break;
|
||||||
|
case gloox::ChatStateGone:
|
||||||
|
// TODO
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_SendMessage(&msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include <String.h>
|
#include <String.h>
|
||||||
|
|
||||||
#include <libgloox/client.h>
|
#include <libgloox/client.h>
|
||||||
|
#include <libgloox/chatstatehandler.h>
|
||||||
#include <libgloox/connectionlistener.h>
|
#include <libgloox/connectionlistener.h>
|
||||||
#include <libgloox/connectiontcpclient.h>
|
#include <libgloox/connectiontcpclient.h>
|
||||||
#include <libgloox/discohandler.h>
|
#include <libgloox/discohandler.h>
|
||||||
|
@ -18,6 +19,9 @@
|
||||||
#include <libgloox/loghandler.h>
|
#include <libgloox/loghandler.h>
|
||||||
#include <libgloox/logsink.h>
|
#include <libgloox/logsink.h>
|
||||||
#include <libgloox/messagehandler.h>
|
#include <libgloox/messagehandler.h>
|
||||||
|
#include <libgloox/messagesession.h>
|
||||||
|
#include <libgloox/messagesessionhandler.h>
|
||||||
|
#include <libgloox/messageeventhandler.h>
|
||||||
#include <libgloox/message.h>
|
#include <libgloox/message.h>
|
||||||
#include <libgloox/presence.h>
|
#include <libgloox/presence.h>
|
||||||
#include <libgloox/vcardhandler.h>
|
#include <libgloox/vcardhandler.h>
|
||||||
|
@ -29,7 +33,9 @@
|
||||||
class BList;
|
class BList;
|
||||||
|
|
||||||
class JabberHandler : public CayaProtocol, gloox::RosterListener, gloox::ConnectionListener,
|
class JabberHandler : public CayaProtocol, gloox::RosterListener, gloox::ConnectionListener,
|
||||||
gloox::LogHandler, gloox::MessageHandler, gloox::VCardHandler {
|
gloox::LogHandler, gloox::MessageSessionHandler,
|
||||||
|
gloox::MessageHandler, gloox::MessageEventHandler,
|
||||||
|
gloox::ChatStateHandler, gloox::VCardHandler {
|
||||||
public:
|
public:
|
||||||
JabberHandler();
|
JabberHandler();
|
||||||
virtual ~JabberHandler();
|
virtual ~JabberHandler();
|
||||||
|
@ -51,6 +57,8 @@ public:
|
||||||
virtual CayaProtocolMessengerInterface*
|
virtual CayaProtocolMessengerInterface*
|
||||||
MessengerInterface() const;
|
MessengerInterface() const;
|
||||||
|
|
||||||
|
virtual uint32 Version() const;
|
||||||
|
|
||||||
// Functions for gloox
|
// Functions for gloox
|
||||||
gloox::Client* Client() const;
|
gloox::Client* Client() const;
|
||||||
void HandleError(gloox::ConnectionError& e);
|
void HandleError(gloox::ConnectionError& e);
|
||||||
|
@ -74,6 +82,7 @@ private:
|
||||||
gloox::ConnectionTCPClient*
|
gloox::ConnectionTCPClient*
|
||||||
fConnection;
|
fConnection;
|
||||||
gloox::VCardManager* fVCardManager;
|
gloox::VCardManager* fVCardManager;
|
||||||
|
gloox::MessageSession* fSession;
|
||||||
|
|
||||||
gloox::JID fJid;
|
gloox::JID fJid;
|
||||||
thread_id fRecvThread;
|
thread_id fRecvThread;
|
||||||
|
@ -103,7 +112,11 @@ private:
|
||||||
virtual bool onTLSConnect(const gloox::CertInfo&);
|
virtual bool onTLSConnect(const gloox::CertInfo&);
|
||||||
virtual void onResourceBindError(const gloox::Error*);
|
virtual void onResourceBindError(const gloox::Error*);
|
||||||
virtual void handleRoster(const gloox::Roster&);
|
virtual void handleRoster(const gloox::Roster&);
|
||||||
virtual void handleMessage(const gloox::Message&, gloox::MessageSession*);
|
virtual void handleMessageSession(gloox::MessageSession* session);
|
||||||
|
virtual void handleMessage(const gloox::Message& m, gloox::MessageSession*);
|
||||||
|
virtual void handleMessageEvent(const gloox::JID& from, gloox::MessageEventType event);
|
||||||
|
virtual void handleChatState(const gloox::JID& from, gloox::ChatStateType state);
|
||||||
|
|
||||||
virtual void handleItemAdded(const gloox::JID&);
|
virtual void handleItemAdded(const gloox::JID&);
|
||||||
virtual void handleItemSubscribed(const gloox::JID&);
|
virtual void handleItemSubscribed(const gloox::JID&);
|
||||||
virtual void handleItemUnsubscribed(const gloox::JID&);
|
virtual void handleItemUnsubscribed(const gloox::JID&);
|
||||||
|
|
Ŝarĝante…
Reference in New Issue