55using System . Linq ;
66using Newtonsoft . Json ;
77using Unity . Attributes ;
8- using xmr_stak_bootstrap . Model ;
8+ using XmrStakBootstrap . Common ;
9+ using XmrStakBootstrap . MasterConfiguration . Model ;
10+ using XmrStakBootstrap . RunConfiguration . Model ;
911
10- namespace xmr_stak_bootstrap
12+ namespace XmrStakBootstrap . Core . Runner . Miner
1113{
12- public class Runner : IRunner
14+ public class MinerRunner : IRunner
1315 {
14- //TODO: can be refactored further to classes
15-
1616 [ Dependency ]
1717 public IFinalizer Finalizer { get ; set ; }
1818
1919 [ Dependency ]
20- public Lazy < ISampleConfigurationGenerator > SampleConfigurationGenerator { get ; set ; }
20+ public RunConfigurationModel RunConfigurationModel { get ; set ; }
21+
22+ [ Dependency ]
23+ public MasterConfigurationModel MasterConfigurationModel { get ; set ; }
2124
22- public void Run ( RunConfiguration args )
25+ public void Run ( )
2326 {
24- if ( args . GenerateConfigurationOnly )
27+ if ( MasterConfigurationModel == null )
2528 {
26- SampleConfigurationGenerator . Value . Generate ( args . MasterConfiguration ) ;
29+ Console . WriteLine ( @"Master configuration file '{0}' was not loaded. Try running this program with argument --help." , RunConfigurationModel . MasterConfiguration ) ;
30+ return ;
2731 }
28- else
29- {
30- if ( ! File . Exists ( args . MasterConfiguration ) )
31- {
32- Console . WriteLine ( @"Configuration file '{0}' does not exist. Try running this program with argument --help." , args . MasterConfiguration ) ;
33- return ;
34- }
3532
36- DoRun ( args ) ;
37- }
33+ DoRun ( ) ;
3834 }
3935
40- private void DoRun ( RunConfiguration args )
36+ private void DoRun ( )
4137 {
42- var contents = File . ReadAllText ( args . MasterConfiguration ) ;
43- var configuration = JsonConvert . DeserializeObject < MasterConfiguration > ( contents ) ;
44-
45- var activeSolution = GetActiveSolution ( args , configuration ) ;
38+ var activeSolution = GetActiveSolution ( ) ;
4639 KillMiners ( ) ;
4740
48- var solution = configuration . SolutionConfiguration . SolutionProfiles . GetValue ( activeSolution ) ;
41+ var solution = MasterConfigurationModel . SolutionConfiguration . SolutionProfiles . GetValue ( activeSolution ) ;
4942 foreach ( var instances in solution )
5043 {
51- var outputPools = GetOutputPools ( configuration , instances ) ;
44+ var outputPools = GetOutputPools ( instances ) ;
5245
5346 if ( outputPools . Count == 0 )
5447 {
5548 Console . WriteLine ( @"Solution does not contain any pool bindings." ) ;
5649 continue ;
5750 }
5851
59- var configArgument = GetConfigurationArgument ( configuration , outputPools ) ;
52+ var configArgument = GetConfigurationArgument ( outputPools ) ;
6053
6154 foreach ( var instance in instances . Value )
6255 {
63- var entry = configuration . InstanceConfiguration . InstanceProfiles . GetValue ( instance ) ;
56+ var entry = MasterConfigurationModel . InstanceConfiguration . InstanceProfiles . GetValue ( instance ) ;
6457
65- var cpuArgument = GetCpuArgument ( configuration , entry ) ;
66- var amdArgument = GetAmdArgument ( configuration , entry ) ;
67- var nvidiaArgument = GetNvidiaArgument ( configuration , entry ) ;
58+ var cpuArgument = GetCpuArgument ( entry ) ;
59+ var amdArgument = GetAmdArgument ( entry ) ;
60+ var nvidiaArgument = GetNvidiaArgument ( entry ) ;
6861
6962 RunMiner ( $ "{ configArgument } { cpuArgument } { amdArgument } { nvidiaArgument } ") ;
7063 }
7164 }
7265 }
7366
74- private static string GetActiveSolution ( RunConfiguration args , MasterConfiguration configuration )
67+ private string GetActiveSolution ( )
7568 {
76- var activeSolution = args . ActiveSolutionConfiguration ;
69+ //TODO: rewrite once configuration is changed
70+ var activeSolution = RunConfigurationModel . ActiveSolutionConfiguration ;
7771
7872 while ( string . IsNullOrEmpty ( activeSolution ) )
7973 {
8074 Console . WriteLine ( @"Available solutions: " ) ;
81- var keys = configuration . SolutionConfiguration . SolutionProfiles . Keys . OrderBy ( x => x ) . ToList ( ) ;
75+ var keys = MasterConfigurationModel . SolutionConfiguration . SolutionProfiles . Keys . ToList ( ) ;
8276 var i = 0 ;
8377 foreach ( var key in keys )
8478 {
@@ -96,13 +90,13 @@ private static string GetActiveSolution(RunConfiguration args, MasterConfigurati
9690 return activeSolution ;
9791 }
9892
99- private static List < PrioritizedPoolEntry > GetOutputPools ( MasterConfiguration configuration , KeyValuePair < string , IList < string > > instances )
93+ private List < PrioritizedPoolEntry > GetOutputPools ( KeyValuePair < string , IList < string > > instances )
10094 {
101- return configuration
95+ return MasterConfigurationModel
10296 . PoolConfiguration
10397 . PoolSets . GetValue ( instances . Key )
10498 . Reverse ( )
105- . Select ( x => configuration . PoolConfiguration . Pools . GetValue ( x ) )
99+ . Select ( x => MasterConfigurationModel . PoolConfiguration . Pools . GetValue ( x ) )
106100 . Select ( ( x , i ) => new PrioritizedPoolEntry
107101 {
108102 PoolWeight = i + 1 ,
@@ -116,7 +110,7 @@ private static List<PrioritizedPoolEntry> GetOutputPools(MasterConfiguration con
116110 . ToList ( ) ;
117111 }
118112
119- private void RunMiner ( string arguments )
113+ private static void RunMiner ( string arguments )
120114 {
121115 var startInfo = new ProcessStartInfo ( Path . GetFullPath ( "xmr-stak.exe" ) , arguments )
122116 {
@@ -128,51 +122,51 @@ private void RunMiner(string arguments)
128122 Process . Start ( startInfo ) ;
129123 }
130124
131- private string GetConfigurationArgument ( MasterConfiguration configuration , List < PrioritizedPoolEntry > pools )
125+ private string GetConfigurationArgument ( IReadOnlyCollection < PrioritizedPoolEntry > pools )
132126 {
133- var configPath = CreateTemporaryConfiguration ( configuration . ConfigTemplate , "config" , "%POOLS%" , pools ) ;
127+ var configPath = CreateTemporaryConfiguration ( MasterConfigurationModel . ConfigTemplate , "config" , "%POOLS%" , pools ) ;
134128 ScheduleFileDelete ( configPath ) ;
135129
136130 return $ "--config \" { configPath } \" ";
137131 }
138132
139- private string GetCpuArgument ( MasterConfiguration configuration , InstanceEntry entry )
133+ private string GetCpuArgument ( InstanceEntry entry )
140134 {
141135 if ( string . IsNullOrEmpty ( entry . CpuProfile ) )
142136 {
143137 return "--noCPU" ;
144138 }
145139
146- var cpuProfile = configuration . CpuConfiguration . Profiles . GetValue ( entry . CpuProfile ) ;
147- var path = CreateTemporaryConfiguration ( configuration . CpuTemplate , "cpu" , "%THREADS%" , cpuProfile ) ;
140+ var cpuProfile = MasterConfigurationModel . CpuConfiguration . Profiles . GetValue ( entry . CpuProfile ) ;
141+ var path = CreateTemporaryConfiguration ( MasterConfigurationModel . CpuTemplate , "cpu" , "%THREADS%" , cpuProfile ) ;
148142 ScheduleFileDelete ( path ) ;
149143
150144 return $ "--cpu \" { path } \" ";
151145 }
152146
153- private string GetAmdArgument ( MasterConfiguration configuration , InstanceEntry entry )
147+ private string GetAmdArgument ( InstanceEntry entry )
154148 {
155149 if ( entry . AmdProfiles == null || entry . AmdProfiles . Count == 0 )
156150 {
157151 return "--noAMD" ;
158152 }
159153
160- var amdProfile = entry . AmdProfiles . SelectMany ( x => configuration . AmdConfiguration . Profiles . GetValue ( x ) ) . ToList ( ) ;
161- var path = CreateTemporaryConfiguration ( configuration . AmdTemplate , "amd" , "%THREADS%" , amdProfile ) ;
154+ var amdProfile = entry . AmdProfiles . SelectMany ( x => MasterConfigurationModel . AmdConfiguration . Profiles . GetValue ( x ) ) . ToList ( ) ;
155+ var path = CreateTemporaryConfiguration ( MasterConfigurationModel . AmdTemplate , "amd" , "%THREADS%" , amdProfile ) ;
162156 ScheduleFileDelete ( path ) ;
163157
164158 return $ "--amd \" { path } \" ";
165159 }
166160
167- private string GetNvidiaArgument ( MasterConfiguration configuration , InstanceEntry entry )
161+ private string GetNvidiaArgument ( InstanceEntry entry )
168162 {
169163 if ( entry . NvidiaProfiles == null || entry . NvidiaProfiles . Count == 0 )
170164 {
171165 return "--noNVIDIA" ;
172166 }
173167
174- var nvidiaProfile = entry . NvidiaProfiles . SelectMany ( x => configuration . NvidiaConfiguration . Profiles . GetValue ( x ) ) . ToList ( ) ;
175- var path = CreateTemporaryConfiguration ( configuration . NvidiaTemplate , "nvidia" , "%THREADS%" , nvidiaProfile ) ;
168+ var nvidiaProfile = entry . NvidiaProfiles . SelectMany ( x => MasterConfigurationModel . NvidiaConfiguration . Profiles . GetValue ( x ) ) . ToList ( ) ;
169+ var path = CreateTemporaryConfiguration ( MasterConfigurationModel . NvidiaTemplate , "nvidia" , "%THREADS%" , nvidiaProfile ) ;
176170 ScheduleFileDelete ( path ) ;
177171
178172 return $ "--nvidia \" { path } \" ";
0 commit comments