Kaydet (Commit) 58499ea7 authored tarafından Will Thompson's avatar Will Thompson Kaydeden (comit) Matúš Kukan

Include packet in packetReceived signals.

(And also signalify receiving files.)
üst c4bf2c3f
...@@ -61,28 +61,22 @@ void ScCollaboration::receivedFile( rtl::OUString &rFileURL ) ...@@ -61,28 +61,22 @@ void ScCollaboration::receivedFile( rtl::OUString &rFileURL )
maLinkFile.Call( &rFileURL ); maLinkFile.Call( &rFileURL );
} }
extern "C" { void ScCollaboration::packetReceivedCallback( TeleConference *pConference, TelePacket &rPacket )
void file_recv_cb( rtl::OUString &localUri, void* pUserData )
{
ScCollaboration *pCollab = reinterpret_cast<ScCollaboration *>( pUserData );
pCollab->receivedFile( localUri );
}
}
void ScCollaboration::packetReceivedCallback( TeleConference *pConference )
{ {
rtl::OString aString( rPacket.getData(), rPacket.getSize());
/* Relay the signal out… */ /* Relay the signal out… */
sigPacketReceived( pConference); sigPacketReceived( pConference, aString);
} }
bool ScCollaboration::initManager() bool ScCollaboration::initManager()
{ {
mpManager = TeleManager::get(); mpManager = TeleManager::get();
mpManager->sigPacketReceived.connect( mpManager->sigPacketReceived.connect(
boost::bind( &ScCollaboration::packetReceivedCallback, this, _1 )); boost::bind( &ScCollaboration::packetReceivedCallback, this, _1, _2 ));
mpManager->connect(); mpManager->connect();
mpManager->prepareAccountManager(); mpManager->prepareAccountManager();
mpManager->setFileReceivedCallback( file_recv_cb, (void *)this ); mpManager->sigFileReceived.connect(
boost::bind( &ScCollaboration::receivedFile, this, _1 ));
return true; return true;
} }
...@@ -119,14 +113,6 @@ bool ScCollaboration::sendPacket( const rtl::OString& rString ) ...@@ -119,14 +113,6 @@ bool ScCollaboration::sendPacket( const rtl::OString& rString )
} }
bool ScCollaboration::recvPacket( rtl::OString& rString, TeleConference* pConference )
{
TelePacket aPacket;
bool bOk = (pConference ? pConference->popPacket( aPacket) : mpManager->popPacket( aPacket));
rString = rtl::OString( aPacket.getData(), aPacket.getSize());
return bOk;
}
extern "C" { extern "C" {
static void file_sent_cb( bool aSuccess, void* /* pUserData */ ) static void file_sent_cb( bool aSuccess, void* /* pUserData */ )
{ {
......
...@@ -261,7 +261,7 @@ public: ...@@ -261,7 +261,7 @@ public:
mpCollab = pCollab; mpCollab = pCollab;
} }
void packetReceived( TeleConference* pConference); void packetReceived( TeleConference* pConference, const rtl::OString & );
DECL_LINK( ReceiveFileCallback, rtl::OUString * ); DECL_LINK( ReceiveFileCallback, rtl::OUString * );
void RecvMessage( const rtl::OString &rString ) void RecvMessage( const rtl::OString &rString )
...@@ -301,11 +301,9 @@ public: ...@@ -301,11 +301,9 @@ public:
} }
}; };
void ScDocFuncRecv::packetReceived( TeleConference* pConference) void ScDocFuncRecv::packetReceived( TeleConference* pConference, const rtl::OString &rStr)
{ {
rtl::OString aStr; RecvMessage( rStr);
if (mpCollab && mpCollab->recvPacket( aStr, pConference))
RecvMessage( aStr);
} }
IMPL_LINK( ScDocFuncRecv, ReceiveFileCallback, rtl::OUString *, pStr ) IMPL_LINK( ScDocFuncRecv, ReceiveFileCallback, rtl::OUString *, pStr )
...@@ -557,7 +555,7 @@ SC_DLLPRIVATE ScDocFunc *ScDocShell::CreateDocFunc() ...@@ -557,7 +555,7 @@ SC_DLLPRIVATE ScDocFunc *ScDocShell::CreateDocFunc()
ScCollaboration* pCollab = new ScCollaboration( ScCollaboration* pCollab = new ScCollaboration(
LINK( pReceiver, ScDocFuncRecv, ReceiveFileCallback) ); LINK( pReceiver, ScDocFuncRecv, ReceiveFileCallback) );
pCollab->sigPacketReceived.connect( pCollab->sigPacketReceived.connect(
boost::bind( &ScDocFuncRecv::packetReceived, pReceiver, _1 )); boost::bind( &ScDocFuncRecv::packetReceived, pReceiver, _1, _2 ));
bOk = bOk && pCollab->initManager(); bOk = bOk && pCollab->initManager();
if (!strcmp( pEnv, "master")) if (!strcmp( pEnv, "master"))
{ {
......
...@@ -37,6 +37,7 @@ typedef struct _TpContact TpContact; ...@@ -37,6 +37,7 @@ typedef struct _TpContact TpContact;
typedef struct _TpAccount TpAccount; typedef struct _TpAccount TpAccount;
class TeleManager; class TeleManager;
class TeleConference; class TeleConference;
class TelePacket;
namespace rtl { class OString; class OUString; } namespace rtl { class OString; class OUString; }
class ScCollaboration class ScCollaboration
...@@ -56,14 +57,14 @@ public: ...@@ -56,14 +57,14 @@ public:
bool sendPacket( const rtl::OString& rString ); bool sendPacket( const rtl::OString& rString );
/** Emitted when a packet is received /** Emitted when a packet is received
*/ */
boost::signals2::signal<void (TeleConference*)> sigPacketReceived; boost::signals2::signal<void (TeleConference*, rtl::OString& rString )> sigPacketReceived;
bool recvPacket( rtl::OString& rString, TeleConference* pConference ); bool recvPacket( rtl::OString& rString, TeleConference* pConference );
void sendFile( rtl::OUString &rFileURL ); void sendFile( rtl::OUString &rFileURL );
void receivedFile( rtl::OUString &rFileURL ); void receivedFile( rtl::OUString &rFileURL );
/* Internal callbacks */ /* Internal callbacks */
void packetReceivedCallback( TeleConference *pConference ); void packetReceivedCallback( TeleConference *pConference, TelePacket &rPacket );
private: private:
......
...@@ -142,9 +142,9 @@ public: ...@@ -142,9 +142,9 @@ public:
/** Emitted when a packet is received, with a TeleConference* /** Emitted when a packet is received, with a TeleConference*
pointing to the instance that received the packet. pointing to the instance that received the packet.
*/ */
boost::signals2::signal<void (TeleConference*)> sigPacketReceived; boost::signals2::signal<void (TeleConference*, TelePacket&)> sigPacketReceived;
/* FIXME: listen to a signal on the conference rather than having it call us */ /* FIXME: listen to a signal on the conference rather than having it call us */
void callbackOnRecieved( TeleConference* pConference ) const; void callbackOnRecieved( TeleConference* pConference, TelePacket& rPacket ) const;
/** Pop a received data packet. /** Pop a received data packet.
...@@ -158,8 +158,7 @@ public: ...@@ -158,8 +158,7 @@ public:
void sendFile( rtl::OUString &localUri, TeleConference::FileSentCallback pCallback, void* pUserData); void sendFile( rtl::OUString &localUri, TeleConference::FileSentCallback pCallback, void* pUserData);
typedef void (*FileReceivedCallback)( rtl::OUString &localUri, void* pUserData ); boost::signals2::signal<void ( rtl::OUString &localUri )> sigFileReceived;
void setFileReceivedCallback( FileReceivedCallback callback, void* pUserData );
/// Only for use with MainLoopFlusher /// Only for use with MainLoopFlusher
GMainLoop* getMainLoop() const; GMainLoop* getMainLoop() const;
...@@ -237,9 +236,6 @@ private: ...@@ -237,9 +236,6 @@ private:
static sal_uInt32 nAnotherRefCount; static sal_uInt32 nAnotherRefCount;
TUBES_DLLPRIVATE static ::osl::Mutex& GetAnotherMutex(); TUBES_DLLPRIVATE static ::osl::Mutex& GetAnotherMutex();
FileReceivedCallback mpFileReceivedCallback;
void *mpFileReceivedCallbackData;
friend class TeleManagerImpl; // access to mutex friend class TeleManagerImpl; // access to mutex
TUBES_DLLPRIVATE static ::osl::Mutex& GetMutex(); TUBES_DLLPRIVATE static ::osl::Mutex& GetMutex();
......
...@@ -66,13 +66,13 @@ public: ...@@ -66,13 +66,13 @@ public:
void testDestroyAccepterContact(); void testDestroyAccepterContact();
void testFailAlways(); void testFailAlways();
void ReceiverCallback( TeleConference* pConference ); void ReceiverCallback( TeleConference* pConference, const TelePacket &rPacket );
GMainLoop* mpMainLoop; GMainLoop* mpMainLoop;
void spinMainLoop(); void spinMainLoop();
static void FileSent( bool success, void *user_data); static void FileSent( bool success, void *user_data);
static void FileReceived( rtl::OUString& aUri, void *user_data); void FileReceived( rtl::OUString& aUri );
// Order is significant. // Order is significant.
CPPUNIT_TEST_SUITE( TestTeleTubes ); CPPUNIT_TEST_SUITE( TestTeleTubes );
...@@ -233,7 +233,7 @@ void TestTeleTubes::testPrepareAccountManager2() ...@@ -233,7 +233,7 @@ void TestTeleTubes::testPrepareAccountManager2()
CPPUNIT_ASSERT( eStatus == TeleManager::AMS_PREPARED); CPPUNIT_ASSERT( eStatus == TeleManager::AMS_PREPARED);
} }
void TestTeleTubes::ReceiverCallback( TeleConference* pConference ) void TestTeleTubes::ReceiverCallback( TeleConference* pConference, const TelePacket & )
{ {
SAL_INFO( "tubes", "TestTeleTubes::ReceiverCallback: " << pConference); SAL_INFO( "tubes", "TestTeleTubes::ReceiverCallback: " << pConference);
if (pConference) if (pConference)
...@@ -275,7 +275,7 @@ void TestTeleTubes::testSendPacket() ...@@ -275,7 +275,7 @@ void TestTeleTubes::testSendPacket()
{ {
TelePacket aPacket( "", RTL_CONSTASCII_STRINGPARAM( "from 1 to 2")); TelePacket aPacket( "", RTL_CONSTASCII_STRINGPARAM( "from 1 to 2"));
mpManager1->sigPacketReceived.connect( boost::bind( &TestTeleTubes::ReceiverCallback, this, _1 ) ); mpManager1->sigPacketReceived.connect( boost::bind( &TestTeleTubes::ReceiverCallback, this, _1, _2 ) );
nSentPackets = mpManager1->sendPacket( aPacket); nSentPackets = mpManager1->sendPacket( aPacket);
CPPUNIT_ASSERT( nSentPackets == 2); // expect out+in conference, as own instance accepted self CPPUNIT_ASSERT( nSentPackets == 2); // expect out+in conference, as own instance accepted self
CPPUNIT_ASSERT( mnPacketReceivedEmissions == 2 ); CPPUNIT_ASSERT( mnPacketReceivedEmissions == 2 );
...@@ -318,12 +318,10 @@ void TestTeleTubes::FileSent( bool success, void *user_data) ...@@ -318,12 +318,10 @@ void TestTeleTubes::FileSent( bool success, void *user_data)
g_main_loop_quit (self->mpMainLoop); g_main_loop_quit (self->mpMainLoop);
} }
void TestTeleTubes::FileReceived( rtl::OUString& aUri, void *user_data) void TestTeleTubes::FileReceived( rtl::OUString& aUri )
{ {
TestTeleTubes *self = reinterpret_cast<TestTeleTubes *>(user_data); maFileReceivedUri = aUri;
g_main_loop_quit (mpMainLoop);
self->maFileReceivedUri = aUri;
g_main_loop_quit (self->mpMainLoop);
} }
void TestTeleTubes::testSendFile() void TestTeleTubes::testSendFile()
...@@ -333,7 +331,8 @@ void TestTeleTubes::testSendFile() ...@@ -333,7 +331,8 @@ void TestTeleTubes::testSendFile()
/* This has to run after testContactList has run successfully. */ /* This has to run after testContactList has run successfully. */
CPPUNIT_ASSERT( mpAccepterContact != 0); CPPUNIT_ASSERT( mpAccepterContact != 0);
mpManager1->setFileReceivedCallback(&TestTeleTubes::FileReceived, this); mpManager1->sigFileReceived.connect(
boost::bind(&TestTeleTubes::FileReceived, this, _1));
mpManager1->sendFile( maTestConfigIniURL, mpManager1->sendFile( maTestConfigIniURL,
&TestTeleTubes::FileSent, this); &TestTeleTubes::FileSent, this);
......
...@@ -447,7 +447,7 @@ void TeleConference::queue( TelePacket &rPacket ) ...@@ -447,7 +447,7 @@ void TeleConference::queue( TelePacket &rPacket )
maPacketQueue.push( rPacket); maPacketQueue.push( rPacket);
getManager()->callbackOnRecieved( this); getManager()->callbackOnRecieved( this, rPacket);
} }
......
...@@ -188,7 +188,7 @@ void TeleManager::TransferDone( EmpathyFTHandler *handler, TpFileTransferChannel ...@@ -188,7 +188,7 @@ void TeleManager::TransferDone( EmpathyFTHandler *handler, TpFileTransferChannel
rtl::OUString aUri( uri, strlen( uri), RTL_TEXTENCODING_UTF8); rtl::OUString aUri( uri, strlen( uri), RTL_TEXTENCODING_UTF8);
g_free( uri); g_free( uri);
pManager->mpFileReceivedCallback( aUri, pManager->mpFileReceivedCallbackData); pManager->sigFileReceived( aUri );
g_object_unref( handler); g_object_unref( handler);
} }
...@@ -742,11 +742,11 @@ sal_uInt32 TeleManager::sendPacket( const TelePacket& rPacket ) const ...@@ -742,11 +742,11 @@ sal_uInt32 TeleManager::sendPacket( const TelePacket& rPacket ) const
} }
void TeleManager::callbackOnRecieved( TeleConference* pConference ) const void TeleManager::callbackOnRecieved( TeleConference* pConference, TelePacket& rPacket) const
{ {
INFO_LOGGER( "TeleManager::callbackOnRecieved"); INFO_LOGGER( "TeleManager::callbackOnRecieved");
sigPacketReceived( pConference ); sigPacketReceived( pConference, rPacket );
} }
...@@ -774,12 +774,6 @@ void TeleManager::sendFile( rtl::OUString &localUri, TeleConference::FileSentCal ...@@ -774,12 +774,6 @@ void TeleManager::sendFile( rtl::OUString &localUri, TeleConference::FileSentCal
} }
} }
void TeleManager::setFileReceivedCallback( TeleManager::FileReceivedCallback callback, void* pUserData )
{
mpFileReceivedCallback = callback;
mpFileReceivedCallbackData = pUserData;
}
void TeleManager::unregisterConference( TeleConferencePtr pConference ) void TeleManager::unregisterConference( TeleConferencePtr pConference )
{ {
INFO_LOGGER( "TeleManager::unregisterConference"); INFO_LOGGER( "TeleManager::unregisterConference");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment