[Freeswitch-branches] [commit] r2679 - in freeswitch/branches/james/src/dotnet: . Marshaling/Types Switch Types
Freeswitch SVN
james at freeswitch.org
Wed Sep 13 11:02:39 EDT 2006
Author: james
Date: Wed Sep 13 11:02:38 2006
New Revision: 2679
Added:
freeswitch/branches/james/src/dotnet/FreeSwitch.NET.csproj
- copied unchanged from r2678, /freeswitch/branches/james/src/dotnet/FreeSwitchDotNet.csproj
freeswitch/branches/james/src/dotnet/Marshaling/Types/StreamHandleMarshal.cs (contents, props changed)
freeswitch/branches/james/src/dotnet/Types/InputCallbackFunction.cs (contents, props changed)
freeswitch/branches/james/src/dotnet/Types/InputType.cs (contents, props changed)
Removed:
freeswitch/branches/james/src/dotnet/FreeSwitchDotNet.csproj
freeswitch/branches/james/src/dotnet/Freeswitch.csproj
Modified:
freeswitch/branches/james/src/dotnet/Ivr.cs
freeswitch/branches/james/src/dotnet/Marshaling/Types/LoadableModuleInterfaceMarshal.cs
freeswitch/branches/james/src/dotnet/Module.cs
freeswitch/branches/james/src/dotnet/Switch/Channel.cs
freeswitch/branches/james/src/dotnet/Switch/Ivr.cs
freeswitch/branches/james/src/dotnet/Types/Channel.cs
freeswitch/branches/james/src/dotnet/Types/Module.cs
freeswitch/branches/james/src/dotnet/Types/StreamHandle.cs
freeswitch/branches/james/src/dotnet/Types/TextChannel.cs
Log:
Few cleanups.
Modified: freeswitch/branches/james/src/dotnet/Ivr.cs
==============================================================================
--- freeswitch/branches/james/src/dotnet/Ivr.cs (original)
+++ freeswitch/branches/james/src/dotnet/Ivr.cs Wed Sep 13 11:02:38 2006
@@ -14,28 +14,34 @@
return Switch.switch_ivr_multi_threaded_bridge(session, peerSession, timelimit, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);
}
- public static Status RecordFile(CoreSession coreSession, FileHandle fileHandle, string file, DtmfCallbackFunction dtmfCallbackFunction)
+ public static Status RecordFile(CoreSession coreSession, FileHandle fileHandle, string file, InputCallbackFunction inputCallbackFunction)
{
Byte[] filename = Encoding.Default.GetBytes(file);
Console.WriteLine("File: {0}", file);
- dtmfCallbackFunction(coreSession, "1");
- dtmfCallbackFunction(coreSession, "2");
- dtmfCallbackFunction(coreSession, "3");
+ inputCallbackFunction(coreSession, "1", InputType.INPUT_TYPE_DTMF, "", 1024);
+ //inputCallbackFunction(coreSession, "2");
+ //inputCallbackFunction(coreSession, "3");
Encoding ansiEncoding = Encoding.GetEncoding(1252);
//filename = Encoding.Convert(Encoding.Default, ansiEncoding, filename);
Console.WriteLine("Filename: {0}", file);
- DtmfCallbackFunctionMarshal dtmfCallbackFunctionMarshal = new DtmfCallbackFunctionMarshal(coreSession.DtmfCallbackFunctionWrapper);
+ // DtmfCallbackFunctionMarshal dtmfCallbackFunctionMarshal = new DtmfCallbackFunctionMarshal(coreSession.DtmfCallbackFunctionWrapper);
IntPtr filePtr = Marshal.StringToHGlobalAnsi(ansiEncoding.GetString(filename));
Console.WriteLine("Bleh: 0x{0:x}", (int)filePtr);
- Status status = Switch.switch_ivr_record_file(coreSession, null, filePtr, dtmfCallbackFunctionMarshal, IntPtr.Zero, 0);
- Console.WriteLine("Status record: {0}", status.ToString());
- return status;
+ Status status = Switch.switch_ivr_record_file(coreSession, null, filePtr, inputCallbackFunction, IntPtr.Zero, 0);
+ //Console.WriteLine("Status record: {0}", status.ToString());
+ return Status.Success; //status;
+ }
+
+ public static Status PlayFile(CoreSession session, FileHandle fh, string file, string timer_name, InputCallbackFunction input_callback)
+ {
+ //Switch.switch_ivr_play_file(session
+ return Status.Success;
}
}
}
Modified: freeswitch/branches/james/src/dotnet/Marshaling/Types/LoadableModuleInterfaceMarshal.cs
==============================================================================
--- freeswitch/branches/james/src/dotnet/Marshaling/Types/LoadableModuleInterfaceMarshal.cs (original)
+++ freeswitch/branches/james/src/dotnet/Marshaling/Types/LoadableModuleInterfaceMarshal.cs Wed Sep 13 11:02:38 2006
@@ -49,17 +49,4 @@
internal IntPtr speech_interface;
internal IntPtr directory_interface;
}
-
-
- [StructLayout(LayoutKind.Sequential)]
- internal class StreamHandleMarshal
- {
- internal IntPtr write_function;
- internal IntPtr data;
- internal IntPtr end;
- internal int data_size;
- internal int data_len;
- internal IntPtr _event;
- }
-
}
Added: freeswitch/branches/james/src/dotnet/Marshaling/Types/StreamHandleMarshal.cs
==============================================================================
--- (empty file)
+++ freeswitch/branches/james/src/dotnet/Marshaling/Types/StreamHandleMarshal.cs Wed Sep 13 11:02:38 2006
@@ -0,0 +1,48 @@
+/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2006, James Martelletti <james at nerdc0re.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
+ *
+ * The Initial Developer of the Original Code is
+ * James Martelletti <james at nerdc0re.com>
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * James Martelletti <james at nerdc0re.com>
+ *
+ *
+ * StreamHandleMarshal.cs --
+ *
+ */
+using System;
+using System.Runtime.InteropServices;
+using Freeswitch.Types;
+
+namespace Freeswitch.Marshaling.Types
+{
+ [StructLayout(LayoutKind.Sequential)]
+ internal class StreamHandleMarshal
+ {
+ internal IntPtr write_function;
+ internal IntPtr data;
+ internal IntPtr end;
+ internal int data_size;
+ internal int data_len;
+ internal IntPtr _event;
+ }
+}
Modified: freeswitch/branches/james/src/dotnet/Module.cs
==============================================================================
--- freeswitch/branches/james/src/dotnet/Module.cs (original)
+++ freeswitch/branches/james/src/dotnet/Module.cs Wed Sep 13 11:02:38 2006
@@ -41,23 +41,39 @@
namespace Freeswitch
{
+ /// <summary>
+ /// Base class for all Freeswitch.NET modules
+ /// </summary>
+ /// <example>
+ /// public class Example : Module
+ /// {
+ /// public Example()
+ /// {
+ /// AddApiInterface(new ExampleApi());
+ /// AddApplicationInterface(new ExampleApplication());
+ ///
+ /// Register();
+ /// }
+ /// }
+ /// </example>
public class Module
{
-
-
- ModuleLoad load;
-
private LoadableModuleInterfaceMarshal module_interface = new LoadableModuleInterfaceMarshal();
- private ArrayList apiInterfaces = new ArrayList();
+ private LoadableModuleMarshal module = new LoadableModuleMarshal();
+
private ArrayList applicationInterfaces = new ArrayList();
- //protected ModuleLoad moduleLoad;
- private string name;
- private string filename = Assembly.GetCallingAssembly().GetName().Name;
- private LoadableModuleMarshal module = new LoadableModuleMarshal();
-
+ private ArrayList apiInterfaces = new ArrayList();
+
+ private ModuleLoad load;
+ private string name;
+ private string filename = Assembly.GetCallingAssembly().GetName().Name;
+
+ /// <summary>
+ /// Module constructor
+ /// </summary>
public Module()
{
- Console.WriteLine("Running module .blehctor");
+ Console.WriteLine("*** Creating new module object");
load = new ModuleLoad(Load);
}
@@ -70,71 +86,110 @@
/// <returns></returns>
public Status Load(ref IntPtr module, string name)
{
+ /* Allocate some unmanaged mem for the ModuleInterface */
module = Marshal.AllocHGlobal(Marshal.SizeOf(module_interface));
+ /* Set the module_name field of the LoadableModuleInterface */
module_interface.module_name = Marshal.StringToHGlobalAnsi(filename);
- /* For each API interface */
- if (apiInterfaces.Count > 0)
- {
- foreach (Api api in apiInterfaces)
- {
- ApiInterfaceMarshal apiInterfaceMarshal = new ApiInterfaceMarshal();
- IntPtr apiInterfacePtr = Marshal.AllocHGlobal(Marshal.SizeOf(apiInterfaceMarshal));
-
- apiInterfaceMarshal.interface_name = Marshal.StringToHGlobalAnsi(api.Name);
- apiInterfaceMarshal.desc = Marshal.StringToHGlobalAnsi(api.Description);
- apiInterfaceMarshal.function = new ApiFunction(api.ApiFunction);
-
- api.handle = new HandleRef(apiInterfaceMarshal, apiInterfacePtr);
-
- Marshal.StructureToPtr(apiInterfaceMarshal, api.handle.Handle, true);
- }
-
- Api apiIndex = (Api) apiInterfaces[0];
- module_interface.api_interface = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(ApiInterfaceMarshal)));
- Marshal.StructureToPtr(apiIndex.handle.Wrapper, module_interface.api_interface, true);
- }
+ /* Grab the first ApiInterface in our array and add a pointer to this in our ModuleInterface*/
+ Api apiIndex = (Api)apiInterfaces[0];
+
+ module_interface.api_interface = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(ApiInterfaceMarshal)));
+
+ Marshal.StructureToPtr(apiIndex.handle.Wrapper, module_interface.api_interface, true);
+
/* For each Application interface */
- if (applicationInterfaces.Count > 0)
- {
- foreach (Application application in applicationInterfaces)
- {
- ApplicationInterfaceMarshal applicationInterfaceMarshal = new ApplicationInterfaceMarshal();
- IntPtr applicationInterfacePtr = Marshal.AllocHGlobal(Marshal.SizeOf(applicationInterfaceMarshal));
+ Application applicationIndex = (Application)applicationInterfaces[0];
+
+ module_interface.application_interface = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(ApplicationInterfaceMarshal)));
+
+ Marshal.StructureToPtr(applicationIndex.handle.Wrapper, module_interface.application_interface, true);
- applicationInterfaceMarshal.interface_name = Marshal.StringToHGlobalAnsi(application.Name);
- applicationInterfaceMarshal.syntax = Marshal.StringToHGlobalAnsi(application.Syntax);
- applicationInterfaceMarshal.long_desc = Marshal.StringToHGlobalAnsi(application.LongDescription);
- applicationInterfaceMarshal.short_desc = Marshal.StringToHGlobalAnsi(application.ShortDescription);
-
- applicationInterfaceMarshal.application_function = new ApplicationFunction(application.ApplicationFunction);
-
- application.handle = new HandleRef(applicationInterfaceMarshal, applicationInterfacePtr);
-
- Marshal.StructureToPtr(applicationInterfaceMarshal, application.handle.Handle, true);
- }
-
- Application applicationIndex = (Application)applicationInterfaces[0];
- module_interface.application_interface = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(ApplicationInterfaceMarshal)));
- Marshal.StructureToPtr(applicationIndex.handle.Wrapper, module_interface.application_interface, true);
- }
-
+ /* Finally, marshal the moduleinterface class and return */
Marshal.StructureToPtr(module_interface, module, true);
return Status.Success;
}
+ /// <summary>
+ /// AddApiInterface
+ /// </summary>
+ /// <param name="apiInterface"></param>
public void AddApiInterface(Api apiInterface)
{
- apiInterfaces.Add(apiInterface);
+ /* Create a new ApiInterface type and allocate unmanaged mem */
+ ApiInterfaceMarshal apiInterfaceMarshal = new ApiInterfaceMarshal();
+ IntPtr apiInterfacePtr = Marshal.AllocHGlobal(Marshal.SizeOf(apiInterfaceMarshal));
+
+ /* Allocate umanaged mem to to interface fields so GC doesn't disturb them */
+ apiInterfaceMarshal.interface_name = Marshal.StringToHGlobalAnsi(apiInterface.Name);
+ apiInterfaceMarshal.desc = Marshal.StringToHGlobalAnsi(apiInterface.Description);
+ apiInterfaceMarshal.function = new ApiFunction(apiInterface.ApiFunction);
+
+ /* Set the handle of the managed object */
+ apiInterface.handle = new HandleRef(apiInterfaceMarshal, apiInterfacePtr);
+
+ Marshal.StructureToPtr(apiInterfaceMarshal, apiInterface.handle.Handle, true);
+
+ /* Check to see whether there is already an interface defined, if there is then
+ * we want to set the *next pointer of the last element before adding the new
+ * interface to the array
+ */
+ if (apiInterfaces.Count > 0)
+ {
+ Api apiInterfaceElement = (Api)apiInterfaces[apiInterfaces.Count - 1];
+ ApiInterfaceMarshal apiInterfacePrev = (ApiInterfaceMarshal)apiInterfaceElement.handle.Wrapper;
+
+ apiInterfacePrev.next = apiInterface.handle.Handle;
+ }
+
+ /* Finally, add our new interface to the array */
+ apiInterfaces.Add(apiInterface);
}
+ /// <summary>
+ /// AddApplicationInterface
+ /// </summary>
+ /// <param name="applicationInterface"></param>
public void AddApplicationInterface(Application applicationInterface)
{
+ /* Create a new ApplicationInterface type and allocate unmanaged mem */
+ ApplicationInterfaceMarshal applicationInterfaceMarshal = new ApplicationInterfaceMarshal();
+ IntPtr applicationInterfacePtr = Marshal.AllocHGlobal(Marshal.SizeOf(applicationInterfaceMarshal));
+
+ /* Allocate umanaged mem to to interface fields so GC doesn't disturb them */
+ applicationInterfaceMarshal.interface_name = Marshal.StringToHGlobalAnsi(applicationInterface.Name);
+ applicationInterfaceMarshal.syntax = Marshal.StringToHGlobalAnsi(applicationInterface.Syntax);
+ applicationInterfaceMarshal.long_desc = Marshal.StringToHGlobalAnsi(applicationInterface.LongDescription);
+ applicationInterfaceMarshal.short_desc = Marshal.StringToHGlobalAnsi(applicationInterface.ShortDescription);
+
+ applicationInterfaceMarshal.application_function = new ApplicationFunction(applicationInterface.ApplicationFunction);
+
+ /* Set the handle of the managed object */
+ applicationInterface.handle = new HandleRef(applicationInterfaceMarshal, applicationInterfacePtr);
+
+ Marshal.StructureToPtr(applicationInterfaceMarshal, applicationInterface.handle.Handle, true);
+
+ /* Check to see whether there is already an interface defined, if there is then
+ * we want to set the *next pointer of the last element before adding the new
+ * interface to the array
+ */
+ if (applicationInterfaces.Count > 0)
+ {
+ Application applicationInterfaceElement = (Application)applicationInterfaces[applicationInterfaces.Count - 1];
+ ApplicationInterfaceMarshal applicationInterfacePrev = (ApplicationInterfaceMarshal)applicationInterfaceElement.handle.Wrapper;
+
+ applicationInterfacePrev.next = applicationInterface.handle.Handle;
+ }
+
+ /* Finally, add our new interface to the array */
applicationInterfaces.Add(applicationInterface);
}
+ /// <summary>
+ /// Register
+ /// </summary>
public void Register()
{
module.module_load = new ModuleLoad(Load);
Modified: freeswitch/branches/james/src/dotnet/Switch/Channel.cs
==============================================================================
--- freeswitch/branches/james/src/dotnet/Switch/Channel.cs (original)
+++ freeswitch/branches/james/src/dotnet/Switch/Channel.cs Wed Sep 13 11:02:38 2006
@@ -60,9 +60,15 @@
[DllImport("freeswitch")]
public extern static
- Status switch_channel_hangup(
- [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(ChannelMarshaler))]
- Channel channel);
+ ChannelState switch_channel_perform_hangup(
+ [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(ChannelMarshaler))]
+ Channel channel,
+ [MarshalAs(UnmanagedType.LPStr)]
+ string file,
+ [MarshalAs(UnmanagedType.LPStr)]
+ string func,
+ int line,
+ CallCause hangup_cause);
[DllImport("freeswitch")]
[return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(CallerExtensionMarshaler))]
Modified: freeswitch/branches/james/src/dotnet/Switch/Ivr.cs
==============================================================================
--- freeswitch/branches/james/src/dotnet/Switch/Ivr.cs (original)
+++ freeswitch/branches/james/src/dotnet/Switch/Ivr.cs Wed Sep 13 11:02:38 2006
@@ -45,10 +45,13 @@
Status switch_ivr_play_file(
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(CoreSessionMarshaler))]
CoreSession session,
- IntPtr fh,
+ [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(FileHandleMarshaler))]
+ FileHandle fh,
+ [MarshalAs(UnmanagedType.LPStr)]
string file,
+ [MarshalAs(UnmanagedType.LPStr)]
string timer_name,
- IntPtr dtmf_callback,
+ InputCallbackFunction input_callback,
IntPtr buf,
uint buflen);
@@ -72,7 +75,7 @@
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileHandleMarshaler))]
FileHandle fh,
IntPtr file,
- DtmfCallbackFunctionMarshal dtmf_callback,
+ InputCallbackFunction input_callback,
IntPtr buf,
uint buflen);
}
Modified: freeswitch/branches/james/src/dotnet/Types/Channel.cs
==============================================================================
--- freeswitch/branches/james/src/dotnet/Types/Channel.cs (original)
+++ freeswitch/branches/james/src/dotnet/Types/Channel.cs Wed Sep 13 11:02:38 2006
@@ -210,9 +210,14 @@
}
}
- public void Hangup()
+ public void PerformHangup()
{
- Switch.switch_channel_hangup(this, CallCause.NormalClearing);
+ Switch.switch_channel_perform_hangup(this, "file", "func", 100, CallCause.OutgoingCallBarred);
+ }
+
+ public Status Answer()
+ {
+ return Switch.switch_channel_answer(this);
}
}
}
Added: freeswitch/branches/james/src/dotnet/Types/InputCallbackFunction.cs
==============================================================================
--- (empty file)
+++ freeswitch/branches/james/src/dotnet/Types/InputCallbackFunction.cs Wed Sep 13 11:02:38 2006
@@ -0,0 +1,47 @@
+/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2006, James Martelletti <james at nerdc0re.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
+ *
+ * The Initial Developer of the Original Code is
+ * James Martelletti <james at nerdc0re.com>
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * James Martelletti <james at nerdc0re.com>
+ *
+ *
+ * DtmfCallbackFunction.cs --
+ *
+ */
+using System;
+using System.Runtime.InteropServices;
+using Freeswitch.Marshaling;
+
+namespace Freeswitch.Types
+{
+ public delegate Status InputCallbackFunction(
+ [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(StreamHandleMarshaler))]
+ CoreSession session,
+ [MarshalAs(UnmanagedType.LPStr)]
+ string input,
+ InputType inputType,
+ [MarshalAs(UnmanagedType.LPStr)]
+ string buffer,
+ int bufferLength);
+}
Added: freeswitch/branches/james/src/dotnet/Types/InputType.cs
==============================================================================
--- (empty file)
+++ freeswitch/branches/james/src/dotnet/Types/InputType.cs Wed Sep 13 11:02:38 2006
@@ -0,0 +1,41 @@
+/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2006, James Martelletti <james at nerdc0re.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
+ *
+ * The Initial Developer of the Original Code is
+ * James Martelletti <james at nerdc0re.com>
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * James Martelletti <james at nerdc0re.com>
+ *
+ *
+ * ChannelState.cs --
+ *
+ */
+using System;
+
+namespace Freeswitch.Types
+{
+ public enum InputType
+ {
+ INPUT_TYPE_DTMF,
+ INPUT_TYPE_EVENT
+ }
+}
Modified: freeswitch/branches/james/src/dotnet/Types/Module.cs
==============================================================================
--- freeswitch/branches/james/src/dotnet/Types/Module.cs (original)
+++ freeswitch/branches/james/src/dotnet/Types/Module.cs Wed Sep 13 11:02:38 2006
@@ -36,11 +36,11 @@
namespace Freeswitch.Types
{
public delegate Status ModuleReload();
- public delegate bool ModulePause();
- public delegate bool ModuleResume();
- public delegate bool ModuleStatus();
+ public delegate bool ModulePause();
+ public delegate bool ModuleResume();
+ public delegate bool ModuleStatus();
public delegate Status ModuleRuntime();
- public delegate bool ModuleShutdown();
+ public delegate bool ModuleShutdown();
public delegate Status ModuleLoad(ref IntPtr module, string name);
public delegate void
Modified: freeswitch/branches/james/src/dotnet/Types/StreamHandle.cs
==============================================================================
--- freeswitch/branches/james/src/dotnet/Types/StreamHandle.cs (original)
+++ freeswitch/branches/james/src/dotnet/Types/StreamHandle.cs Wed Sep 13 11:02:38 2006
@@ -37,21 +37,13 @@
{
public class StreamHandle
{
- internal HandleRef marshaledObject;
+ internal HandleRef marshaledObject;
internal WriteFunction writeFunction;
- //internal WriteFunctions; //switch_stream_handle_write_function_t write_function;
- /*
- * internal
- void *data;
- void *end;
- switch_size_t data_size;
- switch_size_t data_len;
- switch_event_t *event;
- */
+
public void Write(string data)
{
- StreamHandleMarshal streamHandleMarshal = (StreamHandleMarshal) marshaledObject.Wrapper;
- WriteFunction writeFunction = (WriteFunction) Marshal.GetDelegateForFunctionPointer(streamHandleMarshal.write_function, typeof(WriteFunction));
+ StreamHandleMarshal streamHandleMarshal = (StreamHandleMarshal)marshaledObject.Wrapper;
+ WriteFunction writeFunction = (WriteFunction)Marshal.GetDelegateForFunctionPointer(streamHandleMarshal.write_function, typeof(WriteFunction));
writeFunction(this, data);
}
Modified: freeswitch/branches/james/src/dotnet/Types/TextChannel.cs
==============================================================================
--- freeswitch/branches/james/src/dotnet/Types/TextChannel.cs (original)
+++ freeswitch/branches/james/src/dotnet/Types/TextChannel.cs Wed Sep 13 11:02:38 2006
@@ -35,8 +35,8 @@
{
public enum TextChannel
{
- SwitchChannelIdConsole,
- SwitchChannelIdConsoleClean,
- SwitchChannelIdEvent
+ ChannelIdConsole,
+ ChannelIdConsoleClean,
+ ChannelIdEvent
}
}
More information about the Freeswitch-branches
mailing list