Added IProgress to Kernel.Init

This commit is contained in:
LukePulverenti Luke Pulverenti luke pulverenti 2012-07-30 00:06:05 -04:00
parent 5d88dc8575
commit 882e20e9a5
4 changed files with 40 additions and 6 deletions

View File

@ -11,13 +11,14 @@ using MediaBrowser.Common.Json;
using MediaBrowser.Common.Logging; using MediaBrowser.Common.Logging;
using MediaBrowser.Common.Net; using MediaBrowser.Common.Net;
using MediaBrowser.Common.Plugins; using MediaBrowser.Common.Plugins;
using MediaBrowser.Common.Progress;
namespace MediaBrowser.Common.Kernel namespace MediaBrowser.Common.Kernel
{ {
/// <summary> /// <summary>
/// Represents a shared base kernel for both the UI and server apps /// Represents a shared base kernel for both the UI and server apps
/// </summary> /// </summary>
public abstract class BaseKernel<TConfigurationType> public abstract class BaseKernel<TConfigurationType> : IDisposable
where TConfigurationType : BaseApplicationConfiguration, new() where TConfigurationType : BaseApplicationConfiguration, new()
{ {
/// <summary> /// <summary>
@ -76,7 +77,7 @@ namespace MediaBrowser.Common.Kernel
Logger.LoggerInstance = new FileLogger(Path.Combine(ProgramDataPath, "Logs")); Logger.LoggerInstance = new FileLogger(Path.Combine(ProgramDataPath, "Logs"));
} }
public virtual void Init() public virtual void Init(IProgress<TaskProgress> progress)
{ {
ReloadConfiguration(); ReloadConfiguration();
@ -206,13 +207,18 @@ namespace MediaBrowser.Common.Kernel
/// Restarts the Http Server, or starts it if not currently running /// Restarts the Http Server, or starts it if not currently running
/// </summary> /// </summary>
private void ReloadHttpServer() private void ReloadHttpServer()
{
DisposeHttpServer();
HttpServer = new HttpServer("http://+:" + Configuration.HttpServerPortNumber + "/mediabrowser/");
}
private void DisposeHttpServer()
{ {
if (HttpServer != null) if (HttpServer != null)
{ {
HttpServer.Dispose(); HttpServer.Dispose();
} }
HttpServer = new HttpServer("http://+:" + Configuration.HttpServerPortNumber + "/mediabrowser/");
} }
/// <summary> /// <summary>
@ -234,5 +240,10 @@ namespace MediaBrowser.Common.Kernel
return null; return null;
} }
public void Dispose()
{
DisposeHttpServer();
}
} }
} }

View File

@ -67,6 +67,7 @@
<Compile Include="Logging\Logger.cs" /> <Compile Include="Logging\Logger.cs" />
<Compile Include="Logging\LogRow.cs" /> <Compile Include="Logging\LogRow.cs" />
<Compile Include="Plugins\BasePlugin.cs" /> <Compile Include="Plugins\BasePlugin.cs" />
<Compile Include="Progress\TaskProgress.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -0,0 +1,19 @@

namespace MediaBrowser.Common.Progress
{
/// <summary>
/// Represents a generic progress class that can be used with IProgress
/// </summary>
public class TaskProgress
{
/// <summary>
/// Gets or sets the current completion percentage
/// </summary>
public decimal PercentComplete { get; set; }
/// <summary>
/// Gets or sets a description of the actions currently executing
/// </summary>
public string Description { get; set; }
}
}

View File

@ -1,5 +1,6 @@
using System; using System;
using MediaBrowser.Controller; using MediaBrowser.Controller;
using MediaBrowser.Common.Progress;
namespace MediaBrowser.Program namespace MediaBrowser.Program
{ {
@ -18,7 +19,9 @@ namespace MediaBrowser.Program
Kernel kernel = new Kernel(); Kernel kernel = new Kernel();
kernel.Init(); Progress<TaskProgress> progress = new Progress<TaskProgress>();
kernel.Init(progress);
var time = DateTime.Now - now; var time = DateTime.Now - now;
Console.WriteLine("Done in " + time.TotalSeconds + " seconds"); Console.WriteLine("Done in " + time.TotalSeconds + " seconds");