[commit] r1613 - in freeswitch/branches/mishehu/src: . include mod/loggers/mod_cdr
Author: mishehu Date: Mon Jun 12 21:54:36 2006 New Revision: 1613 Modified: freeswitch/branches/mishehu/src/include/switch_channel.h freeswitch/branches/mishehu/src/include/switch_ivr.h freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/basecdr.cpp freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/basecdr.h freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/baseregistry.h freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/cdrcontainer.cpp freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/cdrcontainer.h freeswitch/branches/mishehu/src/switch_channel.c Log: Some error fixes in code, update to trunk r1612 Modified: freeswitch/branches/mishehu/src/include/switch_channel.h ============================================================================== --- freeswitch/branches/mishehu/src/include/switch_channel.h (original) +++ freeswitch/branches/mishehu/src/include/switch_channel.h Mon Jun 12 21:54:36 2006 @@ -204,6 +204,15 @@ SWITCH_DECLARE(char *) switch_channel_get_variable(switch_channel_t *channel, char *varname); /*! + * Start iterating over the entries in the channel variable list. + * @param channel the channel to intterate the variales for + * @param pool The pool to allocate the switch_hash_index_t iterator. If this + * pool is NULL, then an internal, non-thread-safe iterator is used. + * @remark Use switch_hash_next and switch_hash_this with this function to iterate all the channel variables + */ +SWITCH_DECLARE(switch_hash_index_t *) switch_channel_variable_first(switch_channel_t *channel, switch_memory_pool_t *pool); + +/*! \brief Assign a caller extension to a given channel \param channel channel to assign extension to \param caller_extension extension to assign Modified: freeswitch/branches/mishehu/src/include/switch_ivr.h ============================================================================== --- freeswitch/branches/mishehu/src/include/switch_ivr.h (original) +++ freeswitch/branches/mishehu/src/include/switch_ivr.h Mon Jun 12 21:54:36 2006 @@ -51,7 +51,6 @@ */ /*! -<<<<<<< .working \brief Wait for DTMF digits calling a pluggable callback function when digits are collected. \param session the session to read. \param dtmf_callback code to execute if any dtmf is dialed during the recording @@ -59,37 +58,6 @@ \param buflen the size of buf \return SWITCH_STATUS_SUCCESS to keep the collection moving. */ -SWITCH_DECLARE(switch_status) switch_ivr_collect_digits_callback(switch_core_session *session, - switch_dtmf_callback_function dtmf_callback, - void *buf, - unsigned int buflen); - -/*! - \brief Wait for specified number of DTMF digits, untile terminator is received or until the channel hangs up. - \param session the session to read. - \param buf strig to write to - \param buflen max size of buf - \param maxdigits max number of digits to read - \param terminators digits to end the collection - \param terminator actual digit that caused the collection to end (if any) - \return SWITCH_STATUS_SUCCESS to keep the collection moving. -*/ -SWITCH_DECLARE(switch_status) switch_ivr_collect_digits_count(switch_core_session *session, - char *buf, - unsigned int buflen, - unsigned int maxdigits, - const char *terminators, - char *terminator); - -/*! -======= - \brief Wait for DTMF digits calling a pluggable callback function when digits are collected. - \param session the session to read. - \param dtmf_callback code to execute if any dtmf is dialed during the recording - \param buf an object to maintain across calls - \param buflen the size of buf - \return SWITCH_STATUS_SUCCESS to keep the collection moving. -*/ SWITCH_DECLARE(switch_status_t) switch_ivr_collect_digits_callback(switch_core_session_t *session, switch_dtmf_callback_function_t dtmf_callback, void *buf, @@ -115,7 +83,6 @@ unsigned int timeout); /*! ->>>>>>> .merge-right.r1490 \brief play a file from the disk to the session \param session the session to play the file too \param fh file handle to use (NULL for builtin one) @@ -131,15 +98,9 @@ switch_file_handle_t *fh, char *file, char *timer_name, -<<<<<<< .working - switch_dtmf_callback_function dtmf_callback, - void *buf, - unsigned int buflen); -======= switch_dtmf_callback_function_t dtmf_callback, void *buf, unsigned int buflen); ->>>>>>> .merge-right.r1490 @@ -157,13 +118,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *session, switch_file_handle_t *fh, char *file, -<<<<<<< .working - switch_dtmf_callback_function dtmf_callback, - void *buf, - unsigned int buflen); - - -======= switch_dtmf_callback_function_t dtmf_callback, void *buf, unsigned int buflen); @@ -229,7 +183,6 @@ */ SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_t *session, char *extension, char *dialplan, char *context); ->>>>>>> .merge-right.r1490 /** @} */ END_EXTERN_C Modified: freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/basecdr.cpp ============================================================================== --- freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/basecdr.cpp (original) +++ freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/basecdr.cpp Mon Jun 12 21:54:36 2006 @@ -22,7 +22,7 @@ BaseCDR::BaseCDR(switch_mod_cdr_newchannel_t *newchannel) { - if(channel != 0) + if(newchannel != 0) { memset(clid,0,80); memset(dialplan,0,80); @@ -63,15 +63,15 @@ if(newchannel->callerprofile->ani != 0) strncpy(ani,newchannel->callerprofile->ani,strlen(newchannel->callerprofile->ani)); if(newchannel->callerprofile->ani2 != 0) - strncpy(ani2,tempcallerprofile->ani2,strlen(newchannel->callerprofile->ani2)); + strncpy(ani2,newchannel->callerprofile->ani2,strlen(newchannel->callerprofile->ani2)); if(newchannel->callerprofile->dialplan != 0) - strncpy(dialplan,tempcallerprofile->dialplan,strlen(newchannel->callerprofile->dialplan)); + strncpy(dialplan,newchannel->callerprofile->dialplan,strlen(newchannel->callerprofile->dialplan)); if(newchannel->callerprofile->network_addr != 0) strncpy(network_addr,newchannel->callerprofile->network_addr,strlen(newchannel->callerprofile->network_addr)); - switch_console_printf(SWITCH_CHANNEL_CONSOLE, "BaseCDR::BaseCDR(switch_mod_cdr_newchannel*) - Channel caller_profile loaded.\n"); + switch_console_printf(SWITCH_CHANNEL_LOG, "BaseCDR::BaseCDR(switch_mod_cdr_newchannel*) - Channel caller_profile loaded.\n"); originated = newchannel->originate; @@ -116,7 +116,7 @@ hangupcause = switch_channel_get_cause(newchannel->channel); hangupcause_text = switch_channel_cause2str(hangupcause); - switch_console_printf(SWITCH_CHANNEL_CONSOLE, "BaseCDR::BaseCDR(switch_mod_cdr_newchannel*) - Call state & length calculated.\n"); + switch_console_printf(SWITCH_CHANNEL_LOG, "BaseCDR::BaseCDR(switch_mod_cdr_newchannel*) - Call state & length calculated.\n"); if(newchannel->callerextension != 0) if(newchannel->callerextension->last_application != 0) @@ -133,7 +133,7 @@ strncpy(uniqueid," ",1); // I don't see any of the user stuff in the docs yet strncpy(userfield," ",1); // So we can't add these yet */ - switch_console_printf(SWITCH_CHANNEL_CONSOLE, "BaseCDR::BaseCDR(switch_mod_cdr_newchannel*) - Processing completed.\n"); + switch_console_printf(SWITCH_CHANNEL_LOG, "BaseCDR::BaseCDR(switch_mod_cdr_newchannel*) - Processing completed.\n"); } @@ -142,24 +142,24 @@ } -std::list<std::string>& BaseCDR::parse_channel_variables_xconfig(std::string& unparsed) +std::list<std::string> BaseCDR::parse_channel_variables_xconfig(std::string& unparsed) { std::list<std::string> stringlist; std::string tempstring; long j = 0; for(std::string::size_type i = 0; j != -1; ) { - j = string1.find(',',i); + j = unparsed.find(',',i); if(j > 0) { tempstring = unparsed.substr(i,(j-i)); - stringlist.push(tempstring); + stringlist.push_back(tempstring); i =j+1; } else { tempstring = unparsed.substr(i); - stringlist.push(tempstring); + stringlist.push_back(tempstring); } } @@ -167,13 +167,14 @@ std::list<std::string>::iterator iBeg,iItr,iEnd; iBeg = stringlist.begin(); iEnd = stringlist.end(); - for(bool testvalue = 1; iItr = stringlist.begin(); iItr != iEnd && testvalue ; iItr++) + bool testvalue = 1; + for(iItr = stringlist.begin(); iItr != iEnd && testvalue ; iItr++) { - if(iItr == "*") + if(*iItr == "*") { std::string tempstring = "*"; stringlist.clear(); - stringlist.push(tempstring); + stringlist.push_back(tempstring); testvalue = 0; } } Modified: freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/basecdr.h ============================================================================== --- freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/basecdr.h (original) +++ freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/basecdr.h Mon Jun 12 21:54:36 2006 @@ -16,7 +16,7 @@ #ifdef __cplusplus #include <vector> #include <list> -#include <queue> +#include <map> #include <switch.h> #include <sys/types.h> #include <sys/stat.h> @@ -46,7 +46,7 @@ virtual void tempdump_record() = 0; virtual void reread_tempdumped_records() = 0; protected: - std::list<std::string>& parse_channel_variables_xconfig(std::string& unparsed); + std::list<std::string> parse_channel_variables_xconfig(std::string& unparsed); void process_channel_variables(const std::list<std::string>& stringlist,switch_channel_t *channel); //switch_channel_t *tempchannel; switch_time_t callstartdate; Modified: freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/baseregistry.h ============================================================================== --- freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/baseregistry.h (original) +++ freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/baseregistry.h Mon Jun 12 21:54:36 2006 @@ -6,7 +6,7 @@ #ifdef __cplusplus #include <vector> -template<class T> BaseCDR* basecdr_factory(newchannel) +template<class T> BaseCDR* basecdr_factory(switch_mod_cdr_newchannel_t *newchannel) { return new T(newchannel); } Modified: freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/cdrcontainer.cpp ============================================================================== --- freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/cdrcontainer.cpp (original) +++ freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/cdrcontainer.cpp Mon Jun 12 21:54:36 2006 @@ -7,29 +7,27 @@ } -CDRContainer::CDRContainer(switch_memory_pool *module_pool) +CDRContainer::CDRContainer(switch_memory_pool_t *module_pool) { // Create the APR threadsafe queue, though I don't know if this is the current memory pool. switch_queue_create(&cdrqueue,5224288, module_pool); - switch_channel_t *channel = 0; - char *configfile = "mod_cdr.conf"; switch_xml_t cfg, xml, settings, param; switch_mod_cdr_newchannel_t *newchannel = new switch_mod_cdr_newchannel_t; - memset(0,newchannel,sizeof(newchannel)); + memset(newchannel,0,sizeof(*newchannel)); - if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of %s failed\n", cf); + if (!(xml = switch_xml_open_cfg(configfile, &cfg, NULL))) + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of %s failed\n", configfile); else { BaseRegistry& registry(BaseRegistry::get()); for(BaseRegistry::iterator it = registry.begin(); it != registry.end(); ++it) { basecdr_creator func = *it; - BaseCDR* _ptr = func(channel,temptimes,tempcallerextension,tempcallerprofile,temporiginateprofile,temporiginate); + BaseCDR* _ptr = func(newchannel); std::auto_ptr<BaseCDR> ptr(_ptr); ptr->connect(&cfg,&xml,&settings,¶m); } @@ -45,26 +43,28 @@ if(switch_queue_size(cdrqueue) > 0) process_records(); - switch_channel_t *channel = 0; + switch_mod_cdr_newchannel_t *newchannel = new switch_mod_cdr_newchannel_t; + memset(newchannel,0,sizeof(*newchannel)); BaseRegistry& registry(BaseRegistry::get()); for(BaseRegistry::iterator it = registry.begin(); it != registry.end(); ++it) { basecdr_creator func = *it; - BaseCDR* _ptr = func(channel); + BaseCDR* _ptr = func(newchannel); std::auto_ptr<BaseCDR> ptr(_ptr); ptr->disconnect(); } - switch_console_printf(SWITCH_CHANNEL_CONSOLE, "mod_cdr shutdown gracefully."); + switch_console_printf(SWITCH_CHANNEL_LOG, "mod_cdr shutdown gracefully."); + delete newchannel; } void CDRContainer::add_cdr(switch_channel_t *channel) { switch_mod_cdr_newchannel_t *newchannel = new switch_mod_cdr_newchannel_t; - memset(0,newchannel,sizeof(*newchannel)); + memset(newchannel,0,sizeof(*newchannel)); - newchannel->timetable = switch_channel_get_timetables(channel); + newchannel->timetable = switch_channel_get_timetable(channel); newchannel->callerextension = switch_channel_get_caller_extension(channel); newchannel->callerprofile = switch_channel_get_caller_profile(channel); newchannel->originateprofile = switch_channel_get_originator_caller_profile(channel); @@ -82,22 +82,22 @@ if(newchannel->originateprofile != 0 ) { BaseCDR* newloggerobject = func(newchannel); - switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Adding a new logger object to the queue.\n"); + switch_console_printf(SWITCH_CHANNEL_LOG, "Adding a new logger object to the queue.\n"); switch_queue_push(cdrqueue,newloggerobject); if(newchannel->timetable->next != 0) { - newchannel->originateprofile = switch_channel_get_originatee_profile(channel); + newchannel->originateprofile = switch_channel_get_originatee_caller_profile(channel); newchannel->originate = 1; } } else { - newchannel->originateprofile = switch_channel_get_originatee_profile(channel); + newchannel->originateprofile = switch_channel_get_originatee_caller_profile(channel); newchannel->originate = 1; BaseCDR* newloggerobject = func(newchannel); - switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Adding a new logger object to the queue.\n"); + switch_console_printf(SWITCH_CHANNEL_LOG, "Adding a new logger object to the queue.\n"); switch_queue_push(cdrqueue,newloggerobject); } @@ -109,7 +109,7 @@ newchannel->originateprofile = newchannel->originateprofile->next; BaseCDR* newloggerobject = func(newchannel); - switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Adding a new logger object to the queue.\n"); + switch_console_printf(SWITCH_CHANNEL_LOG, "Adding a new logger object to the queue.\n"); switch_queue_push(cdrqueue,newloggerobject); } } Modified: freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/cdrcontainer.h ============================================================================== --- freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/cdrcontainer.h (original) +++ freeswitch/branches/mishehu/src/mod/loggers/mod_cdr/cdrcontainer.h Mon Jun 12 21:54:36 2006 @@ -34,7 +34,7 @@ class CDRContainer { public: CDRContainer(); - CDRContainer(switch_memory_pool *module_pool); + CDRContainer(switch_memory_pool_t *module_pool); ~CDRContainer(); void add_cdr(switch_channel_t *channel); void process_records(); Modified: freeswitch/branches/mishehu/src/switch_channel.c ============================================================================== --- freeswitch/branches/mishehu/src/switch_channel.c (original) +++ freeswitch/branches/mishehu/src/switch_channel.c Mon Jun 12 21:54:36 2006 @@ -292,6 +292,11 @@ return switch_core_hash_find(channel->variables, varname); } +SWITCH_DECLARE(switch_hash_index_t *) switch_channel_variable_first(switch_channel_t *channel, switch_memory_pool_t *pool) +{ + return switch_hash_first(pool, channel->variables); +} + SWITCH_DECLARE(switch_status_t) switch_channel_set_private(switch_channel_t *channel, void *private_info) { assert(channel != NULL);
participants (1)
-
mishehu@freeswitch.org