Class: TaskJuggler::ReportServer
Instance Attribute Summary collapse
Instance Method Summary
collapse
#checkKey, #connect, #disconnect, #generateAuthKey, #initIntercom, #restartTimer, #startTerminator, #terminate, #timerExpired?
#critical, #debug, #error, #fatal, #info, #warning
Constructor Details
#initialize(tj, logConsole = false) ⇒ ReportServer
Returns a new instance of ReportServer.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/taskjuggler/daemon/ReportServer.rb', line 26
def initialize(tj, logConsole = false)
initIntercom
@pid = nil
@uri = nil
@tj = tj
@reportId = 'unknown'
@lastPing = TjTime.new
rd, wr = IO.pipe
if (@pid = fork) == -1
fatal('rs_fork_failed', 'ReportServer fork failed')
elsif @pid.nil?
if logConsole
$stderr.reopen("tj3d.rs.#{$$}.stderr", 'w')
$stdout.reopen("tj3d.rs.#{$$}.stdout", 'w')
end
begin
$SAFE = 1
DRb.install_acl(ACL.new(%w[ deny all
allow 127.0.0.1 ]))
iFace = ReportServerIface.new(self)
begin
uri = DRb.start_service('druby://127.0.0.1:0', iFace).uri
debug('', "Report server is listening on #{uri}")
rescue
error('rs_cannot_start_drb',
"ReportServer can't start DRb: #{$!}")
end
rd.close
wr.write uri
wr.close
startTerminator
startWatchDog
DRb.thread.join
debug('', 'Report server terminated')
exit 0
rescue => exception
if exception.is_a?(TjRuntimeError)
raise TjRuntimeError, $!
end
error('rs_unexp_excp',
"ReportServer caught unexpected exception: #{$!}")
end
else
Process.detach(@pid)
wr.close
@uri = rd.read
rd.close
end
end
|
Instance Attribute Details
Returns the value of attribute authKey.
24
25
26
|
# File 'lib/taskjuggler/daemon/ReportServer.rb', line 24
def authKey
@authKey
end
|
Returns the value of attribute uri.
24
25
26
|
# File 'lib/taskjuggler/daemon/ReportServer.rb', line 24
def uri
@uri
end
|
Instance Method Details
#addFile(file) ⇒ Object
106
107
108
109
110
111
112
113
114
|
# File 'lib/taskjuggler/daemon/ReportServer.rb', line 106
def addFile(file)
begin
@tj.parseFile(file, :reportPropertiesFile)
rescue TjRuntimeError
return false
end
restartTimer
true
end
|
#checkStatusSheet(sheet) ⇒ Object
163
164
165
166
167
168
169
170
171
172
173
174
|
# File 'lib/taskjuggler/daemon/ReportServer.rb', line 163
def checkStatusSheet(sheet)
info('check_status_sheet', "Checking status sheet #{sheet}")
@reportId = 'statussheet'
begin
ok = @tj.checkStatusSheet(sheet)
debug('', "Status sheet #{sheet} is #{ok ? '' : 'not '}ok")
rescue TjRuntimeError
return false
end
restartTimer
ok
end
|
#checkTimeSheet(sheet) ⇒ Object
150
151
152
153
154
155
156
157
158
159
160
161
|
# File 'lib/taskjuggler/daemon/ReportServer.rb', line 150
def checkTimeSheet(sheet)
info('check_time_sheet', "Checking time sheet #{sheet}")
@reportId = 'timesheet'
begin
ok = @tj.checkTimeSheet(sheet)
debug('', "Time sheet #{sheet} is #{ok ? '' : 'not '}ok")
rescue TjRuntimeError
return false
end
restartTimer
ok
end
|
#generateReport(id, regExpMode, formats, dynamicAttributes) ⇒ Object
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
# File 'lib/taskjuggler/daemon/ReportServer.rb', line 116
def generateReport(id, regExpMode, formats, dynamicAttributes)
info('generating_report', "Generating report #{id}")
startTime = Time.now
@reportId = id
begin
if (ok = @tj.generateReport(id, regExpMode, formats, dynamicAttributes))
info('report_id_generated',
"Report #{id} generated in #{Time.now - startTime} seconds")
else
error('report_generation_failed', "Report generation of #{id} failed")
end
rescue TjRuntimeError
return false
end
restartTimer
ok
end
|
#listReports(id, regExpMode) ⇒ Object
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
# File 'lib/taskjuggler/daemon/ReportServer.rb', line 134
def listReports(id, regExpMode)
info('listing_report_id', "Listing report #{id}")
begin
if (ok = @tj.listReports(id, regExpMode))
debug('', "Report list for #{id} generated")
else
error('repor_list_comp_failed',
"Report list compilation of #{id} failed")
end
rescue TjRuntimeError
return false
end
restartTimer
ok
end
|
102
103
104
|
# File 'lib/taskjuggler/daemon/ReportServer.rb', line 102
def ping
@lastPing = TjTime.new
end
|