Class: Nodectl::Stream::FileSession

Inherits:
Object
  • Object
show all
Defined in:
lib/nodectl/stream/file_session.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(websocket, handshake, file) ⇒ FileSession

Returns a new instance of FileSession.



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/nodectl/stream/file_session.rb', line 7

def initialize(websocket, handshake, file)
  @websocket = websocket
  @handshake = handshake
  @file      = file
  @buffer    = Nodectl::Stream::Buffer.new

  @file.onread do |chunk|
    @buffer << chunk
    publish(@buffer.read)
  end

  self.class[self.class.next_id] = self
end

Instance Attribute Details

#fileObject (readonly)

Returns the value of attribute file.



5
6
7
# File 'lib/nodectl/stream/file_session.rb', line 5

def file
  @file
end

#websocketObject (readonly)

Returns the value of attribute websocket.



4
5
6
# File 'lib/nodectl/stream/file_session.rb', line 4

def websocket
  @websocket
end

Instance Method Details

#closeObject



26
27
28
29
30
# File 'lib/nodectl/stream/file_session.rb', line 26

def close
  self.class.delete(self)
  @file.close
  @websocket.close unless @websocket.closed?
end

#onclose(&block) ⇒ Object



32
33
34
# File 'lib/nodectl/stream/file_session.rb', line 32

def onclose(&block)
  @websocket.onclose(&block)
end

#publish(message) ⇒ Object



21
22
23
24
# File 'lib/nodectl/stream/file_session.rb', line 21

def publish(message)
  @websocket.send(message)
  Nodectl.logger.debug("file_session: sent #{message.bytesize} bytes")
end