taskjuggler 0.0.6 → 0.0.7
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 +160 -0
- data/benchmarks/UTF-8-Strings.rb +58 -0
- data/data/css/tjreport.css +7 -2
- data/doc/AppConfig.html +10 -4
- data/doc/Arguments.html +10 -4
- data/doc/CHANGELOG.html +171 -5
- data/doc/COPYING.html +10 -4
- data/doc/Object.html +11 -107
- data/doc/README.html +10 -4
- data/doc/RuntimeConfig.html +10 -4
- data/doc/String.html +16 -11
- data/doc/StringIO.html +10 -4
- data/doc/TaskJuggler.html +506 -435
- data/doc/TaskJuggler/Account.html +10 -4
- data/doc/TaskJuggler/AccountAttribute.html +10 -4
- data/doc/TaskJuggler/AccountScenario.html +10 -4
- data/doc/TaskJuggler/Allocation.html +69 -60
- data/doc/TaskJuggler/AllocationAttribute.html +10 -4
- data/doc/TaskJuggler/AttributeBase.html +10 -4
- data/doc/TaskJuggler/AttributeDefinition.html +10 -4
- data/doc/TaskJuggler/BatchProcessor.html +202 -192
- data/doc/TaskJuggler/Booking.html +10 -4
- data/doc/TaskJuggler/BookingListAttribute.html +10 -4
- data/doc/TaskJuggler/BooleanAttribute.html +10 -4
- data/doc/TaskJuggler/CSVFile.html +10 -4
- data/doc/TaskJuggler/CellSettingPattern.html +10 -4
- data/doc/TaskJuggler/CellSettingPatternList.html +10 -4
- data/doc/TaskJuggler/Charge.html +10 -4
- data/doc/TaskJuggler/ChargeListAttribute.html +10 -4
- data/doc/TaskJuggler/ChargeSet.html +10 -4
- data/doc/TaskJuggler/ChargeSetListAttribute.html +10 -4
- data/doc/TaskJuggler/ColumnListAttribute.html +10 -4
- data/doc/TaskJuggler/ColumnTable.html +10 -4
- data/doc/TaskJuggler/Daemon.html +71 -52
- data/doc/TaskJuggler/DateAttribute.html +10 -4
- data/doc/TaskJuggler/DefinitionListAttribute.html +10 -4
- data/doc/TaskJuggler/DependencyListAttribute.html +10 -4
- data/doc/TaskJuggler/DurationAttribute.html +10 -4
- data/doc/TaskJuggler/{MacroParser.html → FileList.html} +58 -173
- data/doc/TaskJuggler/{RichTextException.html → FileRecord.html} +59 -80
- data/doc/TaskJuggler/FixnumAttribute.html +10 -4
- data/doc/TaskJuggler/FlagListAttribute.html +10 -4
- data/doc/TaskJuggler/FloatAttribute.html +10 -4
- data/doc/TaskJuggler/FormatListAttribute.html +10 -4
- data/doc/TaskJuggler/GanttChart.html +10 -4
- data/doc/TaskJuggler/GanttContainer.html +14 -8
- data/doc/TaskJuggler/GanttHeader.html +10 -4
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +10 -4
- data/doc/TaskJuggler/GanttLine.html +29 -24
- data/doc/TaskJuggler/GanttLoadStack.html +10 -4
- data/doc/TaskJuggler/GanttMilestone.html +10 -4
- data/doc/TaskJuggler/GanttRouter.html +10 -4
- data/doc/TaskJuggler/GanttTaskBar.html +20 -10
- data/doc/TaskJuggler/HTMLDocument.html +10 -4
- data/doc/TaskJuggler/HTMLGraphics.html +10 -4
- data/doc/TaskJuggler/Interval.html +10 -4
- data/doc/TaskJuggler/IntervalListAttribute.html +10 -4
- data/doc/TaskJuggler/JobInfo.html +10 -4
- data/doc/TaskJuggler/Journal.html +227 -160
- data/doc/TaskJuggler/JournalEntry.html +10 -4
- data/doc/TaskJuggler/JournalEntryList.html +158 -72
- data/doc/TaskJuggler/KeywordArray.html +21 -9
- data/doc/TaskJuggler/KeywordDocumentation.html +612 -475
- data/doc/TaskJuggler/Limits.html +13 -8
- data/doc/TaskJuggler/Limits/Limit.html +10 -4
- data/doc/TaskJuggler/LimitsAttribute.html +10 -4
- data/doc/TaskJuggler/ListAttributeBase.html +10 -4
- data/doc/TaskJuggler/Log.html +10 -4
- data/doc/TaskJuggler/LogFile.html +10 -4
- data/doc/TaskJuggler/LogicalAttribute.html +10 -4
- data/doc/TaskJuggler/LogicalExpression.html +11 -5
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +10 -4
- data/doc/TaskJuggler/LogicalFlag.html +10 -4
- data/doc/TaskJuggler/LogicalFunction.html +132 -124
- data/doc/TaskJuggler/LogicalOperation.html +10 -4
- data/doc/TaskJuggler/Macro.html +16 -10
- data/doc/TaskJuggler/MacroTable.html +44 -38
- data/doc/TaskJuggler/ManagerResponsibilities.html +10 -4
- data/doc/TaskJuggler/ManagerStatusRecord.html +10 -4
- data/doc/TaskJuggler/Message.html +92 -68
- data/doc/TaskJuggler/MessageHandler.html +349 -28
- data/doc/TaskJuggler/Navigator.html +10 -4
- data/doc/TaskJuggler/NavigatorElement.html +10 -4
- data/doc/TaskJuggler/NikuProject.html +10 -4
- data/doc/TaskJuggler/NikuReport.html +10 -4
- data/doc/TaskJuggler/NikuResource.html +10 -4
- data/doc/TaskJuggler/NodeListAttribute.html +10 -4
- data/doc/TaskJuggler/OnShiftCache.html +10 -4
- data/doc/TaskJuggler/ProcessIntercom.html +118 -111
- data/doc/TaskJuggler/ProcessIntercomIface.html +75 -22
- data/doc/TaskJuggler/Project.html +886 -913
- data/doc/TaskJuggler/ProjectBroker.html +442 -331
- data/doc/TaskJuggler/ProjectBrokerIface.html +95 -38
- data/doc/TaskJuggler/ProjectFileParser.html +320 -317
- data/doc/TaskJuggler/ProjectFileScanner.html +336 -339
- data/doc/TaskJuggler/ProjectRecord.html +119 -56
- data/doc/TaskJuggler/ProjectServer.html +282 -237
- data/doc/TaskJuggler/ProjectServerIface.html +45 -39
- data/doc/TaskJuggler/PropertyAttribute.html +10 -4
- data/doc/TaskJuggler/PropertyList.html +177 -173
- data/doc/TaskJuggler/PropertySet.html +11 -5
- data/doc/TaskJuggler/PropertyTreeNode.html +194 -191
- data/doc/TaskJuggler/Query.html +280 -256
- data/doc/TaskJuggler/RTFHandlers.html +10 -4
- data/doc/TaskJuggler/RTFNavigator.html +33 -26
- data/doc/TaskJuggler/RTFQuery.html +135 -169
- data/doc/TaskJuggler/RTFReport.html +63 -56
- data/doc/TaskJuggler/RTFReportLink.html +58 -47
- data/doc/TaskJuggler/RTFWithQuerySupport.html +666 -0
- data/doc/TaskJuggler/RealFormat.html +10 -4
- data/doc/TaskJuggler/RealFormatAttribute.html +10 -4
- data/doc/TaskJuggler/ReferenceAttribute.html +10 -4
- data/doc/TaskJuggler/Report.html +333 -290
- data/doc/TaskJuggler/ReportBase.html +182 -174
- data/doc/TaskJuggler/ReportContext.html +10 -4
- data/doc/TaskJuggler/ReportServer.html +144 -126
- data/doc/TaskJuggler/ReportServerIface.html +50 -44
- data/doc/TaskJuggler/ReportServerRecord.html +38 -32
- data/doc/TaskJuggler/ReportServlet.html +144 -137
- data/doc/TaskJuggler/ReportTable.html +10 -4
- data/doc/TaskJuggler/ReportTableCell.html +169 -164
- data/doc/TaskJuggler/ReportTableColumn.html +10 -4
- data/doc/TaskJuggler/ReportTableLegend.html +10 -4
- data/doc/TaskJuggler/ReportTableLine.html +10 -4
- data/doc/TaskJuggler/Resource.html +121 -115
- data/doc/TaskJuggler/ResourceListAttribute.html +10 -4
- data/doc/TaskJuggler/ResourceListRE.html +10 -4
- data/doc/TaskJuggler/ResourceScenario.html +13 -7
- data/doc/TaskJuggler/RichText.html +61 -37
- data/doc/TaskJuggler/RichTextAttribute.html +10 -4
- data/doc/TaskJuggler/RichTextDocument.html +91 -81
- data/doc/TaskJuggler/RichTextElement.html +378 -317
- data/doc/TaskJuggler/RichTextFunctionExample.html +10 -4
- data/doc/TaskJuggler/RichTextFunctionHandler.html +16 -11
- data/doc/TaskJuggler/RichTextImage.html +10 -4
- data/doc/TaskJuggler/RichTextIntermediate.html +138 -70
- data/doc/TaskJuggler/RichTextParser.html +48 -40
- data/doc/TaskJuggler/RichTextScanner.html +328 -906
- data/doc/TaskJuggler/RichTextSnip.html +59 -57
- data/doc/TaskJuggler/RichTextSyntaxRules.html +458 -369
- data/doc/TaskJuggler/Scenario.html +10 -4
- data/doc/TaskJuggler/ScenarioData.html +33 -30
- data/doc/TaskJuggler/ScenarioListAttribute.html +10 -4
- data/doc/TaskJuggler/Scoreboard.html +10 -4
- data/doc/TaskJuggler/SheetHandlerBase.html +315 -191
- data/doc/TaskJuggler/SheetReceiver.html +334 -313
- data/doc/TaskJuggler/SheetSender.html +10 -4
- data/doc/TaskJuggler/Shift.html +10 -4
- data/doc/TaskJuggler/ShiftAssignment.html +10 -4
- data/doc/TaskJuggler/ShiftAssignments.html +10 -4
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +10 -4
- data/doc/TaskJuggler/ShiftScenario.html +10 -4
- data/doc/TaskJuggler/SimpleQueryExpander.html +697 -0
- data/doc/TaskJuggler/SortListAttribute.html +10 -4
- data/doc/TaskJuggler/SourceFileInfo.html +10 -4
- data/doc/TaskJuggler/StatusSheetReceiver.html +10 -4
- data/doc/TaskJuggler/StatusSheetReport.html +10 -4
- data/doc/TaskJuggler/StatusSheetSender.html +10 -4
- data/doc/TaskJuggler/StringAttribute.html +10 -4
- data/doc/TaskJuggler/SymbolAttribute.html +10 -4
- data/doc/TaskJuggler/SyntaxReference.html +260 -230
- data/doc/TaskJuggler/TOCEntry.html +99 -42
- data/doc/TaskJuggler/TSResourceRecord.html +10 -4
- data/doc/TaskJuggler/TSTaskRecord.html +10 -4
- data/doc/TaskJuggler/TableColumnDefinition.html +10 -4
- data/doc/TaskJuggler/TableOfContents.html +54 -12
- data/doc/TaskJuggler/TableReport.html +877 -872
- data/doc/TaskJuggler/Task.html +117 -68
- data/doc/TaskJuggler/TaskDependency.html +10 -4
- data/doc/TaskJuggler/TaskListAttribute.html +10 -4
- data/doc/TaskJuggler/TaskListRE.html +10 -4
- data/doc/TaskJuggler/TaskScenario.html +1681 -1563
- data/doc/TaskJuggler/TextFormatter.html +10 -4
- data/doc/TaskJuggler/TextParser.html +567 -534
- data/doc/TaskJuggler/TextParser/Pattern.html +128 -118
- data/doc/TaskJuggler/TextParser/Rule.html +26 -15
- data/doc/TaskJuggler/TextParser/StackElement.html +10 -4
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +22 -16
- data/doc/TaskJuggler/TextParser/TokenDoc.html +10 -4
- data/doc/TaskJuggler/TextReport.html +15 -6
- data/doc/TaskJuggler/TextScanner.html +319 -287
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +16 -10
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +23 -17
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +17 -11
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
- data/doc/TaskJuggler/TimeSheet.html +138 -175
- data/doc/TaskJuggler/TimeSheetReceiver.html +10 -4
- data/doc/TaskJuggler/TimeSheetRecord.html +65 -58
- data/doc/TaskJuggler/TimeSheetReport.html +47 -42
- data/doc/TaskJuggler/TimeSheetSender.html +10 -4
- data/doc/TaskJuggler/TimeSheetSummary.html +91 -83
- data/doc/TaskJuggler/TimeSheets.html +22 -16
- data/doc/TaskJuggler/Tj3AppBase.html +10 -4
- data/doc/TaskJuggler/Tj3Client.html +399 -365
- data/doc/TaskJuggler/Tj3Daemon.html +107 -94
- data/doc/TaskJuggler/Tj3SheetAppBase.html +10 -4
- data/doc/TaskJuggler/Tj3SsReceiver.html +10 -4
- data/doc/TaskJuggler/Tj3SsSender.html +10 -4
- data/doc/TaskJuggler/Tj3TsReceiver.html +10 -4
- data/doc/TaskJuggler/Tj3TsSender.html +10 -4
- data/doc/TaskJuggler/Tj3TsSummary.html +10 -4
- data/doc/TaskJuggler/TjException.html +10 -4
- data/doc/TaskJuggler/TjTime.html +145 -140
- data/doc/TaskJuggler/TjpExample.html +10 -4
- data/doc/TaskJuggler/TjpExportRE.html +122 -118
- data/doc/TaskJuggler/TjpSyntaxRules.html +4065 -4052
- data/doc/TaskJuggler/URLParameter.html +10 -4
- data/doc/TaskJuggler/UserManual.html +162 -155
- data/doc/TaskJuggler/VimSyntax.html +1028 -0
- data/doc/TaskJuggler/WebServer.html +45 -27
- data/doc/TaskJuggler/WorkingHours.html +10 -4
- data/doc/TaskJuggler/WorkingHoursAttribute.html +10 -4
- data/doc/TaskJuggler/XMLBlob.html +10 -4
- data/doc/TaskJuggler/XMLComment.html +10 -4
- data/doc/TaskJuggler/XMLDocument.html +10 -4
- data/doc/TaskJuggler/XMLElement.html +10 -4
- data/doc/TaskJuggler/XMLNamedText.html +10 -4
- data/doc/TaskJuggler/XMLText.html +10 -4
- data/doc/index.html +735 -677
- data/doc/lib/AccountScenario_rb.html +1 -1
- data/doc/lib/Account_rb.html +1 -1
- data/doc/lib/Allocation_rb.html +1 -1
- data/doc/lib/AppConfig_rb.html +1 -1
- data/doc/lib/AttributeBase_rb.html +1 -1
- data/doc/lib/AttributeDefinition_rb.html +1 -1
- data/doc/lib/Attributes_rb.html +1 -1
- data/doc/lib/BatchProcessor_rb.html +1 -1
- data/doc/lib/Booking_rb.html +1 -1
- data/doc/lib/ChargeSet_rb.html +1 -1
- data/doc/lib/Charge_rb.html +1 -1
- data/doc/lib/{Message_rb.html → FileList_rb.html} +3 -5
- data/doc/lib/HTMLDocument_rb.html +1 -1
- data/doc/lib/Interval_rb.html +1 -1
- data/doc/lib/Journal_rb.html +1 -1
- data/doc/lib/KeywordArray_rb.html +1 -1
- data/doc/lib/KeywordDocumentation_rb.html +1 -1
- data/doc/lib/Limits_rb.html +1 -1
- data/doc/lib/LogFile_rb.html +1 -1
- data/doc/lib/Log_rb.html +1 -1
- data/doc/lib/LogicalExpression_rb.html +1 -1
- data/doc/lib/LogicalFunction_rb.html +1 -1
- data/doc/lib/LogicalOperation_rb.html +1 -1
- data/doc/lib/MacroTable_rb.html +1 -3
- data/doc/lib/MessageHandler_rb.html +1 -1
- data/doc/lib/ProjectFileParser_rb.html +1 -1
- data/doc/lib/ProjectFileScanner_rb.html +1 -1
- data/doc/lib/Project_rb.html +4 -2
- data/doc/lib/PropertyList_rb.html +1 -1
- data/doc/lib/PropertySet_rb.html +1 -1
- data/doc/lib/PropertyTreeNode_rb.html +1 -1
- data/doc/lib/Query_rb.html +1 -1
- data/doc/lib/RTFHandlers_rb.html +1 -1
- data/doc/lib/RTFNavigator_rb.html +1 -1
- data/doc/lib/RTFQuery_rb.html +2 -2
- data/doc/lib/RTFReportLink_rb.html +4 -2
- data/doc/lib/RTFReport_rb.html +1 -1
- data/doc/lib/{MacroParser_rb.html → RTFWithQuerySupport_rb.html} +4 -6
- data/doc/lib/RealFormat_rb.html +1 -1
- data/doc/lib/ResourceScenario_rb.html +1 -1
- data/doc/lib/Resource_rb.html +1 -1
- data/doc/lib/RichTextDocument_rb.html +1 -1
- data/doc/lib/RichTextElement_rb.html +1 -1
- data/doc/lib/RichTextFunctionExample_rb.html +1 -1
- data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
- data/doc/lib/RichTextParser_rb.html +1 -1
- data/doc/lib/RichTextScanner_rb.html +3 -1
- data/doc/lib/RichTextSnip_rb.html +1 -1
- data/doc/lib/RichTextSyntaxRules_rb.html +1 -1
- data/doc/lib/RichText_rb.html +3 -1
- data/doc/lib/RuntimeConfig_rb.html +1 -1
- data/doc/lib/ScenarioData_rb.html +2 -2
- data/doc/lib/Scenario_rb.html +1 -1
- data/doc/lib/Scoreboard_rb.html +1 -1
- data/doc/lib/SheetHandlerBase_rb.html +5 -1
- data/doc/lib/SheetReceiver_rb.html +3 -1
- data/doc/lib/SheetSender_rb.html +1 -1
- data/doc/lib/ShiftAssignments_rb.html +1 -1
- data/doc/lib/ShiftScenario_rb.html +1 -1
- data/doc/lib/Shift_rb.html +1 -1
- data/doc/lib/SimpleQueryExpander_rb.html +67 -0
- data/doc/lib/SourceFileInfo_rb.html +1 -1
- data/doc/lib/StatusSheetReceiver_rb.html +1 -1
- data/doc/lib/StatusSheetSender_rb.html +1 -1
- data/doc/lib/SyntaxReference_rb.html +1 -1
- data/doc/lib/TOCEntry_rb.html +1 -1
- data/doc/lib/TableColumnDefinition_rb.html +1 -1
- data/doc/lib/TableOfContents_rb.html +1 -1
- data/doc/lib/TaskDependency_rb.html +1 -1
- data/doc/lib/TaskJuggler_rb.html +1 -1
- data/doc/lib/TaskScenario_rb.html +1 -1
- data/doc/lib/Task_rb.html +1 -1
- data/doc/lib/TextFormatter_rb.html +1 -1
- data/doc/lib/TextParser/Pattern_rb.html +1 -1
- data/doc/lib/TextParser/Rule_rb.html +1 -1
- data/doc/lib/TextParser/StackElement_rb.html +1 -1
- data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
- data/doc/lib/TextParser_rb.html +3 -1
- data/doc/lib/TextScanner_rb.html +1 -3
- data/doc/lib/TimeSheetReceiver_rb.html +1 -1
- data/doc/lib/TimeSheetSender_rb.html +1 -1
- data/doc/lib/TimeSheetSummary_rb.html +1 -1
- data/doc/lib/TimeSheets_rb.html +1 -1
- data/doc/lib/Tj3AppBase_rb.html +1 -1
- data/doc/lib/Tj3Config_rb.html +1 -1
- data/doc/lib/Tj3SheetAppBase_rb.html +1 -1
- data/doc/lib/TjException_rb.html +1 -1
- data/doc/lib/TjTime_rb.html +1 -1
- data/doc/lib/TjpExample_rb.html +1 -1
- data/doc/lib/TjpSyntaxRules_rb.html +1 -1
- data/doc/lib/URLParameter_rb.html +1 -1
- data/doc/lib/UTF8String_rb.html +1 -1
- data/doc/lib/UserManual_rb.html +1 -1
- data/doc/lib/{ruby-signal-bug_rb.html → VimSyntax_rb.html} +17 -4
- data/doc/lib/WorkingHours_rb.html +1 -1
- data/doc/lib/XMLDocument_rb.html +1 -1
- data/doc/lib/XMLElement_rb.html +1 -1
- data/doc/lib/daemon/Daemon_rb.html +1 -1
- data/doc/lib/daemon/ProcessIntercom_rb.html +1 -1
- data/doc/lib/daemon/ProjectBroker_rb.html +1 -1
- data/doc/lib/daemon/ProjectServer_rb.html +1 -1
- data/doc/lib/daemon/ReportServer_rb.html +1 -3
- data/doc/lib/daemon/WebServer_rb.html +1 -1
- data/doc/lib/deep_copy_rb.html +1 -1
- data/doc/lib/reports/CSVFile_rb.html +1 -1
- data/doc/lib/reports/ColumnTable_rb.html +1 -1
- data/doc/lib/reports/GanttChart_rb.html +1 -1
- data/doc/lib/reports/GanttContainer_rb.html +1 -1
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
- data/doc/lib/reports/GanttHeader_rb.html +1 -1
- data/doc/lib/reports/GanttLine_rb.html +1 -1
- data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
- data/doc/lib/reports/GanttMilestone_rb.html +1 -1
- data/doc/lib/reports/GanttRouter_rb.html +1 -1
- data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
- data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
- data/doc/lib/reports/Navigator_rb.html +1 -1
- data/doc/lib/reports/NikuReport_rb.html +1 -1
- data/doc/lib/reports/ReportBase_rb.html +1 -1
- data/doc/lib/reports/ReportContext_rb.html +1 -1
- data/doc/lib/reports/ReportTableCell_rb.html +1 -1
- data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
- data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
- data/doc/lib/reports/ReportTableLine_rb.html +1 -1
- data/doc/lib/reports/ReportTable_rb.html +1 -1
- data/doc/lib/reports/Report_rb.html +1 -1
- data/doc/lib/reports/ResourceListRE_rb.html +1 -1
- data/doc/lib/reports/StatusSheetReport_rb.html +1 -1
- data/doc/lib/reports/TableReport_rb.html +1 -1
- data/doc/lib/reports/TaskListRE_rb.html +1 -1
- data/doc/lib/reports/TextReport_rb.html +1 -1
- data/doc/lib/reports/TimeSheetReport_rb.html +1 -1
- data/doc/lib/reports/TjpExportRE_rb.html +1 -1
- data/doc/lib/taskjuggler3_rb.html +1 -1
- data/doc/lib/tj3client_rb.html +1 -1
- data/doc/lib/tj3d_rb.html +1 -1
- data/doc/lib/tj3man_rb.html +1 -1
- data/doc/lib/tj3ss_receiver_rb.html +1 -1
- data/doc/lib/tj3ss_sender_rb.html +1 -1
- data/doc/lib/tj3ts_receiver_rb.html +1 -1
- data/doc/lib/tj3ts_sender_rb.html +1 -1
- data/doc/lib/tj3ts_summary_rb.html +1 -1
- data/lib/Allocation.rb +8 -5
- data/lib/BatchProcessor.rb +7 -3
- data/lib/FileList.rb +58 -0
- data/lib/Journal.rb +73 -33
- data/lib/KeywordArray.rb +4 -0
- data/lib/KeywordDocumentation.rb +45 -11
- data/lib/Limits.rb +0 -1
- data/lib/LogicalExpression.rb +1 -1
- data/lib/LogicalFunction.rb +14 -12
- data/lib/MacroTable.rb +3 -4
- data/lib/MessageHandler.rb +136 -7
- data/lib/Project.rb +72 -86
- data/lib/ProjectFileParser.rb +30 -33
- data/lib/ProjectFileScanner.rb +7 -16
- data/lib/PropertyList.rb +25 -27
- data/lib/PropertySet.rb +1 -1
- data/lib/PropertyTreeNode.rb +9 -12
- data/lib/Query.rb +5 -4
- data/lib/RTFNavigator.rb +2 -1
- data/lib/RTFQuery.rb +4 -11
- data/lib/RTFReport.rb +2 -1
- data/lib/RTFReportLink.rb +10 -4
- data/lib/RTFWithQuerySupport.rb +45 -0
- data/lib/Resource.rb +20 -20
- data/lib/ResourceScenario.rb +3 -3
- data/lib/RichText.rb +15 -7
- data/lib/RichTextDocument.rb +8 -4
- data/lib/RichTextElement.rb +35 -12
- data/lib/RichTextFunctionHandler.rb +11 -12
- data/lib/RichTextParser.rb +5 -3
- data/lib/RichTextScanner.rb +144 -565
- data/lib/RichTextSnip.rb +3 -7
- data/lib/RichTextSyntaxRules.rb +51 -32
- data/lib/ScenarioData.rb +16 -25
- data/lib/SheetHandlerBase.rb +59 -2
- data/lib/SheetReceiver.rb +36 -18
- data/lib/SimpleQueryExpander.rb +58 -0
- data/lib/SyntaxReference.rb +9 -5
- data/lib/TOCEntry.rb +2 -0
- data/lib/TableOfContents.rb +4 -0
- data/lib/Task.rb +23 -12
- data/lib/TaskJuggler.rb +72 -33
- data/lib/TaskScenario.rb +131 -53
- data/lib/TextParser.rb +43 -30
- data/lib/TextParser/Pattern.rb +17 -13
- data/lib/TextParser/Rule.rb +5 -0
- data/lib/TextScanner.rb +46 -25
- data/lib/TimeSheetSummary.rb +9 -7
- data/lib/TimeSheets.rb +14 -23
- data/lib/Tj3Config.rb +1 -1
- data/lib/TjTime.rb +1 -2
- data/lib/TjpSyntaxRules.rb +128 -104
- data/lib/UTF8String.rb +0 -1
- data/lib/UserManual.rb +5 -4
- data/lib/VimSyntax.rb +223 -0
- data/lib/daemon/Daemon.rb +9 -0
- data/lib/daemon/ProcessIntercom.rb +19 -4
- data/lib/daemon/ProjectBroker.rb +149 -68
- data/lib/daemon/ProjectServer.rb +119 -79
- data/lib/daemon/ReportServer.rb +42 -31
- data/lib/daemon/WebServer.rb +21 -2
- data/lib/deep_copy.rb +1 -1
- data/lib/reports/GanttContainer.rb +2 -2
- data/lib/reports/GanttLine.rb +2 -3
- data/lib/reports/GanttTaskBar.rb +7 -3
- data/lib/reports/Report.rb +62 -57
- data/lib/reports/ReportBase.rb +6 -4
- data/lib/reports/ReportTableCell.rb +13 -14
- data/lib/reports/TableReport.rb +2 -1
- data/lib/reports/TextReport.rb +3 -0
- data/lib/reports/TimeSheetReport.rb +2 -3
- data/lib/reports/TjpExportRE.rb +0 -2
- data/lib/tj3client.rb +31 -3
- data/lib/tj3d.rb +8 -1
- data/manual/Day_To_Day_Juggling +2 -95
- data/manual/How_To_Contribute +2 -1
- data/manual/Rich_Text_Attributes +37 -3
- data/manual/Software +203 -0
- data/test/MessageChecker.rb +4 -4
- data/test/TestSuite/HTML-Reports/Alerts.html +172 -0
- data/test/TestSuite/HTML-Reports/CellText.html +758 -0
- data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
- data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
- data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
- data/test/TestSuite/HTML-Reports/Query.html +31 -0
- data/test/TestSuite/HTML-Reports/css/tjmanual.css +14 -0
- data/test/TestSuite/HTML-Reports/css/tjreport.css +233 -21
- data/test/TestSuite/HTML-Reports/depArrows.html +842 -0
- data/test/TestSuite/HTML-Reports/scripts/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/HTML-Reports/scripts/wz_tooltip.js +20 -20
- data/test/TestSuite/ReportGenerator/Correct/Alerts.tjp +48 -0
- data/test/TestSuite/ReportGenerator/Correct/Macros.tjp +57 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Alerts-1.csv +386 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Macros-1.csv +6 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/css/tjmanual.css +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/css/tjreport.css +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/details.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-green.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-red.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-yellow.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/resource.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/resourcegroup.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/task.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/taskgroup.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-down.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-flat.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-up.png +0 -0
- data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.html +26 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/scripts/wz_tooltip.js +0 -0
- data/test/TestSuite/Scheduler/Correct/Allocate.html +3210 -0
- data/test/TestSuite/Scheduler/Correct/Allocate.tjp +19 -0
- data/test/TestSuite/Scheduler/Correct/Container.html +22 -22
- data/test/TestSuite/Scheduler/Correct/Limits.html +4964 -0
- data/test/TestSuite/Scheduler/Correct/Shift.html +1707 -417
- data/test/TestSuite/Scheduler/Correct/Shift2.html +9 -9
- data/test/TestSuite/Scheduler/Correct/css/tjreport.css +6 -2
- data/test/TestSuite/Scheduler/Errors/css/tjmanual.css +66 -0
- data/test/TestSuite/Scheduler/Errors/css/tjreport.css +407 -0
- data/test/TestSuite/Scheduler/Errors/icons/details.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/flag-green.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/flag-red.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/resource.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/task.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/taskgroup.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/trend-down.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/trend-flat.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/trend-up.png +0 -0
- data/test/TestSuite/Scheduler/Errors/loop_detected_1.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_10.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_11.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_14.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_2.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_4.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_5.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_9.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/Scheduler/Errors/task_pred_before.tjp +11 -0
- data/test/TestSuite/Scheduler/Errors/task_pred_before_gd.tjp +11 -0
- data/test/TestSuite/Scheduler/Errors/task_pred_before_gl.tjp +11 -0
- data/test/TestSuite/Scheduler/Errors/task_succ_after.tjp +12 -0
- data/test/TestSuite/Scheduler/Errors/task_succ_after_gd.tjp +12 -0
- data/test/TestSuite/Scheduler/Errors/task_succ_after_gl.tjp +12 -0
- data/test/TestSuite/StatusSheets/dev2.tji +22 -0
- data/test/TestSuite/StatusSheets/resrep.tji +7 -0
- data/test/TestSuite/StatusSheets/run +6 -4
- data/test/TestSuite/StatusSheets/tj3d.log +312 -0
- data/test/TestSuite/Syntax/Correct/Managers.html +263 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +1 -2
- data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +1 -1
- data/test/TestSuite/TimeSheets/acceptable_intervals +1 -0
- data/test/TestSuite/TimeSheets/resrep.tji +7 -0
- data/test/TestSuite/TimeSheets/run +6 -5
- data/test/TestSuite/TimeSheets/statussheets.log +1 -0
- data/test/TestSuite/TimeSheets/ts.tji +351 -0
- data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
- data/test/test_PropertySet.rb +2 -2
- data/test/test_RichText.rb +178 -387
- data/test/test_SimpleQueryExpander.rb +55 -0
- data/test/test_deep_copy.rb +2 -2
- metadata +854 -834
- data/lib/MacroParser.rb +0 -77
- data/lib/Message.rb +0 -56
- data/lib/ruby-signal-bug.rb +0 -43
- data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
- data/test/TestSuite/HTML-Reports/reference.html +0 -51
- data/test/TestSuite/ReportGenerator/Correct/Journal.html +0 -63
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
- data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
- data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
- data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
- data/test/TestSuite/Scheduler/Correct/Booking2.html +0 -603
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +0 -108
- data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
- data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
- data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +0 -32
|
@@ -169,6 +169,10 @@
|
|
|
169
169
|
|
|
170
170
|
<li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
|
|
171
171
|
|
|
172
|
+
<li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
|
|
173
|
+
|
|
174
|
+
<li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
|
|
175
|
+
|
|
172
176
|
<li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
|
|
173
177
|
|
|
174
178
|
<li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
|
|
@@ -241,8 +245,6 @@
|
|
|
241
245
|
|
|
242
246
|
<li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
|
|
243
247
|
|
|
244
|
-
<li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
|
|
245
|
-
|
|
246
248
|
<li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
|
|
247
249
|
|
|
248
250
|
<li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
|
|
@@ -307,6 +309,8 @@
|
|
|
307
309
|
|
|
308
310
|
<li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
|
|
309
311
|
|
|
312
|
+
<li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
|
|
313
|
+
|
|
310
314
|
<li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
|
|
311
315
|
|
|
312
316
|
<li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
|
|
@@ -353,8 +357,6 @@
|
|
|
353
357
|
|
|
354
358
|
<li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
|
|
355
359
|
|
|
356
|
-
<li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
|
|
357
|
-
|
|
358
360
|
<li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
|
|
359
361
|
|
|
360
362
|
<li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
|
|
@@ -395,6 +397,8 @@
|
|
|
395
397
|
|
|
396
398
|
<li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
|
|
397
399
|
|
|
400
|
+
<li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
|
|
401
|
+
|
|
398
402
|
<li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
|
|
399
403
|
|
|
400
404
|
<li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
|
|
@@ -505,6 +509,8 @@
|
|
|
505
509
|
|
|
506
510
|
<li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
|
|
507
511
|
|
|
512
|
+
<li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
|
|
513
|
+
|
|
508
514
|
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
|
509
515
|
|
|
510
516
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
|
@@ -595,6 +601,23 @@ manage the loaded projects. There is one entry for each project in the
|
|
|
595
601
|
|
|
596
602
|
|
|
597
603
|
|
|
604
|
+
</div>
|
|
605
|
+
</div>
|
|
606
|
+
|
|
607
|
+
<div id="files-attribute-method" class="method-detail">
|
|
608
|
+
<a name="files"></a>
|
|
609
|
+
|
|
610
|
+
<a name="files="></a>
|
|
611
|
+
|
|
612
|
+
<div class="method-heading attribute-method-heading">
|
|
613
|
+
<span class="method-name">files</span><span
|
|
614
|
+
class="attribute-access-type">[RW]</span>
|
|
615
|
+
</div>
|
|
616
|
+
|
|
617
|
+
<div class="method-description">
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
|
|
598
621
|
</div>
|
|
599
622
|
</div>
|
|
600
623
|
|
|
@@ -646,6 +669,40 @@ manage the loaded projects. There is one entry for each project in the
|
|
|
646
669
|
|
|
647
670
|
|
|
648
671
|
|
|
672
|
+
</div>
|
|
673
|
+
</div>
|
|
674
|
+
|
|
675
|
+
<div id="modified-attribute-method" class="method-detail">
|
|
676
|
+
<a name="modified"></a>
|
|
677
|
+
|
|
678
|
+
<a name="modified="></a>
|
|
679
|
+
|
|
680
|
+
<div class="method-heading attribute-method-heading">
|
|
681
|
+
<span class="method-name">modified</span><span
|
|
682
|
+
class="attribute-access-type">[RW]</span>
|
|
683
|
+
</div>
|
|
684
|
+
|
|
685
|
+
<div class="method-description">
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
</div>
|
|
690
|
+
</div>
|
|
691
|
+
|
|
692
|
+
<div id="reloading-attribute-method" class="method-detail">
|
|
693
|
+
<a name="reloading"></a>
|
|
694
|
+
|
|
695
|
+
<a name="reloading="></a>
|
|
696
|
+
|
|
697
|
+
<div class="method-heading attribute-method-heading">
|
|
698
|
+
<span class="method-name">reloading</span><span
|
|
699
|
+
class="attribute-access-type">[RW]</span>
|
|
700
|
+
</div>
|
|
701
|
+
|
|
702
|
+
<div class="method-description">
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
|
|
649
706
|
</div>
|
|
650
707
|
</div>
|
|
651
708
|
|
|
@@ -693,26 +750,32 @@ manage the loaded projects. There is one entry for each project in the
|
|
|
693
750
|
<div class="method-source-code"
|
|
694
751
|
id="new-source">
|
|
695
752
|
<pre>
|
|
696
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
753
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line 521</span>
|
|
754
|
+
521: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">tag</span>)
|
|
755
|
+
522: <span class="ruby-comment cmt"># Before we know the project ID we use this tag to uniquely identify the</span>
|
|
756
|
+
523: <span class="ruby-comment cmt"># project.</span>
|
|
757
|
+
524: <span class="ruby-ivar">@tag</span> = <span class="ruby-identifier">tag</span>
|
|
758
|
+
525: <span class="ruby-comment cmt"># Array of [ workingDir, tjp file, ... tji files ]</span>
|
|
759
|
+
526: <span class="ruby-ivar">@files</span> = <span class="ruby-keyword kw">nil</span>
|
|
760
|
+
527: <span class="ruby-comment cmt"># The authentication key for the ProjectServer process.</span>
|
|
761
|
+
528: <span class="ruby-ivar">@authKey</span> = <span class="ruby-keyword kw">nil</span>
|
|
762
|
+
529: <span class="ruby-comment cmt"># The DRb URI where the ProjectServer process is listening.</span>
|
|
763
|
+
530: <span class="ruby-ivar">@uri</span> = <span class="ruby-keyword kw">nil</span>
|
|
764
|
+
531: <span class="ruby-comment cmt"># The ID of the project.</span>
|
|
765
|
+
532: <span class="ruby-ivar">@id</span> = <span class="ruby-keyword kw">nil</span>
|
|
766
|
+
533: <span class="ruby-comment cmt"># The state of the project. :new, :loading, :ready, :failed</span>
|
|
767
|
+
534: <span class="ruby-comment cmt"># and :obsolete are supported.</span>
|
|
768
|
+
535: <span class="ruby-ivar">@state</span> = <span class="ruby-value">:new</span>
|
|
769
|
+
536: <span class="ruby-comment cmt"># A time stamp when the project became ready for service.</span>
|
|
770
|
+
537: <span class="ruby-ivar">@readySince</span> = <span class="ruby-keyword kw">nil</span>
|
|
771
|
+
538: <span class="ruby-comment cmt"># True if any of the input files have been modified after the load.</span>
|
|
772
|
+
539: <span class="ruby-ivar">@modified</span> = <span class="ruby-keyword kw">false</span>
|
|
773
|
+
540: <span class="ruby-comment cmt"># True if the reload has already been triggered.</span>
|
|
774
|
+
541: <span class="ruby-ivar">@reloading</span> = <span class="ruby-keyword kw">false</span>
|
|
775
|
+
542:
|
|
776
|
+
543: <span class="ruby-ivar">@log</span> = <span class="ruby-constant">LogFile</span>.<span class="ruby-identifier">instance</span>
|
|
777
|
+
544: <span class="ruby-ivar">@projectServer</span> = <span class="ruby-keyword kw">nil</span>
|
|
778
|
+
545: <span class="ruby-keyword kw">end</span></pre>
|
|
716
779
|
</div>
|
|
717
780
|
|
|
718
781
|
</div>
|
|
@@ -749,20 +812,20 @@ manage the loaded projects. There is one entry for each project in the
|
|
|
749
812
|
<div class="method-source-code"
|
|
750
813
|
id="ping-source">
|
|
751
814
|
<pre>
|
|
752
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
815
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line 547</span>
|
|
816
|
+
547: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ping</span>
|
|
817
|
+
548: <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>
|
|
818
|
+
549:
|
|
819
|
+
550: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"Sending ping to ProjectServer #{@uri}"</span>)
|
|
820
|
+
551: <span class="ruby-keyword kw">begin</span>
|
|
821
|
+
552: <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>
|
|
822
|
+
553: <span class="ruby-ivar">@projectServer</span>.<span class="ruby-identifier">ping</span>(<span class="ruby-ivar">@authKey</span>)
|
|
823
|
+
554: <span class="ruby-keyword kw">rescue</span>
|
|
824
|
+
555: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">"Ping failed: #{$!}"</span>)
|
|
825
|
+
556: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
|
|
826
|
+
557: <span class="ruby-keyword kw">end</span>
|
|
827
|
+
558: <span class="ruby-keyword kw">true</span>
|
|
828
|
+
559: <span class="ruby-keyword kw">end</span></pre>
|
|
766
829
|
</div>
|
|
767
830
|
|
|
768
831
|
</div>
|
|
@@ -796,19 +859,19 @@ href="ProjectServer.html">ProjectServer</a>.
|
|
|
796
859
|
<div class="method-source-code"
|
|
797
860
|
id="terminate-erver-source">
|
|
798
861
|
<pre>
|
|
799
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
862
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line 562</span>
|
|
863
|
+
562: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">terminateServer</span>
|
|
864
|
+
563: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@uri</span>
|
|
865
|
+
564:
|
|
866
|
+
565: <span class="ruby-keyword kw">begin</span>
|
|
867
|
+
566: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"Sending termination request to ProjectServer #{@uri}"</span>)
|
|
868
|
+
567: <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>
|
|
869
|
+
568: <span class="ruby-ivar">@projectServer</span>.<span class="ruby-identifier">terminate</span>(<span class="ruby-ivar">@authKey</span>)
|
|
870
|
+
569: <span class="ruby-keyword kw">rescue</span>
|
|
871
|
+
570: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">"Termination of ProjectServer failed: #{$!}"</span>)
|
|
872
|
+
571: <span class="ruby-keyword kw">end</span>
|
|
873
|
+
572: <span class="ruby-ivar">@uri</span> = <span class="ruby-keyword kw">nil</span>
|
|
874
|
+
573: <span class="ruby-keyword kw">end</span></pre>
|
|
812
875
|
</div>
|
|
813
876
|
|
|
814
877
|
</div>
|
|
@@ -841,11 +904,11 @@ This is used to generate the status table.
|
|
|
841
904
|
<div class="method-source-code"
|
|
842
905
|
id="to-s-source">
|
|
843
906
|
<pre>
|
|
844
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
907
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectBroker.rb, line 576</span>
|
|
908
|
+
576: <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>)
|
|
909
|
+
577: <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>,
|
|
910
|
+
578: <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>)
|
|
911
|
+
579: <span class="ruby-keyword kw">end</span></pre>
|
|
849
912
|
</div>
|
|
850
913
|
|
|
851
914
|
</div>
|
|
@@ -188,6 +188,10 @@
|
|
|
188
188
|
|
|
189
189
|
<li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
|
|
190
190
|
|
|
191
|
+
<li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
|
|
192
|
+
|
|
193
|
+
<li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
|
|
194
|
+
|
|
191
195
|
<li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
|
|
192
196
|
|
|
193
197
|
<li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
|
|
@@ -260,8 +264,6 @@
|
|
|
260
264
|
|
|
261
265
|
<li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
|
|
262
266
|
|
|
263
|
-
<li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
|
|
264
|
-
|
|
265
267
|
<li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
|
|
266
268
|
|
|
267
269
|
<li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
|
|
@@ -326,6 +328,8 @@
|
|
|
326
328
|
|
|
327
329
|
<li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
|
|
328
330
|
|
|
331
|
+
<li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
|
|
332
|
+
|
|
329
333
|
<li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
|
|
330
334
|
|
|
331
335
|
<li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
|
|
@@ -372,8 +376,6 @@
|
|
|
372
376
|
|
|
373
377
|
<li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
|
|
374
378
|
|
|
375
|
-
<li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
|
|
376
|
-
|
|
377
379
|
<li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
|
|
378
380
|
|
|
379
381
|
<li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
|
|
@@ -414,6 +416,8 @@
|
|
|
414
416
|
|
|
415
417
|
<li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
|
|
416
418
|
|
|
419
|
+
<li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
|
|
420
|
+
|
|
417
421
|
<li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
|
|
418
422
|
|
|
419
423
|
<li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
|
|
@@ -524,6 +528,8 @@
|
|
|
524
528
|
|
|
525
529
|
<li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
|
|
526
530
|
|
|
531
|
+
<li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
|
|
532
|
+
|
|
527
533
|
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
|
528
534
|
|
|
529
535
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
|
@@ -638,7 +644,7 @@ permit direct access to the <a href="ProjectServer.html">ProjectServer</a>.
|
|
|
638
644
|
<div class="method-heading">
|
|
639
645
|
|
|
640
646
|
<span class="method-name">new</span><span
|
|
641
|
-
class="method-args">(projectData = nil)</span>
|
|
647
|
+
class="method-args">(projectData = nil, logConsole = false)</span>
|
|
642
648
|
<span class="method-click-advice">click to toggle source</span>
|
|
643
649
|
|
|
644
650
|
</div>
|
|
@@ -653,7 +659,7 @@ permit direct access to the <a href="ProjectServer.html">ProjectServer</a>.
|
|
|
653
659
|
id="new-source">
|
|
654
660
|
<pre>
|
|
655
661
|
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 40</span>
|
|
656
|
-
40: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">projectData</span> = <span class="ruby-keyword kw">nil</span>)
|
|
662
|
+
40: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</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>)
|
|
657
663
|
41: <span class="ruby-ivar">@projectData</span> = <span class="ruby-identifier">projectData</span>
|
|
658
664
|
42: <span class="ruby-comment cmt"># Since we are still in the ProjectBroker process, the current DRb</span>
|
|
659
665
|
43: <span class="ruby-comment cmt"># server is still the ProjectBroker DRb server.</span>
|
|
@@ -662,75 +668,87 @@ permit direct access to the <a href="ProjectServer.html">ProjectServer</a>.
|
|
|
662
668
|
46: <span class="ruby-ivar">@daemon</span> = <span class="ruby-keyword kw">nil</span>
|
|
663
669
|
47: <span class="ruby-identifier">initIntercom</span>
|
|
664
670
|
48:
|
|
665
|
-
49: <span class="ruby-ivar">@
|
|
666
|
-
50: <span class="ruby-ivar">@
|
|
667
|
-
51:
|
|
668
|
-
52:
|
|
669
|
-
53: <span class="ruby-
|
|
670
|
-
54: <span class="ruby-
|
|
671
|
-
55: <span class="ruby-
|
|
672
|
-
56: <span class="ruby-
|
|
673
|
-
57: <span class="ruby-
|
|
674
|
-
58: <span class="ruby-
|
|
675
|
-
59: <span class="ruby-
|
|
676
|
-
60:
|
|
677
|
-
61:
|
|
678
|
-
62: <span class="ruby-
|
|
679
|
-
63:
|
|
680
|
-
64:
|
|
681
|
-
65: <span class="ruby-
|
|
682
|
-
66: <span class="ruby-ivar">@reportServers</span
|
|
683
|
-
67:
|
|
684
|
-
68:
|
|
685
|
-
69:
|
|
686
|
-
70:
|
|
687
|
-
71: <span class="ruby-comment cmt">#
|
|
688
|
-
72: <span class="ruby-comment cmt">#
|
|
689
|
-
73: <span class="ruby-comment cmt">#
|
|
690
|
-
74: <span class="ruby-comment cmt">#
|
|
691
|
-
75: <span class="ruby-comment cmt">#
|
|
692
|
-
76: <span class="ruby-
|
|
693
|
-
77:
|
|
694
|
-
78:
|
|
695
|
-
79:
|
|
696
|
-
80:
|
|
697
|
-
81:
|
|
698
|
-
82: <span class="ruby-
|
|
699
|
-
83: <span class="ruby-
|
|
700
|
-
84:
|
|
701
|
-
85:
|
|
702
|
-
86:
|
|
703
|
-
87:
|
|
704
|
-
88:
|
|
705
|
-
89:
|
|
706
|
-
90:
|
|
707
|
-
91: <span class="ruby-
|
|
708
|
-
92:
|
|
709
|
-
93:
|
|
710
|
-
94:
|
|
711
|
-
95:
|
|
712
|
-
96:
|
|
713
|
-
97:
|
|
714
|
-
98:
|
|
715
|
-
99:
|
|
716
|
-
100:
|
|
717
|
-
101:
|
|
718
|
-
102:
|
|
719
|
-
103:
|
|
720
|
-
104:
|
|
671
|
+
49: <span class="ruby-ivar">@logConsole</span> = <span class="ruby-identifier">logConsole</span>
|
|
672
|
+
50: <span class="ruby-ivar">@pid</span> = <span class="ruby-keyword kw">nil</span>
|
|
673
|
+
51: <span class="ruby-ivar">@uri</span> = <span class="ruby-keyword kw">nil</span>
|
|
674
|
+
52:
|
|
675
|
+
53: <span class="ruby-comment cmt"># A reference to the TaskJuggler object that holds the project data.</span>
|
|
676
|
+
54: <span class="ruby-ivar">@tj</span> = <span class="ruby-keyword kw">nil</span>
|
|
677
|
+
55: <span class="ruby-comment cmt"># The current state of the project.</span>
|
|
678
|
+
56: <span class="ruby-ivar">@state</span> = <span class="ruby-value">:new</span>
|
|
679
|
+
57: <span class="ruby-comment cmt"># A time stamp when the last @state update happened.</span>
|
|
680
|
+
58: <span class="ruby-ivar">@stateUpdated</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
|
|
681
|
+
59: <span class="ruby-comment cmt"># A lock to protect access to @state</span>
|
|
682
|
+
60: <span class="ruby-ivar">@stateLock</span> = <span class="ruby-constant">Monitor</span>.<span class="ruby-identifier">new</span>
|
|
683
|
+
61:
|
|
684
|
+
62: <span class="ruby-comment cmt"># A Queue to asynchronously generate new ReportServer objects.</span>
|
|
685
|
+
63: <span class="ruby-ivar">@reportServerRequests</span> = <span class="ruby-constant">Queue</span>.<span class="ruby-identifier">new</span>
|
|
686
|
+
64:
|
|
687
|
+
65: <span class="ruby-comment cmt"># A list of active ReportServer objects</span>
|
|
688
|
+
66: <span class="ruby-ivar">@reportServers</span> = []
|
|
689
|
+
67: <span class="ruby-ivar">@reportServers</span>.<span class="ruby-identifier">extend</span>(<span class="ruby-constant">MonitorMixin</span>)
|
|
690
|
+
68:
|
|
691
|
+
69: <span class="ruby-ivar">@lastPing</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
|
|
692
|
+
70:
|
|
693
|
+
71: <span class="ruby-comment cmt"># We've started a DRb server before. This will continue to live somewhat</span>
|
|
694
|
+
72: <span class="ruby-comment cmt"># in the child. All attempts to create a DRb connection from the child</span>
|
|
695
|
+
73: <span class="ruby-comment cmt"># to the parent will end up in the child again. So we use a Pipe to</span>
|
|
696
|
+
74: <span class="ruby-comment cmt"># communicate the URI of the child DRb server to the parent. The</span>
|
|
697
|
+
75: <span class="ruby-comment cmt"># communication from the parent to the child is not affected by the</span>
|
|
698
|
+
76: <span class="ruby-comment cmt"># zombie DRb server in the child process.</span>
|
|
699
|
+
77: <span class="ruby-identifier">rd</span>, <span class="ruby-identifier">wr</span> = <span class="ruby-constant">IO</span>.<span class="ruby-identifier">pipe</span>
|
|
700
|
+
78:
|
|
701
|
+
79: <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>
|
|
702
|
+
80: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-value str">'ProjectServer fork failed'</span>)
|
|
703
|
+
81: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@pid</span>.<span class="ruby-identifier">nil?</span>
|
|
704
|
+
82: <span class="ruby-comment cmt"># This is the child</span>
|
|
705
|
+
83: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@logConsole</span>
|
|
706
|
+
84: <span class="ruby-comment cmt"># If the Broker wasn't daemonized, log stdout and stderr to PID</span>
|
|
707
|
+
85: <span class="ruby-comment cmt"># specific files.</span>
|
|
708
|
+
86: <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>)
|
|
709
|
+
87: <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>)
|
|
710
|
+
88: <span class="ruby-keyword kw">end</span>
|
|
711
|
+
89: <span class="ruby-keyword kw">begin</span>
|
|
712
|
+
90: <span class="ruby-identifier">$SAFE</span> = <span class="ruby-value">1</span>
|
|
713
|
+
91: <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>))
|
|
714
|
+
92: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">start_service</span>
|
|
715
|
+
93: <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>)
|
|
716
|
+
94: <span class="ruby-keyword kw">begin</span>
|
|
717
|
+
95: <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>
|
|
718
|
+
96: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"Project server is listening on #{@uri}"</span>)
|
|
719
|
+
97: <span class="ruby-keyword kw">rescue</span>
|
|
720
|
+
98: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">"ProjectServer can't start DRb: #{$!}"</span>)
|
|
721
|
+
99: <span class="ruby-keyword kw">end</span>
|
|
722
|
+
100:
|
|
723
|
+
101: <span class="ruby-comment cmt"># Send the URI of the newly started DRb server to the parent process.</span>
|
|
724
|
+
102: <span class="ruby-identifier">rd</span>.<span class="ruby-identifier">close</span>
|
|
725
|
+
103: <span class="ruby-identifier">wr</span>.<span class="ruby-identifier">write</span> <span class="ruby-ivar">@uri</span>
|
|
726
|
+
104: <span class="ruby-identifier">wr</span>.<span class="ruby-identifier">close</span>
|
|
721
727
|
105:
|
|
722
|
-
106:
|
|
723
|
-
107:
|
|
724
|
-
108:
|
|
725
|
-
109:
|
|
726
|
-
110:
|
|
727
|
-
111:
|
|
728
|
-
112:
|
|
729
|
-
113:
|
|
730
|
-
114:
|
|
731
|
-
115:
|
|
732
|
-
116:
|
|
733
|
-
117:
|
|
728
|
+
106: <span class="ruby-comment cmt"># Start a Thread that waits for the @terminate flag to be set and does</span>
|
|
729
|
+
107: <span class="ruby-comment cmt"># other background tasks.</span>
|
|
730
|
+
108: <span class="ruby-identifier">startTerminator</span>
|
|
731
|
+
109: <span class="ruby-comment cmt"># Start another Thread that will be used to fork-off ReportServer</span>
|
|
732
|
+
110: <span class="ruby-comment cmt"># processes.</span>
|
|
733
|
+
111: <span class="ruby-identifier">startHousekeeping</span>
|
|
734
|
+
112:
|
|
735
|
+
113: <span class="ruby-comment cmt"># Cleanup the DRb threads</span>
|
|
736
|
+
114: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">thread</span>.<span class="ruby-identifier">join</span>
|
|
737
|
+
115: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-value str">'Project server terminated'</span>)
|
|
738
|
+
116: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
|
|
739
|
+
117: <span class="ruby-keyword kw">rescue</span>
|
|
740
|
+
118: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span> <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">to_s</span>
|
|
741
|
+
119: <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>)
|
|
742
|
+
120: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">"ProjectServer can't start DRb: #{$!}"</span>)
|
|
743
|
+
121: <span class="ruby-keyword kw">end</span>
|
|
744
|
+
122: <span class="ruby-keyword kw">else</span>
|
|
745
|
+
123: <span class="ruby-comment cmt"># This is the parent</span>
|
|
746
|
+
124: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">detach</span>(<span class="ruby-ivar">@pid</span>)
|
|
747
|
+
125: <span class="ruby-identifier">wr</span>.<span class="ruby-identifier">close</span>
|
|
748
|
+
126: <span class="ruby-ivar">@uri</span> = <span class="ruby-identifier">rd</span>.<span class="ruby-identifier">read</span>
|
|
749
|
+
127: <span class="ruby-identifier">rd</span>.<span class="ruby-identifier">close</span>
|
|
750
|
+
128: <span class="ruby-keyword kw">end</span>
|
|
751
|
+
129: <span class="ruby-keyword kw">end</span></pre>
|
|
734
752
|
</div>
|
|
735
753
|
|
|
736
754
|
</div>
|
|
@@ -769,12 +787,12 @@ Return the name of the loaded project or nil.
|
|
|
769
787
|
<div class="method-source-code"
|
|
770
788
|
id="get-roject-ame-source">
|
|
771
789
|
<pre>
|
|
772
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
790
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 172</span>
|
|
791
|
+
172: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getProjectName</span>
|
|
792
|
+
173: <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>
|
|
793
|
+
174: <span class="ruby-identifier">restartTimer</span>
|
|
794
|
+
175: <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">projectName</span>
|
|
795
|
+
176: <span class="ruby-keyword kw">end</span></pre>
|
|
778
796
|
</div>
|
|
779
797
|
|
|
780
798
|
</div>
|
|
@@ -807,18 +825,18 @@ Return a list of the HTML reports defined for the project.
|
|
|
807
825
|
<div class="method-source-code"
|
|
808
826
|
id="get-eport-ist-source">
|
|
809
827
|
<pre>
|
|
810
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
828
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 179</span>
|
|
829
|
+
179: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getReportList</span>
|
|
830
|
+
180: <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>)
|
|
831
|
+
181: <span class="ruby-identifier">list</span> = []
|
|
832
|
+
182: <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>
|
|
833
|
+
183: <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>
|
|
834
|
+
184: <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> ]
|
|
835
|
+
185: <span class="ruby-keyword kw">end</span>
|
|
836
|
+
186: <span class="ruby-keyword kw">end</span>
|
|
837
|
+
187: <span class="ruby-identifier">restartTimer</span>
|
|
838
|
+
188: <span class="ruby-identifier">list</span>
|
|
839
|
+
189: <span class="ruby-keyword kw">end</span></pre>
|
|
822
840
|
</div>
|
|
823
841
|
|
|
824
842
|
</div>
|
|
@@ -853,35 +871,36 @@ and the authentication key of this new server.
|
|
|
853
871
|
<div class="method-source-code"
|
|
854
872
|
id="get-eport-erver-source">
|
|
855
873
|
<pre>
|
|
856
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
874
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 193</span>
|
|
875
|
+
193: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getReportServer</span>
|
|
876
|
+
194: <span class="ruby-comment cmt"># ReportServer objects only make sense for successfully scheduled</span>
|
|
877
|
+
195: <span class="ruby-comment cmt"># projects.</span>
|
|
878
|
+
196: <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>
|
|
879
|
+
197:
|
|
880
|
+
198: <span class="ruby-comment cmt"># The ReportServer will be created asynchronously in another Thread. To</span>
|
|
881
|
+
199: <span class="ruby-comment cmt"># find it in the @reportServers list, we create a unique tag to identify</span>
|
|
882
|
+
200: <span class="ruby-comment cmt"># it.</span>
|
|
883
|
+
201: <span class="ruby-identifier">tag</span> = <span class="ruby-identifier">rand</span>(<span class="ruby-value">99999999999999</span>)
|
|
884
|
+
202: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"Pushing #{tag} onto report server request queue"</span>)
|
|
885
|
+
203: <span class="ruby-ivar">@reportServerRequests</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">tag</span>)
|
|
886
|
+
204:
|
|
887
|
+
205: <span class="ruby-comment cmt"># Now wait until the new ReportServer shows up in the list.</span>
|
|
888
|
+
206: <span class="ruby-identifier">reportServer</span> = <span class="ruby-keyword kw">nil</span>
|
|
889
|
+
207: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">reportServer</span>.<span class="ruby-identifier">nil?</span>
|
|
890
|
+
208: <span class="ruby-ivar">@reportServers</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
|
|
891
|
+
209: <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>
|
|
892
|
+
210: <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>
|
|
893
|
+
211: <span class="ruby-keyword kw">end</span>
|
|
894
|
+
212: <span class="ruby-keyword kw">end</span>
|
|
895
|
+
213: <span class="ruby-comment cmt"># It should not take that long, so we use a short idle time here.</span>
|
|
896
|
+
214: <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>
|
|
897
|
+
215: <span class="ruby-keyword kw">end</span>
|
|
898
|
+
216:
|
|
899
|
+
217: <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>
|
|
900
|
+
218: <span class="ruby-node">"tag #{tag}"</span>)
|
|
901
|
+
219: <span class="ruby-identifier">restartTimer</span>
|
|
902
|
+
220: [ <span class="ruby-identifier">reportServer</span>.<span class="ruby-identifier">uri</span>, <span class="ruby-identifier">reportServer</span>.<span class="ruby-identifier">authKey</span> ]
|
|
903
|
+
221: <span class="ruby-keyword kw">end</span></pre>
|
|
885
904
|
</div>
|
|
886
905
|
|
|
887
906
|
</div>
|
|
@@ -918,37 +937,41 @@ Additionally a list of optional .tji files can be provided.
|
|
|
918
937
|
<div class="method-source-code"
|
|
919
938
|
id="load-roject-source">
|
|
920
939
|
<pre>
|
|
921
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
940
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 136</span>
|
|
941
|
+
136: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">loadProject</span>(<span class="ruby-identifier">args</span>)
|
|
942
|
+
137: <span class="ruby-identifier">dirAndFiles</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">dup</span>.<span class="ruby-identifier">untaint</span>
|
|
943
|
+
138: <span class="ruby-comment cmt"># The first argument is the working directory</span>
|
|
944
|
+
139: <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>)
|
|
945
|
+
140:
|
|
946
|
+
141: <span class="ruby-comment cmt"># Save a time stamp of when the project file loading started.</span>
|
|
947
|
+
142: <span class="ruby-ivar">@modifiedCheck</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
|
|
948
|
+
143:
|
|
949
|
+
144: <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>)
|
|
950
|
+
145: <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>)
|
|
951
|
+
146:
|
|
952
|
+
147: <span class="ruby-comment cmt"># Parse all project files</span>
|
|
953
|
+
148: <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>)
|
|
954
|
+
149: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">"Parsing of #{args.join(' ')} failed"</span>)
|
|
955
|
+
150: <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>)
|
|
956
|
+
151: <span class="ruby-ivar">@terminate</span> = <span class="ruby-keyword kw">true</span>
|
|
957
|
+
152: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
|
|
958
|
+
153: <span class="ruby-keyword kw">end</span>
|
|
959
|
+
154:
|
|
960
|
+
155: <span class="ruby-comment cmt"># Then schedule the project</span>
|
|
961
|
+
156: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">schedule</span>
|
|
962
|
+
157: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">"Scheduling of project #{@tj.projectId} failed"</span>)
|
|
963
|
+
158: <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>)
|
|
964
|
+
159: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">exit</span>(<span class="ruby-value str">'scheduler'</span>)
|
|
965
|
+
160: <span class="ruby-ivar">@terminate</span> = <span class="ruby-keyword kw">true</span>
|
|
966
|
+
161: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
|
|
967
|
+
162: <span class="ruby-keyword kw">end</span>
|
|
968
|
+
163:
|
|
969
|
+
164: <span class="ruby-comment cmt"># Great, everything went fine. We've got a project to work with.</span>
|
|
970
|
+
165: <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>)
|
|
971
|
+
166: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">"Project #{@tj.projectId} loaded"</span>)
|
|
972
|
+
167: <span class="ruby-identifier">restartTimer</span>
|
|
973
|
+
168: <span class="ruby-keyword kw">true</span>
|
|
974
|
+
169: <span class="ruby-keyword kw">end</span></pre>
|
|
952
975
|
</div>
|
|
953
976
|
|
|
954
977
|
</div>
|
|
@@ -983,24 +1006,24 @@ href="ProjectServer.html">ProjectServer</a> is still operating properly.
|
|
|
983
1006
|
<div class="method-source-code"
|
|
984
1007
|
id="ping-source">
|
|
985
1008
|
<pre>
|
|
986
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1009
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 225</span>
|
|
1010
|
+
225: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ping</span>
|
|
1011
|
+
226: <span class="ruby-comment cmt"># Store the time stamp. If we don't get the ping for some time, we</span>
|
|
1012
|
+
227: <span class="ruby-comment cmt"># assume the ProjectBroker has died.</span>
|
|
1013
|
+
228: <span class="ruby-ivar">@lastPing</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
|
|
1014
|
+
229:
|
|
1015
|
+
230: <span class="ruby-comment cmt"># Now also check our ReportServers if they are still there. If not, we</span>
|
|
1016
|
+
231: <span class="ruby-comment cmt"># can remove them from the @reportServers list.</span>
|
|
1017
|
+
232: <span class="ruby-ivar">@reportServers</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
|
|
1018
|
+
233: <span class="ruby-identifier">deadServers</span> = []
|
|
1019
|
+
234: <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>
|
|
1020
|
+
235: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">rs</span>.<span class="ruby-identifier">ping</span>
|
|
1021
|
+
236: <span class="ruby-identifier">deadServers</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">rs</span>
|
|
1022
|
+
237: <span class="ruby-keyword kw">end</span>
|
|
1023
|
+
238: <span class="ruby-keyword kw">end</span>
|
|
1024
|
+
239: <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>) }
|
|
1025
|
+
240: <span class="ruby-keyword kw">end</span>
|
|
1026
|
+
241: <span class="ruby-keyword kw">end</span></pre>
|
|
1004
1027
|
</div>
|
|
1005
1028
|
|
|
1006
1029
|
</div>
|
|
@@ -1037,57 +1060,77 @@ href="ProjectServer.html">ProjectServer</a> is still operating properly.
|
|
|
1037
1060
|
<div class="method-source-code"
|
|
1038
1061
|
id="start-ousekeeping-source">
|
|
1039
1062
|
<pre>
|
|
1040
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1063
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 262</span>
|
|
1064
|
+
262: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startHousekeeping</span>
|
|
1065
|
+
263: <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span>
|
|
1066
|
+
264: <span class="ruby-keyword kw">begin</span>
|
|
1067
|
+
265: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
|
|
1068
|
+
266: <span class="ruby-comment cmt"># Was the project data provided during object creation?</span>
|
|
1069
|
+
267: <span class="ruby-comment cmt"># Then we load the data here.</span>
|
|
1070
|
+
268: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@projectData</span>
|
|
1071
|
+
269: <span class="ruby-identifier">loadProject</span>(<span class="ruby-ivar">@projectData</span>)
|
|
1072
|
+
270: <span class="ruby-ivar">@projectData</span> = <span class="ruby-keyword kw">nil</span>
|
|
1073
|
+
271: <span class="ruby-keyword kw">end</span>
|
|
1074
|
+
272:
|
|
1075
|
+
273: <span class="ruby-comment cmt"># Check every 60 seconds if the input files have been modified.</span>
|
|
1076
|
+
274: <span class="ruby-comment cmt"># Don't check if we already know it has been modified.</span>
|
|
1077
|
+
275: <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>
|
|
1078
|
+
276: <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> }
|
|
1079
|
+
277: <span class="ruby-comment cmt"># Reset the timer</span>
|
|
1080
|
+
278: <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> }
|
|
1081
|
+
279:
|
|
1082
|
+
280: <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>
|
|
1083
|
+
281: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">"Project #{@tj.projectId} has been modified"</span>)
|
|
1084
|
+
282: <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>)
|
|
1085
|
+
283: <span class="ruby-keyword kw">end</span>
|
|
1086
|
+
284: <span class="ruby-keyword kw">end</span>
|
|
1087
|
+
285:
|
|
1088
|
+
286: <span class="ruby-comment cmt"># Check for pending requests for new ReportServers.</span>
|
|
1089
|
+
287: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@reportServerRequests</span>.<span class="ruby-identifier">empty?</span>
|
|
1090
|
+
288: <span class="ruby-identifier">tag</span> = <span class="ruby-ivar">@reportServerRequests</span>.<span class="ruby-identifier">pop</span>
|
|
1091
|
+
289: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"Popped #{tag}"</span>)
|
|
1092
|
+
290: <span class="ruby-comment cmt"># Create an new entry for the @reportServers list.</span>
|
|
1093
|
+
291: <span class="ruby-identifier">rsr</span> = <span class="ruby-constant">ReportServerRecord</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">tag</span>)
|
|
1094
|
+
292: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-value str">"RSR created"</span>)
|
|
1095
|
+
293: <span class="ruby-comment cmt"># Create a new ReportServer object that runs as a separate</span>
|
|
1096
|
+
294: <span class="ruby-comment cmt"># process. The constructor will tell us the URI and authentication</span>
|
|
1097
|
+
295: <span class="ruby-comment cmt"># key of the new ReportServer.</span>
|
|
1098
|
+
296: <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>)
|
|
1099
|
+
297: <span class="ruby-identifier">rsr</span>.<span class="ruby-identifier">uri</span> = <span class="ruby-identifier">rs</span>.<span class="ruby-identifier">uri</span>
|
|
1100
|
+
298: <span class="ruby-identifier">rsr</span>.<span class="ruby-identifier">authKey</span> = <span class="ruby-identifier">rs</span>.<span class="ruby-identifier">authKey</span>
|
|
1101
|
+
299: <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>)
|
|
1102
|
+
300: <span class="ruby-comment cmt"># Add the new ReportServer to our list.</span>
|
|
1103
|
+
301: <span class="ruby-ivar">@reportServers</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
|
|
1104
|
+
302: <span class="ruby-ivar">@reportServers</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">rsr</span>
|
|
1105
|
+
303: <span class="ruby-keyword kw">end</span>
|
|
1106
|
+
304: <span class="ruby-keyword kw">end</span>
|
|
1107
|
+
305:
|
|
1108
|
+
306: <span class="ruby-comment cmt"># Some state changing operations are not atomic. Since the client</span>
|
|
1109
|
+
307: <span class="ruby-comment cmt"># can die during the transaction, the server might hang in some</span>
|
|
1110
|
+
308: <span class="ruby-comment cmt"># states. Here we define timeout for each state. If the timeout is</span>
|
|
1111
|
+
309: <span class="ruby-comment cmt"># not 0 and exceeded, we immediately terminate the process.</span>
|
|
1112
|
+
310: <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>,
|
|
1113
|
+
311: <span class="ruby-value">:ready</span> =<span class="ruby-operator">></span> <span class="ruby-value">0</span> }
|
|
1114
|
+
312: <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>
|
|
1115
|
+
313: <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>]
|
|
1116
|
+
314: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">"Reached timeout for state #{@state}. Terminating."</span>)
|
|
1117
|
+
315: <span class="ruby-keyword kw">end</span>
|
|
1118
|
+
316:
|
|
1119
|
+
317: <span class="ruby-comment cmt"># If we have not received a ping from the ProjectBroker for 2</span>
|
|
1120
|
+
318: <span class="ruby-comment cmt"># minutes, we assume it has died and terminate as well.</span>
|
|
1121
|
+
319: <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>
|
|
1122
|
+
320: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-value str">'Heartbeat from daemon lost. Terminating.'</span>)
|
|
1123
|
+
321: <span class="ruby-keyword kw">end</span>
|
|
1124
|
+
322: <span class="ruby-identifier">sleep</span> <span class="ruby-value">1</span>
|
|
1125
|
+
323: <span class="ruby-keyword kw">end</span>
|
|
1126
|
+
324: <span class="ruby-keyword kw">rescue</span>
|
|
1127
|
+
325: <span class="ruby-comment cmt"># Make sure we get a backtrace for this thread.</span>
|
|
1128
|
+
326: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span> <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">to_s</span>
|
|
1129
|
+
327: <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>)
|
|
1130
|
+
328: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">"ProjectServer housekeeping error: #{$!}"</span>)
|
|
1131
|
+
329: <span class="ruby-keyword kw">end</span>
|
|
1132
|
+
330: <span class="ruby-keyword kw">end</span>
|
|
1133
|
+
331: <span class="ruby-keyword kw">end</span></pre>
|
|
1091
1134
|
</div>
|
|
1092
1135
|
|
|
1093
1136
|
</div>
|
|
@@ -1104,7 +1147,7 @@ href="ProjectServer.html">ProjectServer</a> is still operating properly.
|
|
|
1104
1147
|
<div class="method-heading">
|
|
1105
1148
|
|
|
1106
1149
|
<span class="method-name">updateState</span><span
|
|
1107
|
-
class="method-args">(state,
|
|
1150
|
+
class="method-args">(state, filesOrId, modified)</span>
|
|
1108
1151
|
<span class="method-click-advice">click to toggle source</span>
|
|
1109
1152
|
|
|
1110
1153
|
</div>
|
|
@@ -1112,8 +1155,8 @@ href="ProjectServer.html">ProjectServer</a> is still operating properly.
|
|
|
1112
1155
|
<div class="method-description">
|
|
1113
1156
|
|
|
1114
1157
|
<p>
|
|
1115
|
-
Update the <em>state</em> and <em>
|
|
1116
|
-
remotely.
|
|
1158
|
+
Update the <em>state</em>, <em>id</em> and <em>modified</em> state of the
|
|
1159
|
+
project locally and remotely.
|
|
1117
1160
|
</p>
|
|
1118
1161
|
|
|
1119
1162
|
|
|
@@ -1121,19 +1164,21 @@ remotely.
|
|
|
1121
1164
|
<div class="method-source-code"
|
|
1122
1165
|
id="update-tate-source">
|
|
1123
1166
|
<pre>
|
|
1124
|
-
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1167
|
+
<span class="ruby-comment cmt"># File lib/daemon/ProjectServer.rb, line 247</span>
|
|
1168
|
+
247: <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>)
|
|
1169
|
+
248: <span class="ruby-keyword kw">begin</span>
|
|
1170
|
+
249: <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>
|
|
1171
|
+
250: <span class="ruby-ivar">@daemon</span>.<span class="ruby-identifier">updateState</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>)
|
|
1172
|
+
251: <span class="ruby-keyword kw">rescue</span>
|
|
1173
|
+
252: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">"Can't update state with daemon: #{$!}"</span>)
|
|
1174
|
+
253: <span class="ruby-keyword kw">end</span>
|
|
1175
|
+
254: <span class="ruby-ivar">@stateLock</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
|
|
1176
|
+
255: <span class="ruby-ivar">@state</span> = <span class="ruby-identifier">state</span>
|
|
1177
|
+
256: <span class="ruby-ivar">@stateUpdated</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
|
|
1178
|
+
257: <span class="ruby-ivar">@modified</span> = <span class="ruby-identifier">modified</span>
|
|
1179
|
+
258: <span class="ruby-ivar">@modifiedCheck</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
|
|
1180
|
+
259: <span class="ruby-keyword kw">end</span>
|
|
1181
|
+
260: <span class="ruby-keyword kw">end</span></pre>
|
|
1137
1182
|
</div>
|
|
1138
1183
|
|
|
1139
1184
|
</div>
|