Class: JVMArgs::Args

Inherits:
Object
  • Object
show all
Defined in:
lib/jvmargs/args.rb

Instance Method Summary collapse

Constructor Details

#initialize(*initial_args, &block) ⇒ Args

Returns a new instance of Args.



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

def initialize(*initial_args,&block)
  @args = Hash.new
  @rules = JVMArgs::Rules.new
  Types.each {|type| @args[type] = Hash.new }
  server_arg = JVMArgs::Standard.new("-server")
  @args[:standard][server_arg.key] = server_arg
  set_default_heap_size
  # in case user passed in an array
  initial_args.flatten!  
  parse_args(initial_args) unless initial_args.empty?
  self.instance_exec &block if block
end

Instance Method Details

#[](key) ⇒ Object



17
18
19
# File 'lib/jvmargs/args.rb', line 17

def [](key)
  @args[key]
end

#add(*args) ⇒ Object



21
22
23
24
# File 'lib/jvmargs/args.rb', line 21

def add(*args)
  args.flatten!
  parse_args(args)
end

#add_rule(rule_name, &block) ⇒ Object



115
116
117
# File 'lib/jvmargs/args.rb', line 115

def add_rule(rule_name, &block)
  @rules.add(rule_name, block)
end

#heap_size(size) ⇒ Object



98
99
100
101
102
# File 'lib/jvmargs/args.rb', line 98

def heap_size(size)
  size_ram = JVMArgs::Util.parse_ram_size_to_m(size)
  @args[:nonstandard]["Xmx"] = JVMArgs::NonStandard.new("-Xmx#{size_ram}")
  @args[:nonstandard]["Xms"] = JVMArgs::NonStandard.new("-Xms#{size_ram}")
end

#jmx(boolean) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/jvmargs/args.rb', line 82

def jmx(boolean)
  if boolean
    [
     "-Djava.rmi.server.hostname=127.0.0.1",
     "-Djava.net.preferIPv4Stack=true",
     "-Dcom.sun.management.jmxremote",
     "-Dcom.sun.management.jmxremote.port=9000",
     "-Dcom.sun.management.jmxremote.authenticate=false",
     "-Dcom.sun.management.jmxremote.ssl=false"
    ].each do |arg|
      directive = JVMArgs::Directive.new arg
      @args[:directive][directive.key] = directive
    end
  end
end

#newgen(size) ⇒ Object



109
110
111
112
113
# File 'lib/jvmargs/args.rb', line 109

def newgen(size)
  size_ram = JVMArgs::Util.convert_to_m(size)
  # @args[:unstable]["NewSize"] = JVMArgs::Unstable.new("-XX:NewSize=#{size_ram}")
  @args[:unstable]["MaxNewSize"] = JVMArgs::Unstable.new("-XX:MaxNewSize=#{size_ram}")
end

#parse_args(args) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/jvmargs/args.rb', line 32

def parse_args(args)
  args.each do |arg|
    type = nil
    jvm_arg = case arg
              when /^-?XX.*/
                type = :unstable
                JVMArgs::Unstable.new(arg)
              when /^-?X.*/
                type = :nonstandard
                JVMArgs::NonStandard.new(arg)
              when /^-?D.*/
                type = :directive
                JVMArgs::Directive.new(arg)
              else
                type = :standard
                JVMArgs::Standard.new(arg)
              end
    @args[type][jvm_arg.key] = jvm_arg
  end
  process_rules
end

#parse_named_args(named_args) ⇒ Object



73
74
75
76
77
78
79
80
# File 'lib/jvmargs/args.rb', line 73

def parse_named_args(named_args)
  named_args.each do |k,v|
    case k.to_sym
    when :jmx
      add_default_jmx
    end
  end
end

#permgen(size) ⇒ Object



104
105
106
107
# File 'lib/jvmargs/args.rb', line 104

def permgen(size)
  size_ram = JVMArgs::Util.convert_to_m(size)
  @args[:unstable]["MaxPermSize"] = JVMArgs::Unstable.new("-XX:MaxPermSize=#{size_ram}")
end

#process_rulesObject



26
27
28
29
30
# File 'lib/jvmargs/args.rb', line 26

def process_rules
  @rules.rules.each do |rule|
   @rules.send(rule, @args)
  end
end

#set_default_heap_sizeObject



54
55
56
57
58
59
60
61
# File 'lib/jvmargs/args.rb', line 54

def set_default_heap_size
  if defined? node
    total_ram = node['memory']['total'].sub(/kB/, '')
  else
    total_ram = (JVMArgs::Util.get_system_ram_m.sub(/M/,'').to_i * 0.4).to_i
  end
  @args[:nonstandard]['Xmx'] = JVMArgs::NonStandard.new("Xmx#{total_ram}M")
end

#to_sObject



63
64
65
66
67
68
69
70
71
# File 'lib/jvmargs/args.rb', line 63

def to_s
  process_rules
  args_str = ""
  Types.each do |type|
    type_str = @args[type].map {|k,v| v.to_s }
    args_str << " " + type_str.join(' ') + " "
  end
  args_str
end