/// <summary>
        /// Releases the memory used by the sites information.
        /// </summary>
        public void Dispose()
        {
            i3d_ping_sites_getter_destroy(_ptr);

            lock (SitesGetter)
            {
                SitesGetter.Remove(_ptr);
            }
        }
示例#2
0
        private static void HttpCallback(IntPtr url, I3dSitesGetterWrapper.I3dHttpParsingCallback parsingCallback, IntPtr parsingUserdata, IntPtr userdata)
        {
            I3dSitesGetter sitesGetter;

            if (!SitesGetter.TryGetValue(userdata, out sitesGetter))
            {
                throw new InvalidOperationException("Cannot find I3dSitesGetter instance");
            }

            sitesGetter.StartCoroutine(sitesGetter.GetPayload(url, parsingCallback, parsingUserdata, userdata));
        }
示例#3
0
        private void OnEnable()
        {
            _wrapper = new I3dSitesGetterWrapper();
            _ptr     = _wrapper.Ptr;
            _wrapper.Init(null, HttpCallback, _ptr);

            lock (SitesGetter)
            {
                SitesGetter.Add(_ptr, this);
            }
        }
示例#4
0
        private void OnDisable()
        {
            if (_wrapper != null)
            {
                _wrapper.Dispose();
                _wrapper = null;
            }

            lock (SitesGetter)
            {
                SitesGetter.Remove(_ptr);
            }
        }
        /// <summary>
        /// Init an instance of the <see cref="I3dSitesGetterWrapper"/> class.
        /// </summary>
        public void Init(Action <I3dLogLevel, string> logCallback, I3dHttpGetCallback callback, IntPtr userdata)
        {
            _logCallback = logCallback;

            int code = i3d_ping_sites_getter_create(out _ptr, callback, userdata);

            I3dErrorValidator.Validate(code);

            code = i3d_ping_sites_getter_set_logger(_ptr, LogCallback, _ptr);
            I3dErrorValidator.Validate(code);

            lock (SitesGetter)
            {
                SitesGetter.Add(_ptr, this);
            }
        }
        private static void LogCallback(IntPtr data, int level, IntPtr log)
        {
            I3dSitesGetterWrapper sitesGetter;

            if (!SitesGetter.TryGetValue(data, out sitesGetter))
            {
                throw new InvalidOperationException("Cannot find I3dSitesGetterWrapper instance");
            }

            if (sitesGetter._logCallback == null)
            {
                return;
            }

            if (!Enum.IsDefined(typeof(I3dLogLevel), level))
            {
                throw new I3dInvalidLogLevelException(level);
            }

            var logLevel = (I3dLogLevel)level;

            sitesGetter._logCallback(logLevel, new Utf8ByteArray(log).ToString());
        }