|
| 1 | +program obrc; |
| 2 | + |
| 3 | +{$mode objfpc}{$H+} |
| 4 | + |
| 5 | +uses |
| 6 | + {$IFDEF UNIX} |
| 7 | + cthreads, |
| 8 | + {$ENDIF} |
| 9 | + Classes, |
| 10 | + SysUtils, |
| 11 | + uWeatherStations; |
| 12 | + |
| 13 | +var |
| 14 | + TC: Integer; |
| 15 | + FTick: QWord; |
| 16 | + FWSManager: TWSManager; |
| 17 | + MStart, MFinish: TMethod; |
| 18 | + |
| 19 | + |
| 20 | +procedure DoOnStart(Sender: TObject); |
| 21 | +begin |
| 22 | + Writeln('Process started at: ' + FormatDateTime('hh:mm:ss:zzz', Now)); |
| 23 | + FTick := GetTickCount64; |
| 24 | +end; |
| 25 | + |
| 26 | +procedure DoOnFinish(Sender: TObject); |
| 27 | +begin |
| 28 | + FTick := GetTickCount64 - FTick; |
| 29 | + Writeln('Process finished at: ' + FormatDateTime('hh:mm:ss:zzz', Now)); |
| 30 | + Writeln('Duration: ' + IntToStr(FTick) + ' ms'); |
| 31 | + Halt; |
| 32 | +end; |
| 33 | + |
| 34 | +begin |
| 35 | + if (ParamStr(1) = '-h') or (ParamStr(1) = '/?') or (ParamStr(1) = '--help') then |
| 36 | + begin |
| 37 | + Writeln('USAGE: obrc <source_file> <destination_file> <threadCnt(optional-default 16)>'); |
| 38 | + Halt; |
| 39 | + end; |
| 40 | + |
| 41 | + if (Trim(ParamStr(1)) = '') or (not FileExists(ParamStr(1))) then |
| 42 | + begin |
| 43 | + Writeln('Please specify a valid source file'); |
| 44 | + Halt; |
| 45 | + end; |
| 46 | + |
| 47 | + if (Trim(ParamStr(2)) = '') then |
| 48 | + begin |
| 49 | + Writeln('Please specify a valid destination file'); |
| 50 | + Halt; |
| 51 | + end; |
| 52 | + |
| 53 | + if (Trim(ParamStr(3)) <> '') then |
| 54 | + TC := StrToIntDef(ParamStr(3), 16) |
| 55 | + else |
| 56 | + TC := 16; |
| 57 | + |
| 58 | + FWSManager := TWSManager.Create(ParamStr(1), ParamStr(2), TC); |
| 59 | + MStart.Data := nil; |
| 60 | + MStart.Code := @DoOnStart; |
| 61 | + FWSManager.OnStart := TNotifyEvent(MStart); |
| 62 | + MFinish.Data := nil; |
| 63 | + MFinish.Code := @DoOnFinish; |
| 64 | + FWSManager.OnFinish := TNotifyEvent(MFinish); |
| 65 | + FWSManager.WSThreadsWatcher.Start; |
| 66 | + repeat |
| 67 | + Sleep(1500); |
| 68 | + until 0 = 1; |
| 69 | +end. |
| 70 | + |
0 commit comments