-/* \r
- * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - mod_managed\r
- * Copyright (C) 2008, Michael Giagnocavo <mgg@packetrino.com>\r
- *\r
- * Version: MPL 1.1\r
- *\r
- * The contents of this file are subject to the Mozilla Public License Version\r
- * 1.1 (the "License"); you may not use this file except in compliance with\r
- * the License. You may obtain a copy of the License at\r
- * http://www.mozilla.org/MPL/\r
- *\r
- * Software distributed under the License is distributed on an "AS IS" basis,\r
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\r
- * for the specific language governing rights and limitations under the\r
- * License.\r
- *\r
- * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - mod_managed\r
- *\r
- * The Initial Developer of the Original Code is\r
- * Michael Giagnocavo <mgg@packetrino.com>\r
- * Portions created by the Initial Developer are Copyright (C)\r
- * the Initial Developer. All Rights Reserved.\r
- *\r
- * Contributor(s):\r
- * \r
- * Michael Giagnocavo <mgg@packetrino.com>\r
- * Jeff Lenk <jlenk@frontiernet.net> - Modified class to support Dotnet\r
- * \r
- * freeswitch_managed.h -- Header for ManagedSession and globals\r
- *\r
- */\r
-\r
-#ifndef FREESWITCH_MANAGED_H\r
-#define FREESWITCH_MANAGED_H\r
-\r
-SWITCH_BEGIN_EXTERN_C\r
-\r
-#include <switch.h>\r
-#include <switch_cpp.h>\r
-
-typedef void (*hangupFunction)(void);\r
-typedef char* (*inputFunction)(void*, switch_input_type_t);\r
-\r
-\r
-#ifndef _MANAGED\r
-#include <glib.h>\r
-#include <mono/jit/jit.h>\r
-#include <mono/metadata/assembly.h>\r
-#include <mono/metadata/environment.h>\r
-#include <mono/metadata/threads.h>\r
-#include <mono/metadata/debug-helpers.h>\r
-#endif\r
-\r
-#ifndef SWIG\r
-struct mod_managed_globals {\r
- switch_memory_pool_t *pool;\r
-#ifndef _MANAGED\r
- MonoDomain *domain;\r
- MonoAssembly *mod_mono_asm;\r
- switch_bool_t embedded;\r
-\r
- MonoMethod *loadMethod;\r
-#endif\r
-};\r
-typedef struct mod_managed_globals mod_managed_globals;\r
-extern mod_managed_globals globals;\r
-#endif\r
-\r
-#ifdef _MANAGED\r
-#define ATTACH_THREADS\r
-#else\r
-#define ATTACH_THREADS mono_thread_attach(globals.domain);\r
-#endif\r
-\r
-#ifdef WIN32\r
-#define RESULT_FREE(x) CoTaskMemFree(x)\r
-#else\r
-#define RESULT_FREE(x) g_free(x)\r
-#endif\r
-\r
-SWITCH_END_EXTERN_C\r
-\r
-#ifdef _MANAGED\r
-// this section remove linker error LNK4248 for these opaque structures\r
- struct switch_core_session {char foo[];};\r
- struct apr_pool_t {char foo[];};\r
- struct switch_channel {char foo[];};\r
- struct apr_thread_t {char foo[];};\r
- struct switch_hash {char foo[];};\r
- struct apr_thread_mutex_t {char foo[];};\r
- struct switch_network_list {char foo[];};\r
- struct switch_xml_binding {char foo[];};\r
- struct apr_sockaddr_t {char foo[];};\r
- struct switch_core_port_allocator {char foo[];};\r
- struct switch_media_bug {char foo[];};\r
- struct switch_rtp {char foo[];};\r
- struct sqlite3_stmt {char foo[];};\r
- struct switch_buffer {char foo[];};\r
- struct switch_ivr_menu {char foo[];};\r
- struct switch_event_node {char foo[];};\r
- struct switch_ivr_digit_stream_parser {char foo[];};\r
- struct sqlite3 {char foo[];};\r
- struct switch_ivr_digit_stream {char foo[];};\r
- struct real_pcre {char foo[];};\r
- struct HashElem {char foo[];};\r
- struct switch_ivr_menu_xml_ctx {char foo[];};\r
- struct apr_file_t {char foo[];};\r
- struct apr_thread_rwlock_t {char foo[];};\r
- struct apr_pollfd_t {char foo[];};\r
- struct apr_queue_t {char foo[];};\r
- struct apr_socket_t {char foo[];};\r
-// LNK Error\r
-\r
-using namespace System;\r
-using namespace System::Reflection;\r
-using namespace System::Runtime::InteropServices;\r
-\r
-public ref class FreeSwitchManaged\r
-{\r
-public:\r
- static Assembly^ mod_dotnet_managed;\r
- static MethodInfo^ loadMethod;\r
-};\r
-\r
-#endif\r
-\r
-class ManagedSession : public CoreSession \r
-{\r
-public:\r
- ManagedSession(void);\r
- ManagedSession(char *uuid);\r
- ManagedSession(switch_core_session_t *session);\r
- virtual ~ManagedSession(); \r
-\r
- virtual bool begin_allow_threads();\r
- virtual bool end_allow_threads();\r
- virtual void check_hangup_hook();\r
-\r
- virtual switch_status_t run_dtmf_callback(void *input, switch_input_type_t itype);\r
-\r
- // P/Invoke function pointer to delegates\r
- inputFunction dtmfDelegate; \r
- hangupFunction hangupDelegate; \r
-};\r
-\r
-#endif\r
+/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - mod_managed
+ * Copyright (C) 2008, Michael Giagnocavo <mgg@packetrino.com>
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - mod_managed
+ *
+ * The Initial Developer of the Original Code is
+ * Michael Giagnocavo <mgg@packetrino.com>
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Michael Giagnocavo <mgg@packetrino.com>
+ * Jeff Lenk <jlenk@frontiernet.net> - Modified class to support Dotnet
+ *
+ * freeswitch_managed.h -- Header for ManagedSession and globals
+ *
+ */
+
+#ifndef FREESWITCH_MANAGED_H
+#define FREESWITCH_MANAGED_H
+
+SWITCH_BEGIN_EXTERN_C
+
+#include <switch.h>
+#include <switch_cpp.h>
+
+typedef void (*hangupFunction)(void);
+typedef char* (*inputFunction)(void*, switch_input_type_t);
+
+
+#ifndef _MANAGED
+#include <glib.h>
+#include <mono/jit/jit.h>
+#include <mono/metadata/assembly.h>
+#include <mono/metadata/environment.h>
+#include <mono/metadata/threads.h>
+#include <mono/metadata/debug-helpers.h>
+#endif
+
+#ifndef SWIG
+struct mod_managed_globals {
+ switch_memory_pool_t *pool;
+#ifndef _MANAGED
+ MonoDomain *domain;
+ MonoAssembly *mod_mono_asm;
+ switch_bool_t embedded;
+
+ MonoMethod *loadMethod;
+#endif
+};
+typedef struct mod_managed_globals mod_managed_globals;
+extern mod_managed_globals globals;
+#endif
+
+#ifdef _MANAGED
+#define ATTACH_THREADS
+#else
+#define ATTACH_THREADS mono_thread_attach(globals.domain);
+#endif
+
+#ifdef WIN32
+#define RESULT_FREE(x) CoTaskMemFree(x)
+#else
+#define RESULT_FREE(x) g_free(x)
+#endif
+
+SWITCH_END_EXTERN_C
+
+#ifdef _MANAGED
+// this section remove linker error LNK4248 for these opaque structures
+ struct switch_core_session {char foo[];};
+ struct apr_pool_t {char foo[];};
+ struct switch_channel {char foo[];};
+ struct apr_thread_t {char foo[];};
+ struct switch_hash {char foo[];};
+ struct apr_thread_mutex_t {char foo[];};
+ struct switch_network_list {char foo[];};
+ struct switch_xml_binding {char foo[];};
+ struct apr_sockaddr_t {char foo[];};
+ struct switch_core_port_allocator {char foo[];};
+ struct switch_media_bug {char foo[];};
+ struct switch_rtp {char foo[];};
+ struct sqlite3_stmt {char foo[];};
+ struct switch_buffer {char foo[];};
+ struct switch_ivr_menu {char foo[];};
+ struct switch_event_node {char foo[];};
+ struct switch_ivr_digit_stream_parser {char foo[];};
+ struct sqlite3 {char foo[];};
+ struct switch_ivr_digit_stream {char foo[];};
+ struct real_pcre {char foo[];};
+ struct HashElem {char foo[];};
+ struct switch_ivr_menu_xml_ctx {char foo[];};
+ struct apr_file_t {char foo[];};
+ struct apr_thread_rwlock_t {char foo[];};
+ struct apr_pollfd_t {char foo[];};
+ struct apr_queue_t {char foo[];};
+ struct apr_socket_t {char foo[];};
+// LNK Error
+
+using namespace System;
+using namespace System::Reflection;
+using namespace System::Runtime::InteropServices;
+
+public ref class FreeSwitchManaged
+{
+public:
+ static Assembly^ mod_dotnet_managed;
+ static MethodInfo^ loadMethod;
+};
+
+#endif
+
+class ManagedSession : public CoreSession
+{
+public:
+ ManagedSession(void);
+ ManagedSession(char *uuid);
+ ManagedSession(switch_core_session_t *session);
+ virtual ~ManagedSession();
+
+ virtual bool begin_allow_threads();
+ virtual bool end_allow_threads();
+ virtual void check_hangup_hook();
+
+ virtual switch_status_t run_dtmf_callback(void *input, switch_input_type_t itype);
+
+ // P/Invoke function pointer to delegates
+ inputFunction dtmfDelegate;
+ hangupFunction hangupDelegate;
+};
+
+#endif