Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="typeName"></param>
        /// <param name="cb"></param>
        public void GetType(string typeName, NativeCallback cb)
        {
            object obj;

            if (types.ContainsKey(typeName))
            {
                obj = types[typeName];
            }
            else
            {
                Type type = Type.GetType(typeName);
                if (type == null)
                {
                    throw new ArgumentNullException("Can't find type " + typeName);
                }

                obj             = BuildStructType(type);
                types[typeName] = obj;
            }

            int size = Marshal.SizeOf(obj);

            IntPtr unmanagedAddr = Marshal.AllocHGlobal(size);

            Marshal.StructureToPtr(obj, unmanagedAddr, false);
            cb(unmanagedAddr);
            Marshal.FreeHGlobal(unmanagedAddr);
        }
Пример #2
0
        static void Main(string[] args)
        {
            var callback = new NativeCallback(v =>
            {
                // setting a breakpoint here make go panic
                Console.WriteLine($"Value comming from go: {v}");
            });
            var funcPtr = Marshal.GetFunctionPointerForDelegate(callback);

            CallMeBack(funcPtr, 42);
        }
Пример #3
0
 internal static void Setup()
 {
     isStarted = false;
     RegisterMonoNativeCallbacks(nativeCallback = OnNativeCallback);
 }
Пример #4
0
 static extern void RegisterMonoNativeCallbacks(NativeCallback callback);
Пример #5
0
 public static extern void RegisterNativeCallback(NativeCallback cb);
 public unsafe void RegisterOnConnectionStateChangeCallback(Int32 callbackPointer)
 {
     onConnectionStateChange = GetNativeCallback(callbackPointer);
 }
 public unsafe void RegisterLogCallback(Int32 callbackPointer)
 {
     onLog = GetNativeCallback(callbackPointer);
 }
 public unsafe void RegisterOnErrorCallback(Int32 callbackPointer)
 {
     onError = GetNativeCallback(callbackPointer);
 }
Пример #9
0
 internal static void Start()
 {
     IsClosing = false;
     RegisterMonoNativeCallbacks(nativeCallback = OnNativeCallback);
 }
Пример #10
0
 public static void Register(int index, NativeCallback cb)
 {
     _CallbackList[index] = cb;
 }