| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 | // Copyright (c) Service Stack LLC. All Rights Reserved.// License: https://raw.github.com/ServiceStack/ServiceStack/master/license.txtusing System;using System.Collections.Generic;using System.IO;using System.Threading.Tasks;using MediaBrowser.Model.Logging;using MediaBrowser.Model.Services;using ServiceStack.Host;namespace ServiceStack{    public abstract partial class ServiceStackHost : IDisposable    {        public static ServiceStackHost Instance { get; protected set; }        protected ServiceStackHost(string serviceName)        {            ServiceName = serviceName;            ServiceController = CreateServiceController();            RestPaths = new List<RestPath>();            Metadata = new ServiceMetadata();            GlobalRequestFilters = new List<Action<IRequest, IResponse, object>>();            GlobalResponseFilters = new List<Action<IRequest, IResponse, object>>();        }        public abstract void Configure();        public abstract object CreateInstance(Type type);        protected abstract ServiceController CreateServiceController();        public virtual ServiceStackHost Init()        {            Instance = this;            ServiceController.Init();            Configure();            ServiceController.AfterInit();            return this;        }        public virtual ServiceStackHost Start(string urlBase)        {            throw new NotImplementedException("Start(listeningAtUrlBase) is not supported by this AppHost");        }        public string ServiceName { get; set; }        public ServiceMetadata Metadata { get; set; }        public ServiceController ServiceController { get; set; }        public List<RestPath> RestPaths = new List<RestPath>();        public List<Action<IRequest, IResponse, object>> GlobalRequestFilters { get; set; }        public List<Action<IRequest, IResponse, object>> GlobalResponseFilters { get; set; }        public abstract T TryResolve<T>();        public abstract T Resolve<T>();        public virtual MediaBrowser.Model.Services.RouteAttribute[] GetRouteAttributes(Type requestType)        {            return requestType.AllAttributes<MediaBrowser.Model.Services.RouteAttribute>();        }        public abstract object GetTaskResult(Task task, string requestName);        public abstract Func<string, object> GetParseFn(Type propertyType);        public abstract void SerializeToJson(object o, Stream stream);        public abstract void SerializeToXml(object o, Stream stream);        public abstract object DeserializeXml(Type type, Stream stream);        public abstract object DeserializeJson(Type type, Stream stream);        public virtual void Dispose()        {            //JsConfig.Reset(); //Clears Runtime Attributes            Instance = null;        }        protected abstract ILogger Logger        {            get;        }        public void OnLogError(Type type, string message)        {            Logger.Error(message);        }        public void OnLogError(Type type, string message, Exception ex)        {            Logger.ErrorException(message, ex);        }    }}
 |