[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/ehtick/TensorFlow.NET/master/src/TensorflowNET.Hub/registry.cs [Back]  [Original]

using System;
using System.Collections.Generic;
using System.Linq;

namespace Tensorflow.Hub
{
    internal class MultiImplRegister
    {
        private static MultiImplRegister resolver = new MultiImplRegister("resolver", new IResolver[0]);
        private static MultiImplRegister loader = new MultiImplRegister("loader", new IResolver[0]);

        static MultiImplRegister()
        {
            resolver.add_implementation(new PathResolver());
            resolver.add_implementation(new HttpUncompressedFileResolver());
            resolver.add_implementation(new GcsCompressedFileResolver());
            resolver.add_implementation(new HttpCompressedFileResolver());
        }

        string _name;
        List _impls;
        public MultiImplRegister(string name, IEnumerable impls)
        {
            _name = name;
            _impls = impls.ToList();
        }

        public void add_implementation(IResolver resolver)
        {
            _impls.Add(resolver);
        }

        public string Call(string handle)
        {
            foreach (var impl in _impls.Reverse())
            {
                if (impl.IsSupported(handle))
                {
                    return impl.Call(handle);
                }
            }
            throw new RuntimeError($"Cannot resolve the handle {handle}");
        }

        public static MultiImplRegister GetResolverRegister()
        {
            return resolver;
        }

        public static MultiImplRegister GetLoaderRegister()
        {
            return loader;
        }
    }
}

Web Proxy Viewer  |  New URL  |  Original Page