aboutsummaryrefslogtreecommitdiff
path: root/01-hub2.rb
diff options
context:
space:
mode:
Diffstat (limited to '01-hub2.rb')
-rw-r--r--01-hub2.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/01-hub2.rb b/01-hub2.rb
new file mode 100644
index 0000000..4ed0f6b
--- /dev/null
+++ b/01-hub2.rb
@@ -0,0 +1,28 @@
+require './level'
+require './frame'
+
+class L1_Hub2 < Level
+ interfaces %w(1 2)
+ description <<~EOD
+ You are a two-port hub. Your job is to forward frames from one interface to the other.
+ EOD
+
+ def self.target(frame)
+ case frame.iface
+ when 1
+ [frame.to(2)]
+ when 2
+ [frame.to(1)]
+ end
+ end
+
+ def self.generate
+ frames = {}
+ @@interfaces.each do |iface|
+ next if rand < 0.4
+ frames[@@count.to_s] = Frame.new(iface, "Frame #{@@count}")
+ @@count += 1
+ end
+ frames
+ end
+end