Module: Phenomenal::ConflictPolicies

Included in:
Manager
Defined in:
lib/phenomenal/manager/conflict_policies.rb

Overview

Context conflict resolution policies

Instance Method Summary collapse

Instance Method Details

#age_conflict_policy(context1, context2) ⇒ Object

Age based conflict resolution



18
19
20
# File 'lib/phenomenal/manager/conflict_policies.rb', line 18

def age_conflict_policy(context1, context2)
   context1.age <=> context2.age
end

#change_conflict_policy(&block) ⇒ Object

Change the conflict resolution policy. These can be ones from the ConflictPolicies module or other ones Other one should return -1 or +1 following the resolution order



43
44
45
46
# File 'lib/phenomenal/manager/conflict_policies.rb', line 43

def change_conflict_policy (&block)
  self.class.class_eval{define_method(:conflict_policy,&block)}
  nil
end

#conflict_policy(context1, context2) ⇒ Object

Resolution policy



36
37
38
# File 'lib/phenomenal/manager/conflict_policies.rb', line 36

def conflict_policy(context1, context2)
  age_conflict_policy(context1, context2)
end

#no_resolution_conflict_policy(context1, context2) ⇒ Object

Prefer not default adaptation, error if two not default ones



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/phenomenal/manager/conflict_policies.rb', line 4

def no_resolution_conflict_policy(context1,context2)
  if context1==default_feature()
    1
  elsif context2==default_feature()
    -1
  else #Fail if two non default adaptations
    raise(Phenomenal::Error,
      "Illegal duplicate adapation between contexts #{context1}"+ 
      "and #{context2} "
    )
  end
end

#priority_conflict_policy(context1, context2) ⇒ Object

Priority based conflict resolution



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/phenomenal/manager/conflict_policies.rb', line 23

def priority_conflict_policy(context1, context2)
  if context1.priority && !context2.priority
    -1
  elsif context2.priority && !context1.priority
    1
  elsif context1.priority!=context2.priority
    context1.priority <=> context2.priority
  else
    context1.age <=> context2.age
  end
end