siffer 0.0.4

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.
Files changed (91) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +65 -0
  3. data/Rakefile +64 -0
  4. data/bin/siffer +71 -0
  5. data/doc/SIF ImplementationSpecification.pdf +0 -0
  6. data/doc/rdoc/classes/Siffer.html +374 -0
  7. data/doc/rdoc/classes/Siffer/Agent.html +296 -0
  8. data/doc/rdoc/classes/Siffer/Container.html +286 -0
  9. data/doc/rdoc/classes/Siffer/Messages.html +141 -0
  10. data/doc/rdoc/classes/Siffer/Messages/Ack.html +216 -0
  11. data/doc/rdoc/classes/Siffer/Messages/Acl.html +160 -0
  12. data/doc/rdoc/classes/Siffer/Messages/Error.html +248 -0
  13. data/doc/rdoc/classes/Siffer/Messages/Message.html +359 -0
  14. data/doc/rdoc/classes/Siffer/Messages/Message/Header.html +181 -0
  15. data/doc/rdoc/classes/Siffer/Messages/Register.html +257 -0
  16. data/doc/rdoc/classes/Siffer/Messages/RequestBody.html +300 -0
  17. data/doc/rdoc/classes/Siffer/Messages/Status.html +269 -0
  18. data/doc/rdoc/classes/Siffer/Messaging.html +331 -0
  19. data/doc/rdoc/classes/Siffer/Protocol.html +388 -0
  20. data/doc/rdoc/classes/Siffer/Protocol/NonPostRequest.html +111 -0
  21. data/doc/rdoc/classes/Siffer/Protocol/UnknownPath.html +111 -0
  22. data/doc/rdoc/classes/Siffer/Registration.html +391 -0
  23. data/doc/rdoc/classes/Siffer/Request.html +209 -0
  24. data/doc/rdoc/classes/Siffer/RequestLogger.html +211 -0
  25. data/doc/rdoc/classes/Siffer/Response.html +182 -0
  26. data/doc/rdoc/classes/Siffer/Server.html +242 -0
  27. data/doc/rdoc/created.rid +1 -0
  28. data/doc/rdoc/files/LICENSE.html +129 -0
  29. data/doc/rdoc/files/README_rdoc.html +184 -0
  30. data/doc/rdoc/files/lib/agent_rb.html +101 -0
  31. data/doc/rdoc/files/lib/container_rb.html +108 -0
  32. data/doc/rdoc/files/lib/messages/ack_rb.html +101 -0
  33. data/doc/rdoc/files/lib/messages/acl_rb.html +101 -0
  34. data/doc/rdoc/files/lib/messages/error_rb.html +101 -0
  35. data/doc/rdoc/files/lib/messages/message_rb.html +101 -0
  36. data/doc/rdoc/files/lib/messages/register_rb.html +101 -0
  37. data/doc/rdoc/files/lib/messages/request_body_rb.html +101 -0
  38. data/doc/rdoc/files/lib/messages/status_rb.html +101 -0
  39. data/doc/rdoc/files/lib/messages_rb.html +114 -0
  40. data/doc/rdoc/files/lib/messaging_rb.html +101 -0
  41. data/doc/rdoc/files/lib/protocol_rb.html +101 -0
  42. data/doc/rdoc/files/lib/registration_rb.html +101 -0
  43. data/doc/rdoc/files/lib/request_logger_rb.html +101 -0
  44. data/doc/rdoc/files/lib/request_rb.html +101 -0
  45. data/doc/rdoc/files/lib/response_rb.html +101 -0
  46. data/doc/rdoc/files/lib/server_rb.html +101 -0
  47. data/doc/rdoc/files/lib/siffer_rb.html +115 -0
  48. data/doc/rdoc/fr_class_index.html +47 -0
  49. data/doc/rdoc/fr_file_index.html +46 -0
  50. data/doc/rdoc/fr_method_index.html +96 -0
  51. data/doc/rdoc/index.html +24 -0
  52. data/doc/rdoc/rdoc-style.css +208 -0
  53. data/lib/agent.rb +43 -0
  54. data/lib/container.rb +96 -0
  55. data/lib/messages.rb +7 -0
  56. data/lib/messages/ack.rb +43 -0
  57. data/lib/messages/acl.rb +25 -0
  58. data/lib/messages/error.rb +174 -0
  59. data/lib/messages/message.rb +71 -0
  60. data/lib/messages/register.rb +60 -0
  61. data/lib/messages/request_body.rb +66 -0
  62. data/lib/messages/status.rb +55 -0
  63. data/lib/messaging.rb +96 -0
  64. data/lib/protocol.rb +159 -0
  65. data/lib/registration.rb +87 -0
  66. data/lib/request.rb +25 -0
  67. data/lib/request_logger.rb +31 -0
  68. data/lib/response.rb +26 -0
  69. data/lib/server.rb +40 -0
  70. data/lib/siffer.rb +44 -0
  71. data/spec/agent_spec.rb +53 -0
  72. data/spec/cli_spec.rb +40 -0
  73. data/spec/container_spec.rb +103 -0
  74. data/spec/default_agent +6 -0
  75. data/spec/default_server +5 -0
  76. data/spec/message_specs/ack_spec.rb +28 -0
  77. data/spec/message_specs/error_spec.rb +24 -0
  78. data/spec/message_specs/header_spec.rb +25 -0
  79. data/spec/message_specs/message_spec.rb +57 -0
  80. data/spec/message_specs/register_spec.rb +86 -0
  81. data/spec/message_specs/request_body_spec.rb +58 -0
  82. data/spec/message_specs/status_spec.rb +25 -0
  83. data/spec/messaging_spec.rb +88 -0
  84. data/spec/protocol_spec.rb +49 -0
  85. data/spec/registration_spec.rb +33 -0
  86. data/spec/request_logger_spec.rb +15 -0
  87. data/spec/request_spec.rb +10 -0
  88. data/spec/response_spec.rb +24 -0
  89. data/spec/server_spec.rb +35 -0
  90. data/spec/spec_helper.rb +26 -0
  91. metadata +191 -0
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 h3o(software)
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,65 @@
1
+ = Project: Siffer - h3o(software) SIF Implementation
2
+
3
+ == Welcome to Siffer
4
+
5
+ This is the h3o(software) implementation of the SIF (School Interoperability
6
+ Framework) in Ruby. The project is Ruby based and includes all of the SIF
7
+ infrastructure (Data Model, Agents, Zone Integration Servers and even database
8
+ stores).
9
+
10
+ == Goal
11
+
12
+ The overriding goal of this project is to provide anyone in the education
13
+ industry a quick, easy and simple SIF implementation tool. The entire system
14
+ can be managed by a browser.
15
+
16
+ === Setup and Deployment
17
+
18
+ Siffer is easy to install and setup. Zone Integration Servers and Agents can be
19
+ created from the browser. Administrators will be able to manage all components
20
+ of their deployment from a command line or browser.
21
+
22
+ == Philosophy
23
+
24
+ Remove the complexity from the implementation. Make the execution and
25
+ deployment of SIF easy.
26
+
27
+ == Implementation Information (sifinfo.org)
28
+
29
+ This implementation is based on version 2.2 of the SIF Specification. The
30
+ Specification is in {PDF}[link:../SIF%20ImplementationSpecification.pdf] format
31
+ inside the doc folder.
32
+
33
+
34
+ More information here: http://sifinfo.org.
35
+
36
+ == Description of Contents
37
+
38
+ == Useage
39
+
40
+ == License
41
+
42
+ Siffer is released under the MIT License
43
+
44
+ == Installation
45
+
46
+ Siffer can be installed from the siffer gem:
47
+
48
+ % [sudo] gem install siffer
49
+
50
+ == Support
51
+
52
+ Please contact the author (mailto://clint.hill@h3osoftware.com) for support
53
+ issues. If you want to contribute do the same.
54
+
55
+ === Contributors
56
+
57
+ This project is developed by spec. Build spec tests for all of your features.
58
+ Document everything.
59
+
60
+ == Contact
61
+
62
+ - Author:: {Clint Hill} mailto://clint.hill@h3osoftware.com
63
+ - Home Page:: http://h3osoftware.com/siffer
64
+ - GitHub:: git://github.com/clinth3o/siffer.git
65
+ - RubyForge:: http://rubyforge.org/projects/siffer/
@@ -0,0 +1,64 @@
1
+ require 'rake'
2
+ require 'rake/clean'
3
+ require 'rake/gempackagetask'
4
+ require 'rake/rdoctask'
5
+ require 'spec/rake/spectask'
6
+ require 'fileutils'
7
+ include FileUtils
8
+ require File.join(File.dirname(__FILE__),"lib","siffer")
9
+ include Siffer
10
+
11
+ spec = Gem::Specification.new do |s|
12
+ s.name = "siffer"
13
+ s.version = Siffer.version
14
+ s.platform = Gem::Platform::RUBY
15
+ s.author = "Clint Hill"
16
+ s.email = "clint.hill@h3osoftware.com"
17
+ s.homepage = "http://h3osoftware.com/siffer"
18
+ s.summary = "Siffer - School Interoperability Framework by h3o(software)"
19
+ s.rubyforge_project = "siffer"
20
+ s.require_path = "lib"
21
+ s.files = %w( LICENSE README.rdoc Rakefile ) + Dir["{spec,lib,doc}/**/*"]
22
+ s.bindir = "bin"
23
+ s.executables = %w( siffer )
24
+ s.add_dependency "uuid"
25
+ s.add_dependency "rack"
26
+ s.add_dependency "hpricot"
27
+ s.add_dependency "builder"
28
+ end
29
+
30
+ Rake::GemPackageTask.new(spec) do |package|
31
+ package.gem_spec = spec
32
+ end
33
+
34
+ ##############################################################################
35
+ # rSpec
36
+ ##############################################################################
37
+ desc 'Run all specs and rcov'
38
+ task :spec => ["spec:default"]
39
+ namespace :spec do
40
+ Spec::Rake::SpecTask.new('default') do |t|
41
+ t.spec_opts = ["--format", "specdoc", "--colour"]
42
+ t.spec_files = Dir['spec/**/*_spec.rb'].sort
43
+ t.libs = ['lib']
44
+ t.rcov = true
45
+ t.rcov_opts = ["--exclude 'bin,doc,pkg,spec,#{Gem::path.join(',')}'"]
46
+ end
47
+ end
48
+
49
+ ##############################################################################
50
+ # Documentation
51
+ ##############################################################################
52
+ task :doc => ["doc:rdoc"]
53
+ namespace :doc do
54
+ Rake::RDocTask.new do |rdoc|
55
+ files = ["README.rdoc","LICENSE","lib/**/*.rb"]
56
+ rdoc.rdoc_files.add(files)
57
+ rdoc.main = "README.rdoc"
58
+ rdoc.title = "Siffer == h3o(software) SIF"
59
+ rdoc.rdoc_dir = "doc/rdoc"
60
+ rdoc.options << "--line-numbers" << "--inline-source"
61
+ end
62
+ end
63
+
64
+
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'optparse'
5
+ require 'yaml'
6
+ # For test purposes rescue the require so we can get the local lib
7
+ begin
8
+ require 'siffer'
9
+ rescue LoadError
10
+ require 'lib/siffer'
11
+ end
12
+ options = {:environment => "development"}
13
+
14
+ opts = OptionParser.new("", 24, ' ') { |opts|
15
+ opts.banner = "Usage: siffer [start|run|stop|kill] [component] [options]"
16
+
17
+ opts.separator ""
18
+ opts.separator "Siffer options:"
19
+
20
+ opts.on("-e",
21
+ "--env ENVIRONMENT",
22
+ "development, deployment, test, none (default: development)") { |e|
23
+ options[:environment] = e
24
+ }
25
+
26
+ opts.on("-d",
27
+ "--daemonize",
28
+ "run daemonized in the background (default: true)") { |d|
29
+ options[:daemonize] = d ? true : false
30
+ }
31
+
32
+ opts.on_tail("-h", "--help", "Show this message") do
33
+ puts opts
34
+ exit
35
+ end
36
+
37
+ opts.on_tail("-v", "--version", "Show version") do
38
+ puts "Siffer #{Siffer.version} (SIF Version #{Siffer.sif_version})"
39
+ exit
40
+ end
41
+
42
+ opts.parse! ARGV
43
+ }
44
+
45
+ unless command = ARGV[0]
46
+ abort opts.to_s
47
+ end
48
+
49
+ unless options[:component] = ARGV[1]
50
+ abort opts.to_s
51
+ end
52
+
53
+ options[:config] = YAML.load_file(File.expand_path(options[:component]))
54
+
55
+ component = options[:component].split('/')[-1]
56
+ cwd = File.expand_path(File.dirname(options[:component]))
57
+ options[:log] = File.join(cwd,"#{component}.log")
58
+ options[:pid] = File.join(cwd,"#{component}.pid")
59
+ container = Siffer::Container.new(options)
60
+ if command == "start" or command == "run"
61
+ if options[:environment] == "test"
62
+ puts options.inspect # For testing purposes let's just output the options
63
+ else
64
+ container.run
65
+ end
66
+ else
67
+ container.stop
68
+ end
69
+
70
+
71
+
@@ -0,0 +1,374 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: Siffer</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">Siffer</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/agent_rb.html">
59
+ lib/agent.rb
60
+ </a>
61
+ <br />
62
+ <a href="../files/lib/container_rb.html">
63
+ lib/container.rb
64
+ </a>
65
+ <br />
66
+ <a href="../files/lib/messages/ack_rb.html">
67
+ lib/messages/ack.rb
68
+ </a>
69
+ <br />
70
+ <a href="../files/lib/messages/acl_rb.html">
71
+ lib/messages/acl.rb
72
+ </a>
73
+ <br />
74
+ <a href="../files/lib/messages/error_rb.html">
75
+ lib/messages/error.rb
76
+ </a>
77
+ <br />
78
+ <a href="../files/lib/messages/message_rb.html">
79
+ lib/messages/message.rb
80
+ </a>
81
+ <br />
82
+ <a href="../files/lib/messages/register_rb.html">
83
+ lib/messages/register.rb
84
+ </a>
85
+ <br />
86
+ <a href="../files/lib/messages/request_body_rb.html">
87
+ lib/messages/request_body.rb
88
+ </a>
89
+ <br />
90
+ <a href="../files/lib/messages/status_rb.html">
91
+ lib/messages/status.rb
92
+ </a>
93
+ <br />
94
+ <a href="../files/lib/messaging_rb.html">
95
+ lib/messaging.rb
96
+ </a>
97
+ <br />
98
+ <a href="../files/lib/protocol_rb.html">
99
+ lib/protocol.rb
100
+ </a>
101
+ <br />
102
+ <a href="../files/lib/registration_rb.html">
103
+ lib/registration.rb
104
+ </a>
105
+ <br />
106
+ <a href="../files/lib/request_rb.html">
107
+ lib/request.rb
108
+ </a>
109
+ <br />
110
+ <a href="../files/lib/request_logger_rb.html">
111
+ lib/request_logger.rb
112
+ </a>
113
+ <br />
114
+ <a href="../files/lib/response_rb.html">
115
+ lib/response.rb
116
+ </a>
117
+ <br />
118
+ <a href="../files/lib/server_rb.html">
119
+ lib/server.rb
120
+ </a>
121
+ <br />
122
+ <a href="../files/lib/siffer_rb.html">
123
+ lib/siffer.rb
124
+ </a>
125
+ <br />
126
+ </td>
127
+ </tr>
128
+
129
+ </table>
130
+ </div>
131
+ <!-- banner header -->
132
+
133
+ <div id="bodyContent">
134
+
135
+
136
+
137
+ <div id="contextContent">
138
+
139
+
140
+
141
+ </div>
142
+
143
+ <div id="method-list">
144
+ <h3 class="section-bar">Methods</h3>
145
+
146
+ <div class="name-list">
147
+ <a href="#M000005">root</a>&nbsp;&nbsp;
148
+ <a href="#M000006">root=</a>&nbsp;&nbsp;
149
+ <a href="#M000003">sif_version</a>&nbsp;&nbsp;
150
+ <a href="#M000004">sif_xmlns</a>&nbsp;&nbsp;
151
+ <a href="#M000001">vendor</a>&nbsp;&nbsp;
152
+ <a href="#M000002">version</a>&nbsp;&nbsp;
153
+ </div>
154
+ </div>
155
+
156
+ </div>
157
+
158
+
159
+ <!-- if includes -->
160
+
161
+ <div id="section">
162
+
163
+ <div id="class-list">
164
+ <h3 class="section-bar">Classes and Modules</h3>
165
+
166
+ Module <a href="Siffer/Messages.html" class="link">Siffer::Messages</a><br />
167
+ Module <a href="Siffer/Messaging.html" class="link">Siffer::Messaging</a><br />
168
+ Module <a href="Siffer/Protocol.html" class="link">Siffer::Protocol</a><br />
169
+ Module <a href="Siffer/Registration.html" class="link">Siffer::Registration</a><br />
170
+ Class <a href="Siffer/Agent.html" class="link">Siffer::Agent</a><br />
171
+ Class <a href="Siffer/Container.html" class="link">Siffer::Container</a><br />
172
+ Class <a href="Siffer/Request.html" class="link">Siffer::Request</a><br />
173
+ Class <a href="Siffer/RequestLogger.html" class="link">Siffer::RequestLogger</a><br />
174
+ Class <a href="Siffer/Response.html" class="link">Siffer::Response</a><br />
175
+ Class <a href="Siffer/Server.html" class="link">Siffer::Server</a><br />
176
+
177
+ </div>
178
+
179
+ <div id="constants-list">
180
+ <h3 class="section-bar">Constants</h3>
181
+
182
+ <div class="name-list">
183
+ <table summary="Constants">
184
+ <tr class="top-aligned-row context-row">
185
+ <td class="context-item-name">VENDOR</td>
186
+ <td>=</td>
187
+ <td class="context-item-value">&quot;h3o(software)&quot; unless defined?(Siffer::VENDOR)</td>
188
+ </tr>
189
+ <tr class="top-aligned-row context-row">
190
+ <td class="context-item-name">VERSION</td>
191
+ <td>=</td>
192
+ <td class="context-item-value">[0,0,4] unless defined?(Siffer::VERSION)</td>
193
+ </tr>
194
+ <tr class="top-aligned-row context-row">
195
+ <td class="context-item-name">SIF_VERSION</td>
196
+ <td>=</td>
197
+ <td class="context-item-value">[2,2,0] unless defined?(Siffer::SIF_VERSION)</td>
198
+ </tr>
199
+ <tr class="top-aligned-row context-row">
200
+ <td class="context-item-name">SIF_XMLNS</td>
201
+ <td>=</td>
202
+ <td class="context-item-value">&quot;http://www.sifinfo.org/infrastructure/2.x&quot; unless defined?(Siffer::SIF_XMLNS)</td>
203
+ </tr>
204
+ </table>
205
+ </div>
206
+ </div>
207
+
208
+
209
+
210
+
211
+
212
+
213
+ <!-- if method_list -->
214
+ <div id="methods">
215
+ <h3 class="section-bar">Public Class methods</h3>
216
+
217
+ <div id="method-M000005" class="method-detail">
218
+ <a name="M000005"></a>
219
+
220
+ <div class="method-heading">
221
+ <a href="#M000005" class="method-signature">
222
+ <span class="method-name">root</span><span class="method-args">()</span>
223
+ </a>
224
+ </div>
225
+
226
+ <div class="method-description">
227
+ <p>
228
+ The <a href="Siffer.html#M000005">root</a> directory that the SIF
229
+ implementation is running from
230
+ </p>
231
+ <p><a class="source-toggle" href="#"
232
+ onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
233
+ <div class="method-source-code" id="M000005-source">
234
+ <pre>
235
+ <span class="ruby-comment cmt"># File lib/siffer.rb, line 32</span>
236
+ 32: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">root</span>() <span class="ruby-ivar">@root</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">pwd</span> <span class="ruby-keyword kw">end</span>
237
+ </pre>
238
+ </div>
239
+ </div>
240
+ </div>
241
+
242
+ <div id="method-M000006" class="method-detail">
243
+ <a name="M000006"></a>
244
+
245
+ <div class="method-heading">
246
+ <a href="#M000006" class="method-signature">
247
+ <span class="method-name">root=</span><span class="method-args">(value)</span>
248
+ </a>
249
+ </div>
250
+
251
+ <div class="method-description">
252
+ <p><a class="source-toggle" href="#"
253
+ onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
254
+ <div class="method-source-code" id="M000006-source">
255
+ <pre>
256
+ <span class="ruby-comment cmt"># File lib/siffer.rb, line 33</span>
257
+ 33: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">root=</span>(<span class="ruby-identifier">value</span>) <span class="ruby-ivar">@root</span> = <span class="ruby-identifier">value</span> <span class="ruby-keyword kw">end</span>
258
+ </pre>
259
+ </div>
260
+ </div>
261
+ </div>
262
+
263
+ <div id="method-M000003" class="method-detail">
264
+ <a name="M000003"></a>
265
+
266
+ <div class="method-heading">
267
+ <a href="#M000003" class="method-signature">
268
+ <span class="method-name">sif_version</span><span class="method-args">()</span>
269
+ </a>
270
+ </div>
271
+
272
+ <div class="method-description">
273
+ <p>
274
+ The <a href="Siffer.html#M000002">version</a> of SIF being implemented -
275
+ based on the specification
276
+ </p>
277
+ <p><a class="source-toggle" href="#"
278
+ onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
279
+ <div class="method-source-code" id="M000003-source">
280
+ <pre>
281
+ <span class="ruby-comment cmt"># File lib/siffer.rb, line 26</span>
282
+ 26: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sif_version</span>() <span class="ruby-constant">SIF_VERSION</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;.&quot;</span>) <span class="ruby-keyword kw">end</span>
283
+ </pre>
284
+ </div>
285
+ </div>
286
+ </div>
287
+
288
+ <div id="method-M000004" class="method-detail">
289
+ <a name="M000004"></a>
290
+
291
+ <div class="method-heading">
292
+ <a href="#M000004" class="method-signature">
293
+ <span class="method-name">sif_xmlns</span><span class="method-args">()</span>
294
+ </a>
295
+ </div>
296
+
297
+ <div class="method-description">
298
+ <p>
299
+ The SIF XML namespace to be used across this implementation
300
+ </p>
301
+ <p><a class="source-toggle" href="#"
302
+ onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
303
+ <div class="method-source-code" id="M000004-source">
304
+ <pre>
305
+ <span class="ruby-comment cmt"># File lib/siffer.rb, line 29</span>
306
+ 29: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sif_xmlns</span>() <span class="ruby-constant">SIF_XMLNS</span> <span class="ruby-keyword kw">end</span>
307
+ </pre>
308
+ </div>
309
+ </div>
310
+ </div>
311
+
312
+ <div id="method-M000001" class="method-detail">
313
+ <a name="M000001"></a>
314
+
315
+ <div class="method-heading">
316
+ <a href="#M000001" class="method-signature">
317
+ <span class="method-name">vendor</span><span class="method-args">()</span>
318
+ </a>
319
+ </div>
320
+
321
+ <div class="method-description">
322
+ <p>
323
+ The <a href="Siffer.html#M000001">vendor</a> of this SIF implementation
324
+ (self describing for Agents)
325
+ </p>
326
+ <p><a class="source-toggle" href="#"
327
+ onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
328
+ <div class="method-source-code" id="M000001-source">
329
+ <pre>
330
+ <span class="ruby-comment cmt"># File lib/siffer.rb, line 20</span>
331
+ 20: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">vendor</span>() <span class="ruby-constant">VENDOR</span> <span class="ruby-keyword kw">end</span>
332
+ </pre>
333
+ </div>
334
+ </div>
335
+ </div>
336
+
337
+ <div id="method-M000002" class="method-detail">
338
+ <a name="M000002"></a>
339
+
340
+ <div class="method-heading">
341
+ <a href="#M000002" class="method-signature">
342
+ <span class="method-name">version</span><span class="method-args">()</span>
343
+ </a>
344
+ </div>
345
+
346
+ <div class="method-description">
347
+ <p>
348
+ The <a href="Siffer.html#M000002">version</a> of the h3o(software) SIF
349
+ implementation
350
+ </p>
351
+ <p><a class="source-toggle" href="#"
352
+ onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
353
+ <div class="method-source-code" id="M000002-source">
354
+ <pre>
355
+ <span class="ruby-comment cmt"># File lib/siffer.rb, line 23</span>
356
+ 23: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">version</span>() <span class="ruby-constant">VERSION</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;.&quot;</span>) <span class="ruby-keyword kw">end</span>
357
+ </pre>
358
+ </div>
359
+ </div>
360
+ </div>
361
+
362
+
363
+ </div>
364
+
365
+
366
+ </div>
367
+
368
+
369
+ <div id="validator-badges">
370
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
371
+ </div>
372
+
373
+ </body>
374
+ </html>