Exemple #1
0
        public int CoRegister(string name, NotifyCb cb)
        {
            if (!_online)
            {
                throw new NotConnectedSocketException();
            }

            using (Parcel p = new Parcel())
            {
                p.WriteInt((int)MethodId.CoRegister);
                p.WriteString(name);
                CallbackBase.Serialize(p, cb);

                Parcel parcelReceived;
                lock (_lock)
                {
                    _delegateList.Add(cb);

                    // Send
                    p.Send(Port);

                    // Receive
                    ConsumeCommand(out parcelReceived, Port);
                }
                if (parcelReceived == null)
                {
                    throw new InvalidProtocolException();
                }

                int ret = parcelReceived.ReadInt();
                parcelReceived.Dispose();
                return(ret);
            }
        }
Exemple #2
0
 public void SetCallback(CallbackBase callbackObject)
 {
     MyDLLPINVOKE.CppClass_SetCallback(swigCPtr, CallbackBase.getCPtr(callbackObject));
     if (MyDLLPINVOKE.SWIGPendingException.Pending)
     {
         throw MyDLLPINVOKE.SWIGPendingException.Retrieve();
     }
 }
Exemple #3
0
 void IDisposable.Dispose()
 {
     if (call != null && manager != null)
     {
         manager.Unregister(call);
         call    = null;
         manager = null;
     }
 }
Exemple #4
0
        void ICallbackMgrInternals.Register(CallbackBase call)
        {
            if (registeredCallbacks.Contains(call))
            {
                return;
            }

            registeredCallbacks.Add(call);
        }
Exemple #5
0
 protected internal void InvokeCallback(CallbackBase callback, Array args)
 {
     if (args.Count != callback.ParametersCount)
     {
         throw new InvalidOperationException();
     }
     callback.LoadContext(this, args);
     if (callback is SyscallCallback syscallCallback)
     {
         OnSysCall(syscallCallback.Method);
     }
 }
        // Steamworks.NET Specific
        private void BuildCCallbackBase()
        {
            _vTable = new CCallbackBaseVTable
            {
                RunCallResult        = OnRunCallResult,
                RunCallback          = OnRunCallback,
                GetCallbackSizeBytes = OnGetCallbackSizeBytes
            };
            _pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(CCallbackBaseVTable)));
            Marshal.StructureToPtr(_vTable, _pVTable, false);

            _callbackBase = new CallbackBase
            {
                VFPtr         = _pVTable,
                CallbackFlags = 0,
                Callback      = CallbackIdentities.GetCallbackIdentity(typeof(T))
            };
            _pCCallbackBase = GCHandle.Alloc(_callbackBase, GCHandleType.Pinned);
        }
Exemple #7
0
 internal static void Deserialize(Parcel h, CallbackBase param)
 {
     param.Id    = h.ReadInt();
     param.SeqId = h.ReadInt();
     param.Once  = h.ReadBool();
 }
Exemple #8
0
 internal static void Serialize(Parcel h, CallbackBase param)
 {
     h.WriteInt(param.Id);
     h.WriteInt(param.SeqId);
     h.WriteBool(param.Once);
 }
Exemple #9
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(CallbackBase obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }
Exemple #10
0
 public Subscription(CallbackBase call, ICallbackMgrInternals manager)
 {
     this.manager = manager;
     this.call    = call;
 }
Exemple #11
0
 void ICallbackMgrInternals.Unregister(CallbackBase call)
 {
     registeredCallbacks.Remove(call);
 }