diff options
author | allen <allen@1faa4e14-9dd3-4be0-9f0e-ffe519881164> | 2000-09-19 23:35:56 +0000 |
---|---|---|
committer | allen <allen@1faa4e14-9dd3-4be0-9f0e-ffe519881164> | 2000-09-19 23:35:56 +0000 |
commit | c1e6b818b3ad317850015cd9a80e7513a9660ffd (patch) | |
tree | 95bb822ece5a3069a30035f527aa4d49905f987a /src/Groups.c | |
parent | 7bc89f775b9129148f1bc9e1d5197ee13f3faca6 (diff) |
Moved headers to a separate file, they are now callable by a function.
Added page about groups and variables
Added parameter file name, current time and date
git-svn-id: http://svn.cactuscode.org/arrangements/CactusConnect/HTTPD/trunk@52 1faa4e14-9dd3-4be0-9f0e-ffe519881164
Diffstat (limited to 'src/Groups.c')
-rw-r--r-- | src/Groups.c | 233 |
1 files changed, 233 insertions, 0 deletions
diff --git a/src/Groups.c b/src/Groups.c new file mode 100644 index 0000000..9ccea48 --- /dev/null +++ b/src/Groups.c @@ -0,0 +1,233 @@ + /*@@ + @file Groups.c + @date Wed Sep 14 23:47:43 2000 + @author Gabrielle Allen + @desc + Pages about groups + @enddesc + @version $Header$ + @@*/ + +#include <stdio.h> + +#include "cctk.h" + +#include "util_String.h" + +#include "http_Request.h" +#include "http_Content.h" + +static char *rcsid = "$Header$"; + +CCTK_FILEVERSION(DevThorns_httpd_Groups_c) + +/******************************************************************** + ********************* Local Data Types *********************** + ********************************************************************/ + +/******************************************************************** + ********************* Local Routine Prototypes ********************* + ********************************************************************/ + +static int GroupsPage(cGH *cctkGH, httpRequest *request, void *data); + +static int watch[1024]; + +/******************************************************************** + ********************* Other Routine Prototypes ********************* + ********************************************************************/ + +/******************************************************************** + ********************* Local Data ***************************** + ********************************************************************/ + +/******************************************************************** + ********************* External Routines ********************** + ********************************************************************/ + + /*@@ + @routine HTTPi_RegisterGroupPages + @date Wed Sep 14 11:29:43 2000 + @author Gabrielle Allen + @desc + Httpd utils registration routine. + @enddesc + @calls + @calledby + @history + + @endhistory + +@@*/ +int HTTPi_RegisterGroupsPages(void) +{ + /* Register the group info page. */ + HTTP_RegisterPage("/Groups", GroupsPage, NULL); + + HTTP_ContentLink("/Groups/index.html", "Groups and Variables", + "Information about grid variables and groups", + HTTP_QUICKLINK); + +} + +/******************************************************************** + ********************* Local Routines ************************* + ********************************************************************/ + + +/****************************************************************************** + ***************************** Groups Page ************************************** + ******************************************************************************/ + + /*@@ + @routine GroupsPage + @date Thu Sep 14 23:47:43 2000 + @author Gabrielle Allen + @desc + Displays the group description page. + @enddesc + @calls + @calledby +@@*/ +static int GroupsPage(cGH *cctkGH, httpRequest *request, void *data) +{ + int retval; + char message[4098]; + int i,j; + int ngroups,nvars; + cGroup gdata; + + /* Status message */ + strcpy(message,"HTTP/1.0 200 OK\r\n"); + + HTTP_Write(request, message, strlen(message)); + + /* Content-Type */ + strcpy(message,"Content-Type: text/html\r\n\r\n"); + + HTTP_Write(request, message, strlen(message)); + + + /* Start the page */ + strcpy(message,"<HTML><HEAD><TITLE>Cactus Simulation Group Information</TITLE>\n"); + + HTTP_Write(request, message, strlen(message)); + + /* HTTP_Write out the header part. */ + + HTTP_ContentHeader(0,strlen(message),message); + + retval = HTTP_Write(request, message, strlen(message)); + + ngroups = CCTK_NumGroups(); + + strcpy(message, "<center><h1>Groups and Grid Variables</h1></center>" + "<p>These pages describe the grid variables and groups " + "active in this simulation.</p>"); + retval = HTTP_Write(request, message, strlen(message)); + + sprintf(message,"<p>This simulation contains %d groups, and %d variables, " + "set in %d-space dimensions. Groups for which storage is " + "currently assigned are written in <font color=red>red</font>. " + "The numbers in square brackets are the group and variable indices." + "</p>", + CCTK_NumGroups(),CCTK_NumVars(), + CCTK_MaxDim()); + retval = HTTP_Write(request, message, strlen(message)); + + strcpy(message,"<FORM action=\"/Groups.html\" method=\"GET\">\n"); + retval = HTTP_Write(request, message, strlen(message)); + + strcpy(message,"<center><table width=100\% cellpadding=5 " + "cellspacing=5 BGCOLOR=\"#E9F4D3\">" + "<tr><th>Groups</th><th>Group Properties</th>" + "<th>Variables</th></tr>"); + retval = HTTP_Write(request, message, strlen(message)); + + for(i=0; i < ngroups; i++) + { + strcpy(message,"<tr valign=top halign=left>"); + if (CCTK_QueryGroupStorageI(cctkGH,i)) + { + sprintf(message,"%s <td>[%d] <font color=red>%s</font></td>" + "\n", message, i, CCTK_GroupName(i)); + } + else + { + sprintf(message,"%s <td VALIGN=TOP ALIGN=LEFT>[%d] %s</td>\n", + message, i, CCTK_GroupName(i)); + } + + HTTP_Write(request, message, strlen(message)); + + /* Group Description */ + + sprintf(message,"<td>"); + + if (CCTK_GroupData(i,&gdata)>-1) + { + switch (CCTK_GroupTypeI(i)) + { + case CCTK_SCALAR: + strcat(message,"Grid scalar"); + break; + case CCTK_ARRAY: + strcat(message,"Grid array"); + break; + case CCTK_GF: + strcat(message,"Grid function"); + break; + } + + sprintf(message, "%s %s <br>(%d bytes)", message, + CCTK_VarTypeName(gdata.vartype),CCTK_VarTypeSize(gdata.vartype)); + if (!(CCTK_GroupTypeI(i) == CCTK_SCALAR)) + { + sprintf(message,"%s <br>Dimension %d",message,gdata.dim); + sprintf(message, "%s <br>Timelevels %d",message, gdata.numtimelevels); + } + HTTP_Write(request, message, strlen(message)); + } + + strcpy(message,"</td>"); + + nvars = CCTK_NumVarsInGroupI(i); + strcat(message,"<TD VALIGN=TOP ALIGN=LEFT><DL>"); + for(j=CCTK_FirstVarIndexI(i); j < CCTK_FirstVarIndexI(i)+nvars; j++) + { + sprintf(message,"%s <DT>[%d] %s\n", message, j, CCTK_VarName(j) ); + } + strcat(message,"</DL></TD></TR>"); + HTTP_Write(request, message, strlen(message)); + + /* + strcpy(message,"<TD align=center valign=center>"); + if (CCTK_GroupTypeI(i) == CCTK_SCALAR) + { + for(j=CCTK_FirstVarIndexI(i); j < CCTK_FirstVarIndexI(i)+nvars; j++) + { + sprintf(message,"%s " + "<INPUT type=\"checkbox\" name=\"var%d\" %s value=\"1\"><br>", + message,j,watch[j] ? "checked" : "unchecked"); + } + } + else + { + strcat(message," "); + } + sprintf(message,"%s </TD></TR>",message); + HTTP_Write(request, message, strlen(message)); + */ + } + + strcpy(message,"</TABLE></FORM></center>/n"); + HTTP_Write(request, message, strlen(message)); + + /* Write out the footer part. */ + + HTTP_ContentFooter(0,strlen(message),message); + retval = HTTP_Write(request, message, strlen(message)); + + return retval; +} + |