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); } }
public void SetCallback(CallbackBase callbackObject) { MyDLLPINVOKE.CppClass_SetCallback(swigCPtr, CallbackBase.getCPtr(callbackObject)); if (MyDLLPINVOKE.SWIGPendingException.Pending) { throw MyDLLPINVOKE.SWIGPendingException.Retrieve(); } }
void IDisposable.Dispose() { if (call != null && manager != null) { manager.Unregister(call); call = null; manager = null; } }
void ICallbackMgrInternals.Register(CallbackBase call) { if (registeredCallbacks.Contains(call)) { return; } registeredCallbacks.Add(call); }
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); }
internal static void Deserialize(Parcel h, CallbackBase param) { param.Id = h.ReadInt(); param.SeqId = h.ReadInt(); param.Once = h.ReadBool(); }
internal static void Serialize(Parcel h, CallbackBase param) { h.WriteInt(param.Id); h.WriteInt(param.SeqId); h.WriteBool(param.Once); }
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); }
public Subscription(CallbackBase call, ICallbackMgrInternals manager) { this.manager = manager; this.call = call; }
void ICallbackMgrInternals.Unregister(CallbackBase call) { registeredCallbacks.Remove(call); }