// ---------------------------- Interface --------------------------------------------------

            public DistClient(string name, DistManager current_manager) : base(DistClient_getClient(name))
            {
                manager = current_manager;      // We always need a current manager

                #region --------- event callback setup ------------------------
                m_dispatcher_OnTick = new DistEventHandler_OnTick_Callback(OnTick_callback);
                DistClient_SetCallback_OnTick(GetNativeReference(), m_dispatcher_OnTick);

                m_dispatcher_OnNewSession = new DistEventHandler_OnNewSession_Callback(OnNewSession_callback);
                DistClient_SetCallback_OnNewSession(GetNativeReference(), m_dispatcher_OnNewSession);

                m_dispatcher_OnRemoveSession = new DistEventHandler_OnRemoveSession_Callback(OnRemoveSession_callback);
                DistClient_SetCallback_OnRemoveSession(GetNativeReference(), m_dispatcher_OnRemoveSession);

                m_dispatcher_OnEvent = new DistEventHandler_OnEvent_Callback(OnEvent_callback);
                DistClient_SetCallback_OnEvent(GetNativeReference(), m_dispatcher_OnEvent);

                m_dispatcher_OnNewObject = new DistEventHandler_OnNewObject_Callback(OnNewObject_callback);
                DistClient_SetCallback_OnNewObject(GetNativeReference(), m_dispatcher_OnNewObject);

                m_dispatcher_OnRemoveObject = new DistEventHandler_OnRemoveObject_Callback(OnRemoveObject_callback);
                DistClient_SetCallback_OnRemoveObject(GetNativeReference(), m_dispatcher_OnRemoveObject);

                m_dispatcher_OnNewAttributes = new DistEventHandler_OnNewAttributes_Callback(OnNewAttributes_callback);
                DistClient_SetCallback_OnNewAttributes(GetNativeReference(), m_dispatcher_OnNewAttributes);

                m_dispatcher_OnUpdateAttributes = new DistEventHandler_OnUpdateAttributes_Callback(OnUpdateAttributes_callback);
                DistClient_SetCallback_OnUpdateAttributes(GetNativeReference(), m_dispatcher_OnUpdateAttributes);

                m_dispatcher_OnRemoveAttributes = new DistEventHandler_OnRemoveAttributes_Callback(OnRemoveAttributes_callback);
                DistClient_SetCallback_OnRemoveAttributes(GetNativeReference(), m_dispatcher_OnRemoveAttributes);

                #endregion
            }
                public Initializer()
                {
                    s_dispatcher_OnTick = new DistEventHandler_OnTick_Callback(OnTick_callback);
                    DistClient_SetCallback_OnTick(s_dispatcher_OnTick);

                    s_dispatcher_OnNewSession = new DistEventHandler_OnNewSession_Callback(OnNewSession_callback);
                    DistClient_SetCallback_OnNewSession(s_dispatcher_OnNewSession);

                    s_dispatcher_OnRemoveSession = new DistEventHandler_OnRemoveSession_Callback(OnRemoveSession_callback);
                    DistClient_SetCallback_OnRemoveSession(s_dispatcher_OnRemoveSession);

                    s_dispatcher_OnEvent = new DistEventHandler_OnEvent_Callback(OnEvent_callback);
                    DistClient_SetCallback_OnEvent(s_dispatcher_OnEvent);

                    s_dispatcher_OnNewObject = new DistEventHandler_OnNewObject_Callback(OnNewObject_callback);
                    DistClient_SetCallback_OnNewObject(s_dispatcher_OnNewObject);

                    s_dispatcher_OnRemoveObject = new DistEventHandler_OnRemoveObject_Callback(OnRemoveObject_callback);
                    DistClient_SetCallback_OnRemoveObject(s_dispatcher_OnRemoveObject);

                    s_dispatcher_OnNewAttributes = new DistEventHandler_OnNewAttributes_Callback(OnNewAttributes_callback);
                    DistClient_SetCallback_OnNewAttributes(s_dispatcher_OnNewAttributes);

                    s_dispatcher_OnUpdateAttributes = new DistEventHandler_OnUpdateAttributes_Callback(OnUpdateAttributes_callback);
                    DistClient_SetCallback_OnUpdateAttributes(s_dispatcher_OnUpdateAttributes);

                    s_dispatcher_OnRemoveAttributes = new DistEventHandler_OnRemoveAttributes_Callback(OnRemoveAttributes_callback);
                    DistClient_SetCallback_OnRemoveAttributes(s_dispatcher_OnRemoveAttributes);
                }
 private static extern void DistClient_SetCallback_OnUpdateAttributes(IntPtr client, DistEventHandler_OnUpdateAttributes_Callback fn);