Module: Phenomenal::ConflictPolicies
- Included in:
- Manager
- Defined in:
- lib/phenomenal/manager/conflict_policies.rb
Overview
Context conflict resolution policies
Instance Method Summary collapse
-
#age_conflict_policy(context1, context2) ⇒ Object
Age based conflict resolution.
-
#change_conflict_policy(&block) ⇒ Object
Change the conflict resolution policy.
-
#conflict_policy(context1, context2) ⇒ Object
Resolution policy.
-
#no_resolution_conflict_policy(context1, context2) ⇒ Object
Prefer not default adaptation, error if two not default ones.
-
#priority_conflict_policy(context1, context2) ⇒ Object
Priority based conflict resolution.
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 |