Posted to tcl by cjo at Fri Sep 08 20:04:43 GMT 2017view raw
- proc ::datastream::request::req_heartbeat { json } {
- package require unix_serialize
- json set json localTimestamp [json new number [clock milliseconds]]
- if { [info commands ::datastream::ws_session] ne {} } {
- set total_heartbeats [::datastream::ws_session total_heartbeats]
- if { $total_heartbeats ne {} && $total_heartbeats > 2 } {
- set uptime [unix get uptime]
- set procstat [unix serialize procstat]
- set meminfo [unix serialize meminfo total free buffers cached]
- set loadavg [unix serialize loadavg]
- json set json system [json template {
- {
- "uptime": {
- "items": {
- "procUptime": "~S:uptime"
- }
- },
- "cpu": {
- "items": "~J:procstat"
- },
- "memory": {
- "items": "~J:meminfo"
- },
- "load": {
- "procLoadAvg": "~J:loadavg"
- }
- }
- }]
- set lan_ip [::dashos::lan_ip]
- json set json network [json template {
- {
- "lanIP": "~S:lan_ip"
- }
- }]
- } else {
- set uptime [unix get uptime]
- json set json system [json template {
- {
- "heartbeat_uptime": {
- "uptime": {
- "items": {
- "procUptime": "~S:uptime"
- }
- }
- }
- }
- }]
- }
- }
- return $json
- }
- # $json has some existing contents that we want to add to
- set json [::datastream::request::req_heartbeat $json]