First attempt at making CLR delegate stuff work

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9795 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Michael Giagnocavo
2008-10-02 18:10:48 +00:00
parent 16acd0a7ef
commit 70e390c3e8
4 changed files with 19 additions and 60 deletions
@@ -74,6 +74,9 @@ ManagedSession::~ManagedSession()
// Don't let any callbacks use this CoreSession anymore
switch_channel_set_private(channel, "CoreSession", NULL);
}
// Free delegates
hangupDelegateHandle.Free();
dtmfDelegateHandle.Free();
}
bool ManagedSession::begin_allow_threads()
@@ -88,20 +91,20 @@ bool ManagedSession::end_allow_threads()
void ManagedSession::check_hangup_hook()
{
if (!hangupDelegateHandle) {
if (!hangupDelegateHandle.IsAllocated) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "hangupDelegateHandle didn't get an object.");
return;
}
hangupDelegateHandle();
((HangupDelegate^)hangupDelegateHandle.Target)();
}
switch_status_t ManagedSession::run_dtmf_callback(void *input, switch_input_type_t itype)
{
if (!dtmfDelegateHandle) {
if (!dtmfDelegateHandle.IsAllocated) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "dtmfDelegateHandle didn't get an object.");
return SWITCH_STATUS_FALSE;;
}
char* result = dtmfDelegateHandle(input, itype);
char *result = ((InputDelegate^)dtmfDelegateHandle.Target)(input, itype);
switch_status_t status = process_callback_result(result);
return status;