Class: Aspera::Ascp::Management

Inherits:
Object
  • Object
show all
Defined in:
lib/aspera/ascp/management.rb

Overview

processing of ascp management port events

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeManagement

Returns a new instance of Management.



237
238
239
240
241
242
# File 'lib/aspera/ascp/management.rb', line 237

def initialize
  # current event being parsed line by line
  @event_build = nil
  # last fully built event
  @last_event = nil
end

Instance Attribute Details

#last_eventObject (readonly)

Returns the value of attribute last_event.



243
244
245
# File 'lib/aspera/ascp/management.rb', line 243

def last_event
  @last_event
end

Class Method Details

.command_to_stream(data) ⇒ Object

build command to send on management port

Parameters:

  • data (Hash)

    ‘type’=>‘START’,‘source’=><em>path</em>,‘destination’=><em>path</em>



226
227
228
229
230
231
232
233
234
# File 'lib/aspera/ascp/management.rb', line 226

def command_to_stream(data)
  # TODO: translate enhanced to capitalized ?
  data
    .keys
    .map{|k|"#{k.capitalize}: #{data[k]}"}
    .unshift(MGT_HEADER)
    .push('', '')
    .join("\n")
end

.enhanced_event_format(event) ⇒ Object

translates mgt port event into (enhanced) typed event



207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/aspera/ascp/management.rb', line 207

def enhanced_event_format(event)
  return event.keys.each_with_object({}) do |e, h|
           new_name =
             case e
             when 'Elapsedusec' then 'elapsed_usec'
             when 'Bytescont' then 'bytes_cont'
             else e.capital_to_snake
             end
           h[new_name] =
             if INTEGER_FIELDS.include?(e) then event[e].to_i
             elsif BOOLEAN_FIELDS.include?(e) then event[e].eql?(BOOLEAN_TRUE)
             else
               event[e]
             end
         end
end

Instance Method Details

#process_line(line) ⇒ Hash

process line of mgt port event

Parameters:

  • line (String)

    line of mgt port event

Returns:

  • (Hash)

    event hash or nil if event is not yet complete



248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
# File 'lib/aspera/ascp/management.rb', line 248

def process_line(line)
  # Log.log.debug{"line=[#{line}]"}
  case line
  when MGT_HEADER
    # begin event
    @event_build = {}
  when /^([^:]+): (.*)$/
    raise 'mgt port: unexpected line: data without header' if @event_build.nil?
    # event field
    @event_build[Regexp.last_match(1)] = Regexp.last_match(2)
  when MGT_FRAME_SEPARATOR
    raise 'mgt port: unexpected line: end frame without header' if @event_build.nil?
    @last_event = @event_build
    @event_build = nil
    return @last_event
  else Aspera.error_unexpected_value(line){'mgt port'}
  end
  return nil
end