Class: Flow

Inherits:
Object
  • Object
show all
Includes:
SerializeBehavior
Defined in:
lib/network_entities/abstracts/flow.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from SerializeBehavior

#transform_to_output_representation, #validate_concrete_builder

Constructor Details

#initialize(id, priority, paths, distribution_rate, distribution_size) ⇒ Flow

Returns a new instance of Flow.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/network_entities/abstracts/flow.rb', line 14

def initialize(id, priority, paths, distribution_rate, distribution_size)
    raise "Invalid 'priority' argument received. Priority must be a number, #{priority} was received" unless priority.is_a? Integer
    raise "Invalid 'paths' argument received. 'paths' must be an instance of Arry class, however the path received has class #{paths.class}" unless paths.is_a? Array
    raise "Invalid 'distribution_rate' received. Distribution rate cannot be nil" unless distribution_rate
    raise "Invalid 'distribution_size' received. Distribution size cannot be nil" unless distribution_size
    raise "Invalid 'distribution_rate' #{distribution_rate}. It is expected that the rate is an instance of a distribution" unless [ConstantDistribution, ExponentialDistribution, NormalDistribution, ParetoDistribution, SplitDistribution, FelixDistribution].include? distribution_rate.class
    raise "Invalid 'distribution_size' #{distribution_size}. It is expected that the size is an instance of a distribution" unless [ConstantDistribution, ExponentialDistribution, NormalDistribution, ParetoDistribution, SplitDistribution, FelixDistribution].include? distribution_size.class

    @id = id
    @priority = priority
    @paths = paths
    @distribution_rate = distribution_rate
    @distribution_size = distribution_size
end

Instance Attribute Details

#distribution_rateObject

Returns the value of attribute distribution_rate.



12
13
14
# File 'lib/network_entities/abstracts/flow.rb', line 12

def distribution_rate
  @distribution_rate
end

#distribution_sizeObject

Returns the value of attribute distribution_size.



12
13
14
# File 'lib/network_entities/abstracts/flow.rb', line 12

def distribution_size
  @distribution_size
end

#idObject

Returns the value of attribute id.



12
13
14
# File 'lib/network_entities/abstracts/flow.rb', line 12

def id
  @id
end

#pathsObject

Returns the value of attribute paths.



12
13
14
# File 'lib/network_entities/abstracts/flow.rb', line 12

def paths
  @paths
end

#priorityObject

Returns the value of attribute priority.



12
13
14
# File 'lib/network_entities/abstracts/flow.rb', line 12

def priority
  @priority
end