aboutsummaryrefslogtreecommitdiff
path: root/src/Groups.c
diff options
context:
space:
mode:
authorallen <allen@1faa4e14-9dd3-4be0-9f0e-ffe519881164>2000-09-19 23:35:56 +0000
committerallen <allen@1faa4e14-9dd3-4be0-9f0e-ffe519881164>2000-09-19 23:35:56 +0000
commitc1e6b818b3ad317850015cd9a80e7513a9660ffd (patch)
tree95bb822ece5a3069a30035f527aa4d49905f987a /src/Groups.c
parent7bc89f775b9129148f1bc9e1d5197ee13f3faca6 (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.c233
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,"&nbsp;");
+ }
+ 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;
+}
+