diff -r d0f3a028347a -r 59927b2d3b75 libtelepathy/tsrc/src/telepathygabblesendmessage.cpp --- a/libtelepathy/tsrc/src/telepathygabblesendmessage.cpp Tue Feb 02 01:10:06 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,350 +0,0 @@ -/* -* Copyright (c) 2008 - 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Used for Send/Receive Test Cases -* -*/ - - - - -//Include files -#include -#include -#include -#include -#include -#include "telepathygabbleutils.h" -#include "telepathygabblesendmessage.h" -#include "telepathygabbletestdata.h" - - - - -//----------------------------------------------------------------------------- -// function_name : CTelepathyGabbleSendRecvMessage -// description : constructor -//----------------------------------------------------------------------------- - -CTelepathyGabbleSendRecvMessage::CTelepathyGabbleSendRecvMessage() -{ -} - -//----------------------------------------------------------------------------- -// function_name : ConstructL -// description : constructor -//----------------------------------------------------------------------------- -void CTelepathyGabbleSendRecvMessage::ConstructL() -{ - -} - -//----------------------------------------------------------------------------- -// function_name : NewL -// description : NewL -//----------------------------------------------------------------------------- -CTelepathyGabbleSendRecvMessage* CTelepathyGabbleSendRecvMessage::NewL() - { - CTelepathyGabbleSendRecvMessage* self = new(ELeave) CTelepathyGabbleSendRecvMessage; - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -//----------------------------------------------------------------------------- -// function_name : ~CTelepathyGabbleSendRecvMessage -// description : Destructor -//----------------------------------------------------------------------------- -CTelepathyGabbleSendRecvMessage::~CTelepathyGabbleSendRecvMessage() - { - } - - -//----------------------------------------------------------------------------- -// function_name : SendMessage -// description : To send a message -//----------------------------------------------------------------------------- -TInt CTelepathyGabbleSendRecvMessage::SendMessage( const char *contact_id, - const char *message, - CTestData* aTestData ) -{ - TpChan* text_chan = NULL; //for send msg - - TInt contact_handle; - GArray *handles = NULL; - GError* error = NULL; - DBusGProxy *text_iface = NULL; - - gpointer userdata = NULL; - - - //get the contact handle. - contact_handle = CTelepathyGabbleUtils::get_handle_from_contact(contact_id,aTestData); - - if ( contact_handle == KErrNotFound ) - { - return CTestData::EMessageSendErr; - } - - text_chan = (TpChan*)g_hash_table_find( - aTestData->GetTextChannelsHT(), - (GHRFunc) text_channels_find_func, - &contact_handle ); - - //text_chan for the particular contact does not exist. - //New text_chan must be created. - if (text_chan == NULL) - { - text_chan = tp_conn_new_channel( - (aTestData->GetDBusConnection()), - (aTestData->GetTpConn()),CONNMGR_BUS,TP_IFACE_CHANNEL_TYPE_TEXT, - TP_CONN_HANDLE_TYPE_CONTACT,contact_handle, TRUE ); - - //Insert the new text_chan to the hash table. - - g_hash_table_insert( - (aTestData->GetTextChannelsHT()), - g_strdup(dbus_g_proxy_get_path(DBUS_G_PROXY(text_chan))),text_chan); - - } - - text_iface = tp_chan_get_interface(text_chan,TELEPATHY_CHAN_IFACE_TEXT_QUARK); - - - if( aTestData->GetTestType() == CTestData::ESendErr || - aTestData->GetTestType() == CTestData::EReceive ) - { - //Register the callback to get the error - //when the recipeint_id is invalid. - dbus_g_proxy_connect_signal(text_iface, "SendError", - G_CALLBACK(SendError_cb), - aTestData, NULL); - } - - if( aTestData->GetTestType() == CTestData::EReceive ) - { - //Register for the receive message callback here. - dbus_g_proxy_connect_signal(text_iface, "Received", - (G_CALLBACK(receivedMessage_cb)), - aTestData, NULL); - } - - - - //This callback tells whether the message is sent to the server or not. - - tp_chan_type_text_send_async( text_iface, TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, - message,sendmessage_cb, aTestData); - - - // user_data = this i.e. the class pointer - - //Run the mainloop - g_main_loop_run (aTestData->GetMainLoop()); - - - //return the Message_sent that was updated in the callback sendmessage_cb - return aTestData->GetSendRecvMsgState(); -} - -//----------------------------------------------------------------------------- -// function_name : ReceiveMessage -// description : receive message -//----------------------------------------------------------------------------- -TInt CTelepathyGabbleSendRecvMessage::ReceiveMessage( const char *contact_id, - const char *message, - CTestData* aTestData ) -{ - TpChan* text_chan = NULL; //for send msg - DBusGProxy *text_iface; - - guint contact_handle; - - - - //send msg 1 - //For Automation, Do the send message to yourself - //own contact_id received from the cfg file. - TInt msg_status = SendMessage(contact_id,message,aTestData); - if( msg_status == CTestData::EMessageNotSent ) - { - aTestData->GetStifLogger()->Log( _L("ReceiveMessage: Msg is not sent successfully \n") ); - - if( aTestData->GetTestType() == CTestData::ERecvBlank ) - g_main_loop_quit(aTestData->GetMainLoop()); - - return CTestData::EMessageNotSent; - } - - - /*contact_handle = CTelepathyGabbleUtils::get_handle_from_contact(contact_id,aTestData); - - text_chan = (TpChan*)g_hash_table_find( - (aTestData->GetTextChannelsHT()), - (GHRFunc) text_channels_find_func, - &contact_handle ); - text_iface = tp_chan_get_interface(text_chan , - TELEPATHY_CHAN_IFACE_TEXT_QUARK); - - //Register for the receive message callback here. - dbus_g_proxy_connect_signal(text_iface, "Received", - (G_CALLBACK(receivedMessage_cb)), - aTestData, NULL); - - //send msg 2 - //Do the send message to yourself - - msg_status == CTestData::EMessageNotSent ) - { - return CTestData::EMessageNotSent; - }*/ - aTestData->GetStifLogger()->Log( _L("after : register receivedMessage_cb \n") ); - if (aTestData->GetTestType() == CTestData::EReceive && - aTestData->GetSendRecvMsgState() != CTestData::EMessageSendErr ) - { - //there are two callbacks now. - //receivedMessage_cb and sendmessage_cb. - - //Run the mainloop again as it was quit in the callback sendmessage_cb. - //the message_state is not yet MESSAGE_RECEIVED. - //we need to start the main loop again to get the receivedmessage_cb. - aTestData->GetStifLogger()->Log( _L("start mainloop if state not as EMESSAGE_RCVD \n") ); - g_main_loop_run (aTestData->GetMainLoop()); - - } - return aTestData->GetSendRecvMsgState(); -} - -//----------------------------------------------------------------------------- -// function_name : sendmessage_cb -// description : Callback for Send Message -//----------------------------------------------------------------------------- -void CTelepathyGabbleSendRecvMessage::sendmessage_cb( DBusGProxy* /*proxy*/, GError* /*error*/, gpointer userdata ) -{ - CTestData* testdata = static_cast (userdata); - - testdata->GetStifLogger()->Log( _L("inside sendmessage_cb \n") ); - - //This is the test case for sending message to invalid userid. - if ( testdata->GetTestType() != CTestData::ESendErr ) - - { - - testdata->SetSendRecvMsgState(CTestData::EMessageSent); - testdata->GetStifLogger()->Log( _L("sendmessage_cb::msg sent successfully \n") ); - - //Quit the main loop , just for now - g_main_loop_quit(testdata->GetMainLoop()); - } - else if( testdata->GetTestType() == CTestData::ERecvBlank ) - { - - //Quit the main loop , just for now - testdata->GetStifLogger()->Log( _L("sendmessage_cb::test case is for blank msg sending \n") ); - g_main_loop_quit(testdata->GetMainLoop()); - } - - - //otherwise send message error test case, dont quit. - -} - -//----------------------------------------------------------------------------- -// function_name : receivedMessage_cb -// description : Callback for receive message -//----------------------------------------------------------------------------- -void CTelepathyGabbleSendRecvMessage::receivedMessage_cb ( DBusGProxy* /*proxy*/, - guint /* message_id */, - guint /* timestamp */, - guint /* from_handle */, - guint /* message_type */, - guint /* message_flags */, - gchar * /*message_body */, - gpointer user_data ) -{ - //GArray *message_ids; - //GArray *handles = NULL; - CTestData* testdata = static_cast (user_data); - - - /*message_ids = g_array_new (FALSE, FALSE, sizeof (guint)); - - g_array_append_val (message_ids, message_id); - - g_array_free (message_ids, TRUE); - - handles = g_array_new (FALSE, FALSE, sizeof (guint32)); - - g_array_append_val (handles, from_handle); - - g_array_free (handles, TRUE);*/ - testdata->GetStifLogger()->Log( _L("receivedMessage_cb::test case is for receive msg \n") ); - - if( testdata->GetTestType() == CTestData::EReceive ) - { - testdata->SetSendRecvMsgState(CTestData::EMessageRecvd); - - //Quit the main loop once the receive message callback is received. - g_main_loop_quit(testdata->GetMainLoop()); - - } - - - -} - -//----------------------------------------------------------------------------- -// function_name : text_channels_find_func -// description : find whether the text channel -// is existing given the hash table pointer -//----------------------------------------------------------------------------- -gboolean CTelepathyGabbleSendRecvMessage::text_channels_find_func( gchar* /*key*/, - TpChan *text_channel_ht_ptr, - guint *contact_handle) -{ - if ((text_channel_ht_ptr->handle == *contact_handle)) - { - return TRUE; - }//else - return FALSE; -} - -void CTelepathyGabbleSendRecvMessage::SendError_cb ( DBusGProxy* /*proxy*/, - guint error, - guint /*timestamp*/, - guint /*message_type*/, - gchar* /*message_body*/, - gpointer user_data ) -{ - - //Get the testdata - CTestData* testdata = static_cast (user_data); - - FILE* fp; - - fp = fopen("c:\\testlogs.txt","a"); - if(fp) - { - fprintf(fp,"error code is %u", error); - fprintf(fp,"\n"); - fclose(fp); - } - - testdata->GetStifLogger()->Log( _L("inside SendError_cb \n") ); - - - testdata->SetSendRecvMsgState(CTestData::EMessageSendErr); - //quit the main loop - g_main_loop_quit(testdata->GetMainLoop()); -} \ No newline at end of file