Class: DIY::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/diy/builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(server = false, &block) ⇒ Builder

Returns a new instance of Builder.



4
5
6
7
8
# File 'lib/diy/builder.rb', line 4

def initialize(server = false, &block)
  @strategies = []
  instance_eval(&block)
  @server = server
end

Instance Method Details

#before_send(arg = nil, &block) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/diy/builder.rb', line 14

def before_send(arg= nil, &block)
  if arg
    @before_send_hook = arg
  else
    @before_send_hook = block
  end
end

#client(ip_or_iport) ⇒ Object



37
38
39
# File 'lib/diy/builder.rb', line 37

def client(ip_or_iport)
  @curi = ip_or_iport_with_default(ip_or_iport, 7878)
end

#find_worker_keepersObject



22
23
24
25
26
27
28
29
30
31
# File 'lib/diy/builder.rb', line 22

def find_worker_keepers
  @curi ||= "druby://localhost:7878"
  @suri ||= "druby://localhost:7879"
  @me  ||= "druby://localhost:7880"
  # controller drb server
  DRb.start_service(@me)
  # client and server drb server
  @client = DRbObject.new_with_uri(@curi)
  @server = DRbObject.new_with_uri(@suri)
end

#ip2druby(ip) ⇒ Object



60
61
62
63
64
65
# File 'lib/diy/builder.rb', line 60

def ip2druby(ip)
  if ! ip.include?('://')
    return "druby://" + ip
  end
  return ip
end

#ip_or_iport_with_default(ip_or_iport, default_port) ⇒ Object



50
51
52
53
54
55
56
57
58
# File 'lib/diy/builder.rb', line 50

def ip_or_iport_with_default(ip_or_iport, default_port)
  default_port = default_port.to_s
  if ! ip_or_iport.include?(':')
    iport = ip_or_iport + ':' + default_port
  else
    iport = ip_or_iport
  end
  ip2druby(iport)      
end

#me(ip_or_iport) ⇒ Object Also known as: controller



45
46
47
# File 'lib/diy/builder.rb', line 45

def me(ip_or_iport)
  @me = ip_or_iport_with_default(ip_or_iport, 7880)
end

#pcapfile(pcaps) ⇒ Object Also known as: pcapfiles



67
68
69
70
# File 'lib/diy/builder.rb', line 67

def pcapfile(pcaps)
  DIY::Logger.info( "Initialize Offline: #{pcaps.to_a.join(', ')}" )
  @offline = DIY::Offline.new(pcaps)
end

#runObject



73
74
75
76
77
78
79
80
81
82
# File 'lib/diy/builder.rb', line 73

def run
  @offline ||= DIY::Offline.new('pcaps/example.pcap')
  @strategy_builder = DIY::StrategyBuilder.new
  @strategies.each { |builder| @strategy_builder.add(builder) }
  find_worker_keepers
  controller = Controller.new( @client, @server, @offline, @strategy_builder )
  controller.before_send(&@before_send_hook)
  controller.timeout(@timeout) if @timeout
  controller.run
end

#server(ip_or_iport) ⇒ Object



41
42
43
# File 'lib/diy/builder.rb', line 41

def server(ip_or_iport)
  @suri = ip_or_iport_with_default(ip_or_iport, 7879)
end

#timeout(timeout) ⇒ Object



33
34
35
# File 'lib/diy/builder.rb', line 33

def timeout(timeout)
  @timeout = timeout
end

#use(what) ⇒ Object



10
11
12
# File 'lib/diy/builder.rb', line 10

def use(what)
  @strategies << what
end