Module: ServerMonitorModule

Included in:
DangoServerFramework
Defined in:
lib/dango/monitor/server_monitor_module.rb

Overview

メインモジュール(drbで呼び出す用)

Instance Method Summary collapse

Instance Method Details

#_monitor_get_server_info(ret_obj) ⇒ Object

drbから呼ばれるメンテナンス:サーバーからクライアントへのデータ送信



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/dango/monitor/server_monitor_module.rb', line 10

def _monitor_get_server_info(ret_obj)
  logger.debug "_monitor_get_server_info"
  
  get_server_info = {
    'server_start_time' => start_time.strftime("%Y-%m-%d %H:%M:%S"),
    'up_time'           => Time.now - start_time,
    
    'recv_count'      => recv_count, # 受信回数
    'send_count'      => send_count, # 送信回数
    'recv_fail_count' => recv_fail_count, # 受信失敗回数
    'send_fail_count' => send_fail_count, # 送信失敗回数
    
#      'log_level'     => log_level_str,
#      'log_file'      => log_file,
#      'log_max_size'  => log_max_size,
#      'log_shift_age' => log_shift_age,
  }
  
  get_server_info
end

#_monitor_get_session_list(ret_obj) ⇒ Object

drbから呼ばれるメンテナンス:session_listの取得



117
118
119
120
# File 'lib/dango/monitor/server_monitor_module.rb', line 117

def _monitor_get_session_list(ret_obj)
  logger.debug "_monitor_get_session_list:#{ret_obj.inspect}"
  session_list
end

#_monitor_get_shared(ret_obj) ⇒ Object

drbから呼ばれるメンテナンス:shareの取得 key value



101
102
103
104
# File 'lib/dango/monitor/server_monitor_module.rb', line 101

def _monitor_get_shared(ret_obj)
  logger.debug "_monitor_get_shared:ret_obj=#{ret_obj.inspect}"
  shared.to_hash
end

#_monitor_get_socket_list(ret_obj) ⇒ Object

drbから呼ばれるメンテナンス:socket_listの取得



123
124
125
126
127
128
# File 'lib/dango/monitor/server_monitor_module.rb', line 123

def _monitor_get_socket_list(ret_obj)
  logger.debug "_monitor_get_socket_list:#{ret_obj.inspect}"
  ret = {}
  socket_list.all_sid.each{|sid| ret[sid] = socket_list[sid].object_id}
  ret
end

#_monitor_mutex_status(ret_obj) ⇒ Object

drbから呼ばれるメンテナンス:排他処理一覧



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/dango/monitor/server_monitor_module.rb', line 68

def _monitor_mutex_status(ret_obj)
  logger.debug "_monitor_mutex_status"
  ret = []
  
  ObjectSpace.each_object(DangoMutex) do |object|
    ret.push({
      :name    => object.mutex_name,
      :is_lock => object.locked?, 
    })
  end
  
#    mutex_list = [
#      [:mutex_send_response, @mutex_send_response],
#      [:mutex_send_notice  , @mutex_send_notice],
#      [:mutex_proc_thread  , @mutex_proc_thread],
#      [:mutex_send_response, @mutex_send_response],
#    ]
#    @mutex_sock.each do |key, value|
#      mutex_list.push(["mutex_sock #{key}", value])
#    end
#    
#    mutex_list.each do |name, mutex|
#      ret.push({
#        :name    => name.to_s,
#        :is_lock => mutex.locked?, 
#      })
#    end
  
  ret
end

#_monitor_send_system_message(ret_obj) ⇒ Object

drbから呼ばれるメンテナンス:接続者全員へメッセージ送信



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/dango/monitor/server_monitor_module.rb', line 39

def _monitor_send_system_message(ret_obj)
  logger.debug "_monitor_send_system_message"
  
  # 全員へ_notice_system_messageを通知
  socket_list.all_sid.each do |sid|
    next if session[:sid] == sid
    send_obj = { "message" => ret_obj["message"] }
    send_notice('_notice_system_message', sid, send_obj)
  end
  
  true
end

#_monitor_server_reload(ret_obj) ⇒ Object

drbから呼ばれるメンテナンス:サーバーデータ再読み込み



32
33
34
35
36
# File 'lib/dango/monitor/server_monitor_module.rb', line 32

def _monitor_server_reload(ret_obj)
  logger.debug "_monitor_server_reload"
  @server_reload = true
  true
end

#_monitor_thread_status(ret_obj) ⇒ Object

drbから呼ばれるメンテナンス:スレッド一覧



53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/dango/monitor/server_monitor_module.rb', line 53

def _monitor_thread_status(ret_obj)
  logger.debug "_monitor_thread_status"
  ret = []
  
  Thread.list.each do |th|
    ret.push({
      :object_id => th.object_id,
      :name      => th[:_name] ? th[:_name] : "unknown(maybe drb thread)",
    })
  end
  
  ret
end

#_monitor_write_shared(ret_obj) ⇒ Object

drbから呼ばれるメンテナンス:shareの強制書き換え key value



108
109
110
111
112
113
114
# File 'lib/dango/monitor/server_monitor_module.rb', line 108

def _monitor_write_shared(ret_obj)
  logger.debug "_monitor_write_shared:ret_obj=#{ret_obj.inspect}"
  logger.debug "_monitor_write_shared:value=#{eval(ret_obj['value']).inspect}"
  
  shared[ret_obj["key"]] = eval(ret_obj['value'])
  true
end