Class: MessagePack::RPC::RevSocket

Inherits:
Rev::TCPSocket
  • Object
show all
Includes:
RPCSocket
Defined in:
lib/msgpack/rpc.rb

Direct Known Subclasses

Server::Socket

Instance Method Summary collapse

Methods included from RPCSocket

#on_close, #on_message, #on_notify, #on_request, #on_response, #send_notify, #send_request, #send_response, #session=

Constructor Details

#initialize(*args) ⇒ RevSocket

Returns a new instance of RevSocket.



128
129
130
131
132
133
# File 'lib/msgpack/rpc.rb', line 128

def initialize(*args)
	@buffer = ''
	@nread = 0
	@mpac = MessagePack::Unpacker.new
	super
end

Instance Method Details

#on_read(data) ⇒ Object



135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# File 'lib/msgpack/rpc.rb', line 135

def on_read(data)
	@buffer << data

	while true
		@nread = @mpac.execute(@buffer, @nread)

		if @mpac.finished?
			msg = @mpac.data

			@mpac.reset
			@buffer.slice!(0, @nread)
			@nread = 0

			on_message(msg)  # RPCSocket#on_message

			next unless @buffer.empty?
		end

		break
	end
end

#send_message(msg) ⇒ Object



157
158
159
# File 'lib/msgpack/rpc.rb', line 157

def send_message(msg)
	write msg.to_msgpack
end