Skip to content

Commit b836f29

Browse files
author
Hüseyin Uslu
committed
Merge pull request #420 from CoiniumServ/develop
v0.1.5 release
2 parents 2ae178c + 147b6e9 commit b836f29

40 files changed

+767
-421
lines changed

Changelog.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,28 @@
1+
##### [v0.1.5 alpha](https://github.com/CoiniumServ/CoiniumServ/releases/tag/v0.1.5-alpha) - 05.09.2014
2+
3+
**Payments**
4+
* Fixed a bug in hybrid-storage layer where blocks were not correctly set as confirmed once they were actually so.
5+
6+
**Web**
7+
* Fixed a bug in embedded web-server where some users were not able to use the interface.
8+
* Updated web-site tempaltes which reflects newest API changes.
9+
10+
**Storage**
11+
* Fixed a bug in migration-manager where if it couldn't connect to MySQL would cause program to crash & terminate.
12+
13+
**API**
14+
* Improved pool API.
15+
16+
**Pools**
17+
* Pools can now determine if connection to coin network is healthy.
18+
* Fixed hashrate calculation bug.
19+
20+
**Jobs**
21+
* JobTracker can now clean expired jobs.
22+
23+
**Configuration**
24+
* Moved config.json "website:stats" section to upper level and renamed as "statistics". You have to apply the change to your existing config.json file!
25+
126
##### [v0.1.4 alpha](https://github.com/CoiniumServ/CoiniumServ/releases/tag/v0.1.4-alpha) - 03.09.2014
227

328
**Storage**

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ You can send tips and furher support the project or get tips for contributing by
5656

5757
### Status
5858

59-
[v0.1.4 alpha](https://github.com/CoiniumServ/CoiniumServ/releases/tag/v0.1.4-alpha) released
59+
[v0.1.5 alpha](https://github.com/CoiniumServ/CoiniumServ/releases/tag/v0.1.5-alpha) released
6060

6161
### Features
6262

@@ -122,7 +122,7 @@ CoiniumServ supports storage layer interfaces that you can extend to implement y
122122
* __MPOS Layer__: a compatibility layer based on mysql that supports MPOS whenever you want payments to be handled by MPOS.
123123

124124
###### Development Model
125-
* Strictly [follows](https://github.com/CoiniumServ/CoiniumServ/tree/develop/src/Tests) the [Test Driven Development](http://en.wikipedia.org/wiki/Test-driven_development) model. We have implemented extensive [tests](https://github.com/CoiniumServ/CoiniumServ/tree/develop/src/Tests) for all important functionality and never merge in code that breaks tests and stuff. Yet again, when a new functionality is introduced we also expect proper tests to be implemented within the PR. In simple words, most probably you won't notice any functionality-breaking changes within the repository.
125+
* We have implemented extensive [tests](https://github.com/CoiniumServ/CoiniumServ/tree/develop/src/Tests) for all important functionality and never merge in code that breaks tests and stuff. Yet again, when a new functionality is introduced we also expect proper tests to be implemented within the PR. In simple words, most probably you won't notice any functionality-breaking changes within the repository.
126126
* A strict ruleset for the [Development Model](https://github.com/CoiniumServ/CoiniumServ/wiki/Development-Model). You can follow our bleeding-edge [Develop](https://github.com/CoiniumServ/CoiniumServ) branch or stay with-in the stable [Master](https://github.com/CoiniumServ/CoiniumServ/tree/master) branch.
127127

128128

src/CoiniumServ/App.config

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,12 @@
55
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
66
</sectionGroup>
77
</configSections>
8+
89
<startup>
910
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
1011
</startup>
11-
<appSettings>
12-
<add key="webPages:Enabled" value="false" />
13-
</appSettings>
14-
<system.web.webPages.razor>
15-
<pages pageBaseType="Nancy.ViewEngines.Razor.NancyRazorViewBase">
16-
<namespaces>
17-
<add namespace="Nancy.ViewEngines.Razor" />
18-
</namespaces>
19-
</pages>
20-
</system.web.webPages.razor>
12+
13+
2114
<runtime>
2215
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
2316
<dependentAssembly>
@@ -26,4 +19,12 @@
2619
</dependentAssembly>
2720
</assemblyBinding>
2821
</runtime>
29-
</configuration>
22+
<appSettings>
23+
<add key="webPages:Enabled" value="false" />
24+
</appSettings><system.web.webPages.razor>
25+
<pages pageBaseType="Nancy.ViewEngines.Razor.NancyRazorViewBase">
26+
<namespaces>
27+
<add namespace="Nancy.ViewEngines.Razor" />
28+
</namespaces>
29+
</pages>
30+
</system.web.webPages.razor></configuration>

src/CoiniumServ/CoiniumServ.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,9 @@
211211
<Compile Include="Pools\BlocksCache.cs" />
212212
<Compile Include="Pools\IBlocksCache.cs" />
213213
<Compile Include="Server\Web\Models\ApiModel.cs" />
214-
<Compile Include="Statistics\INetworkStats.cs" />
214+
<Compile Include="Pools\INetworkInfo.cs" />
215215
<Compile Include="Pools\IPoolConfig.cs" />
216-
<Compile Include="Pools\NetworkStats.cs" />
216+
<Compile Include="Pools\NetworkInfo.cs" />
217217
<Compile Include="Container\Registries\StorageRegistry.cs" />
218218
<Compile Include="Server\Web\IBackendConfig.cs" />
219219
<Compile Include="Server\Web\Models\CurrentRoundModel.cs" />
@@ -848,6 +848,7 @@
848848
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
849849
</None>
850850
<None Include="packages.config" />
851+
<None Include="web.config" />
851852
<None Include="web\default\api.cshtml">
852853
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
853854
</None>

src/CoiniumServ/Configuration/ConfigManager.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,18 @@
2929
using CoiniumServ.Logging;
3030
using CoiniumServ.Pools;
3131
using CoiniumServ.Server.Web;
32+
using CoiniumServ.Statistics;
3233
using CoiniumServ.Utils.Helpers.IO;
3334
using Serilog;
3435

3536
namespace CoiniumServ.Configuration
3637
{
3738
public class ConfigManager:IConfigManager
3839
{
40+
public IStackConfig StackConfig { get; private set; }
41+
public IStatisticsConfig StatisticsConfig { get; private set; }
3942
public IWebServerConfig WebServerConfig { get; private set; }
4043
public ILogConfig LogConfig { get; private set; }
41-
public IStackConfig StackConfig { get; private set; }
4244
public List<IPoolConfig> PoolConfigs { get; private set; }
4345

4446
private const string GlobalConfigFilename = "config/config.json"; // global config filename.
@@ -76,6 +78,7 @@ private void ReadGlobalConfig()
7678
}
7779

7880
StackConfig = new StackConfig(data.stack);
81+
StatisticsConfig = new StatisticsConfig(data.statistics);
7982
WebServerConfig = new WebServerConfig(data.website);
8083
LogConfig = new LogConfig(data.logging);
8184
}

src/CoiniumServ/Configuration/IConfigManager.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,20 @@
2424
using CoiniumServ.Logging;
2525
using CoiniumServ.Pools;
2626
using CoiniumServ.Server.Web;
27+
using CoiniumServ.Statistics;
2728

2829
namespace CoiniumServ.Configuration
2930
{
3031
public interface IConfigManager
3132
{
33+
IStackConfig StackConfig { get; }
34+
35+
IStatisticsConfig StatisticsConfig { get; }
36+
3237
IWebServerConfig WebServerConfig { get; }
3338

3439
ILogConfig LogConfig { get; }
3540

36-
IStackConfig StackConfig { get; }
37-
3841
List<IPoolConfig> PoolConfigs { get; }
3942

4043
void Initialize();

src/CoiniumServ/Container/Registries/ClassRegistry.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,15 @@ public ClassRegistry(IApplicationContext applicationContext)
4545

4646
public void RegisterInstances()
4747
{
48-
// pool
48+
// per-pool objects
4949
_applicationContext.Container.Register<IPool, Pool>().AsMultiInstance();
5050
_applicationContext.Container.Register<IDaemonClient, DaemonClient>().AsMultiInstance();
5151
_applicationContext.Container.Register<IJobTracker, JobTracker>().AsMultiInstance();
5252
_applicationContext.Container.Register<IPaymentProcessor, PaymentProcessor>().AsMultiInstance();
5353
_applicationContext.Container.Register<IBlockProcessor, BlockProcessor>().AsMultiInstance();
54-
_applicationContext.Container.Register<INetworkStats, NetworkStats>().AsMultiInstance();
54+
_applicationContext.Container.Register<INetworkInfo, NetworkInfo>().AsMultiInstance();
5555
_applicationContext.Container.Register<IBlocksCache, BlocksCache>().AsMultiInstance();
5656

57-
// statistics
58-
_applicationContext.Container.Register<IStatisticsManager, StatisticsManager>().AsSingleton();
59-
6057
// config
6158
_applicationContext.Container.Register<IPoolConfig, PoolConfig>().AsMultiInstance();
6259
_applicationContext.Container.Register<ICoinConfig, CoinConfig>().AsMultiInstance();

src/CoiniumServ/Container/Registries/ManagerRegistry.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
using CoiniumServ.Miners;
3030
using CoiniumServ.Pools;
3131
using CoiniumServ.Shares;
32+
using CoiniumServ.Statistics;
3233
using CoiniumServ.Vardiff;
3334

3435
namespace CoiniumServ.Container.Registries
@@ -44,16 +45,20 @@ public ManagerRegistry(IApplicationContext applicationContext)
4445

4546
public void RegisterInstances()
4647
{
48+
// global singleton managers.
49+
_applicationContext.Container.Register<IPoolManager, PoolManager>().AsSingleton();
50+
_applicationContext.Container.Register<IConfigManager, ConfigManager>().AsSingleton();
51+
_applicationContext.Container.Register<IStatisticsManager, StatisticsManager>().AsSingleton();
52+
_applicationContext.Container.Register<ILogManager, LogManager>().AsSingleton();
53+
_applicationContext.Container.Register<IMetricsManager, MetricsManager>().AsSingleton();
54+
55+
// per-pool managers
4756
_applicationContext.Container.Register<IShareManager, ShareManager>().AsMultiInstance();
4857
_applicationContext.Container.Register<IMinerManager, MinerManager>().AsMultiInstance();
4958
_applicationContext.Container.Register<IJobManager, JobManager>().AsMultiInstance();
5059
_applicationContext.Container.Register<IMinerManager, MinerManager>().AsMultiInstance();
51-
_applicationContext.Container.Register<IPoolManager, PoolManager>().AsSingleton();
5260
_applicationContext.Container.Register<IVardiffManager, VardiffManager>().AsMultiInstance();
53-
_applicationContext.Container.Register<IBanManager, BanManager>().AsMultiInstance();
54-
_applicationContext.Container.Register<IConfigManager, ConfigManager>().AsSingleton();
55-
_applicationContext.Container.Register<ILogManager, LogManager>().AsSingleton();
56-
_applicationContext.Container.Register<IMetricsManager, MetricsManager>().AsSingleton();
61+
_applicationContext.Container.Register<IBanManager, BanManager>().AsMultiInstance();
5762
}
5863
}
5964
}

src/CoiniumServ/Container/Registries/StorageRegistry.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,9 @@
2121
//
2222
#endregion
2323
using CoiniumServ.Container.Context;
24-
using CoiniumServ.Persistance;
2524
using CoiniumServ.Persistance.Layers;
2625
using CoiniumServ.Persistance.Layers.Empty;
2726
using CoiniumServ.Persistance.Layers.Hybrid;
28-
using CoiniumServ.Persistance.Layers.Hybrid.Migrations;
2927
using CoiniumServ.Persistance.Layers.Mpos;
3028
using CoiniumServ.Persistance.Providers;
3129
using CoiniumServ.Persistance.Providers.MySql;

src/CoiniumServ/Factories/IObjectFactory.cs

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -51,21 +51,17 @@ namespace CoiniumServ.Factories
5151
/// </summary>
5252
public interface IObjectFactory
5353
{
54-
#region hash algorithms
54+
#region global objects
55+
IPoolManager GetPoolManager();
5556

56-
/// <summary>
57-
/// Returns instance of the given hash algorithm
58-
/// </summary>
59-
/// <param name="algorithm"></param>
60-
/// <returns></returns>
61-
IHashAlgorithm GetHashAlgorithm(string algorithm);
57+
IStatisticsManager GetStatisticsManager();
58+
59+
ILogManager GetLogManager();
6260

6361
#endregion
6462

6563
#region pool objects
6664

67-
IPoolManager GetPoolManager();
68-
6965
IPool GetPool(IPoolConfig poolConfig);
7066

7167
/// <summary>
@@ -76,10 +72,9 @@ public interface IObjectFactory
7672

7773
IMinerManager GetMinerManager(IPoolConfig poolConfig, IStorageLayer storageLayer);
7874

79-
IJobManager GetJobManager(IPoolConfig poolConfig, IDaemonClient daemonClient, IJobTracker jobTracker, IShareManager shareManager,
80-
IMinerManager minerManager, IHashAlgorithm hashAlgorithm);
75+
IJobManager GetJobManager(IPoolConfig poolConfig, IDaemonClient daemonClient, IJobTracker jobTracker, IShareManager shareManager, IMinerManager minerManager, IHashAlgorithm hashAlgorithm);
8176

82-
IJobTracker GetJobTracker();
77+
IJobTracker GetJobTracker(IPoolConfig poolConfig);
8378

8479
IShareManager GetShareManager(IPoolConfig poolConfig, IDaemonClient daemonClient, IJobTracker jobTracker, IStorageLayer storageLayer, IBlockProcessor blockProcessor);
8580

@@ -91,26 +86,26 @@ IJobManager GetJobManager(IPoolConfig poolConfig, IDaemonClient daemonClient, IJ
9186

9287
IVardiffManager GetVardiffManager(IPoolConfig poolConfig, IShareManager shareManager);
9388

94-
INetworkStats GetNetworkStats(IDaemonClient daemonClient);
95-
96-
IAlgorithmManager GetAlgorithmManager(IPoolManager poolManager);
89+
INetworkInfo GetNetworkInfo(IDaemonClient daemonClient, IHashAlgorithm hashAlgorithm, IPoolConfig poolConfig);
9790

9891
IBlocksCache GetBlocksCache(IStorageLayer storageLayer);
9992

100-
IStatisticsManager GetStatisticsManager();
101-
102-
#endregion
93+
IMiningServer GetMiningServer(string type, IPoolConfig poolConfig, IPool pool, IMinerManager minerManager, IJobManager jobManager,IBanManager banManager);
10394

104-
#region server & service objects
95+
IRpcService GetMiningService(string type, IPoolConfig poolConfig, IShareManager shareManager, IDaemonClient daemonClient);
10596

106-
IMiningServer GetMiningServer(string type, IPoolConfig poolConfig, IPool pool, IMinerManager minerManager, IJobManager jobManager,
107-
IBanManager banManager);
97+
#endregion
10898

109-
IRpcService GetMiningService(string type, IPoolConfig poolConfig, IShareManager shareManager, IDaemonClient daemonClient);
99+
#region hash algorithms
110100

111-
IWebServer GetWebServer();
101+
/// <summary>
102+
/// Returns instance of the given hash algorithm
103+
/// </summary>
104+
/// <param name="algorithm"></param>
105+
/// <returns></returns>
106+
IHashAlgorithm GetHashAlgorithm(string algorithm);
112107

113-
INancyBootstrapper GetWebBootstrapper();
108+
IAlgorithmManager GetAlgorithmManager(IPoolManager poolManager);
114109

115110
#endregion
116111

@@ -124,9 +119,11 @@ IMiningServer GetMiningServer(string type, IPoolConfig poolConfig, IPool pool, I
124119

125120
#endregion
126121

127-
#region other objects
122+
#region web-server objects
128123

129-
ILogManager GetLogManager();
124+
IWebServer GetWebServer();
125+
126+
INancyBootstrapper GetWebBootstrapper();
130127

131128
IMetricsManager GetMetricsManager();
132129

0 commit comments

Comments
 (0)