[OpenSIPStack] Compilation error!! (My Class cannot override some of the functions declared as virt
Brought to you by:
joegenbaclor
From: Koushik j. <jay...@ya...> - 2008-08-01 07:39:27
|
Hi to all developers, I am kinda stuck in the middle of compilation issues pertaining to Opensipstack project. I am on the verge of building my own GUI for Sip Phone as a whole. so I am following the pattern of OSS phone but to my pain the basic function overriding is giving me hell lot of problems... I kinda think that the compiler is either not noticing that i have subclassed Softphoneinterface which has all the event related function as Virtuals.. or else I have done some noobie mistake!! I will post the snippet for your convenience... Sipstack.h File contents #pragma once #include "SoftPhoneInterface.h" #include "XMLParser.h" using namespace SF; class CSipStack: public SoftPhoneInterface { public: virtual void Event_PCSoundSystemInitialized(const OString & recordDevice,const OString & soundDevice); virtual void Event_SIPInitialized(const OString & eventInfo = OString::Empty()); virtual void Event_SIPInitializationError(int errorCode, const OString & errorInfo); virtual void Event_OutgoingCallRejected(int errorCode, const OString & errorInfo); virtual void Event_IncomingCallConnected(const OString & eventInfo = OString::Empty()); virtual void Event_CallDisconnected(const OString & eventInfo = OString::Empty()); virtual void Event_LoginError(int errorCode, const OString & errorInfo); virtual void Event_LoginSuccessful(const OString & eventInfo = OString::Empty()); virtual void Event_LogoutSuccessful(const OString & eventInfo = OString::Empty()); virtual void Event_OutgoingCallConnected(const SIPParser::SIPMessage & connect,const OString & eventInfo = OString::Empty()); virtual void Event_IncomingCall(const OString & eventInfo = OString::Empty()); virtual void Event_OutgoingCallRinging(const OString & eventInfo = OString::Empty()); virtual void Event_IncomingInstantMessage(const OString & senderInfo,const OString & contentType,const OString & messageBody); virtual void Event_RegEventStateOnline(const OString & user,const OString & domain); virtual void Event_RegEventStateOffLine(const OString & user,const OString & domain); virtual void Event_WritePacketLog(const OString & log); virtual void Event_ReadPacketLog(const OString & log); virtual void Event_Terminated(); virtual void Event_VolumeChanged(const unsigned speakerVolume,const unsigned micVolume); void LogMessage(const OString & log); void InitializeControls(); void UpdateConfiguration(); void SetRegistrationStatus(const OString & status); void UpdateCallHistory(); void SetCallStatus(const OString & status); void GetSipSettingsfromFile(); void OnRegistertoSipServer(); CSipStack(void); ~CSipStack(void); public: OString m_LogString; BOOL m_HasTerminated; BOOL m_IsIncomingCall; PMutex m_LogMutex; PMutex m_RegStatusMutex; PMutex m_CallStatusMutex; CString struserId; CString straccountId; CString strpassword; CString strregistrar; CString stroutboundProxy; OStringStream straccountAddress; CString strstunServer; CString strexpires; CString strmicrophone; CString strspeaker; CString strlbrCodec; CString strhbrCodec; CString strUserID; CString strAccID; CString strAccPassword; CString strRegistrarIP; CString strOutProxyIP; CString strSTUNSerIP; CString strExpDuration; BOOL bSendReg; BOOL bAutoLogin; BOOL bHashReg; BOOL bUseRFC2833; BOOL bUseInfoMethod; CXMLParser XMLparserObj; }; Sipstack.cpp contents: #include "StdAfx.h" #include "SipStack.h" #include "OpenSipStack.h" CSipStack::CSipStack(void) { } CSipStack::~CSipStack(void) { } /// pure virtuals void CSipStack::Event_PCSoundSystemInitialized( const OString & recordDevice, const OString & soundDevice ) { } void CSipStack::Event_SIPInitialized( const OString & eventInfo ) { } void CSipStack::Event_SIPInitializationError( int errorCode, const OString & errorInfo ) { } void CSipStack::Event_OutgoingCallRejected( int errorCode, const OString & errorInfo ) { SetCallStatus( errorInfo ); } void CSipStack::Event_IncomingCallConnected( const OString & eventInfo ) { //SetCallStatus( "Connected" ); // UpdateCallHistory(); } void CSipStack::Event_CallDisconnected( const OString & eventInfo ) { //SetCallStatus( "Disconnected" ); // UpdateCallHistory(); //m_IsIncomingCall = FALSE; } void CSipStack::Event_LoginError( int errorCode, const OString & errorInfo ) { //SetRegistrationStatus( "Registration Error" ); } void CSipStack::Event_LoginSuccessful( const OString & eventInfo ) { //SetRegistrationStatus( "Online" ); } void CSipStack::Event_LogoutSuccessful( const OString & eventInfo ) { // SetRegistrationStatus( "Offline" ); } void CSipStack::Event_OutgoingCallConnected( const SIPParser::SIPMessage & connect, const OString & eventInfo ) { //SetCallStatus( "Connected" ); //UpdateCallHistory(); } void CSipStack::Event_IncomingCall( const OString & eventInfo ) { //m_IsIncomingCall = TRUE; //SetCallStatus( "eventInfo" ); } void CSipStack::Event_OutgoingCallRinging( const OString & eventInfo ) { //SetCallStatus( "Ringing" ); } void CSipStack::Event_IncomingInstantMessage( const OString & senderInfo, const OString & contentType, const OString & messageBody ) { } void CSipStack::Event_RegEventStateOnline( const OString & user, const OString & domain ) { } void CSipStack::Event_RegEventStateOffLine( const OString & user, const OString & domain ) { } void CSipStack::Event_WritePacketLog( const OString & log ) { //LogMessage( log ); } void CSipStack::Event_ReadPacketLog( const OString & log ) { // LogMessage( log ); } void CSipStack::LogMessage( const OString & log ) { // PWaitAndSignal lock( m_LogMutex ); //static int logCount = 0; //m_LogString += log; /* if(++logCount >= 100 ) { logCount = 0; m_LogString = m_LogString.Right( m_LogString.GetLength() /2 ); } m_DiagnosticLog.SetWindowText( m_LogString.c_str() ); m_DiagnosticLog.SetSel( m_LogString.GetLength() - 2, m_LogString.GetLength() - 1, FALSE ); m_DiagnosticLog.RedrawWindow();*/ } /// pure virtuals void CSipStack::Event_PCSoundSystemInitialized( const OString & recordDevice, const OString & soundDevice ) { } void CSipStack::Event_SIPInitialized( const OString & eventInfo ) { } void CSipStack::Event_SIPInitializationError( int errorCode, const OString & errorInfo ) { } void CSipStack::Event_OutgoingCallRejected( int errorCode, const OString & errorInfo ) { SetCallStatus( errorInfo ); } void CSipStack::Event_IncomingCallConnected( const OString & eventInfo ) { //SetCallStatus( "Connected" ); // UpdateCallHistory(); } void CSipStack::Event_CallDisconnected( const OString & eventInfo ) { //SetCallStatus( "Disconnected" ); // UpdateCallHistory(); //m_IsIncomingCall = FALSE; } void CSipStack::Event_LoginError( int errorCode, const OString & errorInfo ) { // SetRegistrationStatus( "Registration Error" ); } void CSipStack::Event_LoginSuccessful( const OString & eventInfo ) { //SetRegistrationStatus( "Online" ); } void CSipStack::Event_LogoutSuccessful( const OString & eventInfo ) { //SetRegistrationStatus( "Offline" ); } void CSipStack::Event_OutgoingCallConnected( const SIPParser::SIPMessage & connect, const OString & eventInfo ) { // SetCallStatus( "Connected" ); // UpdateCallHistory(); } void CSipStack::Event_IncomingCall( const OString & eventInfo ) { // m_IsIncomingCall = TRUE; // SetCallStatus( "eventInfo" ); } void CSipStack::Event_OutgoingCallRinging( const OString & eventInfo ) { //SetCallStatus( "Ringing" ); } void CSipStack::Event_IncomingInstantMessage( const OString & senderInfo, const OString & contentType, const OString & messageBody ) { } void CSipStack::Event_RegEventStateOnline( const OString & user, const OString & domain ) { } void CSipStack::Event_RegEventStateOffLine( const OString & user, const OString & domain ) { } void CSipStack::Event_WritePacketLog( const OString & log ) { //LogMessage( log ); } void CSipStack::Event_ReadPacketLog( const OString & log ) { //LogMessage( log ); } void CSipStack::LogMessage( const OString & log ) { /*PWaitAndSignal lock( m_LogMutex ); static int logCount = 0; m_LogString += log; if(++logCount >= 100 ) { logCount = 0; m_LogString = m_LogString.Right( m_LogString.GetLength() /2 ); } m_DiagnosticLog.SetWindowText( m_LogString.c_str() ); m_DiagnosticLog.SetSel( m_LogString.GetLength() - 2, m_LogString.GetLength() - 1, FALSE ); m_DiagnosticLog.RedrawWindow();*/ } void CSipStack::SetRegistrationStatus( const OString & status ) { /*PWaitAndSignal lock( m_RegStatusMutex ); OStringStream strm; strm << "Status: " << status; m_RegistrationStatus.SetWindowText( strm.str().c_str() );*/ } void CSipStack::SetCallStatus( const OString & status ) { /*PWaitAndSignal lock( m_CallStatusMutex ); OStringStream strm; strm << "Status: " << status; m_CallStatus.SetWindowText( strm.str().c_str() );*/ } void CSipStack::Event_Terminated() { // m_HasTerminated = TRUE; // EndDialog(0); } void CSipStack::Event_VolumeChanged( const unsigned speakerVolume, const unsigned micVolume ) { // TODO: Add implementation code here later } Errors: SipStack.cpp i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(169) : error C2084: function 'void CSipStack::Event_PCSoundSystemInitialized(const Tools::OString &,const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(12) : see previous definition of 'Event_PCSoundSystemInitialized' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(176) : error C2084: function 'void CSipStack::Event_SIPInitialized(const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(14) : see previous definition of 'Event_SIPInitialized' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(183) : error C2084: function 'void CSipStack::Event_SIPInitializationError(int,const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(16) : see previous definition of 'Event_SIPInitializationError' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(190) : error C2084: function 'void CSipStack::Event_OutgoingCallRejected(int,const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(18) : see previous definition of 'Event_OutgoingCallRejected' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(197) : error C2084: function 'void CSipStack::Event_IncomingCallConnected(const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(20) : see previous definition of 'Event_IncomingCallConnected' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(205) : error C2084: function 'void CSipStack::Event_CallDisconnected(const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(22) : see previous definition of 'Event_CallDisconnected' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(215) : error C2084: function 'void CSipStack::Event_LoginError(int,const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(24) : see previous definition of 'Event_LoginError' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(222) : error C2084: function 'void CSipStack::Event_LoginSuccessful(const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(26) : see previous definition of 'Event_LoginSuccessful' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(229) : error C2084: function 'void CSipStack::Event_LogoutSuccessful(const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(28) : see previous definition of 'Event_LogoutSuccessful' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(237) : error C2084: function 'void CSipStack::Event_OutgoingCallConnected(const SIPParser::SIPMessage &,const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(30) : see previous definition of 'Event_OutgoingCallConnected' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(245) : error C2084: function 'void CSipStack::Event_IncomingCall(const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(32) : see previous definition of 'Event_IncomingCall' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(253) : error C2084: function 'void CSipStack::Event_OutgoingCallRinging(const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(34) : see previous definition of 'Event_OutgoingCallRinging' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(262) : error C2084: function 'void CSipStack::Event_IncomingInstantMessage(const Tools::OString &,const Tools::OString &,const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(36) : see previous definition of 'Event_IncomingInstantMessage' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(269) : error C2084: function 'void CSipStack::Event_RegEventStateOnline(const Tools::OString &,const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(38) : see previous definition of 'Event_RegEventStateOnline' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(276) : error C2084: function 'void CSipStack::Event_RegEventStateOffLine(const Tools::OString &,const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(40) : see previous definition of 'Event_RegEventStateOffLine' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(282) : error C2084: function 'void CSipStack::Event_WritePacketLog(const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(42) : see previous definition of 'Event_WritePacketLog' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(289) : error C2084: function 'void CSipStack::Event_ReadPacketLog(const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(44) : see previous definition of 'Event_ReadPacketLog' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(296) : error C2084: function 'void CSipStack::LogMessage(const Tools::OString &)' already has a body i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.h(50) : see previous definition of 'LogMessage' i:\projectextreme\vqubeextreme\vqubeextreme\sipstack.cpp(413) : error C2664: 'SF::SoftPhoneInterface::SetEnablePrivacy' : cannot convert parameter 1 from 'const char [6]' to 'BOOL' There is no context in which this conversion is possible I would be glad if anyone can help out!! Thanks in advance!! cheers Jay Unlimited freedom, unlimited storage. Get it now, on http://help.yahoo.com/l/in/yahoo/mail/yahoomail/tools/tools-08.html/ |