<%!
/* */
struct icm_mpi_info_type
{
  int	total_size_mb;
  int	buffer_size;
  int	header_size;
  int	body_size;

  int   dyn_quota_perc;
  int	buf_reserved;
  int	buf_unreserved;
  int	buf_count;

  int	cur_buf_count;
  int	cur_pipe_count;

  int	peak_buf_usage;
  int	trans_count;

};

struct icm_mpi_pipe_info_type
{
  int    guid;
  int    eyecatcher;
  int    flags;
  string name;
  int    id;
  string tag;
  int    status;
  int    nBufReady;
  int    allocBufs;
  int    maxAllocBufs;
  int    nOpenRead;
  int    mtxOwnerRead;
  int    nOpenWrite;
  int    mtxOwnerWrite;
};
/* */
%>

<%
  int    i, nr, max;
  string browser;
  struct icm_mpi_info_type icm_mpi_info;
  struct icm_mpi_pipe_info_type icm_mpi_vec[];
  boolean show_mpi_details;
  
  show_mpi_details = __icm_get_form_field ("show_mpi_details");
  browser = __icm_get_browser_type();
  __icm_get_mpi_info (icm_mpi_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>MPI Status</title>
    <script language="JavaScript" type="text/javascript">
	  <!--
	  function callUrlWithKey(ev,keycode,url) {
		if (ev.keyCode == keycode) {
		  window.location=url;
		}
	  }
	  -->
    </script>
  </head>

  <body class="sapBdy">
    <table border=0 cellspacing=1 cellpadding=0 class="sapTbvAlt">
      <tr>
        <td class="sapTbvCellAlt" colspan="1"><i><b>MPI Status</b></i></td>
        <td class="sapTbvCellAlt" align="right">
        <a href="javascript:parent.frames['main'].location.reload()" class="sapBtnEmph" title="refresh page"><nobr>Refresh</nobr></a>
        </td>
      </tr>

      <tr>
        <td class="sapTbvCellAlt" colspan="2">Global settings</td>
      </tr>

      <tr>
        <td class="sapTbvCellStd" width=200>
          Total MPI size (Byte)
        </td>
        <td class="sapTbvCellStd" width=100 align="right">
          <%= icm_mpi_info.total_size_mb %>
        </td>
      </tr>
      <tr>
        <td class="sapTbvCellStd">
          MPI buffer size (Byte)
        </td>
        <td class="sapTbvCellStd" align="right">
          <%= icm_mpi_info.buffer_size %>
        </td>
      </tr>
      <tr>
        <td class="sapTbvCellStd">
          MPI header size (Byte)
        </td>
        <td class="sapTbvCellStd" align="right">
          <%= icm_mpi_info.header_size %>
        </td>
      </tr>
      <tr>
        <td class="sapTbvCellStd">
          MPI body size (Byte)
        </td>
        <td class="sapTbvCellStd" align="right">
          <%= icm_mpi_info.body_size %>
        </td>
      </tr>
      <tr>
        <td class="sapTbvCellStd">
          Total #reserved Mpi Buffer
        </td>
        <td class="sapTbvCellStd" align="right">
          <%= icm_mpi_info.buf_reserved %>
        </td>
      </tr>
      <tr>
        <td class="sapTbvCellStd">
          Total #unreserved Mpi Buffer
        </td>
        <td class="sapTbvCellStd" align="right">
          <%= icm_mpi_info.buf_unreserved %>
        </td>
      </tr>
      <tr>
        <td class="sapTbvCellStd">
          Total #Mpi Buffer
        </td>
        <td class="sapTbvCellStd" align="right">
          <%= icm_mpi_info.buf_count %>
        </td>
      </tr>

      <tr>
        <td class="sapTbvCellAlt" colspan="2">Current usage</td>
      </tr>

      <tr>
        <td class="sapTbvCellStd">
          #MPI Buffers used
        </td>
        <td class="sapTbvCellStd" align="right">
          <%= icm_mpi_info.cur_buf_count %>
        </td>
      </tr>

      <tr>
        <td class="sapTbvCellStd">
          #MPI Pipes used
        </td>
        <td class="sapTbvCellStd" align="right">
          <%= icm_mpi_info.cur_pipe_count %>
        </td>
      </tr>

      <tr>
        <td class="sapTbvCellAlt" colspan="2">Misc information</td>
      </tr>

      <tr>
        <td class="sapTbvCellStd">
          Peak buffer usage
        </td>
        <td class="sapTbvCellStd" align="right">
          <%= icm_mpi_info.peak_buf_usage %>
        </td>
      </tr>
      <tr>
        <td class="sapTbvCellStd">
          Transaction count
        </td>
        <td class="sapTbvCellStd" align="right">
          <%= icm_mpi_info.trans_count %>
        </td>
      </tr>
    </table>
    <br>

<%
    if (show_mpi_details == 0) {
%>
<!--
      <a href="./mpi_info.icp?show_mpi_details=1" class="sapBtnEmph" title="Show Details"><nobr><u>S</u>how Details</nobr></a>
-->
	  <a accesskey="s" onKeyUp="javascript:callUrlWithKey(event,83,'./mpi_info.icp?show_mpi_details=1')" href="./mpi_info.icp?show_mpi_details=1" class="sapBtnEmph">
	     <nobr><u>S</u>how Details</nobr></a>
<%
    } else {
    __icm_get_mpi_info (icm_mpi_vec);
%>
<!--
      <a href="./mpi_info.icp?show_mpi_details=0" class="sapBtnEmph" title="Hide Details"><nobr><u>H</u>ide Details</nobr></a>
-->
      <a accesskey="h" onKeyUp="javascript:callUrlWithKey(event,72,'./mpi_info.icp?show_mpi_details=0')" href="./mpi_info.icp?show_mpi_details=0" class="sapBtnEmph">
	     <nobr><u>H</u>ide Details</nobr></a>
      <br><br>
      <table border=0 cellspacing=1 cellpadding=0 class="sapTbvAlt">
        <tr>
      	<th class="sapTbvCellAlt"><i>Guid</i></th>
      	<th class="sapTbvCellAlt"><i>Id</i></th>
      	<th class="sapTbvCellAlt"><i>Name</i></th>
      	<th class="sapTbvCellAlt"><i>Buffers in Queue</i></th>
      	<th class="sapTbvCellAlt"><i>Allocated Buffers</i></th>
      	<th class="sapTbvCellAlt"><i>Maximum Buffers</i></th>
	    <th class="sapTbvCellAlt"><i>Read Handle</i></th>
		<th class="sapTbvCellAlt"><i>Read Mutex ID</i></th>
		<th class="sapTbvCellAlt"><i>Write Handle</i></th>
	    <th class="sapTbvCellAlt"><i>Write Mutex ID</i></th>
	    <th class="sapTbvCellAlt"><i>Eyecatcher</i></th>
	    <th class="sapTbvCellAlt"><i>Flags</i></th>
	    <th class="sapTbvCellAlt"><i>Tag</i></th>
	    <th class="sapTbvCellAlt"><i>Status</i></th>
	    
        </tr>
            
<%
        max = arraylen(icm_mpi_vec);
        for (nr = 0; nr < max; nr++) {
%>
	     <tr>
	     <td class="sapTbvCellStd" align="right"><%= icm_mpi_vec[nr].guid %></td>
	     <td class="sapTbvCellStd" align="right"><%= icm_mpi_vec[nr].id %></td>
	     <td class="sapTbvCellStd" align="left"><%= icm_mpi_vec[nr].name %></td>
	     <td class="sapTbvCellStd" align="right"><%= icm_mpi_vec[nr].nBufReady %></td>
	     <td class="sapTbvCellStd" align="right"><%= icm_mpi_vec[nr].allocBufs %></td>
	     <td class="sapTbvCellStd" align="right"><%= icm_mpi_vec[nr].maxAllocBufs %></td>
	     <td class="sapTbvCellStd" align="right"><%= icm_mpi_vec[nr].nOpenRead %></td>
		 <td class="sapTbvCellStd" align="right"><%= icm_mpi_vec[nr].mtxOwnerRead %></td>
		 <td class="sapTbvCellStd" align="right"><%= icm_mpi_vec[nr].nOpenWrite %></td>
	     <td class="sapTbvCellStd" align="right"><%= icm_mpi_vec[nr].mtxOwnerWrite %></td>
	     <td class="sapTbvCellStd" align="right"><%= icm_mpi_vec[nr].eyecatcher %></td>
	     <td class="sapTbvCellStd" align="right"><%= icm_mpi_vec[nr].flags %></td>
	     <td class="sapTbvCellStd" align="right"><%= icm_mpi_vec[nr].tag %></td>
	     <td class="sapTbvCellStd" align="right"><%= icm_mpi_vec[nr].status %></td>
	     
	   </tr>
<%
       }
%>
      </table>
<%
    } 
%>
    
      
  </body>
</html>
