aboutsummaryrefslogtreecommitdiff
path: root/ServiceStack/ServiceStackHost.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-11-11 14:55:12 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-11-11 14:55:12 -0500
commit406e6cb8132c1b8ade2872d44d7183267dd51ca8 (patch)
treef9088ce1219351cee1976ba9fa57ed6341eeed9a /ServiceStack/ServiceStackHost.cs
parentf8b8de13b752c49360bbe10502cc067be89937ae (diff)
update portable projects
Diffstat (limited to 'ServiceStack/ServiceStackHost.cs')
-rw-r--r--ServiceStack/ServiceStackHost.cs104
1 files changed, 104 insertions, 0 deletions
diff --git a/ServiceStack/ServiceStackHost.cs b/ServiceStack/ServiceStackHost.cs
new file mode 100644
index 000000000..8a1db25e4
--- /dev/null
+++ b/ServiceStack/ServiceStackHost.cs
@@ -0,0 +1,104 @@
+// Copyright (c) Service Stack LLC. All Rights Reserved.
+// License: https://raw.github.com/ServiceStack/ServiceStack/master/license.txt
+
+
+using 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);
+ }
+ }
+}