Beta version
This commit is contained in:
6
BuechermarktServer/App.config
Normal file
6
BuechermarktServer/App.config
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
|
||||
</startup>
|
||||
</configuration>
|
58
BuechermarktServer/BuechermarktServer.csproj
Normal file
58
BuechermarktServer/BuechermarktServer.csproj
Normal file
@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{BA959A9C-FF68-4440-9983-8FB434230FCB}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<RootNamespace>BuechermarktServer</RootNamespace>
|
||||
<AssemblyName>BuechermarktServer</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ChildProcessTracker.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="mongod.exe">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Resource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
147
BuechermarktServer/ChildProcessTracker.cs
Normal file
147
BuechermarktServer/ChildProcessTracker.cs
Normal file
@ -0,0 +1,147 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BuechermarktServer
|
||||
{
|
||||
/// <summary>
|
||||
/// Allows processes to be automatically killed if this parent process unexpectedly quits.
|
||||
/// This feature requires Windows 8 or greater. On Windows 7, nothing is done.</summary>
|
||||
/// <remarks>References:
|
||||
/// http://stackoverflow.com/a/4657392/386091
|
||||
/// http://stackoverflow.com/a/9164742/386091 </remarks>
|
||||
public static class ChildProcessTracker
|
||||
{
|
||||
/// <summary>
|
||||
/// Add the process to be tracked. If our current process is killed, the child processes
|
||||
/// that we are tracking will be automatically killed, too. If the child process terminates
|
||||
/// first, that's fine, too.</summary>
|
||||
/// <param name="process"></param>
|
||||
public static void AddProcess(Process process)
|
||||
{
|
||||
if (s_jobHandle != IntPtr.Zero)
|
||||
{
|
||||
bool success = AssignProcessToJobObject(s_jobHandle, process.Handle);
|
||||
if (!success)
|
||||
throw new Win32Exception();
|
||||
}
|
||||
}
|
||||
|
||||
static ChildProcessTracker()
|
||||
{
|
||||
// This feature requires Windows 8 or later. To support Windows 7 requires
|
||||
// registry settings to be added if you are using Visual Studio plus an
|
||||
// app.manifest change.
|
||||
// http://stackoverflow.com/a/4232259/386091
|
||||
// http://stackoverflow.com/a/9507862/386091
|
||||
if (Environment.OSVersion.Version < new Version(6, 2))
|
||||
return;
|
||||
|
||||
// The job name is optional (and can be null) but it helps with diagnostics.
|
||||
// If it's not null, it has to be unique. Use SysInternals' Handle command-line
|
||||
// utility: handle -a ChildProcessTracker
|
||||
string jobName = "ChildProcessTracker" + Process.GetCurrentProcess().Id;
|
||||
s_jobHandle = CreateJobObject(IntPtr.Zero, jobName);
|
||||
|
||||
var info = new JOBOBJECT_BASIC_LIMIT_INFORMATION();
|
||||
|
||||
// This is the key flag. When our process is killed, Windows will automatically
|
||||
// close the job handle, and when that happens, we want the child processes to
|
||||
// be killed, too.
|
||||
info.LimitFlags = JOBOBJECTLIMIT.JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE;
|
||||
|
||||
var extendedInfo = new JOBOBJECT_EXTENDED_LIMIT_INFORMATION();
|
||||
extendedInfo.BasicLimitInformation = info;
|
||||
|
||||
int length = Marshal.SizeOf(typeof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION));
|
||||
IntPtr extendedInfoPtr = Marshal.AllocHGlobal(length);
|
||||
try
|
||||
{
|
||||
Marshal.StructureToPtr(extendedInfo, extendedInfoPtr, false);
|
||||
|
||||
if (!SetInformationJobObject(s_jobHandle, JobObjectInfoType.ExtendedLimitInformation,
|
||||
extendedInfoPtr, (uint)length))
|
||||
{
|
||||
throw new Win32Exception();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
Marshal.FreeHGlobal(extendedInfoPtr);
|
||||
}
|
||||
}
|
||||
|
||||
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
|
||||
static extern IntPtr CreateJobObject(IntPtr lpJobAttributes, string name);
|
||||
|
||||
[DllImport("kernel32.dll")]
|
||||
static extern bool SetInformationJobObject(IntPtr job, JobObjectInfoType infoType,
|
||||
IntPtr lpJobObjectInfo, uint cbJobObjectInfoLength);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
static extern bool AssignProcessToJobObject(IntPtr job, IntPtr process);
|
||||
|
||||
// Windows will automatically close any open job handles when our process terminates.
|
||||
// This can be verified by using SysInternals' Handle utility. When the job handle
|
||||
// is closed, the child processes will be killed.
|
||||
private static readonly IntPtr s_jobHandle;
|
||||
}
|
||||
|
||||
public enum JobObjectInfoType
|
||||
{
|
||||
AssociateCompletionPortInformation = 7,
|
||||
BasicLimitInformation = 2,
|
||||
BasicUIRestrictions = 4,
|
||||
EndOfJobTimeInformation = 6,
|
||||
ExtendedLimitInformation = 9,
|
||||
SecurityLimitInformation = 5,
|
||||
GroupInformation = 11
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct JOBOBJECT_BASIC_LIMIT_INFORMATION
|
||||
{
|
||||
public Int64 PerProcessUserTimeLimit;
|
||||
public Int64 PerJobUserTimeLimit;
|
||||
public JOBOBJECTLIMIT LimitFlags;
|
||||
public UIntPtr MinimumWorkingSetSize;
|
||||
public UIntPtr MaximumWorkingSetSize;
|
||||
public UInt32 ActiveProcessLimit;
|
||||
public Int64 Affinity;
|
||||
public UInt32 PriorityClass;
|
||||
public UInt32 SchedulingClass;
|
||||
}
|
||||
|
||||
[Flags]
|
||||
public enum JOBOBJECTLIMIT : uint
|
||||
{
|
||||
JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x2000
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct IO_COUNTERS
|
||||
{
|
||||
public UInt64 ReadOperationCount;
|
||||
public UInt64 WriteOperationCount;
|
||||
public UInt64 OtherOperationCount;
|
||||
public UInt64 ReadTransferCount;
|
||||
public UInt64 WriteTransferCount;
|
||||
public UInt64 OtherTransferCount;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION
|
||||
{
|
||||
public JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation;
|
||||
public IO_COUNTERS IoInfo;
|
||||
public UIntPtr ProcessMemoryLimit;
|
||||
public UIntPtr JobMemoryLimit;
|
||||
public UIntPtr PeakProcessMemoryUsed;
|
||||
public UIntPtr PeakJobMemoryUsed;
|
||||
}
|
||||
}
|
73
BuechermarktServer/Program.cs
Normal file
73
BuechermarktServer/Program.cs
Normal file
@ -0,0 +1,73 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BuechermarktServer
|
||||
{
|
||||
class Program
|
||||
{
|
||||
public const string ServerIdentifier = "BUECHERMARKTCLIENT00018946";
|
||||
public const string RelativeDbPath = ".\\db";
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
if (!Directory.Exists(RelativeDbPath))
|
||||
{
|
||||
Directory.CreateDirectory(RelativeDbPath);
|
||||
}
|
||||
var process = new Process();
|
||||
process.StartInfo.FileName = "mongod.exe";
|
||||
process.StartInfo.Arguments = "--dbpath " + RelativeDbPath;
|
||||
process.StartInfo.RedirectStandardOutput = true;
|
||||
process.StartInfo.RedirectStandardError = true;
|
||||
process.StartInfo.UseShellExecute = false;
|
||||
process.StartInfo.CreateNoWindow = true;
|
||||
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
|
||||
process.OutputDataReceived += Process_OutputDataReceived;
|
||||
process.ErrorDataReceived += Process_OutputDataReceived;
|
||||
var s = process.Start();
|
||||
ChildProcessTracker.AddProcess(process);
|
||||
process.BeginErrorReadLine();
|
||||
process.BeginOutputReadLine();
|
||||
while (!process.WaitForExit(1000))
|
||||
{
|
||||
Broadcast();
|
||||
}
|
||||
Thread.Sleep(10000);
|
||||
}
|
||||
|
||||
private static void P_Exited(object sender, EventArgs e)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private static void Process_OutputDataReceived(object sender, DataReceivedEventArgs e)
|
||||
{
|
||||
Console.WriteLine(e.Data);
|
||||
}
|
||||
|
||||
static void Broadcast()
|
||||
{
|
||||
UdpClient client = new UdpClient();
|
||||
IPEndPoint ip = new IPEndPoint(IPAddress.Broadcast, 15000);
|
||||
byte[] bytes = Encoding.ASCII.GetBytes(ServerIdentifier);
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
client.Send(bytes, bytes.Length, ip);
|
||||
} catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
36
BuechermarktServer/Properties/AssemblyInfo.cs
Normal file
36
BuechermarktServer/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
||||
// die einer Assembly zugeordnet sind.
|
||||
[assembly: AssemblyTitle("BuechermarktServer")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("BuechermarktServer")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2017")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
|
||||
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
|
||||
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
|
||||
[assembly: Guid("ba959a9c-ff68-4440-9983-8fb434230fcb")]
|
||||
|
||||
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||
//
|
||||
// Hauptversion
|
||||
// Nebenversion
|
||||
// Buildnummer
|
||||
// Revision
|
||||
//
|
||||
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
|
||||
// übernehmen, indem Sie "*" eingeben:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
|
||||
</startup>
|
||||
</configuration>
|
2
BuechermarktServer/bin/Debug/db/WiredTiger
Normal file
2
BuechermarktServer/bin/Debug/db/WiredTiger
Normal file
@ -0,0 +1,2 @@
|
||||
WiredTiger
|
||||
WiredTiger 2.9.2: (December 23, 2016)
|
1
BuechermarktServer/bin/Debug/db/WiredTiger.lock
Normal file
1
BuechermarktServer/bin/Debug/db/WiredTiger.lock
Normal file
@ -0,0 +1 @@
|
||||
WiredTiger lock file
|
6
BuechermarktServer/bin/Debug/db/WiredTiger.turtle
Normal file
6
BuechermarktServer/bin/Debug/db/WiredTiger.turtle
Normal file
@ -0,0 +1,6 @@
|
||||
WiredTiger version string
|
||||
WiredTiger 2.9.2: (December 23, 2016)
|
||||
WiredTiger version
|
||||
major=2,minor=9,patch=2
|
||||
file:WiredTiger.wt
|
||||
access_pattern_hint=none,allocation_size=4KB,app_metadata=,block_allocation=best,block_compressor=,cache_resident=false,checkpoint=(WiredTigerCheckpoint.13=(addr="018481e4de671f778b81e45dfbb3a28d81e4a1a71b13808080e2cfc0e21fc0",order=13,time=1495233614,size=20480,write_gen=26)),checkpoint_lsn=(5,3840),checksum=uncompressed,collator=,columns=,dictionary=0,encryption=(keyid=,name=),format=btree,huffman_key=,huffman_value=,id=0,ignore_in_memory_cache_size=false,internal_item_max=0,internal_key_max=0,internal_key_truncate=true,internal_page_max=4KB,key_format=S,key_gap=10,leaf_item_max=0,leaf_key_max=0,leaf_page_max=32KB,leaf_value_max=0,log=(enabled=true),memory_page_max=5MB,os_cache_dirty_max=0,os_cache_max=0,prefix_compression=false,prefix_compression_min=4,split_deepen_min_child=0,split_deepen_per_child=0,split_pct=75,value_format=S,version=(major=1,minor=1)
|
BIN
BuechermarktServer/bin/Debug/db/WiredTiger.wt
Normal file
BIN
BuechermarktServer/bin/Debug/db/WiredTiger.wt
Normal file
Binary file not shown.
BIN
BuechermarktServer/bin/Debug/db/WiredTigerLAS.wt
Normal file
BIN
BuechermarktServer/bin/Debug/db/WiredTigerLAS.wt
Normal file
Binary file not shown.
BIN
BuechermarktServer/bin/Debug/db/_mdb_catalog.wt
Normal file
BIN
BuechermarktServer/bin/Debug/db/_mdb_catalog.wt
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
BuechermarktServer/bin/Debug/db/diagnostic.data/metrics.interim
Normal file
BIN
BuechermarktServer/bin/Debug/db/diagnostic.data/metrics.interim
Normal file
Binary file not shown.
BIN
BuechermarktServer/bin/Debug/db/index-1--5254115233327511264.wt
Normal file
BIN
BuechermarktServer/bin/Debug/db/index-1--5254115233327511264.wt
Normal file
Binary file not shown.
BIN
BuechermarktServer/bin/Debug/db/index-3--5254115233327511264.wt
Normal file
BIN
BuechermarktServer/bin/Debug/db/index-3--5254115233327511264.wt
Normal file
Binary file not shown.
BIN
BuechermarktServer/bin/Debug/db/index-4--5254115233327511264.wt
Normal file
BIN
BuechermarktServer/bin/Debug/db/index-4--5254115233327511264.wt
Normal file
Binary file not shown.
BIN
BuechermarktServer/bin/Debug/db/index-8--5254115233327511264.wt
Normal file
BIN
BuechermarktServer/bin/Debug/db/index-8--5254115233327511264.wt
Normal file
Binary file not shown.
BIN
BuechermarktServer/bin/Debug/db/journal/WiredTigerLog.0000000005
Normal file
BIN
BuechermarktServer/bin/Debug/db/journal/WiredTigerLog.0000000005
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
1
BuechermarktServer/bin/Debug/db/mongod.lock
Normal file
1
BuechermarktServer/bin/Debug/db/mongod.lock
Normal file
@ -0,0 +1 @@
|
||||
15548
|
BIN
BuechermarktServer/bin/Debug/db/sizeStorer.wt
Normal file
BIN
BuechermarktServer/bin/Debug/db/sizeStorer.wt
Normal file
Binary file not shown.
BIN
BuechermarktServer/bin/Debug/db/storage.bson
Normal file
BIN
BuechermarktServer/bin/Debug/db/storage.bson
Normal file
Binary file not shown.
5
BuechermarktServer/bin/Debug/test.cmd
Normal file
5
BuechermarktServer/bin/Debug/test.cmd
Normal file
@ -0,0 +1,5 @@
|
||||
:start
|
||||
|
||||
echo hallo
|
||||
|
||||
goto start
|
@ -0,0 +1,7 @@
|
||||
D:\Dokumente\Projekte\Privat\buechermarkt\BuechermarktServer\bin\Debug\BuechermarktServer.exe.config
|
||||
D:\Dokumente\Projekte\Privat\buechermarkt\BuechermarktServer\bin\Debug\BuechermarktServer.exe
|
||||
D:\Dokumente\Projekte\Privat\buechermarkt\BuechermarktServer\bin\Debug\BuechermarktServer.pdb
|
||||
D:\Dokumente\Projekte\Privat\buechermarkt\BuechermarktServer\obj\Debug\BuechermarktServer.csprojResolveAssemblyReference.cache
|
||||
D:\Dokumente\Projekte\Privat\buechermarkt\BuechermarktServer\obj\Debug\BuechermarktServer.exe
|
||||
D:\Dokumente\Projekte\Privat\buechermarkt\BuechermarktServer\obj\Debug\BuechermarktServer.pdb
|
||||
D:\Dokumente\Projekte\Privat\buechermarkt\BuechermarktServer\obj\Debug\BuechermarktServer.g.resources
|
BIN
BuechermarktServer/obj/Debug/BuechermarktServer.g.resources
Normal file
BIN
BuechermarktServer/obj/Debug/BuechermarktServer.g.resources
Normal file
Binary file not shown.
Reference in New Issue
Block a user