knjrbfw 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +14 -0
  4. data/Gemfile.lock +32 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +19 -0
  7. data/Rakefile +49 -0
  8. data/VERSION +1 -0
  9. data/lib/knj/.gitignore +1 -0
  10. data/lib/knj/arrayext.rb +157 -0
  11. data/lib/knj/autoload/activesupport.rb +2 -0
  12. data/lib/knj/autoload/backups/facets_dictionary.rb +430 -0
  13. data/lib/knj/autoload/backups/parsedate.rb +53 -0
  14. data/lib/knj/autoload/backups/ping.rb +64 -0
  15. data/lib/knj/autoload/cinch.rb +2 -0
  16. data/lib/knj/autoload/erubis.rb +6 -0
  17. data/lib/knj/autoload/facebooker.rb +3 -0
  18. data/lib/knj/autoload/facets_dictionary.rb +7 -0
  19. data/lib/knj/autoload/gd2.rb +2 -0
  20. data/lib/knj/autoload/gettext.rb +9 -0
  21. data/lib/knj/autoload/gtk2.rb +5 -0
  22. data/lib/knj/autoload/json_autoload.rb +7 -0
  23. data/lib/knj/autoload/magick.rb +6 -0
  24. data/lib/knj/autoload/mysql.rb +6 -0
  25. data/lib/knj/autoload/parsedate.rb +1 -0
  26. data/lib/knj/autoload/ping.rb +64 -0
  27. data/lib/knj/autoload/rexml.rb +12 -0
  28. data/lib/knj/autoload/soap.rb +3 -0
  29. data/lib/knj/autoload/sqlite3.rb +6 -0
  30. data/lib/knj/autoload/tmail.rb +6 -0
  31. data/lib/knj/autoload/twitter.rb +2 -0
  32. data/lib/knj/autoload/xmlsimple.rb +6 -0
  33. data/lib/knj/autoload/zip.rb +6 -0
  34. data/lib/knj/autoload.rb +136 -0
  35. data/lib/knj/compiler.rb +53 -0
  36. data/lib/knj/cpufreq.rb +40 -0
  37. data/lib/knj/datarow.rb +256 -0
  38. data/lib/knj/datestamp.rb +91 -0
  39. data/lib/knj/datet.rb +448 -0
  40. data/lib/knj/degulesider.rb +46 -0
  41. data/lib/knj/erb/apache_knjerb.conf +8 -0
  42. data/lib/knj/erb/cache/README +1 -0
  43. data/lib/knj/erb/erb.rb +21 -0
  44. data/lib/knj/erb/erb_1.9.rb +13 -0
  45. data/lib/knj/erb/erb_cache_clean.rb +20 -0
  46. data/lib/knj/erb/erb_fcgi.rb +44 -0
  47. data/lib/knj/erb/erb_fcgi_1.9.rb +44 -0
  48. data/lib/knj/erb/erb_fcgi_jruby.rb +7 -0
  49. data/lib/knj/erb/erb_jruby.rb +22 -0
  50. data/lib/knj/erb/include.rb +248 -0
  51. data/lib/knj/errors.rb +19 -0
  52. data/lib/knj/eruby.rb +224 -0
  53. data/lib/knj/event_filemod.rb +53 -0
  54. data/lib/knj/event_handler.rb +69 -0
  55. data/lib/knj/exchangerates.rb +39 -0
  56. data/lib/knj/ext/webrick.rb +31 -0
  57. data/lib/knj/filesystem.rb +8 -0
  58. data/lib/knj/fs/drivers/filesystem.rb +14 -0
  59. data/lib/knj/fs/drivers/ftp.rb +33 -0
  60. data/lib/knj/fs/drivers/ssh.rb +28 -0
  61. data/lib/knj/fs/fs.rb +36 -0
  62. data/lib/knj/gettext_fallback.rb +17 -0
  63. data/lib/knj/gettext_threadded.rb +77 -0
  64. data/lib/knj/google_sitemap.rb +59 -0
  65. data/lib/knj/gtk2.rb +277 -0
  66. data/lib/knj/gtk2_cb.rb +85 -0
  67. data/lib/knj/gtk2_menu.rb +57 -0
  68. data/lib/knj/gtk2_statuswindow.rb +64 -0
  69. data/lib/knj/gtk2_tv.rb +63 -0
  70. data/lib/knj/hash_methods.rb +37 -0
  71. data/lib/knj/http.rb +190 -0
  72. data/lib/knj/includes/appserver_cli.rb +39 -0
  73. data/lib/knj/ip2location.rb +22 -0
  74. data/lib/knj/ironruby-gtk2/button.rb +19 -0
  75. data/lib/knj/ironruby-gtk2/dialog.rb +44 -0
  76. data/lib/knj/ironruby-gtk2/entry.rb +9 -0
  77. data/lib/knj/ironruby-gtk2/gdk_event.rb +3 -0
  78. data/lib/knj/ironruby-gtk2/gdk_eventbutton.rb +13 -0
  79. data/lib/knj/ironruby-gtk2/gdk_pixbuf.rb +11 -0
  80. data/lib/knj/ironruby-gtk2/gladexml.rb +104 -0
  81. data/lib/knj/ironruby-gtk2/glib.rb +15 -0
  82. data/lib/knj/ironruby-gtk2/gtk2.rb +148 -0
  83. data/lib/knj/ironruby-gtk2/gtk_builder.rb +31 -0
  84. data/lib/knj/ironruby-gtk2/gtk_cellrenderertext.rb +5 -0
  85. data/lib/knj/ironruby-gtk2/gtk_combobox.rb +19 -0
  86. data/lib/knj/ironruby-gtk2/gtk_filechooserbutton.rb +5 -0
  87. data/lib/knj/ironruby-gtk2/gtk_liststore.rb +18 -0
  88. data/lib/knj/ironruby-gtk2/gtk_menu.rb +5 -0
  89. data/lib/knj/ironruby-gtk2/gtk_menuitem.rb +7 -0
  90. data/lib/knj/ironruby-gtk2/gtk_statusicon.rb +8 -0
  91. data/lib/knj/ironruby-gtk2/gtk_treeiter.rb +24 -0
  92. data/lib/knj/ironruby-gtk2/gtk_treeselection.rb +16 -0
  93. data/lib/knj/ironruby-gtk2/gtk_treeview.rb +19 -0
  94. data/lib/knj/ironruby-gtk2/gtk_treeviewcolumn.rb +32 -0
  95. data/lib/knj/ironruby-gtk2/iconsize.rb +3 -0
  96. data/lib/knj/ironruby-gtk2/image.rb +15 -0
  97. data/lib/knj/ironruby-gtk2/label.rb +19 -0
  98. data/lib/knj/ironruby-gtk2/stock.rb +4 -0
  99. data/lib/knj/ironruby-gtk2/tests/test.glade +15 -0
  100. data/lib/knj/ironruby-gtk2/tests/test_2.rb +22 -0
  101. data/lib/knj/ironruby-gtk2/tests/test_ironruby_window.rb +47 -0
  102. data/lib/knj/ironruby-gtk2/vbox.rb +5 -0
  103. data/lib/knj/ironruby-gtk2/window.rb +23 -0
  104. data/lib/knj/jruby-gtk2/builder/test_builder.glade +43 -0
  105. data/lib/knj/jruby-gtk2/builder/test_builder.rb +19 -0
  106. data/lib/knj/jruby-gtk2/builder/test_builder.ui +43 -0
  107. data/lib/knj/jruby-gtk2/builder.rb +27 -0
  108. data/lib/knj/jruby-gtk2/cellrenderertext.rb +12 -0
  109. data/lib/knj/jruby-gtk2/checkbutton.rb +3 -0
  110. data/lib/knj/jruby-gtk2/combobox.rb +29 -0
  111. data/lib/knj/jruby-gtk2/dialog.rb +44 -0
  112. data/lib/knj/jruby-gtk2/eventbutton.rb +21 -0
  113. data/lib/knj/jruby-gtk2/gladexml.rb +99 -0
  114. data/lib/knj/jruby-gtk2/gtk-4.0.jar +0 -0
  115. data/lib/knj/jruby-gtk2/gtk2.rb +246 -0
  116. data/lib/knj/jruby-gtk2/hbox.rb +10 -0
  117. data/lib/knj/jruby-gtk2/iconsize.rb +5 -0
  118. data/lib/knj/jruby-gtk2/image.rb +10 -0
  119. data/lib/knj/jruby-gtk2/liststore.rb +56 -0
  120. data/lib/knj/jruby-gtk2/menu.rb +40 -0
  121. data/lib/knj/jruby-gtk2/progressbar.rb +12 -0
  122. data/lib/knj/jruby-gtk2/statusicon.rb +8 -0
  123. data/lib/knj/jruby-gtk2/stock.rb +8 -0
  124. data/lib/knj/jruby-gtk2/tests/test_glade_window.glade +163 -0
  125. data/lib/knj/jruby-gtk2/tests/test_glade_window.rb +47 -0
  126. data/lib/knj/jruby-gtk2/tests/test_normal_window.rb +17 -0
  127. data/lib/knj/jruby-gtk2/tests/test_trayicon.png +0 -0
  128. data/lib/knj/jruby-gtk2/tests/test_trayicon.rb +18 -0
  129. data/lib/knj/jruby-gtk2/treeview.rb +105 -0
  130. data/lib/knj/jruby-gtk2/vbox.rb +12 -0
  131. data/lib/knj/jruby-gtk2/window.rb +11 -0
  132. data/lib/knj/jruby_compiler.rb +14 -0
  133. data/lib/knj/knj.rb +19 -0
  134. data/lib/knj/knj_controller.rb +13 -0
  135. data/lib/knj/knjdb/dbtime.rb +30 -0
  136. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb +327 -0
  137. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_columns.rb +130 -0
  138. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_indexes.rb +30 -0
  139. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb +255 -0
  140. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3.rb +93 -0
  141. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb +151 -0
  142. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_indexes.rb +29 -0
  143. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb +300 -0
  144. data/lib/knj/knjdb/libknjdb.rb +438 -0
  145. data/lib/knj/knjdb/libknjdb_java_sqlite3.rb +83 -0
  146. data/lib/knj/knjdb/libknjdb_row.rb +149 -0
  147. data/lib/knj/knjdb/libknjdb_sqlite3_ironruby.rb +69 -0
  148. data/lib/knj/knjdb/mysql-connector-java-5.1.13-bin.jar +0 -0
  149. data/lib/knj/knjdb/sqlitejdbc-v056.jar +0 -0
  150. data/lib/knj/libqt.rb +75 -0
  151. data/lib/knj/libqt_window.rb +10 -0
  152. data/lib/knj/locale_strings.rb +3 -0
  153. data/lib/knj/locales.rb +54 -0
  154. data/lib/knj/maemo/fremantle-calendar/fremantle-calendar.rb +56 -0
  155. data/lib/knj/mail.rb +75 -0
  156. data/lib/knj/mailobj.rb +82 -0
  157. data/lib/knj/mount.rb +115 -0
  158. data/lib/knj/notify.rb +13 -0
  159. data/lib/knj/nvidia_settings.rb +45 -0
  160. data/lib/knj/objects.rb +731 -0
  161. data/lib/knj/opts.rb +38 -0
  162. data/lib/knj/os.rb +158 -0
  163. data/lib/knj/php.rb +717 -0
  164. data/lib/knj/php_parser/arguments.rb +5 -0
  165. data/lib/knj/php_parser/functions.rb +97 -0
  166. data/lib/knj/php_parser/php_parser.rb +99 -0
  167. data/lib/knj/php_parser/tests/test.rb +12 -0
  168. data/lib/knj/php_parser/tests/test_function.php +8 -0
  169. data/lib/knj/php_parser/tests/test_function_run.rb +19 -0
  170. data/lib/knj/power_manager.rb +31 -0
  171. data/lib/knj/rand.rb +10 -0
  172. data/lib/knj/retry.rb +71 -0
  173. data/lib/knj/rhodes/mutex.rb +11 -0
  174. data/lib/knj/rhodes/rhodes.js +3 -0
  175. data/lib/knj/rhodes/rhodes.rb +11 -0
  176. data/lib/knj/rsvgbin.rb +20 -0
  177. data/lib/knj/scripts/degulesider.rb +12 -0
  178. data/lib/knj/scripts/filesearch.rb +51 -0
  179. data/lib/knj/scripts/ip2location.rb +12 -0
  180. data/lib/knj/scripts/keepalive.rb +6 -0
  181. data/lib/knj/scripts/svn_merge.rb +29 -0
  182. data/lib/knj/scripts/upgrade_knjrbfw_checker.rb +41 -0
  183. data/lib/knj/sms.rb +54 -0
  184. data/lib/knj/sshrobot/sshrobot.rb +93 -0
  185. data/lib/knj/strings.rb +65 -0
  186. data/lib/knj/sysuser.rb +27 -0
  187. data/lib/knj/tests/compiler/compiler_test.rb +13 -0
  188. data/lib/knj/tests/compiler/compiler_test_file.rb +62 -0
  189. data/lib/knj/tests/test_degulesider.rb +11 -0
  190. data/lib/knj/tests/test_mount.rb +30 -0
  191. data/lib/knj/tests/test_retry.rb +30 -0
  192. data/lib/knj/thread.rb +32 -0
  193. data/lib/knj/thread2.rb +47 -0
  194. data/lib/knj/threadhandler.rb +130 -0
  195. data/lib/knj/threadpool.rb +177 -0
  196. data/lib/knj/translations.rb +139 -0
  197. data/lib/knj/unix_proc.rb +82 -0
  198. data/lib/knj/web.rb +932 -0
  199. data/lib/knj/webscripts/image.rhtml +82 -0
  200. data/lib/knj/win.rb +4 -0
  201. data/lib/knj/win_registry.rb +60 -0
  202. data/lib/knj/win_tightvnc.rb +127 -0
  203. data/lib/knj/x11vnc.rb +48 -0
  204. data/lib/knj/youtube.rb +38 -0
  205. data/lib/knjrbfw.rb +4 -0
  206. data/spec/knjrbfw_spec.rb +269 -0
  207. data/spec/spec_helper.rb +12 -0
  208. metadata +336 -0
@@ -0,0 +1,177 @@
1
+ class Knj::Threadpool
2
+ attr_reader :workers, :blocks, :mutex, :args, :events
3
+
4
+ def initialize(args = {})
5
+ @args = args
6
+ @args[:sleep] = 0.01 if !@args.has_key?(:sleep)
7
+ @workers = []
8
+ @blocks = []
9
+ @mutex = Mutex.new
10
+ @events = Knj::Event_handler.new
11
+ @events.add_event(:name => :on_error)
12
+
13
+ self.start
14
+ end
15
+
16
+ def start
17
+ @mutex.synchronize do
18
+ if !@running
19
+ @workers.length.upto(@args[:threads]) do |count|
20
+ @workers << Knj::Threadpool::Worker.new(:threadpool => self, :id => count)
21
+ end
22
+
23
+ @running = true
24
+ end
25
+ end
26
+ end
27
+
28
+ def stop
29
+ if @running
30
+ @workers.each do |worker|
31
+ if !worker.running
32
+ worker.kill
33
+ @workers.delete(worker)
34
+ end
35
+ end
36
+
37
+ @running = false
38
+ end
39
+ end
40
+
41
+ def run(*args, &block)
42
+ raise "No block given." if !block_given?
43
+ blockdata = {:block => block, :result => nil, :running => false, :runned => false, :args => args}
44
+ @blocks << blockdata
45
+
46
+ loop do
47
+ sleep @args[:sleep]
48
+
49
+ if blockdata[:runned]
50
+ begin
51
+ res = blockdata[:result]
52
+ raise blockdata[:error] if blockdata.has_key?(:error)
53
+ ensure
54
+ @mutex.synchronize do
55
+ blockdata.clear
56
+ @blocks.delete(blockdata)
57
+ end
58
+ end
59
+
60
+ return res
61
+ end
62
+ end
63
+ end
64
+
65
+ def run_async(*args, &block)
66
+ raise "No block given." if !block_given?
67
+
68
+ @mutex.synchronize do
69
+ blockdata = {:block => block, :running => false, :runned => false, :args => args}
70
+ @blocks << blockdata
71
+ end
72
+ end
73
+
74
+ def get_block
75
+ return false if !@running
76
+
77
+ @mutex.synchronize do
78
+ @blocks.each do |blockdata|
79
+ if !blockdata[:running] and !blockdata[:runned]
80
+ blockdata[:running] = true
81
+ return blockdata
82
+ end
83
+ end
84
+
85
+ return false
86
+ end
87
+ end
88
+ end
89
+
90
+ class Knj::Threadpool::Worker
91
+ attr_reader :running
92
+
93
+ def initialize(args)
94
+ @args = args
95
+ @tp = @args[:threadpool]
96
+ @mutex_tp = @tp.mutex
97
+ @sleep = @tp.args[:sleep]
98
+ @running = false
99
+
100
+ @thread = Knj::Thread.new do
101
+ loop do
102
+ if !@blockdata
103
+ sleep @sleep
104
+ @blockdata = @tp.get_block if !@blockdata
105
+ end
106
+
107
+ next if !@blockdata
108
+
109
+ res = nil
110
+ raise "No block in blockdata?" if !@blockdata[:block]
111
+
112
+ if @blockdata.has_key?(:result)
113
+ begin
114
+ @running = true
115
+ res = @blockdata[:block].call(*@blockdata[:args])
116
+ rescue Exception => e
117
+ @mutex_tp.synchronize do
118
+ @blockdata[:error] = e
119
+ end
120
+ ensure
121
+ @running = false
122
+
123
+ @mutex_tp.synchronize do
124
+ @blockdata[:result] = res
125
+ @blockdata[:runned] = true
126
+ @blockdata[:running] = false
127
+ end
128
+
129
+ #Try to avoid slowdown of sleep by checking if there is a new block right away.
130
+ @blockdata = @tp.get_block
131
+ end
132
+ else
133
+ begin
134
+ @blockdata[:block].call(*@blockdata[:args])
135
+ rescue Exception => e
136
+ if @tp.events.connected?(:on_error)
137
+ @tp.events.call(:on_error, e)
138
+ else
139
+ puts e.inspect
140
+ puts e.backtrace
141
+ end
142
+ ensure
143
+ @mutex_tp.synchronize do
144
+ @blockdata.clear
145
+ @tp.blocks.delete(@blockdata)
146
+ end
147
+
148
+ #Try to avoid slowdown of sleep by checking if there is a new block right away.
149
+ @blockdata = @tp.get_block
150
+ end
151
+ end
152
+ end
153
+ end
154
+ end
155
+
156
+ def busy?
157
+ return true if @blockdata
158
+ end
159
+
160
+ def id
161
+ return @args[:id]
162
+ end
163
+
164
+ def kill
165
+ return false if !@mutex_tp
166
+
167
+ @mutex_tp.synchronize do
168
+ @thread.kill
169
+ @args = nil
170
+ @tp = nil
171
+ @mutex_tp = nil
172
+ @sleep = nil
173
+ @blockdata = nil
174
+ @thread = nil
175
+ end
176
+ end
177
+ end
@@ -0,0 +1,139 @@
1
+ class Knj::Translations
2
+ attr_accessor :args, :db, :ob, :cache
3
+
4
+ def initialize(args)
5
+ @args = args
6
+ @cache = {}
7
+
8
+ raise "No DB given." if !@args[:db]
9
+ @db = @args[:db]
10
+
11
+ @ob = Knj::Objects.new(
12
+ :db => @args[:db],
13
+ :extra_args => [self],
14
+ :class_path => File.dirname(__FILE__),
15
+ :module => Knj::Translations,
16
+ :require => false,
17
+ :datarow => true
18
+ )
19
+ end
20
+
21
+ def get(obj, key, args = {})
22
+ return "" if !obj
23
+
24
+ if args[:locale]
25
+ locale = args[:locale]
26
+ else
27
+ locale = @args[:locale]
28
+ end
29
+
30
+ classn = obj.class.name
31
+ objid = obj.id.to_s
32
+
33
+ if @cache[classn] and @cache[classn][objid] and @cache[classn][objid][key] and @cache[classn][objid][key][locale]
34
+ return @cache[classn][objid][key][locale][:value]
35
+ end
36
+
37
+ trans = @ob.list(:Translation, {
38
+ "object_class" => classn,
39
+ "object_id" => objid,
40
+ "key" => key,
41
+ "locale" => locale
42
+ })
43
+ return "" if trans.empty?
44
+
45
+ trans.each do |tran|
46
+ if !@cache.has_key?(classn)
47
+ @cache[classn] = {
48
+ objid => {
49
+ key => {
50
+ locale => tran
51
+ }
52
+ }
53
+ }
54
+ elsif !@cache[classn][objid]
55
+ @cache[classn][objid] = {
56
+ key => {
57
+ locale => tran
58
+ }
59
+ }
60
+ elsif !@cache[classn][objid][key]
61
+ @cache[classn][objid][key] = {
62
+ locale => tran
63
+ }
64
+ elsif !@cache[classn][objid][key][locale]
65
+ @cache[classn][objid][key][locale] = tran
66
+ end
67
+ end
68
+
69
+ return trans[0][:value]
70
+ end
71
+
72
+ def set(obj, values, args = {})
73
+ if args[:locale]
74
+ locale = args[:locale]
75
+ else
76
+ locale = @args[:locale]
77
+ end
78
+
79
+ values.each do |key, val|
80
+ trans = @ob.get_by(:Translation, {
81
+ "object_id" => obj.id,
82
+ "object_class" => obj.class.name,
83
+ "key" => key,
84
+ "locale" => locale
85
+ })
86
+
87
+ if trans
88
+ trans.update(:value => val)
89
+ else
90
+ @ob.add(:Translation, {
91
+ :object => obj,
92
+ :key => key,
93
+ :locale => locale,
94
+ :value => val
95
+ })
96
+ end
97
+ end
98
+ end
99
+
100
+ def delete(obj)
101
+ classn = obj.class.name
102
+ objid = obj.id.to_s
103
+
104
+ trans = @ob.list(:Translation, {
105
+ "object_id" => obj.id,
106
+ "object_class" => obj.class.name
107
+ })
108
+ trans.each do |tran|
109
+ @ob.delete(tran)
110
+ end
111
+
112
+ @cache[classn].delete(objid) if @cache.has_key?(classn) and @cache.has_key?(objid)
113
+ end
114
+ end
115
+
116
+ class Knj::Translations::Translation < Knj::Datarow
117
+ def self.add(d)
118
+ if d.data[:object]
119
+ d.data[:object_class] = d.data[:object].class.name
120
+ d.data[:object_id] = d.data[:object].id
121
+ d.data.delete(:object)
122
+ end
123
+ end
124
+
125
+ def self.list(d)
126
+ sql = "SELECT * FROM #{d.db.escape_col}#{d.db.esc_col(table)}#{d.db.escape_col} WHERE 1=1"
127
+ ret = list_helper(d)
128
+
129
+ d.args.each do |key, val|
130
+ raise "No such key: #{key}."
131
+ end
132
+
133
+ sql += ret[:sql_where]
134
+ sql += ret[:sql_order]
135
+ sql += ret[:sql_limit]
136
+
137
+ return d.ob.list_bysql(:Translation, sql)
138
+ end
139
+ end
@@ -0,0 +1,82 @@
1
+ class Knj::Unix_proc
2
+ attr_reader :data
3
+ @procs = {}
4
+
5
+ def self.spawn(data)
6
+ proc_ele = @procs[data["pid"]]
7
+
8
+ if proc_ele
9
+ proc_ele.update_data(data)
10
+ else
11
+ @procs[data["pid"]] = Knj::Unix_proc.new(data)
12
+ end
13
+
14
+ return @procs[data["pid"]]
15
+ end
16
+
17
+ def self.list(args = {})
18
+ cmdstr = "ps aux"
19
+ grepstr = ""
20
+
21
+ if args["grep"]
22
+ grepstr = "grep #{Knj::Strings.unixsafe(args["grep"])}"
23
+ cmdstr += " | #{grepstr}"
24
+ end
25
+
26
+ ret = []
27
+ res = Knj::Os.shellcmd(cmdstr)
28
+
29
+ res.scan(/^(\S+)\s+([0-9]+)\s+([0-9.]+)\s+([0-9.]+)\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+ (.+)($|\n)/) do |match|
30
+ pid = match[1]
31
+
32
+ data = {
33
+ "user" => match[0],
34
+ "pid" => pid,
35
+ "cpu_last" => match[2],
36
+ "ram_last" => match[3],
37
+ "cmd" => match[4],
38
+ "app" => File.basename(match[4])
39
+ }
40
+
41
+ next if (!args.has_key?("ignore_self") or args["ignore_self"]) and match[1].to_i == $$.to_i
42
+ next if grepstr.length > 0 and match[4].index(grepstr) != nil #dont return current process.
43
+ next if args.has_key?("pids") and args["pids"].index(pid) == nil
44
+
45
+ ret << Knj::Unix_proc.spawn(data)
46
+ end
47
+
48
+ return ret
49
+ end
50
+
51
+ def self.find_self
52
+ procs = Knj::Unix_proc.list("ignore_self" => false)
53
+ pid_find = Process.pid
54
+
55
+ proc_find = false
56
+ procs.each do |proc_ele|
57
+ if proc_ele["pid"].to_s == pid_find.to_s
58
+ proc_find = proc_ele
59
+ break
60
+ end
61
+ end
62
+
63
+ return proc_find
64
+ end
65
+
66
+ def initialize(data)
67
+ @data = data
68
+ end
69
+
70
+ def update_data(data)
71
+ @data = data
72
+ end
73
+
74
+ def [](key)
75
+ raise "No such data: #{key}" if !@data.has_key?(key)
76
+ return @data[key]
77
+ end
78
+
79
+ def kill
80
+ Process.kill(9, @data["pid"].to_i)
81
+ end
82
+ end