first commit
This commit is contained in:
116
Ultron.Proxy.Server/Server.cs
Normal file
116
Ultron.Proxy.Server/Server.cs
Normal file
@@ -0,0 +1,116 @@
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using log4net;
|
||||
using log4net.Config;
|
||||
using Ultron.Proxy.Interfaces;
|
||||
|
||||
namespace Ultron.Proxy
|
||||
{
|
||||
class Server
|
||||
{
|
||||
public class Log4netLogger : ILogger
|
||||
{
|
||||
public void Debug(object message)
|
||||
{
|
||||
//Logger.Debug(message);
|
||||
Logger.Debug(message);
|
||||
}
|
||||
|
||||
public void Error(object message, Exception ex)
|
||||
{
|
||||
//Logger.Debug(message);
|
||||
Logger.Error(message,ex);
|
||||
}
|
||||
|
||||
public void Info(object message)
|
||||
{
|
||||
Logger.Info(message);
|
||||
}
|
||||
}
|
||||
|
||||
public static IConfigurationRoot Configuration { get; set; }
|
||||
public static ILog Logger;
|
||||
static void Main(string[] args)
|
||||
{
|
||||
//log
|
||||
var loggerRepository = LogManager.CreateRepository("NSmartServerRepository");
|
||||
XmlConfigurator.ConfigureAndWatch(loggerRepository, new FileInfo("log4net.config"));
|
||||
Logger = LogManager.GetLogger(loggerRepository.Name, "NSmartServer");
|
||||
if (!loggerRepository.Configured) throw new Exception("log config failed.");
|
||||
|
||||
Logger.Debug("*** Ultron.Proxy Server v0.1 ***");
|
||||
var builder = new ConfigurationBuilder()
|
||||
.SetBasePath(Directory.GetCurrentDirectory())
|
||||
.AddJsonFile("appsettings.json");
|
||||
|
||||
Configuration = builder.Build();
|
||||
StartServer();
|
||||
}
|
||||
|
||||
private static void StartServer()
|
||||
{
|
||||
try
|
||||
{
|
||||
ServerHost.ClientServicePort = int.Parse(Configuration.GetSection("ClientServicePort").Value);
|
||||
ServerHost.ConfigServicePort = int.Parse(Configuration.GetSection("ConfigServicePort").Value);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Debug("配置文件读取失败:" + ex.ToString());
|
||||
return;
|
||||
}
|
||||
ServerHost srv = new ServerHost(new Log4netLogger());
|
||||
|
||||
int retryCount = 0;
|
||||
while (true)
|
||||
{
|
||||
var watch = new Stopwatch();
|
||||
|
||||
try
|
||||
{
|
||||
watch.Start();
|
||||
srv.SetWebPort(int.Parse(Configuration.GetSection("WebAPIPort").Value))
|
||||
.Start()
|
||||
.Wait();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Debug(ex.ToString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
watch.Stop();
|
||||
}
|
||||
|
||||
//短时间多次出错则终止服务器
|
||||
if (watch.Elapsed > TimeSpan.FromSeconds(10))
|
||||
{
|
||||
retryCount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
retryCount++;
|
||||
}
|
||||
if (retryCount > 100) break;
|
||||
|
||||
}
|
||||
|
||||
|
||||
Logger.Debug("Ultron.Proxy server terminated. Press any key to continue.");
|
||||
try
|
||||
{
|
||||
Console.Read();
|
||||
}
|
||||
catch
|
||||
{
|
||||
// ignored
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal class ProxyClient
|
||||
{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user