Module: Grueserve::Server::ClientSocket
- Includes:
- Debuggable, MonitorMixin
- Defined in:
- lib/grueserve/server.rb
Defined Under Namespace
Classes: PolicyFileRequest
Constant Summary
Constants included from Debuggable
Instance Attribute Summary collapse
-
#buffer ⇒ Object
Returns the value of attribute buffer.
-
#bufferSize ⇒ Object
Returns the value of attribute bufferSize.
-
#client ⇒ Object
Returns the value of attribute client.
-
#server ⇒ Object
Returns the value of attribute server.
Instance Method Summary collapse
Methods included from Debuggable
format, level, level=, #method_missing, output, #report, #report_for, #reset, #reset_for, source_part, #time
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Grueserve::Debuggable
Instance Attribute Details
#buffer ⇒ Object
Returns the value of attribute buffer.
36 37 38 |
# File 'lib/grueserve/server.rb', line 36 def buffer @buffer end |
#bufferSize ⇒ Object
Returns the value of attribute bufferSize.
36 37 38 |
# File 'lib/grueserve/server.rb', line 36 def bufferSize @bufferSize end |
#client ⇒ Object
Returns the value of attribute client.
36 37 38 |
# File 'lib/grueserve/server.rb', line 36 def client @client end |
#server ⇒ Object
Returns the value of attribute server.
36 37 38 |
# File 'lib/grueserve/server.rb', line 36 def server @server end |
Instance Method Details
#handle_input ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/grueserve/server.rb', line 58 def handle_input begin @bufferSize = readTo(":").to_i if @bufferSize == 0 log_trace("Expecting package of size #{@bufferSize}") gotten = self.read_nonblock(@bufferSize - @buffer.size) log_trace("Received buffer #{gotten.inspect}") @buffer += gotten if @buffer.size == @bufferSize log_debug("Received complete buffer from #{self}: #{@buffer.inspect}") doc = XML::Parser.string(@buffer).parse client.handle_input(doc) @buffer = "" @bufferSize = 0 end rescue Exception => e server.kill_socket(self) raise e end end |
#init_client_socket(client, server) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/grueserve/server.rb', line 38 def init_client_socket(client, server) mon_initialize @client = client @server = server @buffer = "" @bufferSize = 0 end |
#readTo(char) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/grueserve/server.rb', line 46 def readTo(char) rval = "" while (next_char = self.read_nonblock(1)) != char rval += next_char if rval == "<policy-file-request/>\0" log_debug("Received policy file request #{rval.inspect}") raise PolicyFileRequest.new end end return rval end |