taskjuggler 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +1144 -2047
- data/README +1 -1
- data/Rakefile +6 -6
- data/data/css/tjmanual.css +20 -0
- data/data/css/tjreport.css +7 -6
- data/doc/AppConfig.html +136 -130
- data/doc/Arguments.html +46 -40
- data/doc/CHANGELOG.html +1162 -2057
- data/doc/COPYING.html +8 -2
- data/doc/Object.html +205 -199
- data/doc/README.html +9 -3
- data/doc/RuntimeConfig.html +75 -69
- data/doc/String.html +69 -63
- data/doc/TaskJuggler.html +350 -291
- data/doc/TaskJuggler/Account.html +26 -20
- data/doc/TaskJuggler/AccountAttribute.html +24 -18
- data/doc/TaskJuggler/AccountScenario.html +24 -18
- data/doc/TaskJuggler/Allocation.html +74 -68
- data/doc/TaskJuggler/AllocationAttribute.html +54 -48
- data/doc/TaskJuggler/AttributeBase.html +172 -93
- data/doc/TaskJuggler/AttributeDefinition.html +22 -16
- data/doc/TaskJuggler/AttributeOverwrite.html +586 -0
- data/doc/TaskJuggler/BatchProcessor.html +263 -257
- data/doc/TaskJuggler/Booking.html +44 -38
- data/doc/TaskJuggler/BookingListAttribute.html +25 -21
- data/doc/TaskJuggler/BooleanAttribute.html +24 -18
- data/doc/TaskJuggler/CSVFile.html +193 -187
- data/doc/TaskJuggler/CellSettingPattern.html +13 -7
- data/doc/TaskJuggler/CellSettingPatternList.html +25 -19
- data/doc/TaskJuggler/Charge.html +49 -43
- data/doc/TaskJuggler/ChargeListAttribute.html +21 -15
- data/doc/TaskJuggler/ChargeSet.html +94 -88
- data/doc/TaskJuggler/ChargeSetListAttribute.html +29 -25
- data/doc/TaskJuggler/CollisionDetector.html +142 -136
- data/doc/TaskJuggler/ColumnListAttribute.html +21 -17
- data/doc/TaskJuggler/ColumnTable.html +50 -44
- data/doc/TaskJuggler/Daemon.html +71 -50
- data/doc/TaskJuggler/DataCache.html +110 -58
- data/doc/TaskJuggler/DataCacheEntry.html +22 -16
- data/doc/TaskJuggler/DateAttribute.html +24 -18
- data/doc/TaskJuggler/DefinitionListAttribute.html +12 -6
- data/doc/TaskJuggler/DependencyListAttribute.html +29 -25
- data/doc/TaskJuggler/DurationAttribute.html +25 -19
- data/doc/TaskJuggler/FileList.html +25 -19
- data/doc/TaskJuggler/FileRecord.html +17 -11
- data/doc/TaskJuggler/FixnumAttribute.html +16 -10
- data/doc/TaskJuggler/FlagListAttribute.html +25 -21
- data/doc/TaskJuggler/FloatAttribute.html +20 -14
- data/doc/TaskJuggler/FormatListAttribute.html +17 -11
- data/doc/TaskJuggler/GanttChart.html +242 -236
- data/doc/TaskJuggler/GanttContainer.html +71 -67
- data/doc/TaskJuggler/GanttHeader.html +113 -107
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -20
- data/doc/TaskJuggler/GanttLine.html +217 -210
- data/doc/TaskJuggler/GanttLoadStack.html +89 -83
- data/doc/TaskJuggler/GanttMilestone.html +11 -6
- data/doc/TaskJuggler/GanttRouter.html +194 -186
- data/doc/TaskJuggler/GanttTaskBar.html +41 -34
- data/doc/TaskJuggler/HTMLDocument.html +52 -46
- data/doc/TaskJuggler/HTMLGraphics.html +58 -52
- data/doc/TaskJuggler/Interval.html +90 -84
- data/doc/TaskJuggler/IntervalList.html +777 -0
- data/doc/TaskJuggler/IntervalListAttribute.html +29 -25
- data/doc/TaskJuggler/JobInfo.html +36 -30
- data/doc/TaskJuggler/Journal.html +188 -177
- data/doc/TaskJuggler/JournalEntry.html +36 -30
- data/doc/TaskJuggler/JournalEntryList.html +88 -82
- data/doc/TaskJuggler/KeywordArray.html +12 -6
- data/doc/TaskJuggler/KeywordDocumentation.html +512 -503
- data/doc/TaskJuggler/Limits.html +111 -105
- data/doc/TaskJuggler/Limits/Limit.html +71 -65
- data/doc/TaskJuggler/LimitsAttribute.html +21 -15
- data/doc/TaskJuggler/ListAttributeBase.html +16 -10
- data/doc/TaskJuggler/Log.html +111 -105
- data/doc/TaskJuggler/LogFile.html +54 -48
- data/doc/TaskJuggler/LogicalAttribute.html +35 -29
- data/doc/TaskJuggler/LogicalExpression.html +32 -26
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +16 -10
- data/doc/TaskJuggler/LogicalExpressionListAttribute.html +671 -0
- data/doc/TaskJuggler/LogicalFlag.html +24 -18
- data/doc/TaskJuggler/LogicalFunction.html +164 -158
- data/doc/TaskJuggler/LogicalOperation.html +138 -132
- data/doc/TaskJuggler/Macro.html +14 -8
- data/doc/TaskJuggler/MacroTable.html +42 -36
- data/doc/TaskJuggler/ManagerResponsibilities.html +19 -13
- data/doc/TaskJuggler/ManagerStatusRecord.html +23 -17
- data/doc/TaskJuggler/Message.html +56 -50
- data/doc/TaskJuggler/MessageHandler.html +73 -67
- data/doc/TaskJuggler/Navigator.html +92 -86
- data/doc/TaskJuggler/NavigatorElement.html +88 -82
- data/doc/TaskJuggler/NikuProject.html +15 -9
- data/doc/TaskJuggler/NikuReport.html +405 -370
- data/doc/TaskJuggler/NikuResource.html +13 -7
- data/doc/TaskJuggler/NodeListAttribute.html +13 -9
- data/doc/TaskJuggler/PlaceHolderCell.html +22 -16
- data/doc/TaskJuggler/ProcessIntercom.html +116 -110
- data/doc/TaskJuggler/ProcessIntercomIface.html +39 -33
- data/doc/TaskJuggler/Project.html +1064 -895
- data/doc/TaskJuggler/ProjectBroker.html +439 -366
- data/doc/TaskJuggler/ProjectBrokerIface.html +63 -53
- data/doc/TaskJuggler/ProjectFileParser.html +329 -319
- data/doc/TaskJuggler/ProjectFileScanner.html +351 -345
- data/doc/TaskJuggler/ProjectRecord.html +66 -60
- data/doc/TaskJuggler/ProjectServer.html +287 -280
- data/doc/TaskJuggler/ProjectServerIface.html +43 -37
- data/doc/TaskJuggler/PropertyAttribute.html +16 -10
- data/doc/TaskJuggler/PropertyList.html +205 -199
- data/doc/TaskJuggler/PropertySet.html +264 -296
- data/doc/TaskJuggler/PropertyTreeNode.html +455 -505
- data/doc/TaskJuggler/Query.html +309 -524
- data/doc/TaskJuggler/RTFHandlers.html +17 -11
- data/doc/TaskJuggler/RTFNavigator.html +33 -27
- data/doc/TaskJuggler/RTFQuery.html +135 -129
- data/doc/TaskJuggler/RTFReport.html +63 -57
- data/doc/TaskJuggler/RTFReportLink.html +55 -49
- data/doc/TaskJuggler/RTFWithQuerySupport.html +17 -11
- data/doc/TaskJuggler/RealFormat.html +64 -58
- data/doc/TaskJuggler/RealFormatAttribute.html +12 -6
- data/doc/TaskJuggler/ReferenceAttribute.html +35 -29
- data/doc/TaskJuggler/Report.html +294 -249
- data/doc/TaskJuggler/ReportBase.html +229 -223
- data/doc/TaskJuggler/ReportContext.html +52 -46
- data/doc/TaskJuggler/ReportServer.html +143 -137
- data/doc/TaskJuggler/ReportServerIface.html +51 -43
- data/doc/TaskJuggler/ReportServerRecord.html +36 -30
- data/doc/TaskJuggler/ReportServlet.html +167 -140
- data/doc/TaskJuggler/ReportTable.html +137 -131
- data/doc/TaskJuggler/ReportTableCell.html +332 -292
- data/doc/TaskJuggler/ReportTableColumn.html +46 -40
- data/doc/TaskJuggler/ReportTableLegend.html +43 -38
- data/doc/TaskJuggler/ReportTableLine.html +66 -60
- data/doc/TaskJuggler/Resource.html +166 -160
- data/doc/TaskJuggler/ResourceListAttribute.html +54 -32
- data/doc/TaskJuggler/ResourceListRE.html +47 -41
- data/doc/TaskJuggler/ResourceScenario.html +671 -644
- data/doc/TaskJuggler/RichText.html +51 -45
- data/doc/TaskJuggler/RichTextAttribute.html +28 -22
- data/doc/TaskJuggler/RichTextDocument.html +96 -90
- data/doc/TaskJuggler/RichTextElement.html +503 -497
- data/doc/TaskJuggler/RichTextFunctionExample.html +41 -35
- data/doc/TaskJuggler/RichTextFunctionHandler.html +19 -13
- data/doc/TaskJuggler/RichTextImage.html +14 -8
- data/doc/TaskJuggler/RichTextIntermediate.html +86 -80
- data/doc/TaskJuggler/RichTextParser.html +59 -53
- data/doc/TaskJuggler/RichTextScanner.html +184 -178
- data/doc/TaskJuggler/RichTextSnip.html +69 -63
- data/doc/TaskJuggler/RichTextSyntaxRules.html +416 -410
- data/doc/TaskJuggler/Scenario.html +13 -7
- data/doc/TaskJuggler/ScenarioData.html +40 -34
- data/doc/TaskJuggler/ScenarioListAttribute.html +21 -15
- data/doc/TaskJuggler/Scoreboard.html +129 -107
- data/doc/TaskJuggler/SheetHandlerBase.html +245 -239
- data/doc/TaskJuggler/SheetReceiver.html +333 -327
- data/doc/TaskJuggler/SheetSender.html +227 -221
- data/doc/TaskJuggler/Shift.html +26 -20
- data/doc/TaskJuggler/ShiftAssignment.html +45 -39
- data/doc/TaskJuggler/ShiftAssignments.html +178 -172
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +21 -15
- data/doc/TaskJuggler/ShiftScenario.html +29 -23
- data/doc/TaskJuggler/SimpleQueryExpander.html +36 -30
- data/doc/TaskJuggler/SortListAttribute.html +17 -13
- data/doc/TaskJuggler/SourceFileInfo.html +19 -13
- data/doc/TaskJuggler/StatusSheetReceiver.html +31 -25
- data/doc/TaskJuggler/StatusSheetReport.html +166 -159
- data/doc/TaskJuggler/StatusSheetSender.html +80 -74
- data/doc/TaskJuggler/StringAttribute.html +20 -14
- data/doc/TaskJuggler/SymbolAttribute.html +16 -10
- data/doc/TaskJuggler/SyntaxReference.html +231 -225
- data/doc/TaskJuggler/TOCEntry.html +46 -40
- data/doc/TaskJuggler/TSResourceRecord.html +15 -9
- data/doc/TaskJuggler/TSTaskRecord.html +16 -10
- data/doc/TaskJuggler/TableColumnDefinition.html +84 -39
- data/doc/TaskJuggler/TableOfContents.html +28 -22
- data/doc/TaskJuggler/TableReport.html +906 -866
- data/doc/TaskJuggler/Task.html +99 -93
- data/doc/TaskJuggler/TaskDependency.html +24 -18
- data/doc/TaskJuggler/TaskListAttribute.html +29 -25
- data/doc/TaskJuggler/TaskListRE.html +46 -39
- data/doc/TaskJuggler/TaskScenario.html +2218 -1965
- data/doc/TaskJuggler/TextFormatter.html +154 -148
- data/doc/TaskJuggler/TextParser.html +362 -348
- data/doc/TaskJuggler/TextParser/Pattern.html +313 -307
- data/doc/TaskJuggler/TextParser/Rule.html +147 -141
- data/doc/TaskJuggler/TextParser/StackElement.html +58 -52
- data/doc/TaskJuggler/TextParser/State.html +88 -82
- data/doc/TaskJuggler/TextParser/StateTransition.html +42 -36
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +20 -14
- data/doc/TaskJuggler/TextParser/TokenDoc.html +19 -13
- data/doc/TaskJuggler/TextReport.html +80 -74
- data/doc/TaskJuggler/TextScanner.html +284 -272
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +14 -8
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +21 -15
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +15 -9
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
- data/doc/TaskJuggler/TimeSheet.html +123 -117
- data/doc/TaskJuggler/TimeSheetReceiver.html +28 -22
- data/doc/TaskJuggler/TimeSheetRecord.html +212 -206
- data/doc/TaskJuggler/TimeSheetReport.html +206 -199
- data/doc/TaskJuggler/TimeSheetSender.html +27 -21
- data/doc/TaskJuggler/TimeSheetSummary.html +140 -134
- data/doc/TaskJuggler/TimeSheets.html +20 -14
- data/doc/TaskJuggler/Tj3AppBase.html +100 -94
- data/doc/TaskJuggler/Tj3Client.html +407 -483
- data/doc/TaskJuggler/Tj3Daemon.html +116 -107
- data/doc/TaskJuggler/Tj3SheetAppBase.html +45 -39
- data/doc/TaskJuggler/Tj3SsReceiver.html +31 -25
- data/doc/TaskJuggler/Tj3SsSender.html +64 -58
- data/doc/TaskJuggler/Tj3TsReceiver.html +31 -25
- data/doc/TaskJuggler/Tj3TsSender.html +51 -45
- data/doc/TaskJuggler/Tj3TsSummary.html +59 -53
- data/doc/TaskJuggler/TjException.html +13 -7
- data/doc/TaskJuggler/TjTime.html +444 -438
- data/doc/TaskJuggler/TjpExample.html +84 -78
- data/doc/TaskJuggler/TjpExportRE.html +356 -349
- data/doc/TaskJuggler/TjpSyntaxRules.html +4279 -4151
- data/doc/TaskJuggler/URLParameter.html +16 -10
- data/doc/TaskJuggler/UserManual.html +185 -179
- data/doc/TaskJuggler/VimSyntax.html +144 -138
- data/doc/TaskJuggler/WebServer.html +46 -39
- data/doc/TaskJuggler/WelcomePage.html +769 -0
- data/doc/TaskJuggler/WorkingHours.html +185 -179
- data/doc/TaskJuggler/WorkingHoursAttribute.html +42 -36
- data/doc/TaskJuggler/XMLBlob.html +21 -15
- data/doc/TaskJuggler/XMLComment.html +17 -11
- data/doc/TaskJuggler/XMLDocument.html +33 -27
- data/doc/TaskJuggler/XMLElement.html +97 -91
- data/doc/TaskJuggler/XMLNamedText.html +13 -7
- data/doc/TaskJuggler/XMLText.html +32 -26
- data/doc/index.html +601 -563
- data/doc/lib/AccountScenario_rb.html +5 -3
- data/doc/lib/Account_rb.html +5 -3
- data/doc/lib/Allocation_rb.html +5 -3
- data/doc/lib/AppConfig_rb.html +5 -3
- data/doc/lib/AttributeBase_rb.html +5 -3
- data/doc/lib/AttributeDefinition_rb.html +5 -3
- data/doc/lib/Attributes_rb.html +5 -3
- data/doc/lib/BatchProcessor_rb.html +5 -3
- data/doc/lib/Booking_rb.html +5 -3
- data/doc/lib/ChargeSet_rb.html +5 -3
- data/doc/lib/Charge_rb.html +5 -3
- data/doc/lib/DataCache_rb.html +5 -3
- data/doc/lib/FileList_rb.html +5 -3
- data/doc/lib/HTMLDocument_rb.html +5 -3
- data/doc/lib/IntervalList_rb.html +69 -0
- data/doc/lib/Interval_rb.html +5 -3
- data/doc/lib/Journal_rb.html +5 -3
- data/doc/lib/KeywordArray_rb.html +5 -3
- data/doc/lib/KeywordDocumentation_rb.html +5 -3
- data/doc/lib/Limits_rb.html +5 -3
- data/doc/lib/LogFile_rb.html +5 -3
- data/doc/lib/Log_rb.html +5 -3
- data/doc/lib/LogicalExpression_rb.html +5 -3
- data/doc/lib/LogicalFunction_rb.html +5 -3
- data/doc/lib/LogicalOperation_rb.html +5 -3
- data/doc/lib/MacroTable_rb.html +5 -3
- data/doc/lib/MessageHandler_rb.html +5 -3
- data/doc/lib/ProjectFileParser_rb.html +5 -3
- data/doc/lib/ProjectFileScanner_rb.html +5 -3
- data/doc/lib/Project_rb.html +5 -3
- data/doc/lib/PropertyList_rb.html +5 -3
- data/doc/lib/PropertySet_rb.html +5 -3
- data/doc/lib/PropertyTreeNode_rb.html +5 -3
- data/doc/lib/Query_rb.html +5 -3
- data/doc/lib/RTFHandlers_rb.html +5 -3
- data/doc/lib/RTFNavigator_rb.html +5 -3
- data/doc/lib/RTFQuery_rb.html +5 -3
- data/doc/lib/RTFReportLink_rb.html +5 -3
- data/doc/lib/RTFReport_rb.html +5 -3
- data/doc/lib/RTFWithQuerySupport_rb.html +5 -3
- data/doc/lib/RealFormat_rb.html +5 -3
- data/doc/lib/ResourceScenario_rb.html +5 -3
- data/doc/lib/Resource_rb.html +5 -3
- data/doc/lib/RichTextDocument_rb.html +5 -3
- data/doc/lib/RichTextElement_rb.html +5 -3
- data/doc/lib/RichTextFunctionExample_rb.html +5 -3
- data/doc/lib/RichTextFunctionHandler_rb.html +5 -3
- data/doc/lib/RichTextParser_rb.html +5 -3
- data/doc/lib/RichTextScanner_rb.html +5 -3
- data/doc/lib/RichTextSnip_rb.html +5 -3
- data/doc/lib/RichTextSyntaxRules_rb.html +5 -3
- data/doc/lib/RichText_rb.html +5 -3
- data/doc/lib/RuntimeConfig_rb.html +5 -3
- data/doc/lib/ScenarioData_rb.html +5 -3
- data/doc/lib/Scenario_rb.html +5 -3
- data/doc/lib/Scoreboard_rb.html +7 -3
- data/doc/lib/SheetHandlerBase_rb.html +5 -3
- data/doc/lib/SheetReceiver_rb.html +5 -3
- data/doc/lib/SheetSender_rb.html +5 -3
- data/doc/lib/ShiftAssignments_rb.html +5 -3
- data/doc/lib/ShiftScenario_rb.html +5 -3
- data/doc/lib/Shift_rb.html +5 -3
- data/doc/lib/SimpleQueryExpander_rb.html +5 -3
- data/doc/lib/SourceFileInfo_rb.html +5 -3
- data/doc/lib/StatusSheetReceiver_rb.html +5 -3
- data/doc/lib/StatusSheetSender_rb.html +5 -3
- data/doc/lib/SyntaxReference_rb.html +5 -3
- data/doc/lib/TOCEntry_rb.html +5 -3
- data/doc/lib/TableColumnDefinition_rb.html +5 -3
- data/doc/lib/TableOfContents_rb.html +5 -3
- data/doc/lib/TaskDependency_rb.html +5 -3
- data/doc/lib/TaskJuggler_rb.html +5 -3
- data/doc/lib/TaskScenario_rb.html +5 -3
- data/doc/lib/Task_rb.html +5 -3
- data/doc/lib/TextFormatter_rb.html +6 -4
- data/doc/lib/TextParser/Pattern_rb.html +5 -3
- data/doc/lib/TextParser/Rule_rb.html +5 -3
- data/doc/lib/TextParser/StackElement_rb.html +5 -3
- data/doc/lib/TextParser/State_rb.html +6 -4
- data/doc/lib/TextParser/TokenDoc_rb.html +5 -3
- data/doc/lib/TextParser_rb.html +5 -3
- data/doc/lib/TextScanner_rb.html +5 -3
- data/doc/lib/TimeSheetReceiver_rb.html +5 -3
- data/doc/lib/TimeSheetSender_rb.html +5 -3
- data/doc/lib/TimeSheetSummary_rb.html +6 -4
- data/doc/lib/TimeSheets_rb.html +5 -3
- data/doc/lib/Tj3AppBase_rb.html +5 -3
- data/doc/lib/Tj3Config_rb.html +5 -3
- data/doc/lib/Tj3SheetAppBase_rb.html +5 -3
- data/doc/lib/TjException_rb.html +5 -3
- data/doc/lib/TjTime_rb.html +5 -3
- data/doc/lib/TjpExample_rb.html +5 -3
- data/doc/lib/TjpSyntaxRules_rb.html +5 -3
- data/doc/lib/URLParameter_rb.html +5 -3
- data/doc/lib/UTF8String_rb.html +5 -3
- data/doc/lib/UserManual_rb.html +5 -3
- data/doc/lib/VimSyntax_rb.html +6 -4
- data/doc/lib/WorkingHours_rb.html +5 -3
- data/doc/lib/XMLDocument_rb.html +5 -3
- data/doc/lib/XMLElement_rb.html +5 -3
- data/doc/lib/daemon/Daemon_rb.html +5 -3
- data/doc/lib/daemon/ProcessIntercom_rb.html +7 -3
- data/doc/lib/daemon/ProjectBroker_rb.html +5 -3
- data/doc/lib/daemon/ProjectServer_rb.html +5 -3
- data/doc/lib/daemon/ReportServer_rb.html +5 -3
- data/doc/lib/daemon/ReportServlet_rb.html +69 -0
- data/doc/lib/daemon/WebServer_rb.html +9 -3
- data/doc/lib/daemon/WelcomePage_rb.html +71 -0
- data/doc/lib/deep_copy_rb.html +5 -3
- data/doc/lib/reports/CSVFile_rb.html +5 -3
- data/doc/lib/reports/CollisionDetector_rb.html +5 -3
- data/doc/lib/reports/ColumnTable_rb.html +5 -3
- data/doc/lib/reports/GanttChart_rb.html +5 -3
- data/doc/lib/reports/GanttContainer_rb.html +5 -3
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +5 -3
- data/doc/lib/reports/GanttHeader_rb.html +5 -3
- data/doc/lib/reports/GanttLine_rb.html +5 -3
- data/doc/lib/reports/GanttLoadStack_rb.html +5 -3
- data/doc/lib/reports/GanttMilestone_rb.html +5 -3
- data/doc/lib/reports/GanttRouter_rb.html +5 -3
- data/doc/lib/reports/GanttTaskBar_rb.html +5 -3
- data/doc/lib/reports/HTMLGraphics_rb.html +5 -3
- data/doc/lib/reports/Navigator_rb.html +5 -3
- data/doc/lib/reports/NikuReport_rb.html +5 -3
- data/doc/lib/reports/ReportBase_rb.html +5 -3
- data/doc/lib/reports/ReportContext_rb.html +5 -3
- data/doc/lib/reports/ReportTableCell_rb.html +5 -3
- data/doc/lib/reports/ReportTableColumn_rb.html +5 -3
- data/doc/lib/reports/ReportTableLegend_rb.html +5 -3
- data/doc/lib/reports/ReportTableLine_rb.html +5 -3
- data/doc/lib/reports/ReportTable_rb.html +5 -3
- data/doc/lib/reports/Report_rb.html +5 -3
- data/doc/lib/reports/ResourceListRE_rb.html +5 -3
- data/doc/lib/reports/StatusSheetReport_rb.html +5 -3
- data/doc/lib/reports/TableReport_rb.html +5 -3
- data/doc/lib/reports/TaskListRE_rb.html +5 -3
- data/doc/lib/reports/TextReport_rb.html +5 -3
- data/doc/lib/reports/TimeSheetReport_rb.html +5 -3
- data/doc/lib/reports/TjpExportRE_rb.html +5 -3
- data/doc/lib/{taskjuggler3_rb.html → tj3_rb.html} +7 -5
- data/doc/lib/tj3client_rb.html +5 -3
- data/doc/lib/tj3d_rb.html +6 -4
- data/doc/lib/tj3man_rb.html +5 -3
- data/doc/lib/tj3ss_receiver_rb.html +5 -3
- data/doc/lib/tj3ss_sender_rb.html +5 -3
- data/doc/lib/tj3ts_receiver_rb.html +5 -3
- data/doc/lib/tj3ts_sender_rb.html +5 -3
- data/doc/lib/tj3ts_summary_rb.html +5 -3
- data/examples/tutorial.tjp +13 -5
- data/gem_spec.rb +3 -0
- data/lib/Account.rb +2 -1
- data/lib/AccountScenario.rb +2 -1
- data/lib/Allocation.rb +2 -1
- data/lib/AppConfig.rb +2 -1
- data/lib/AttributeBase.rb +19 -5
- data/lib/AttributeDefinition.rb +2 -1
- data/lib/Attributes.rb +49 -38
- data/lib/BatchProcessor.rb +2 -1
- data/lib/Booking.rb +2 -1
- data/lib/Charge.rb +2 -1
- data/lib/ChargeSet.rb +2 -1
- data/lib/DataCache.rb +15 -1
- data/lib/FileList.rb +2 -1
- data/lib/HTMLDocument.rb +2 -1
- data/lib/Interval.rb +2 -1
- data/lib/IntervalList.rb +100 -0
- data/lib/Journal.rb +8 -2
- data/lib/KeywordArray.rb +2 -1
- data/lib/KeywordDocumentation.rb +10 -6
- data/lib/Limits.rb +2 -1
- data/lib/Log.rb +3 -2
- data/lib/LogFile.rb +2 -1
- data/lib/LogicalExpression.rb +2 -1
- data/lib/LogicalFunction.rb +2 -1
- data/lib/LogicalOperation.rb +2 -1
- data/lib/MacroTable.rb +2 -1
- data/lib/MessageHandler.rb +2 -1
- data/lib/Project.rb +92 -25
- data/lib/ProjectFileParser.rb +7 -2
- data/lib/ProjectFileScanner.rb +2 -1
- data/lib/PropertyList.rb +2 -1
- data/lib/PropertySet.rb +2 -6
- data/lib/PropertyTreeNode.rb +22 -44
- data/lib/Query.rb +32 -13
- data/lib/RTFHandlers.rb +2 -1
- data/lib/RTFNavigator.rb +2 -1
- data/lib/RTFQuery.rb +3 -2
- data/lib/RTFReport.rb +2 -1
- data/lib/RTFReportLink.rb +2 -1
- data/lib/RTFWithQuerySupport.rb +2 -1
- data/lib/RealFormat.rb +2 -1
- data/lib/Resource.rb +2 -1
- data/lib/ResourceScenario.rb +35 -14
- data/lib/RichText.rb +2 -1
- data/lib/RichTextDocument.rb +2 -1
- data/lib/RichTextElement.rb +2 -1
- data/lib/RichTextFunctionExample.rb +2 -1
- data/lib/RichTextFunctionHandler.rb +2 -1
- data/lib/RichTextParser.rb +2 -1
- data/lib/RichTextScanner.rb +2 -1
- data/lib/RichTextSnip.rb +2 -1
- data/lib/RichTextSyntaxRules.rb +2 -1
- data/lib/RuntimeConfig.rb +2 -1
- data/lib/Scenario.rb +2 -1
- data/lib/ScenarioData.rb +2 -1
- data/lib/Scoreboard.rb +27 -8
- data/lib/SheetHandlerBase.rb +2 -1
- data/lib/SheetReceiver.rb +2 -1
- data/lib/SheetSender.rb +2 -1
- data/lib/Shift.rb +2 -1
- data/lib/ShiftAssignments.rb +2 -1
- data/lib/ShiftScenario.rb +2 -1
- data/lib/SimpleQueryExpander.rb +2 -1
- data/lib/SourceFileInfo.rb +2 -1
- data/lib/StatusSheetReceiver.rb +2 -1
- data/lib/StatusSheetSender.rb +2 -1
- data/lib/SyntaxReference.rb +2 -1
- data/lib/TOCEntry.rb +2 -1
- data/lib/TableColumnDefinition.rb +9 -2
- data/lib/TableOfContents.rb +2 -1
- data/lib/Task.rb +2 -1
- data/lib/TaskDependency.rb +2 -1
- data/lib/TaskJuggler.rb +8 -6
- data/lib/TaskScenario.rb +337 -153
- data/lib/TextFormatter.rb +3 -2
- data/lib/TextParser.rb +7 -2
- data/lib/TextParser/Pattern.rb +2 -1
- data/lib/TextParser/Rule.rb +2 -1
- data/lib/TextParser/StackElement.rb +2 -1
- data/lib/TextParser/State.rb +3 -2
- data/lib/TextParser/TokenDoc.rb +2 -1
- data/lib/TextScanner.rb +12 -5
- data/lib/TimeSheetReceiver.rb +2 -1
- data/lib/TimeSheetSender.rb +2 -1
- data/lib/TimeSheetSummary.rb +3 -2
- data/lib/TimeSheets.rb +2 -1
- data/lib/Tj3AppBase.rb +6 -5
- data/lib/Tj3Config.rb +5 -4
- data/lib/Tj3SheetAppBase.rb +2 -1
- data/lib/TjException.rb +2 -1
- data/lib/TjTime.rb +2 -1
- data/lib/TjpExample.rb +2 -1
- data/lib/TjpSyntaxRules.rb +264 -65
- data/lib/URLParameter.rb +2 -1
- data/lib/UTF8String.rb +2 -1
- data/lib/UserManual.rb +2 -1
- data/lib/VimSyntax.rb +3 -2
- data/lib/WorkingHours.rb +2 -1
- data/lib/XMLDocument.rb +2 -1
- data/lib/XMLElement.rb +2 -1
- data/lib/daemon/Daemon.rb +3 -1
- data/lib/daemon/ProcessIntercom.rb +3 -1
- data/lib/daemon/ProjectBroker.rb +84 -32
- data/lib/daemon/ProjectServer.rb +5 -3
- data/lib/daemon/ReportServer.rb +8 -5
- data/lib/daemon/ReportServlet.rb +166 -0
- data/lib/daemon/WebServer.rb +6 -150
- data/lib/daemon/WelcomePage.rb +80 -0
- data/lib/deep_copy.rb +2 -1
- data/lib/reports/CSVFile.rb +2 -1
- data/lib/reports/CollisionDetector.rb +2 -1
- data/lib/reports/ColumnTable.rb +2 -1
- data/lib/reports/GanttChart.rb +2 -1
- data/lib/reports/GanttContainer.rb +3 -4
- data/lib/reports/GanttHeader.rb +2 -1
- data/lib/reports/GanttHeaderScaleItem.rb +2 -1
- data/lib/reports/GanttLine.rb +12 -10
- data/lib/reports/GanttLoadStack.rb +2 -1
- data/lib/reports/GanttMilestone.rb +3 -3
- data/lib/reports/GanttRouter.rb +4 -1
- data/lib/reports/GanttTaskBar.rb +9 -7
- data/lib/reports/HTMLGraphics.rb +2 -1
- data/lib/reports/Navigator.rb +2 -1
- data/lib/reports/NikuReport.rb +79 -49
- data/lib/reports/Report.rb +42 -10
- data/lib/reports/ReportBase.rb +2 -1
- data/lib/reports/ReportContext.rb +2 -1
- data/lib/reports/ReportTable.rb +2 -1
- data/lib/reports/ReportTableCell.rb +63 -28
- data/lib/reports/ReportTableColumn.rb +2 -1
- data/lib/reports/ReportTableLegend.rb +5 -5
- data/lib/reports/ReportTableLine.rb +2 -1
- data/lib/reports/ResourceListRE.rb +2 -1
- data/lib/reports/StatusSheetReport.rb +4 -2
- data/lib/reports/TableReport.rb +42 -38
- data/lib/reports/TaskListRE.rb +4 -2
- data/lib/reports/TextReport.rb +2 -1
- data/lib/reports/TimeSheetReport.rb +4 -2
- data/lib/reports/TjpExportRE.rb +4 -2
- data/lib/{taskjuggler3.rb → tj3.rb} +6 -5
- data/lib/tj3client.rb +19 -36
- data/lib/tj3d.rb +6 -2
- data/lib/tj3man.rb +4 -3
- data/lib/tj3ss_receiver.rb +2 -1
- data/lib/tj3ss_sender.rb +2 -1
- data/lib/tj3ts_receiver.rb +2 -1
- data/lib/tj3ts_sender.rb +2 -1
- data/lib/tj3ts_summary.rb +2 -1
- data/manual/Day_To_Day_Juggling +36 -0
- data/manual/How_To_Contribute +9 -4
- data/manual/Installation +10 -3
- data/manual/TaskJuggler_Internals +0 -2
- data/manual/Tutorial +25 -3
- data/prj_cfg.rb +4 -2
- data/spec/IntervalList_spec.rb +138 -0
- data/spec/ProjectBroker_spec.rb +133 -0
- data/tasks/changelog.rake +41 -24
- data/tasks/csts.rake +1 -0
- data/tasks/gem.rake +1 -0
- data/tasks/rcov.rake +1 -1
- data/tasks/spec.rake +7 -0
- data/tasks/test.rake +1 -0
- data/test/MessageChecker.rb +2 -1
- data/test/TestSuite/CSV-Reports/niku.tjp +70 -0
- data/test/TestSuite/CSV-Reports/{celltext-Reference.csv → refs/celltext.csv} +0 -0
- data/test/TestSuite/CSV-Reports/refs/niku.csv +5 -0
- data/test/TestSuite/CSV-Reports/{resourcereport-Reference.csv → refs/resourcereport.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{resourcereport_with_tasks-Reference.csv → refs/resourcereport_with_tasks.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortByTree-Reference.csv → refs/sortByTree.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_duration.down-Reference.csv → refs/sortBy_duration.down.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_effort.up-Reference.csv → refs/sortBy_effort.up.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_plan.start.down-Reference.csv → refs/sortBy_plan.start.down.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{taskreport-Reference.csv → refs/taskreport.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{taskreport_with_resources-Reference.csv → refs/taskreport_with_resources.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{weekly-Reference.csv → refs/weekly.csv} +0 -0
- data/test/TestSuite/HTML-Reports/Alerts.tjp +12 -0
- data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Container-2.tjp +1 -2
- data/test/TestSuite/Scheduler/Correct/InheritedAttributes.tjp +77 -0
- data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +40 -0
- data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +2 -2
- data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +3 -4
- data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +2 -2
- data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +8 -7
- data/test/TestSuite/Scheduler/Errors/onend_wrong_direction.tjp +19 -0
- data/test/TestSuite/Scheduler/Errors/onstart_wrong_direction.tjp +18 -0
- data/test/TestSuite/Scheduler/Errors/task_depend_multi.tjp +1 -2
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/boss_2002-03-02.tji +46 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/dev2_2002-03-02.tji +22 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/resources.yml +11 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/acceptable_intervals +1 -0
- data/test/TestSuite/StatusSheets/sender.log +256 -0
- data/test/TestSuite/StatusSheets/statussheets.log +9 -0
- data/test/TestSuite/StatusSheets/tj3d.log +395 -0
- data/test/TestSuite/Syntax/Correct/Limits-1.tjp +2 -0
- data/test/TestSuite/Syntax/Correct/Niku.tjp +6 -1
- data/test/TestSuite/Syntax/Correct/Scenario.tjp +4 -1
- data/test/TestSuite/Syntax/Correct/Supplement.tjp +12 -5
- data/test/TestSuite/Syntax/Correct/TaskPrefix.tji +3 -0
- data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +24 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -2
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +15 -5
- data/test/all.rb +2 -4
- data/test/test_BatchProcessor.rb +2 -1
- data/test/test_CSV-Reports.rb +34 -23
- data/test/test_CSVFile.rb +2 -1
- data/test/test_CollisionDetector.rb +3 -2
- data/test/test_Journal.rb +2 -1
- data/test/test_Limits.rb +2 -1
- data/test/test_LogicalExpression.rb +2 -1
- data/test/test_MacroTable.rb +2 -1
- data/test/test_Project.rb +3 -2
- data/test/test_ProjectFileScanner.rb +2 -1
- data/test/test_PropertySet.rb +2 -1
- data/test/test_Query.rb +2 -1
- data/test/test_RealFormat.rb +2 -1
- data/test/test_ReportGenerator.rb +2 -1
- data/test/test_RichText.rb +2 -1
- data/test/test_Scheduler.rb +2 -1
- data/test/test_ShiftAssignments.rb +2 -1
- data/test/test_SimpleQueryExpander.rb +2 -1
- data/test/test_Syntax.rb +2 -1
- data/test/test_TextFormatter.rb +3 -2
- data/test/test_TjTime.rb +2 -1
- data/test/test_TjpExample.rb +2 -1
- data/test/test_URLParameter.rb +2 -1
- data/test/test_UTF8String.rb +2 -1
- data/test/test_WorkingHours.rb +2 -1
- data/test/test_deep_copy.rb +2 -1
- metadata +74 -20
- data/doc/StringIO.html +0 -595
- data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +0 -46
- data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +0 -51
- data/test/TestSuite/Scheduler/Errors/multiple_durations.tjp +0 -11
|
@@ -133,6 +133,8 @@
|
|
|
133
133
|
|
|
134
134
|
<li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
|
|
135
135
|
|
|
136
|
+
<li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
|
|
137
|
+
|
|
136
138
|
<li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
|
|
137
139
|
|
|
138
140
|
<li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
|
|
@@ -211,6 +213,8 @@
|
|
|
211
213
|
|
|
212
214
|
<li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
|
|
213
215
|
|
|
216
|
+
<li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
|
|
217
|
+
|
|
214
218
|
<li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
|
|
215
219
|
|
|
216
220
|
<li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
|
|
@@ -243,6 +247,8 @@
|
|
|
243
247
|
|
|
244
248
|
<li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
|
|
245
249
|
|
|
250
|
+
<li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
|
|
251
|
+
|
|
246
252
|
<li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
|
|
247
253
|
|
|
248
254
|
<li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
|
|
@@ -523,6 +529,8 @@
|
|
|
523
529
|
|
|
524
530
|
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
|
525
531
|
|
|
532
|
+
<li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
|
|
533
|
+
|
|
526
534
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
|
527
535
|
|
|
528
536
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
|
@@ -549,8 +557,6 @@
|
|
|
549
557
|
|
|
550
558
|
<li><a href="../String.html">String</a></li>
|
|
551
559
|
|
|
552
|
-
<li><a href="../StringIO.html">StringIO</a></li>
|
|
553
|
-
|
|
554
560
|
</ul>
|
|
555
561
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
|
556
562
|
</div>
|
|
@@ -760,32 +766,32 @@ manage the loaded projects. There is one entry for each project in the
|
|
|
760
766
|
<div class="method-source-code"
|
|
761
767
|
id="new-source">
|
|
762
768
|
<pre>
|
|
763
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
769
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line 573</span>
|
|
770
|
+
573: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">tag</span>)
|
|
771
|
+
574: <span class="ruby-comment cmt"># Before we know the project ID we use this tag to uniquely identify the</span>
|
|
772
|
+
575: <span class="ruby-comment cmt"># project.</span>
|
|
773
|
+
576: <span class="ruby-ivar">@tag</span> = <span class="ruby-identifier">tag</span>
|
|
774
|
+
577: <span class="ruby-comment cmt"># Array of [ workingDir, tjp file, ... tji files ]</span>
|
|
775
|
+
578: <span class="ruby-ivar">@files</span> = <span class="ruby-keyword kw">nil</span>
|
|
776
|
+
579: <span class="ruby-comment cmt"># The authentication key for the ProjectServer process.</span>
|
|
777
|
+
580: <span class="ruby-ivar">@authKey</span> = <span class="ruby-keyword kw">nil</span>
|
|
778
|
+
581: <span class="ruby-comment cmt"># The DRb URI where the ProjectServer process is listening.</span>
|
|
779
|
+
582: <span class="ruby-ivar">@uri</span> = <span class="ruby-keyword kw">nil</span>
|
|
780
|
+
583: <span class="ruby-comment cmt"># The ID of the project.</span>
|
|
781
|
+
584: <span class="ruby-ivar">@id</span> = <span class="ruby-keyword kw">nil</span>
|
|
782
|
+
585: <span class="ruby-comment cmt"># The state of the project. :new, :loading, :ready, :failed</span>
|
|
783
|
+
586: <span class="ruby-comment cmt"># and :obsolete are supported.</span>
|
|
784
|
+
587: <span class="ruby-ivar">@state</span> = <span class="ruby-value">:new</span>
|
|
785
|
+
588: <span class="ruby-comment cmt"># A time stamp when the project became ready for service.</span>
|
|
786
|
+
589: <span class="ruby-ivar">@readySince</span> = <span class="ruby-keyword kw">nil</span>
|
|
787
|
+
590: <span class="ruby-comment cmt"># True if any of the input files have been modified after the load.</span>
|
|
788
|
+
591: <span class="ruby-ivar">@modified</span> = <span class="ruby-keyword kw">false</span>
|
|
789
|
+
592: <span class="ruby-comment cmt"># True if the reload has already been triggered.</span>
|
|
790
|
+
593: <span class="ruby-ivar">@reloading</span> = <span class="ruby-keyword kw">false</span>
|
|
791
|
+
594:
|
|
792
|
+
595: <span class="ruby-ivar">@log</span> = <span class="ruby-constant">LogFile</span>.<span class="ruby-identifier">instance</span>
|
|
793
|
+
596: <span class="ruby-ivar">@projectServer</span> = <span class="ruby-keyword kw">nil</span>
|
|
794
|
+
597: <span class="ruby-keyword kw">end</span></pre>
|
|
789
795
|
</div>
|
|
790
796
|
|
|
791
797
|
</div>
|
|
@@ -822,20 +828,20 @@ manage the loaded projects. There is one entry for each project in the
|
|
|
822
828
|
<div class="method-source-code"
|
|
823
829
|
id="ping-source">
|
|
824
830
|
<pre>
|
|
825
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
831
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line 599</span>
|
|
832
|
+
599: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ping</span>
|
|
833
|
+
600: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@uri</span>
|
|
834
|
+
601:
|
|
835
|
+
602: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"Sending ping to ProjectServer #{@uri}"</span>)
|
|
836
|
+
603: <span class="ruby-keyword kw">begin</span>
|
|
837
|
+
604: <span class="ruby-ivar">@projectServer</span> = <span class="ruby-constant">DRbObject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@uri</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@projectServer</span>
|
|
838
|
+
605: <span class="ruby-ivar">@projectServer</span>.<span class="ruby-identifier">ping</span>(<span class="ruby-ivar">@authKey</span>)
|
|
839
|
+
606: <span class="ruby-keyword kw">rescue</span>
|
|
840
|
+
607: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">"Ping failed: #{$!}"</span>)
|
|
841
|
+
608: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
|
|
842
|
+
609: <span class="ruby-keyword kw">end</span>
|
|
843
|
+
610: <span class="ruby-keyword kw">true</span>
|
|
844
|
+
611: <span class="ruby-keyword kw">end</span></pre>
|
|
839
845
|
</div>
|
|
840
846
|
|
|
841
847
|
</div>
|
|
@@ -869,19 +875,19 @@ href="ProjectServer.html">ProjectServer</a>.
|
|
|
869
875
|
<div class="method-source-code"
|
|
870
876
|
id="terminate-erver-source">
|
|
871
877
|
<pre>
|
|
872
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
878
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line 614</span>
|
|
879
|
+
614: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">terminateServer</span>
|
|
880
|
+
615: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@uri</span>
|
|
881
|
+
616:
|
|
882
|
+
617: <span class="ruby-keyword kw">begin</span>
|
|
883
|
+
618: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"Sending termination request to ProjectServer #{@uri}"</span>)
|
|
884
|
+
619: <span class="ruby-ivar">@projectServer</span> = <span class="ruby-constant">DRbObject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@uri</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@projectServer</span>
|
|
885
|
+
620: <span class="ruby-ivar">@projectServer</span>.<span class="ruby-identifier">terminate</span>(<span class="ruby-ivar">@authKey</span>)
|
|
886
|
+
621: <span class="ruby-keyword kw">rescue</span>
|
|
887
|
+
622: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">"Termination of ProjectServer failed: #{$!}"</span>)
|
|
888
|
+
623: <span class="ruby-keyword kw">end</span>
|
|
889
|
+
624: <span class="ruby-ivar">@uri</span> = <span class="ruby-keyword kw">nil</span>
|
|
890
|
+
625: <span class="ruby-keyword kw">end</span></pre>
|
|
885
891
|
</div>
|
|
886
892
|
|
|
887
893
|
</div>
|
|
@@ -914,11 +920,11 @@ This is used to generate the status table.
|
|
|
914
920
|
<div class="method-source-code"
|
|
915
921
|
id="to-s-source">
|
|
916
922
|
<pre>
|
|
917
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
923
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line 628</span>
|
|
924
|
+
628: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">format</span>, <span class="ruby-identifier">index</span>)
|
|
925
|
+
629: <span class="ruby-identifier">sprintf</span>(<span class="ruby-identifier">format</span>, <span class="ruby-identifier">index</span>, <span class="ruby-ivar">@id</span>, <span class="ruby-ivar">@state</span>, <span class="ruby-ivar">@modified</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'*'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">' '</span>,
|
|
926
|
+
630: <span class="ruby-ivar">@readySince</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@readySince</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-value str">'%Y-%m-%d %H:%M:%S'</span>) <span class="ruby-operator">:</span> <span class="ruby-value str">''</span>)
|
|
927
|
+
631: <span class="ruby-keyword kw">end</span></pre>
|
|
922
928
|
</div>
|
|
923
929
|
|
|
924
930
|
</div>
|
|
@@ -152,6 +152,8 @@
|
|
|
152
152
|
|
|
153
153
|
<li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
|
|
154
154
|
|
|
155
|
+
<li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
|
|
156
|
+
|
|
155
157
|
<li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
|
|
156
158
|
|
|
157
159
|
<li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
|
|
@@ -230,6 +232,8 @@
|
|
|
230
232
|
|
|
231
233
|
<li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
|
|
232
234
|
|
|
235
|
+
<li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
|
|
236
|
+
|
|
233
237
|
<li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
|
|
234
238
|
|
|
235
239
|
<li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
|
|
@@ -262,6 +266,8 @@
|
|
|
262
266
|
|
|
263
267
|
<li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
|
|
264
268
|
|
|
269
|
+
<li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
|
|
270
|
+
|
|
265
271
|
<li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
|
|
266
272
|
|
|
267
273
|
<li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
|
|
@@ -542,6 +548,8 @@
|
|
|
542
548
|
|
|
543
549
|
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
|
544
550
|
|
|
551
|
+
<li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
|
|
552
|
+
|
|
545
553
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
|
546
554
|
|
|
547
555
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
|
@@ -568,8 +576,6 @@
|
|
|
568
576
|
|
|
569
577
|
<li><a href="../String.html">String</a></li>
|
|
570
578
|
|
|
571
|
-
<li><a href="../StringIO.html">StringIO</a></li>
|
|
572
|
-
|
|
573
579
|
</ul>
|
|
574
580
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
|
575
581
|
</div>
|
|
@@ -654,7 +660,7 @@ permit direct access to the <a href="ProjectServer.html">ProjectServer</a>.
|
|
|
654
660
|
<div class="method-heading">
|
|
655
661
|
|
|
656
662
|
<span class="method-name">new</span><span
|
|
657
|
-
class="method-args">(projectData = nil, logConsole = false)</span>
|
|
663
|
+
class="method-args">(daemonAuthKey, projectData = nil, logConsole = false)</span>
|
|
658
664
|
<span class="method-click-advice">click to toggle source</span>
|
|
659
665
|
|
|
660
666
|
</div>
|
|
@@ -668,97 +674,98 @@ permit direct access to the <a href="ProjectServer.html">ProjectServer</a>.
|
|
|
668
674
|
<div class="method-source-code"
|
|
669
675
|
id="new-source">
|
|
670
676
|
<pre>
|
|
671
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
69: <span class="ruby-ivar">@lastPing</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
|
|
677
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 41</span>
|
|
678
|
+
41: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">daemonAuthKey</span>, <span class="ruby-identifier">projectData</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">logConsole</span> = <span class="ruby-keyword kw">false</span>)
|
|
679
|
+
42: <span class="ruby-ivar">@daemonAuthKey</span> = <span class="ruby-identifier">daemonAuthKey</span>
|
|
680
|
+
43: <span class="ruby-ivar">@projectData</span> = <span class="ruby-identifier">projectData</span>
|
|
681
|
+
44: <span class="ruby-comment cmt"># Since we are still in the ProjectBroker process, the current DRb</span>
|
|
682
|
+
45: <span class="ruby-comment cmt"># server is still the ProjectBroker DRb server.</span>
|
|
683
|
+
46: <span class="ruby-ivar">@daemonURI</span> = <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">current_server</span>.<span class="ruby-identifier">uri</span>
|
|
684
|
+
47: <span class="ruby-comment cmt"># Used later to store the DRbObject of the ProjectBroker.</span>
|
|
685
|
+
48: <span class="ruby-ivar">@daemon</span> = <span class="ruby-keyword kw">nil</span>
|
|
686
|
+
49: <span class="ruby-identifier">initIntercom</span>
|
|
687
|
+
50:
|
|
688
|
+
51: <span class="ruby-ivar">@logConsole</span> = <span class="ruby-identifier">logConsole</span>
|
|
689
|
+
52: <span class="ruby-ivar">@pid</span> = <span class="ruby-keyword kw">nil</span>
|
|
690
|
+
53: <span class="ruby-ivar">@uri</span> = <span class="ruby-keyword kw">nil</span>
|
|
691
|
+
54:
|
|
692
|
+
55: <span class="ruby-comment cmt"># A reference to the TaskJuggler object that holds the project data.</span>
|
|
693
|
+
56: <span class="ruby-ivar">@tj</span> = <span class="ruby-keyword kw">nil</span>
|
|
694
|
+
57: <span class="ruby-comment cmt"># The current state of the project.</span>
|
|
695
|
+
58: <span class="ruby-ivar">@state</span> = <span class="ruby-value">:new</span>
|
|
696
|
+
59: <span class="ruby-comment cmt"># A time stamp when the last @state update happened.</span>
|
|
697
|
+
60: <span class="ruby-ivar">@stateUpdated</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
|
|
698
|
+
61: <span class="ruby-comment cmt"># A lock to protect access to @state</span>
|
|
699
|
+
62: <span class="ruby-ivar">@stateLock</span> = <span class="ruby-constant">Monitor</span>.<span class="ruby-identifier">new</span>
|
|
700
|
+
63:
|
|
701
|
+
64: <span class="ruby-comment cmt"># A Queue to asynchronously generate new ReportServer objects.</span>
|
|
702
|
+
65: <span class="ruby-ivar">@reportServerRequests</span> = <span class="ruby-constant">Queue</span>.<span class="ruby-identifier">new</span>
|
|
703
|
+
66:
|
|
704
|
+
67: <span class="ruby-comment cmt"># A list of active ReportServer objects</span>
|
|
705
|
+
68: <span class="ruby-ivar">@reportServers</span> = []
|
|
706
|
+
69: <span class="ruby-ivar">@reportServers</span>.<span class="ruby-identifier">extend</span>(<span class="ruby-constant">MonitorMixin</span>)
|
|
702
707
|
70:
|
|
703
|
-
71: <span class="ruby-
|
|
704
|
-
72:
|
|
705
|
-
73: <span class="ruby-comment cmt">#
|
|
706
|
-
74: <span class="ruby-comment cmt">#
|
|
707
|
-
75: <span class="ruby-comment cmt">#
|
|
708
|
-
76: <span class="ruby-comment cmt">#
|
|
709
|
-
77: <span class="ruby-
|
|
710
|
-
78:
|
|
711
|
-
79: <span class="ruby-
|
|
712
|
-
80:
|
|
713
|
-
81: <span class="ruby-keyword kw">
|
|
714
|
-
82: <span class="ruby-
|
|
715
|
-
83:
|
|
716
|
-
84:
|
|
717
|
-
85:
|
|
718
|
-
86: <span class="ruby-
|
|
719
|
-
87: <span class="ruby-
|
|
720
|
-
88:
|
|
721
|
-
89:
|
|
722
|
-
90:
|
|
723
|
-
91:
|
|
724
|
-
92: <span class="ruby-
|
|
725
|
-
93: <span class="ruby-identifier">
|
|
726
|
-
94: <span class="ruby-
|
|
727
|
-
95:
|
|
728
|
-
96:
|
|
729
|
-
97:
|
|
730
|
-
98: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">
|
|
731
|
-
99: <span class="ruby-keyword kw">
|
|
732
|
-
100:
|
|
733
|
-
101: <span class="ruby-
|
|
734
|
-
102:
|
|
735
|
-
103: <span class="ruby-
|
|
736
|
-
104: <span class="ruby-identifier">
|
|
737
|
-
105:
|
|
738
|
-
106: <span class="ruby-
|
|
739
|
-
107:
|
|
740
|
-
108: <span class="ruby-
|
|
741
|
-
109: <span class="ruby-comment cmt">#
|
|
742
|
-
110: <span class="ruby-
|
|
743
|
-
111: <span class="ruby-
|
|
744
|
-
112:
|
|
745
|
-
113: <span class="ruby-
|
|
746
|
-
114:
|
|
747
|
-
115: <span class="ruby-
|
|
748
|
-
116: <span class="ruby-
|
|
749
|
-
117:
|
|
750
|
-
118: <span class="ruby-identifier"
|
|
751
|
-
119:
|
|
752
|
-
120: <span class="ruby-
|
|
753
|
-
121:
|
|
754
|
-
122:
|
|
755
|
-
123: <span class="ruby-
|
|
756
|
-
124:
|
|
757
|
-
125: <span class="ruby-
|
|
758
|
-
126: <span class="ruby-
|
|
759
|
-
127: <span class="ruby-identifier">
|
|
760
|
-
128:
|
|
761
|
-
129:
|
|
708
|
+
71: <span class="ruby-ivar">@lastPing</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
|
|
709
|
+
72:
|
|
710
|
+
73: <span class="ruby-comment cmt"># We've started a DRb server before. This will continue to live somewhat</span>
|
|
711
|
+
74: <span class="ruby-comment cmt"># in the child. All attempts to create a DRb connection from the child</span>
|
|
712
|
+
75: <span class="ruby-comment cmt"># to the parent will end up in the child again. So we use a Pipe to</span>
|
|
713
|
+
76: <span class="ruby-comment cmt"># communicate the URI of the child DRb server to the parent. The</span>
|
|
714
|
+
77: <span class="ruby-comment cmt"># communication from the parent to the child is not affected by the</span>
|
|
715
|
+
78: <span class="ruby-comment cmt"># zombie DRb server in the child process.</span>
|
|
716
|
+
79: <span class="ruby-identifier">rd</span>, <span class="ruby-identifier">wr</span> = <span class="ruby-constant">IO</span>.<span class="ruby-identifier">pipe</span>
|
|
717
|
+
80:
|
|
718
|
+
81: <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@pid</span> = <span class="ruby-identifier">fork</span>) <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
|
|
719
|
+
82: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-value str">'ProjectServer fork failed'</span>)
|
|
720
|
+
83: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@pid</span>.<span class="ruby-identifier">nil?</span>
|
|
721
|
+
84: <span class="ruby-comment cmt"># This is the child</span>
|
|
722
|
+
85: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@logConsole</span>
|
|
723
|
+
86: <span class="ruby-comment cmt"># If the Broker wasn't daemonized, log stdout and stderr to PID</span>
|
|
724
|
+
87: <span class="ruby-comment cmt"># specific files.</span>
|
|
725
|
+
88: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">reopen</span>(<span class="ruby-node">"tj3d.ps.#{$$}.stderr"</span>, <span class="ruby-value str">'w'</span>)
|
|
726
|
+
89: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">reopen</span>(<span class="ruby-node">"tj3d.ps.#{$$}.stdout"</span>, <span class="ruby-value str">'w'</span>)
|
|
727
|
+
90: <span class="ruby-keyword kw">end</span>
|
|
728
|
+
91: <span class="ruby-keyword kw">begin</span>
|
|
729
|
+
92: <span class="ruby-identifier">$SAFE</span> = <span class="ruby-value">1</span>
|
|
730
|
+
93: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">install_acl</span>(<span class="ruby-constant">ACL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">] deny all allow 127.0.0.1 ]</span>))
|
|
731
|
+
94: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">start_service</span>
|
|
732
|
+
95: <span class="ruby-identifier">iFace</span> = <span class="ruby-constant">ProjectServerIface</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>)
|
|
733
|
+
96: <span class="ruby-keyword kw">begin</span>
|
|
734
|
+
97: <span class="ruby-ivar">@uri</span> = <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">start_service</span>(<span class="ruby-value str">'druby://127.0.0.1:0'</span>, <span class="ruby-identifier">iFace</span>).<span class="ruby-identifier">uri</span>
|
|
735
|
+
98: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"Project server is listening on #{@uri}"</span>)
|
|
736
|
+
99: <span class="ruby-keyword kw">rescue</span>
|
|
737
|
+
100: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">"ProjectServer can't start DRb: #{$!}"</span>)
|
|
738
|
+
101: <span class="ruby-keyword kw">end</span>
|
|
739
|
+
102:
|
|
740
|
+
103: <span class="ruby-comment cmt"># Send the URI of the newly started DRb server to the parent process.</span>
|
|
741
|
+
104: <span class="ruby-identifier">rd</span>.<span class="ruby-identifier">close</span>
|
|
742
|
+
105: <span class="ruby-identifier">wr</span>.<span class="ruby-identifier">write</span> <span class="ruby-ivar">@uri</span>
|
|
743
|
+
106: <span class="ruby-identifier">wr</span>.<span class="ruby-identifier">close</span>
|
|
744
|
+
107:
|
|
745
|
+
108: <span class="ruby-comment cmt"># Start a Thread that waits for the @terminate flag to be set and does</span>
|
|
746
|
+
109: <span class="ruby-comment cmt"># other background tasks.</span>
|
|
747
|
+
110: <span class="ruby-identifier">startTerminator</span>
|
|
748
|
+
111: <span class="ruby-comment cmt"># Start another Thread that will be used to fork-off ReportServer</span>
|
|
749
|
+
112: <span class="ruby-comment cmt"># processes.</span>
|
|
750
|
+
113: <span class="ruby-identifier">startHousekeeping</span>
|
|
751
|
+
114:
|
|
752
|
+
115: <span class="ruby-comment cmt"># Cleanup the DRb threads</span>
|
|
753
|
+
116: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">thread</span>.<span class="ruby-identifier">join</span>
|
|
754
|
+
117: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-value str">'Project server terminated'</span>)
|
|
755
|
+
118: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
|
|
756
|
+
119: <span class="ruby-keyword kw">rescue</span>
|
|
757
|
+
120: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span> <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">to_s</span>
|
|
758
|
+
121: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span> <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">"\n"</span>)
|
|
759
|
+
122: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">"ProjectServer can't start DRb: #{$!}"</span>)
|
|
760
|
+
123: <span class="ruby-keyword kw">end</span>
|
|
761
|
+
124: <span class="ruby-keyword kw">else</span>
|
|
762
|
+
125: <span class="ruby-comment cmt"># This is the parent</span>
|
|
763
|
+
126: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">detach</span>(<span class="ruby-ivar">@pid</span>)
|
|
764
|
+
127: <span class="ruby-identifier">wr</span>.<span class="ruby-identifier">close</span>
|
|
765
|
+
128: <span class="ruby-ivar">@uri</span> = <span class="ruby-identifier">rd</span>.<span class="ruby-identifier">read</span>
|
|
766
|
+
129: <span class="ruby-identifier">rd</span>.<span class="ruby-identifier">close</span>
|
|
767
|
+
130: <span class="ruby-keyword kw">end</span>
|
|
768
|
+
131: <span class="ruby-keyword kw">end</span></pre>
|
|
762
769
|
</div>
|
|
763
770
|
|
|
764
771
|
</div>
|
|
@@ -797,12 +804,12 @@ Return the name of the loaded project or nil.
|
|
|
797
804
|
<div class="method-source-code"
|
|
798
805
|
id="get-roject-ame-source">
|
|
799
806
|
<pre>
|
|
800
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
807
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 174</span>
|
|
808
|
+
174: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getProjectName</span>
|
|
809
|
+
175: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tj</span>
|
|
810
|
+
176: <span class="ruby-identifier">restartTimer</span>
|
|
811
|
+
177: <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">projectName</span>
|
|
812
|
+
178: <span class="ruby-keyword kw">end</span></pre>
|
|
806
813
|
</div>
|
|
807
814
|
|
|
808
815
|
</div>
|
|
@@ -835,18 +842,18 @@ Return a list of the HTML reports defined for the project.
|
|
|
835
842
|
<div class="method-source-code"
|
|
836
843
|
id="get-eport-ist-source">
|
|
837
844
|
<pre>
|
|
838
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
845
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 181</span>
|
|
846
|
+
181: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getReportList</span>
|
|
847
|
+
182: <span class="ruby-keyword kw">return</span> [] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tj</span> <span class="ruby-operator">&&</span> (<span class="ruby-identifier">project</span> = <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">project</span>)
|
|
848
|
+
183: <span class="ruby-identifier">list</span> = []
|
|
849
|
+
184: <span class="ruby-identifier">project</span>.<span class="ruby-identifier">reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
|
|
850
|
+
185: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
|
|
851
|
+
186: <span class="ruby-identifier">list</span> <span class="ruby-operator"><<</span> [ <span class="ruby-identifier">report</span>.<span class="ruby-identifier">fullId</span>, <span class="ruby-identifier">report</span>.<span class="ruby-identifier">name</span> ]
|
|
852
|
+
187: <span class="ruby-keyword kw">end</span>
|
|
853
|
+
188: <span class="ruby-keyword kw">end</span>
|
|
854
|
+
189: <span class="ruby-identifier">restartTimer</span>
|
|
855
|
+
190: <span class="ruby-identifier">list</span>
|
|
856
|
+
191: <span class="ruby-keyword kw">end</span></pre>
|
|
850
857
|
</div>
|
|
851
858
|
|
|
852
859
|
</div>
|
|
@@ -881,36 +888,36 @@ and the authentication key of this new server.
|
|
|
881
888
|
<div class="method-source-code"
|
|
882
889
|
id="get-eport-erver-source">
|
|
883
890
|
<pre>
|
|
884
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
891
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 195</span>
|
|
892
|
+
195: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getReportServer</span>
|
|
893
|
+
196: <span class="ruby-comment cmt"># ReportServer objects only make sense for successfully scheduled</span>
|
|
894
|
+
197: <span class="ruby-comment cmt"># projects.</span>
|
|
895
|
+
198: <span class="ruby-keyword kw">return</span> [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span> ] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@state</span> <span class="ruby-operator">==</span> <span class="ruby-value">:ready</span>
|
|
896
|
+
199:
|
|
897
|
+
200: <span class="ruby-comment cmt"># The ReportServer will be created asynchronously in another Thread. To</span>
|
|
898
|
+
201: <span class="ruby-comment cmt"># find it in the @reportServers list, we create a unique tag to identify</span>
|
|
899
|
+
202: <span class="ruby-comment cmt"># it.</span>
|
|
900
|
+
203: <span class="ruby-identifier">tag</span> = <span class="ruby-identifier">rand</span>(<span class="ruby-value">99999999999999</span>)
|
|
901
|
+
204: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"Pushing #{tag} onto report server request queue"</span>)
|
|
902
|
+
205: <span class="ruby-ivar">@reportServerRequests</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">tag</span>)
|
|
903
|
+
206:
|
|
904
|
+
207: <span class="ruby-comment cmt"># Now wait until the new ReportServer shows up in the list.</span>
|
|
905
|
+
208: <span class="ruby-identifier">reportServer</span> = <span class="ruby-keyword kw">nil</span>
|
|
906
|
+
209: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">reportServer</span>.<span class="ruby-identifier">nil?</span>
|
|
907
|
+
210: <span class="ruby-ivar">@reportServers</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
|
|
908
|
+
211: <span class="ruby-ivar">@reportServers</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">rs</span><span class="ruby-operator">|</span>
|
|
909
|
+
212: <span class="ruby-identifier">reportServer</span> = <span class="ruby-identifier">rs</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rs</span>.<span class="ruby-identifier">tag</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">tag</span>
|
|
910
|
+
213: <span class="ruby-keyword kw">end</span>
|
|
911
|
+
214: <span class="ruby-keyword kw">end</span>
|
|
912
|
+
215: <span class="ruby-comment cmt"># It should not take that long, so we use a short idle time here.</span>
|
|
913
|
+
216: <span class="ruby-identifier">sleep</span> <span class="ruby-value">0.1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">reportServer</span>.<span class="ruby-identifier">nil?</span>
|
|
914
|
+
217: <span class="ruby-keyword kw">end</span>
|
|
915
|
+
218:
|
|
916
|
+
219: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"Got report server with URI #{reportServer.uri} for "</span> <span class="ruby-operator">+</span>
|
|
917
|
+
220: <span class="ruby-node">"tag #{tag}"</span>)
|
|
918
|
+
221: <span class="ruby-identifier">restartTimer</span>
|
|
919
|
+
222: [ <span class="ruby-identifier">reportServer</span>.<span class="ruby-identifier">uri</span>, <span class="ruby-identifier">reportServer</span>.<span class="ruby-identifier">authKey</span> ]
|
|
920
|
+
223: <span class="ruby-keyword kw">end</span></pre>
|
|
914
921
|
</div>
|
|
915
922
|
|
|
916
923
|
</div>
|
|
@@ -947,41 +954,41 @@ Additionally a list of optional .tji files can be provided.
|
|
|
947
954
|
<div class="method-source-code"
|
|
948
955
|
id="load-roject-source">
|
|
949
956
|
<pre>
|
|
950
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
957
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 138</span>
|
|
958
|
+
138: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">loadProject</span>(<span class="ruby-identifier">args</span>)
|
|
959
|
+
139: <span class="ruby-identifier">dirAndFiles</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">dup</span>.<span class="ruby-identifier">untaint</span>
|
|
960
|
+
140: <span class="ruby-comment cmt"># The first argument is the working directory</span>
|
|
961
|
+
141: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>(<span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span>.<span class="ruby-identifier">untaint</span>)
|
|
962
|
+
142:
|
|
963
|
+
143: <span class="ruby-comment cmt"># Save a time stamp of when the project file loading started.</span>
|
|
964
|
+
144: <span class="ruby-ivar">@modifiedCheck</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
|
|
965
|
+
145:
|
|
966
|
+
146: <span class="ruby-identifier">updateState</span>(<span class="ruby-value">:loading</span>, <span class="ruby-identifier">dirAndFiles</span>, <span class="ruby-keyword kw">false</span>)
|
|
967
|
+
147: <span class="ruby-ivar">@tj</span> = <span class="ruby-constant">TaskJuggler</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">true</span>)
|
|
968
|
+
148:
|
|
969
|
+
149: <span class="ruby-comment cmt"># Parse all project files</span>
|
|
970
|
+
150: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">args</span>, <span class="ruby-keyword kw">true</span>)
|
|
971
|
+
151: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">"Parsing of #{args.join(' ')} failed"</span>)
|
|
972
|
+
152: <span class="ruby-identifier">updateState</span>(<span class="ruby-value">:failed</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">false</span>)
|
|
973
|
+
153: <span class="ruby-ivar">@terminate</span> = <span class="ruby-keyword kw">true</span>
|
|
974
|
+
154: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
|
|
975
|
+
155: <span class="ruby-keyword kw">end</span>
|
|
976
|
+
156:
|
|
977
|
+
157: <span class="ruby-comment cmt"># Then schedule the project</span>
|
|
978
|
+
158: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">schedule</span>
|
|
979
|
+
159: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">"Scheduling of project #{@tj.projectId} failed"</span>)
|
|
980
|
+
160: <span class="ruby-identifier">updateState</span>(<span class="ruby-value">:failed</span>, <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">projectId</span>, <span class="ruby-keyword kw">false</span>)
|
|
981
|
+
161: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">exit</span>(<span class="ruby-value str">'scheduler'</span>)
|
|
982
|
+
162: <span class="ruby-ivar">@terminate</span> = <span class="ruby-keyword kw">true</span>
|
|
983
|
+
163: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
|
|
984
|
+
164: <span class="ruby-keyword kw">end</span>
|
|
985
|
+
165:
|
|
986
|
+
166: <span class="ruby-comment cmt"># Great, everything went fine. We've got a project to work with.</span>
|
|
987
|
+
167: <span class="ruby-identifier">updateState</span>(<span class="ruby-value">:ready</span>, <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">projectId</span>, <span class="ruby-keyword kw">false</span>)
|
|
988
|
+
168: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">"Project #{@tj.projectId} loaded"</span>)
|
|
989
|
+
169: <span class="ruby-identifier">restartTimer</span>
|
|
990
|
+
170: <span class="ruby-keyword kw">true</span>
|
|
991
|
+
171: <span class="ruby-keyword kw">end</span></pre>
|
|
985
992
|
</div>
|
|
986
993
|
|
|
987
994
|
</div>
|
|
@@ -1016,24 +1023,24 @@ href="ProjectServer.html">ProjectServer</a> is still operating properly.
|
|
|
1016
1023
|
<div class="method-source-code"
|
|
1017
1024
|
id="ping-source">
|
|
1018
1025
|
<pre>
|
|
1019
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1026
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 227</span>
|
|
1027
|
+
227: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ping</span>
|
|
1028
|
+
228: <span class="ruby-comment cmt"># Store the time stamp. If we don't get the ping for some time, we</span>
|
|
1029
|
+
229: <span class="ruby-comment cmt"># assume the ProjectBroker has died.</span>
|
|
1030
|
+
230: <span class="ruby-ivar">@lastPing</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
|
|
1031
|
+
231:
|
|
1032
|
+
232: <span class="ruby-comment cmt"># Now also check our ReportServers if they are still there. If not, we</span>
|
|
1033
|
+
233: <span class="ruby-comment cmt"># can remove them from the @reportServers list.</span>
|
|
1034
|
+
234: <span class="ruby-ivar">@reportServers</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
|
|
1035
|
+
235: <span class="ruby-identifier">deadServers</span> = []
|
|
1036
|
+
236: <span class="ruby-ivar">@reportServers</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">rs</span><span class="ruby-operator">|</span>
|
|
1037
|
+
237: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">rs</span>.<span class="ruby-identifier">ping</span>
|
|
1038
|
+
238: <span class="ruby-identifier">deadServers</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">rs</span>
|
|
1039
|
+
239: <span class="ruby-keyword kw">end</span>
|
|
1040
|
+
240: <span class="ruby-keyword kw">end</span>
|
|
1041
|
+
241: <span class="ruby-ivar">@reportServers</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">rs</span><span class="ruby-operator">|</span> <span class="ruby-identifier">deadServers</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">rs</span>) }
|
|
1042
|
+
242: <span class="ruby-keyword kw">end</span>
|
|
1043
|
+
243: <span class="ruby-keyword kw">end</span></pre>
|
|
1037
1044
|
</div>
|
|
1038
1045
|
|
|
1039
1046
|
</div>
|
|
@@ -1070,77 +1077,77 @@ href="ProjectServer.html">ProjectServer</a> is still operating properly.
|
|
|
1070
1077
|
<div class="method-source-code"
|
|
1071
1078
|
id="start-ousekeeping-source">
|
|
1072
1079
|
<pre>
|
|
1073
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1080
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 264</span>
|
|
1081
|
+
264: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startHousekeeping</span>
|
|
1082
|
+
265: <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span>
|
|
1083
|
+
266: <span class="ruby-keyword kw">begin</span>
|
|
1084
|
+
267: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
|
|
1085
|
+
268: <span class="ruby-comment cmt"># Was the project data provided during object creation?</span>
|
|
1086
|
+
269: <span class="ruby-comment cmt"># Then we load the data here.</span>
|
|
1087
|
+
270: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@projectData</span>
|
|
1088
|
+
271: <span class="ruby-identifier">loadProject</span>(<span class="ruby-ivar">@projectData</span>)
|
|
1089
|
+
272: <span class="ruby-ivar">@projectData</span> = <span class="ruby-keyword kw">nil</span>
|
|
1090
|
+
273: <span class="ruby-keyword kw">end</span>
|
|
1091
|
+
274:
|
|
1092
|
+
275: <span class="ruby-comment cmt"># Check every 60 seconds if the input files have been modified.</span>
|
|
1093
|
+
276: <span class="ruby-comment cmt"># Don't check if we already know it has been modified.</span>
|
|
1094
|
+
277: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@stateLock</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@state</span> <span class="ruby-operator">==</span> <span class="ruby-value">:ready</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@modified</span> <span class="ruby-operator">&&</span>
|
|
1095
|
+
278: <span class="ruby-ivar">@modifiedCheck</span> <span class="ruby-operator">+</span> <span class="ruby-value">60</span> <span class="ruby-operator"><</span> <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span> }
|
|
1096
|
+
279: <span class="ruby-comment cmt"># Reset the timer</span>
|
|
1097
|
+
280: <span class="ruby-ivar">@stateLock</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@modifiedCheck</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span> }
|
|
1098
|
+
281:
|
|
1099
|
+
282: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">project</span>.<span class="ruby-identifier">inputFiles</span>.<span class="ruby-identifier">modified?</span>
|
|
1100
|
+
283: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">"Project #{@tj.projectId} has been modified"</span>)
|
|
1101
|
+
284: <span class="ruby-identifier">updateState</span>(<span class="ruby-value">:ready</span>, <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">projectId</span>, <span class="ruby-keyword kw">true</span>)
|
|
1102
|
+
285: <span class="ruby-keyword kw">end</span>
|
|
1103
|
+
286: <span class="ruby-keyword kw">end</span>
|
|
1104
|
+
287:
|
|
1105
|
+
288: <span class="ruby-comment cmt"># Check for pending requests for new ReportServers.</span>
|
|
1106
|
+
289: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@reportServerRequests</span>.<span class="ruby-identifier">empty?</span>
|
|
1107
|
+
290: <span class="ruby-identifier">tag</span> = <span class="ruby-ivar">@reportServerRequests</span>.<span class="ruby-identifier">pop</span>
|
|
1108
|
+
291: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"Popped #{tag}"</span>)
|
|
1109
|
+
292: <span class="ruby-comment cmt"># Create an new entry for the @reportServers list.</span>
|
|
1110
|
+
293: <span class="ruby-identifier">rsr</span> = <span class="ruby-constant">ReportServerRecord</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">tag</span>)
|
|
1111
|
+
294: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-value str">"RSR created"</span>)
|
|
1112
|
+
295: <span class="ruby-comment cmt"># Create a new ReportServer object that runs as a separate</span>
|
|
1113
|
+
296: <span class="ruby-comment cmt"># process. The constructor will tell us the URI and authentication</span>
|
|
1114
|
+
297: <span class="ruby-comment cmt"># key of the new ReportServer.</span>
|
|
1115
|
+
298: <span class="ruby-identifier">rs</span> = <span class="ruby-constant">ReportServer</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tj</span>, <span class="ruby-ivar">@logConsole</span>)
|
|
1116
|
+
299: <span class="ruby-identifier">rsr</span>.<span class="ruby-identifier">uri</span> = <span class="ruby-identifier">rs</span>.<span class="ruby-identifier">uri</span>
|
|
1117
|
+
300: <span class="ruby-identifier">rsr</span>.<span class="ruby-identifier">authKey</span> = <span class="ruby-identifier">rs</span>.<span class="ruby-identifier">authKey</span>
|
|
1118
|
+
301: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"Adding ReportServer with URI #{rsr.uri} to list"</span>)
|
|
1119
|
+
302: <span class="ruby-comment cmt"># Add the new ReportServer to our list.</span>
|
|
1120
|
+
303: <span class="ruby-ivar">@reportServers</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
|
|
1121
|
+
304: <span class="ruby-ivar">@reportServers</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">rsr</span>
|
|
1122
|
+
305: <span class="ruby-keyword kw">end</span>
|
|
1123
|
+
306: <span class="ruby-keyword kw">end</span>
|
|
1124
|
+
307:
|
|
1125
|
+
308: <span class="ruby-comment cmt"># Some state changing operations are not atomic. Since the client</span>
|
|
1126
|
+
309: <span class="ruby-comment cmt"># can die during the transaction, the server might hang in some</span>
|
|
1127
|
+
310: <span class="ruby-comment cmt"># states. Here we define timeout for each state. If the timeout is</span>
|
|
1128
|
+
311: <span class="ruby-comment cmt"># not 0 and exceeded, we immediately terminate the process.</span>
|
|
1129
|
+
312: <span class="ruby-identifier">timeouts</span> = { <span class="ruby-value">:new</span> =<span class="ruby-operator">></span> <span class="ruby-value">10</span>, <span class="ruby-value">:loading</span> =<span class="ruby-operator">></span> <span class="ruby-value">15</span> * <span class="ruby-value">60</span>, <span class="ruby-value">:failed</span> =<span class="ruby-operator">></span> <span class="ruby-value">60</span>,
|
|
1130
|
+
313: <span class="ruby-value">:ready</span> =<span class="ruby-operator">></span> <span class="ruby-value">0</span> }
|
|
1131
|
+
314: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">timeouts</span>[<span class="ruby-ivar">@state</span>] <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span>
|
|
1132
|
+
315: <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@stateUpdated</span> <span class="ruby-operator">></span> <span class="ruby-identifier">timeouts</span>[<span class="ruby-ivar">@state</span>]
|
|
1133
|
+
316: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">"Reached timeout for state #{@state}. Terminating."</span>)
|
|
1134
|
+
317: <span class="ruby-keyword kw">end</span>
|
|
1135
|
+
318:
|
|
1136
|
+
319: <span class="ruby-comment cmt"># If we have not received a ping from the ProjectBroker for 2</span>
|
|
1137
|
+
320: <span class="ruby-comment cmt"># minutes, we assume it has died and terminate as well.</span>
|
|
1138
|
+
321: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@lastPing</span> <span class="ruby-operator">></span> <span class="ruby-value">180</span>
|
|
1139
|
+
322: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-value str">'Heartbeat from daemon lost. Terminating.'</span>)
|
|
1140
|
+
323: <span class="ruby-keyword kw">end</span>
|
|
1141
|
+
324: <span class="ruby-identifier">sleep</span> <span class="ruby-value">1</span>
|
|
1142
|
+
325: <span class="ruby-keyword kw">end</span>
|
|
1143
|
+
326: <span class="ruby-keyword kw">rescue</span>
|
|
1144
|
+
327: <span class="ruby-comment cmt"># Make sure we get a backtrace for this thread.</span>
|
|
1145
|
+
328: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span> <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">to_s</span>
|
|
1146
|
+
329: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span> <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">"\n"</span>)
|
|
1147
|
+
330: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">"ProjectServer housekeeping error: #{$!}"</span>)
|
|
1148
|
+
331: <span class="ruby-keyword kw">end</span>
|
|
1149
|
+
332: <span class="ruby-keyword kw">end</span>
|
|
1150
|
+
333: <span class="ruby-keyword kw">end</span></pre>
|
|
1144
1151
|
</div>
|
|
1145
1152
|
|
|
1146
1153
|
</div>
|
|
@@ -1174,21 +1181,21 @@ project locally and remotely.
|
|
|
1174
1181
|
<div class="method-source-code"
|
|
1175
1182
|
id="update-tate-source">
|
|
1176
1183
|
<pre>
|
|
1177
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1184
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 249</span>
|
|
1185
|
+
249: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">updateState</span>(<span class="ruby-identifier">state</span>, <span class="ruby-identifier">filesOrId</span>, <span class="ruby-identifier">modified</span>)
|
|
1186
|
+
250: <span class="ruby-keyword kw">begin</span>
|
|
1187
|
+
251: <span class="ruby-ivar">@daemon</span> = <span class="ruby-constant">DRbObject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@daemonURI</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@daemon</span>
|
|
1188
|
+
252: <span class="ruby-ivar">@daemon</span>.<span class="ruby-identifier">updateState</span>(<span class="ruby-ivar">@daemonAuthKey</span>, <span class="ruby-ivar">@authKey</span>, <span class="ruby-identifier">filesOrId</span>, <span class="ruby-identifier">state</span>, <span class="ruby-identifier">modified</span>)
|
|
1189
|
+
253: <span class="ruby-keyword kw">rescue</span>
|
|
1190
|
+
254: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">"Can't update state with daemon: #{$!}"</span>)
|
|
1191
|
+
255: <span class="ruby-keyword kw">end</span>
|
|
1192
|
+
256: <span class="ruby-ivar">@stateLock</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
|
|
1193
|
+
257: <span class="ruby-ivar">@state</span> = <span class="ruby-identifier">state</span>
|
|
1194
|
+
258: <span class="ruby-ivar">@stateUpdated</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
|
|
1195
|
+
259: <span class="ruby-ivar">@modified</span> = <span class="ruby-identifier">modified</span>
|
|
1196
|
+
260: <span class="ruby-ivar">@modifiedCheck</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
|
|
1197
|
+
261: <span class="ruby-keyword kw">end</span>
|
|
1198
|
+
262: <span class="ruby-keyword kw">end</span></pre>
|
|
1192
1199
|
</div>
|
|
1193
1200
|
|
|
1194
1201
|
</div>
|