<%!
/* */
struct icm_info_type
{
  int status;
  int pid;
  int ppid;
  string uptime;
  string cputime;
  int trace_level;
  int trace_lvl;
  int cur_thr;
  int peak_thr;
  int max_thr;
  int total_thr;
  int cur_conn;
  int peak_conn;
  int max_conn;
  int total_conn;
  int cur_queue;
  int peak_queue;
  int max_queue;
  int total_queue;
};

struct icm_thr_info_type
{
  string status;
  string rq_type;
  int rq_count;
  int conn;
  int guid;
  string thr_id;
};

/* */
static string get_stat (int status)
{
  switch (status) {
    case 0: return ("none"); break;
    case 1: return ("init"); break;
    case 2: return ("running"); break;
    case 3: return ("shutdown"); break;
    case 4: return ("down"); break;
    case 5: return ("maintenance"); break;
    default: return ("unknown");
  }
}
%>

<%
int    nr;
int    rc;
string browser, appl;
struct icm_info_type icm_info;
struct icm_thr_info_type icm_thr_info[];

browser = __icm_get_browser_type();
appl    = __icm_get_system_property ("app_name");

__icm_get_info (icm_info);
__icm_get_thr_info(icm_thr_info);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
    <head>
      <link rel=stylesheet type="text/css" href="../public/css/controls_<%=browser%>.css">
      <link rel=stylesheet type="text/css" href="../public/css/sapbsp.css">
      <title><%=appl%> Monitor</title>
	<script type="text/javascript" src="../public/js/bspMenu.js"></script>
	<script type="text/javascript">
	  <!--
          window.onload = function() {
            initializeMenu ("ProcStatMenu", "statusObj");
            initializeMenu ("PeakMenu", "peakObj");
            initializeMenu ("TotalMenu", "totObj");
          }
	  document.onclick=bspMenuHide;
          //-->
	</script>
    </head>
    <body class="sapBdy">
      <table border="0" cellspacing="0" cellpadding="0" class="sapTbvAlt" width="100%">
	<tr>
	  <td class="sapTbvCellAlt" Colspan="1">
	    <b><i><%=appl%> Monitor</i></b>
	  </td>
	  <td class="sapTbvCellAlt" Colspan="1">&nbsp;</td>
	  <td class="sapTbvCellAlt" align="right">
	    <a href="javascript:parent.frames['main'].location.reload()" class="sapBtnEmph"><nobr>Refresh</nobr></a>
	  </td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" width="250">Status:</td>
	  <td class="sapTbvCellStd">
	    <%=get_stat(icm_info.status)%>
<% if (icm_info.status == 2) { %>
	    <img src="../public/icons/s_s_tl_g.gif" alt="green">
<% } else { %>
	    <img src="../public/icons/s_s_tl_y.gif" alt="yellow">
<% } %>

	  </td>
	  <td class="sapTbvCellStd" Colspan="1">&nbsp;</td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" width="200">Trace level:</td>
	  <td class="sapTbvCellStd" align="left"><%= icm_info.trace_level %></td>
	  <td class="sapTbvCellStd" Colspan="1">&nbsp;</td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" width="200">Process Id:</td>
	  <td class="sapTbvCellStd"><%=icm_info.pid%></td>
	  <td class="sapTbvCellStd" Colspan="1">&nbsp;</td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" width="200">Elapsed Time / CPU Time:</td>
	  <td class="sapTbvCellStd"><%=icm_info.uptime%> / <%=icm_info.cputime%></td>
	  <td class="sapTbvCellStd" Colspan="1">&nbsp;</td>
	</tr>
<%   if (icm_info.ppid != 0) { %>
	<tr>
	  <td class="sapTbvCellStd" width="200">Watchdog Process Id:</td>
	  <td class="sapTbvCellStd"><%=icm_info.ppid%></td>
	  <td class="sapTbvCellStd" Colspan="2">&nbsp;</td>
	</tr>
<%   } %>
	<tr>
	  <td class="sapTbvCellStd" Colspan="4">&nbsp;</td>
	</tr>
      </table>
      <table border="0" cellspacing="0" cellpadding="0" class="sapTbvAlt" width="100%">
	<tr>
	  <td class="sapTbvCellAlt" width="150">&nbsp;</td>
	  <td class="sapTbvCellAlt" width="50"><i>current</i></td>
	  <td class="sapTbvCellAlt" width="50">
	    <i>peak</i>
	  </td>
	  <td class="sapTbvCellAlt" width="50"><i>maximum</i></td>
	  <td class="sapTbvCellAlt" width="50">
	    <i>total</i>
	  </td>
	  <td class="sapTbvCellAlt" width="150">&nbsp;</td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd">Created Threads:</td>
	  <td class="sapTbvCellStd"><%= icm_info.cur_thr %></td>
	  <td class="sapTbvCellStd"><%= icm_info.peak_thr %></td>
	  <td class="sapTbvCellStd"><%= icm_info.max_thr %></td>
	  <td class="sapTbvCellStd"><%= icm_info.total_thr %></td>
	  <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd">Connections used:</td>
	  <td class="sapTbvCellStd"><%= icm_info.cur_conn %></td>
	  <td class="sapTbvCellStd"><%= icm_info.peak_conn %></td>
	  <td class="sapTbvCellStd"><%= icm_info.max_conn %></td>
	  <td class="sapTbvCellStd"><%= icm_info.total_conn %></td>
	  <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd">Queue entries used:</td>
	  <td class="sapTbvCellStd"><%= icm_info.cur_queue %></td>
	  <td class="sapTbvCellStd"><%= icm_info.peak_queue %></td>
	  <td class="sapTbvCellStd"><%= icm_info.max_queue %></td>
	  <td class="sapTbvCellStd"><%= icm_info.total_queue %></td>
	  <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
      </table>

      <table cellspacing=1 width="100%" class="sapTbvAlt">
	<tr>
	  <td class="sapTbvCellAlt">
	    <i>No.</i>
	  </td>
	  <td class="sapTbvCellAlt">
	    <i>Thread ID</i>
	  </td>
	  <td class="sapTbvCellAlt">
	    <i>No. of Requests</i>
	  </td>
	  <td class="sapTbvCellAlt">
	    <i>Status</i>
	  </td>
	  <td class="sapTbvCellAlt">
	    <i>Request Type</i>
	  </td>
	</tr>
<%
	for (nr = 0; nr < icm_info.cur_thr; nr++) {
%>
	<tr>
	  <td class="sapTbvCellStd"><%= nr %></td>
	  <td class="sapTbvCellStd"><%= icm_thr_info[nr].thr_id %></td>
	  <td class="sapTbvCellStd"><%= icm_thr_info[nr].rq_count %></td>
	  <td class="sapTbvCellStd"><%= icm_thr_info[nr].status %></td>
	  <td class="sapTbvCellStd"><%= icm_thr_info[nr].rq_type %></td>
	</tr>
<%
	}
%>
      </table>
    </body>
  </html>
