private void RegisterEventPrototype(Type eventType, string nativeBaseTypename) { const System.Reflection.BindingFlags flags = System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.CreateInstance | System.Reflection.BindingFlags.OptionalParamBinding; // manually construct native dist event to use as factory object var factoryObj = new DistEvent(); var nativeRef = factoryObj.GetNativeReference(); // create managed implementation, supplying the dist event we just created var prototype = (Reference)Activator.CreateInstance(eventType, flags, null, new object[] { nativeRef }, null); // register a factory if (!RegisterEventHierarchy(eventType.Name, nativeBaseTypename, factoryObj)) { Message.Send(nameof(DistManager), MessageLevel.DEBUG, $"Using native factory >>> {eventType.Name}"); } else { Message.Send(nameof(DistManager), MessageLevel.DEBUG, $"Using managed factory >>> {eventType.Name}"); } // use the overloaded AddFactory to register with correct typename AddFactory(prototype, eventType.Name); }
public bool SendEvent(DistEvent e, DistSession session) { if (UseAutoProperty && e.GetType().IsDefined(typeof(DistPropertyAutoStore), true)) { e.StorePropertiesAndFields(); } return(DistClient_sendEvent(GetNativeReference(), e.GetNativeReference(), session.GetNativeReference())); }
public DistEventAttributeIterator(DistEvent e) : base(DistEventAttributeIterator_create(e.GetNativeReference())) { }
public bool SendEvent(DistEvent e, DistSession session) { return(DistClient_sendEvent(GetNativeReference(), e.GetNativeReference(), session.GetNativeReference())); }
public bool RegisterEventHierarchy(string typeName, string parentTypeName = "gzDistEvent", DistEvent factoryEvent = null) { return(DistManager_registerEventHierarchy(GetNativeReference(), typeName, parentTypeName, factoryEvent?.GetNativeReference() ?? IntPtr.Zero)); }
public DistEvent AwaitResponse(DistEvent responseEventType, UInt32 timeout = 100) { DistEvent response = Reference.CreateObject(DistClient_awaitResponse(GetNativeReference(), responseEventType.GetNativeReference(), timeout)) as DistEvent; if (response?.IsValid() ?? false) { if (UseAutoProperty && response.GetType().IsDefined(typeof(DistPropertyAutoRestore), true)) { response.RestorePropertiesAndFields(); } } return(response); }