private void on_user_event_callback_t(IntPtr opaque,
     ref CDOUserStateChangedEvent e)
 {
     try
     {
         if (_listener != null)
             _listener.onUserEvent(
                 UserStateChangedEvent.FromNative(e));
     }
     catch (Exception )
     {
     }
 }
 internal static UserStateChangedEvent FromNative(
     CDOUserStateChangedEvent userStateChangedEvnt)
 {
     UserStateChangedEvent result = new UserStateChangedEvent();
     result._scopeId = userStateChangedEvnt.scopeId.body;
     result._mediaType =
         MediaType.FromString(userStateChangedEvnt.mediaType.body);
     result._isConnected = userStateChangedEvnt.isConnected;
     result._userId = userStateChangedEvnt.userId;
     result._audioPublished = userStateChangedEvnt.audioPublished;
     result._screenPublished = userStateChangedEvnt.screenPublished;
     result._screenSinkId = userStateChangedEvnt.screenSinkId.body;
     result._videoPublished = userStateChangedEvnt.videoPublished;
     result._videoSinkId = userStateChangedEvnt.videoSinkId.body;
     return result;
 }
 private void on_media_stream_callback_t(IntPtr opaque,
     ref CDOUserStateChangedEvent e)
 {
     try
     {
         if (_listener != null)
             _listener.onMediaStreamEvent(
                 UserStateChangedEvent.FromNative(e));
     }
     catch (Exception )
     {
     }
 }