From 486e704ba440e896b048a4e33fd161d36d1830ef Mon Sep 17 00:00:00 2001
From: David Anderson
When the application has completed it must call
- int boinc_init();
+int boinc_init();
before calling other BOINC functions or doing I/O.
- int boinc_finish(int status);
+int boinc_finish(int status);
status
is nonzero if an error was encountered.
This call does not return.
@@ -49,7 +49,7 @@ in the two cases. For example you might want to output debugging information if
the application is running standalone. To determine if the application is
running in standalone mode or under the control of the BOINC client, call
- int boinc_is_standalone(void);
+int boinc_is_standalone(void);
This returns non-zero (True) if the application is running standalone, and zero (False) if the application
is running under the control of the BOINC client.
@@ -59,24 +59,24 @@ is running under the control of the BOINC client.
Resolving file names
Applications that use named input or output files must call
- int boinc_resolve_filename(char *logical_name, char *physical_name, int len);
+int boinc_resolve_filename(char *logical_name, char *physical_name, int len);
or
", html_text("
- int boinc_resolve_filename_s(char *logical_name, std::string& physical_name);
+int boinc_resolve_filename_s(char *logical_name, std::string& physical_name);
"), "
to convert logical file names to physical names.
For example, instead of
- f = fopen(\"my_file\", \"r\");
+f = fopen(\"my_file\", \"r\");
boinc_resolve_filename()
doesn't need to be used for temporary files.
@@ -110,7 +110,7 @@ Frequency of checkpointing is a user preference
(e.g. laptop users might want to checkpoint infrequently).
An application must call
- int boinc_time_to_checkpoint(); +int boinc_time_to_checkpoint();whenever it reaches a point where it is able to checkpoint. If this returns nonzero (True) then @@ -118,7 +118,7 @@ the application should checkpoint immediately (i.e., write the state file and flush all output files), then call
- void boinc_checkpoint_completed(); +void boinc_checkpoint_completed();
boinc_time_to_checkpoint()
is fast,
so it can be called frequently (hundreds or thousands of times a second).
@@ -182,7 +182,7 @@ and optionally at intermediate points.
The core client GUI displays the percent done of workunits in progress.
To keep this display current, an application should periodically call
- boinc_fraction_done(double fraction_done); +boinc_fraction_done(double fraction_done);The
fraction_done
argument is an estimate of the
workunit fraction complete (0 to 1).
@@ -191,7 +191,7 @@ The sequence of arguments in successive calls should be non-decreasing.
An application should never 'reset' and start over
if an error occurs; it should exit with an error code.
- double boinc_get_fraction_done(); +double boinc_get_fraction_done();returns the last value set, or -1 if none has been set (this would typically be called from graphics code). @@ -201,25 +201,25 @@ The following functions get information from the core client; this information may be useful for graphics. ", html_text(" - int boinc_get_init_data(APP_INIT_DATA&); +int boinc_get_init_data(APP_INIT_DATA&); - struct APP_INIT_DATA { - int core_version; - char app_name[256]; - char project_preferences[65536]; - char user_name[256]; - char team_name[256]; - char project_dir[256]; - char boinc_dir[256]; - char wu_name[256]; - char authenticator[256]; - int slot; - double user_total_credit; - double user_expavg_credit; - double team_total_credit; - double team_expavg_credit; - HOST_INFO host_info; - }; +struct APP_INIT_DATA { + int core_version; + char app_name[256]; + char project_preferences[65536]; + char user_name[256]; + char team_name[256]; + char project_dir[256]; + char boinc_dir[256]; + char wu_name[256]; + char authenticator[256]; + int slot; + double user_total_credit; + double user_expavg_credit; + double team_total_credit; + double team_expavg_credit; + HOST_INFO host_info; +}; "), " to get the following information: "; @@ -245,7 +245,7 @@ echo "
An application may call ", html_text(" - int boinc_wu_cpu_time(double &cpu_time); +int boinc_wu_cpu_time(double &cpu_time); "), "to get its total CPU time (from the beginning of the work unit, not just since the last restart). This excludes CPU time used to render graphics. diff --git a/doc/backend_programs.php b/doc/backend_programs.php index 3f23d559c0..3ba75790c6 100644 --- a/doc/backend_programs.php +++ b/doc/backend_programs.php @@ -1,14 +1,15 @@ A BOINC project includes of a set of daemons -(programs that run all the time). -Each program should be listed as a daemon in the +for generating and handling work. +Each program should be listed as a +daemon in the config.xml file. -They all have the command-line options: +Most daemons have the command-line options: "; list_start(); list_item("-d N", diff --git a/doc/boinc_dev.php b/doc/boinc_dev.php index a1bafc8121..a6475e6f7f 100644 --- a/doc/boinc_dev.php +++ b/doc/boinc_dev.php @@ -1,9 +1,48 @@ Writing add-on software +
+BOINC's architecture is 'open'; +documented interfaces making it possible to +develop various types of applications and web sites that +interact with BOINC's core components. +Examples include: +"; +list_start(); +list_item("Client GUIs", + "These allow an application to control a local + or remove core client." +); +list_item("Credit statistics web sites", + "Daily feeds of statistics data from BOINC projects + let you create web sites showing leaderboards." +); +list_item("Account managers", + "These interfaces support web sites that + let BOINC users manage their accounts." +); +list_item("Server status web sites", + "These interfaces support web sites showing the + server status of BOINC projects." +); +list_item("Web RPCs", + "These interfaces let a program or web site + obtain information about users and hosts from projects." +); +list_item("Local editing of preferences", + "This mechanism lets you write a program local editing of preferences." +); +list_end(); +echo " +
+An index of add-on software +is maintained by Janus Kristensen. +If you write something useful, publicize it by adding it to the index. +
BOINC is free software, distributed under the Lesser GNU Public License (LGPL).
We are in constant need of volunteers to
@@ -70,7 +109,7 @@ with lines of different colors or styles for different projects.
-Please check with davea at ssl.berkeley.edu
+Please check with David Anderson
before undertaking any of these.
";
diff --git a/doc/boinc_news.inc b/doc/boinc_news.inc
index d07e720a54..60247629ed 100644
--- a/doc/boinc_news.inc
+++ b/doc/boinc_news.inc
@@ -2,9 +2,15 @@
$project_news = array(
array("July 13, 2006",
- "Coming down to Earth,
- an article in the The Economist,
- describes Africa@home, a recently-announced BOINC project
+ "We are conducting an online survey
+ of BOINC participants.
+ Please fill out the survey form -
+ your responses will help us improve BOINC and the projects that use it. "
+),
+array("July 13, 2006",
+ "Articles in The Economist
+ and WebWire
+ describe Africa@home, a recently-announced BOINC project
that studies malaria epidemiology.
Africa@home is a collaboration of the Swiss Tropical Institute,
CERN, and a group of universities (three of them from Africa).
diff --git a/doc/configuration.php b/doc/configuration.php
index eb97fdb2bd..19a3c37755 100644
--- a/doc/configuration.php
+++ b/doc/configuration.php
@@ -1,430 +1,40 @@
ELEMENTS SHOULD BE CHANGED TO
-A config.xml file looks like this: -
", -htmlspecialchars(" +The format of config.xml file is: +", html_text("+")," +Details on: + "; -echo "The general project configuration elements are:"; -list_start(); -list_item("host", - "name of project's main host, as given by Python's socket.hostname(). - Daemons and tasks run on this host by default." -); -list_item("db_name", "Database name"); -list_item("db_host", "Database host machine"); -list_item("db_user", "Database user name"); -list_item("db_passwd", "Database password"); -list_item("shmem_key", "ID of scheduler shared memory. Must be unique on host."); -list_item("download_url", "URL of data server for download"); -list_item("download_dir", "absolute path of download directory"); -list_item("download_dir_alt", - "absolute path of old download directory - (see Hierarchical upload/download directories)" -); -list_item("upload_url", "URL of file upload handler"); -list_item("uldl_dir_fanout", "fan-out factor of upload and download directories - (see Hierarchical upload/download directories)" -); -list_item("upload_dir", "absolute path of upload directory"); -list_item("cgi_url", "URL of scheduling server"); -list_item("stripchart_cgi_url", "URL of stripchart server"); -list_item("log_dir", "Path to the directory where the assimilator, feeder, transitioner and -cgi output logs are stored. This allows you to change the default log -directory path. If set explicitly, you can also use the 'grep logs' -features on the administrative pages. Note: enabling 'grep logs' with -very long log files can hang your server, since grepping GB files can -take a long time. If you enable this feature, be sure to rotate the -logs so that they are not too big."); -list_item("sched_lockfile_dir", - "Enables scheduler locking (recommended) and specifies - directory where scheduler lockfiles are stored. - Must be writable to the Apache user. -"); -list_item("profile_screening", - "If present, don't show profile pictures until they've been - screened and approved by project admins." -); -list_end(); - -echo " - The following control features that you may or may not want - available to users. -"; -list_start(); -list_item("disable_account_creation", - "If present, disallow account creation" -); -list_item("show_results", - "Enable web site features that show results (per user, host, etc.)" -); -list_end(); - -echo " - The following control the way in which results are scheduled, sent, - and assigned to users and hosts. -"; -list_start(); -list_item("one_result_per_user_per_wu", - "If present, send at most one result of a given workunit to a given user. - This is useful for checking accuracy/validity of results. - It ensures that the results for a given workunit are generated by - different users. - If you have a validator that compares different results - for a given workunits to ensure that they are equivalent, - you should probably enable this. - Otherwise you may end up validating results from a given user - with results from the same user." -); -list_item("max_wus_to_send", - "Maximum results sent per scheduler RPC. Helps prevent hosts with - trouble from getting too many results and trashing them. But you - should set this large enough so that a host which is only connected to - the net at intervals has enough work to keep it occupied in between - connections." -); -list_item("non_cpu_intensive", - "If this flag is present, - project will be treated specially by the client: --"), -" - -project.hostname.ip -databasename -database.host.ip -database_user_name -database_password -shared_memory_key -http://A/URL -/path/to/directory -/path/to/directory -N -http://A/URL -/path/to/directory -http://A/URL -http://A/URL -/path/to/directory - - [] - [ ] - [ ] - [ ] - [ N ] - [0|1 ] - [N ] - [N ] - [] - [ ] - [ ] - [ N ] - [N ] - [N ] - [N ] - [N ] - [0|1 ] - [0|1 ] - [0|1 ] - [path ] - [N ] - [X ] - [X ] - [X ] - [X ] - [ ] - [ X ] - [URL ] - [] - [ N ] - [N ] - [] - - - - ../ -bin -cgi-bin + [ configuration options ] - -- -feeder -d 3 - [hostname.ip ] - [1 ] -- ... - + [ list of daemons ]- - -get_load - -5 min - [host.ip ] - [1 ] - [1 ] -- -echo \"HI\" | mail root@example.com - -1 day -- ... - + [ list of periodic tasks ]
-Daemons are continuously-running programs. -The process ID is recorded in the <pid_dir> directory -and the process is sent a SIGHUP in a DISABLE operation. -
-Both tasks and daemons can run on a different host (specified by <host>). -The default is the project's main host, which is specified in config.host -A daemon or task can be turned off by adding the <disabled> element. -As well, there may be some tasks you wish to run via cron regardless of -whether or not the project is enabled (for example, a script that logs the -current CPU load of the host machine). You can do so by adding the -<always_run> element (<disabled> takes precedence over <always_run>). -"; page_tail(); ?> diff --git a/doc/contact.php b/doc/contact.php index 136795a16f..d5b32fbd1a 100644 --- a/doc/contact.php +++ b/doc/contact.php @@ -99,7 +99,7 @@ the BOINC software:
"; $i = 0; -$n = 3; +$n = 4; function show_name($x) { global $i; global $n; diff --git a/doc/create_project.php b/doc/create_project.php index af2b777593..adac2b4fd8 100644 --- a/doc/create_project.php +++ b/doc/create_project.php @@ -67,6 +67,11 @@ Creating a BOINC project
".htmlspecialchars($x)."+ return "
".htmlspecialchars($x)."
- "; +
|
+ News
+ + "; + $nnews_items = 8; + show_news($project_news, $nnews_items); + if (count($project_news) > $nnews_items) { + echo "... more\n"; + } + + echo " + News is available as an
+ RSS feed |
+ "; +} + +function show_participate() { + global $light_blue; + echo " +
+ Use the idle time on your computer + (Windows, Mac, or Linux) + to do all sorts of scientific research: +
+ Learn how to create + and operate a BOINC project. +
+ If you lack the resources to operate a BOINC project directly, + organizations such as World Community Grid may be able + to assist you. + Please contact us for information. +
"; search_form(); @@ -137,150 +155,24 @@ echo "
- Participate- | |||||
- - BOINC lets you donate computing power - to scientific research projects (mouse over for details): -
- You can participate in several projects, ensuring that - your computer will be kept busy even when one project has no work. - - To participate: -
| |||||
Create a volunteer computing project | |||||
- If you are a scientist with a computationally-intensive task,
- you may be able to use BOINC.
- A BOINC project with a single Linux server
- can provide computing power equivalent
- to a cluster with tens of thousands of CPUs.
- - If you lack the resources (manpower, server capacity, - or network bandwidth) to operate a BOINC project directly, - organizations such as World Community Grid may be able - to assist you. - Please contact us for information. -
| |||||
Software | |||||
-
| |||||
Other info | |||||
-
- | |||||
-![]() |
-Featured participant- | |
- -One of over 600,000 people worldwide participating in BOINC: - +echo " |
";
-include("piecharts/$i.html");
-echo "
- -Top 100 | -Single-computer | -Other lists - |
-News-"; -$nnews_items = 8; -show_news($project_news, $nnews_items); -if (count($project_news) > $nnews_items) { - echo "... more\n"; -} + +show_news_items(); +echo "News is available as an
-RSS feed |
Several volunteer computing projects, including Climateprediction.net, Einstein@home, @@ -34,7 +35,7 @@ list_bar("Do you run BOINC?"); generate_functions($overall_choices); show_choices($overall_choices, $run_boinc); -list_bar("Choosing projects"); +list_bar("Your participation"); show_choices($project_items, ""); list_bar("Your computers"); show_choices($comp_items, ""); diff --git a/doc/poll_data.inc b/doc/poll_data.inc index 2d6ee245a7..624c48f21a 100644 --- a/doc/poll_data.inc +++ b/doc/poll_data.inc @@ -185,6 +185,37 @@ $project_items = array( "pmore10"=>"more than 10", ), ), + array( + "radio_name"=>"ssaver", + "text"=>"Do you run BOINC as a screensaver?", + "options"=>array( + "ss_yes"=>"yes", + "ss_no"=>"no", + ), + ), + array( + "radio_name"=>"mboards", + "text"=>"Your usage of project messages boards:", + "options"=>array( + "mboard_r"=>"to read information", + "mboard_rw"=>"to read and post information", + "mboard_none"=>"none", + ), + ), + array( + "text"=>"Where do you get information to help resolve problems with BOINC and/or BOINC projects?", + "options"=>array( + "help_pmb"=>"The project message boards", + "help_bmb"=>"The BOINC message boards", + "help_bdoc"=>"The BOINC web site", + "help_bmlist"=>"BOINC mailing lists", + "help_wiki"=>"The Unofficial BOINC Wiki", + "help_team"=>"Team web sites", + "help_google"=>"Google or other search engines", + ), + "radio_name"=>false, + "other_name"=>help_other_text, + ), ); shuffle($project_items[1]['options']); diff --git a/doc/projects.inc b/doc/projects.inc new file mode 100644 index 0000000000..f9070340d9 --- /dev/null +++ b/doc/projects.inc @@ -0,0 +1,110 @@ + The model incorporates many variable parameters, allowing thousands of sets of conditions. Your computer will run one individual set of conditions - in effect your individual version of how the world\'s climate works - and then report back to the climateprediction.net team what it calculates.", + + "cpn_logo_world_1.jpg" + ), + array( + "Seasonal Attribution Project", + "http://attribution.cpdn.org/", + "Oxford University", + "Earth sciences", + "To determine the extent to which extreme weather events like the United Kingdom floods of Autumn 2000 are attributable to human-induced climate change. We invite you to download and run high-resolution model simulations of the world\'s climate on your own computer. By comparing the results of these simulations, half of which will include the effects of human-induced climate change, and half of which will not, we will investigate the possible impact of human activity on extreme weather risk. This project has fairly high computing requirements, including 1GB RAM.", + "cpn_logo_world_1.jpg" + ), + array( + "Einstein@home", + "http://einstein.phys.uwm.edu/", + "Univ. of Wisconsin - Milwaukee, Albert Einstein Institute", + "Astrophysics", + "Search for spinning neutron stars (also called pulsars) using data from the LIGO and GEO gravitational wave detectors. Einstein@Home is a World Year of Physics 2005 project supported by the American Physical Society (APS) and by a number of international organizations.", + "einstein.jpg" + ), + array( + "LHC@home", + "http://lhcathome.cern.ch/", + "CERN (European Organization for Nuclear Research)", + "Physics", + "The Large Hadron Collider (LHC) is a particle accelerator which is being built at CERN, the European Organization for Nuclear Research, the world\'s largest particle physics laboratory. When it switches on in 2007, it will be the most powerful instrument ever built to investigate on particles proprieties. LHC@home simulates particles traveling around the LHC to study the stability of their orbits.", + "lhc.jpg" + ), + array( + "Predictor@home", + "http://predictor.scripps.edu", + "Scripps Research Institute", + "Biology", + "Protein structure prediction starts from a sequence of amino acids and attempts to predict the folded, functioning, form of the protein. Predicting the structure of an unknown protein is a critical problem in enabling structure-based drug design to treat new and existing diseases.", + "predictor.jpg" + ), + array( + "Rosetta@home", + "http://boinc.bakerlab.org/rosetta/", + "University of Washington", + "Biology", + "Determine the 3-dimensional shapes of proteins in research that may ultimately lead to finding cures for some major human diseases. By running Rosetta@home you will help us speed up and extend our research in ways we couldn\'t possibly attempt without your help. You will also be helping our efforts at designing new proteins to fight diseases such as HIV, Malaria, Cancer, and Alzheimer\'s", + "rosetta_at_home_logo.jpg" + ), + array( + "SETI@home", + "http://setiathome.berkeley.edu/", + "U.C. Berkeley Space Sciences Laboratory", + "Astrophysics, astrobiology", + "SETI (Search for Extraterrestrial Intelligence) is a scientific area whose goal is to detect intelligent life outside Earth. One approach, known as radio SETI, uses radio telescopes to listen for narrow-bandwidth radio signals from space. Such signals are not known to occur naturally, so a detection would provide evidence of extraterrestrial technology.", + "seti_logo.png" + ), + array( + "SIMAP", + "http://boinc.bio.wzw.tum.de/boincsimap/", + "Technical University of Munich", + "Biology", + "Calculate similarities between proteins. SIMAP provides a public database of the resulting data, which plays a key role in many bioinformatics research projects.", + "simaplogo.jpg" + ), + array( + "SZTAKI Desktop Grid", + "http://szdg.lpds.sztaki.hu/szdg/", + "MTA-SZTAKI Laboratory of Parallel and Distributed Systems (Budapest)", + "Mathematics", + "Find all the generalized binary number systems (in which bases are matrices and digits are vectors) up to dimension 11.", + "szdg1_small.jpg" + ), + array( + "World Community Grid", + "http://www.worldcommunitygrid.org/", + "IBM", + "Biomedicine", + "Advance our knowledge of human disease.", + "wcg.jpg", + ), + array( + "Quantum Monte Carlo at Home", + "http://qah.uni-muenster.de/", + "University of Muenster", + "Chemistry", + "Study the structure and reactivity of molecules using Quantum Chemistry.", + "logo_oben.jpg" + ), +); + +?> diff --git a/doc/projects.php b/doc/projects.php index bf080d4b99..f0c1436910 100644 --- a/doc/projects.php +++ b/doc/projects.php @@ -1,22 +1,33 @@ SETI@home. -However, other distributed computing projects use BOINC. -BOINC allows you to participate in multiple projects, -and to control how your resources (such as computer time +A partial list of current projects (mouse over for details): +
+You can participate in several projects, ensuring that +your computer will be kept busy even when one project has no work. +You can control how your resources (such as computer time and disk space) are divided among these projects. +When you attach to a project, you will be asked for its URL. +This is simply its web address: visit each project's web site, +and copy the URL from your browser's address field.
-Projects are independent, and each maintains its own servers. +Projects are independent. The BOINC developers and the University of California have no control over the creation of BOINC-based projects, and do not endorse them. -The BOINC web sites lists some, but not all, projects. -A more complete list is on the -BOINC Wiki.
When you participate in a project, @@ -36,6 +47,9 @@ you should consider the following questions: or will they belong to a for-profit business?
diff --git a/doc/tool_start.php b/doc/tool_start.php index f7457d4113..38a0177fe4 100644 --- a/doc/tool_start.php +++ b/doc/tool_start.php @@ -2,74 +2,69 @@ require_once("docutil.php"); page_head("Project control"); echo " +
The following files (in the project root directory) can be used to turn off various parts of a project. -
- stop_sched --Have the scheduler return 'project down' messages. -
- stop_daemons --Tell all daemon process to exit. - -
- stop_web --Have the web site return 'project down' messages -for all functions that require database access. - -
- stop_upload --Have the file upload handler return transient error messages to clients -(they'll back off and retry later). - +"; +list_start(); +list_item("stop_sched", + "Have the scheduler return 'project down' messages." +); +list_item("stop_daemons", + "Tell all daemon process to exit." +); +list_item("stop_web", + "Have the web site return 'project down' messages + for all functions that require database access." +); +list_item("stop_upload", + "Have the file upload handler return transient error messages to clients + (they'll back off and retry later)." +); +list_end(); +echo "
The presence of a file triggers the function. For example, to turn off data-driven web pages, type
touch stop_web-and to them back on, type +and to turn them back on, type
rm stop_web
-If all three files are present, no database access will occur. +If the first three files are all present, no database access will occur. You should do this during most maintenance functions (such as upgrading software). - -
- bin/start --Start the project: start all daemons, -and remove the stop_sched and stop_daemon files. -
- bin/stop --Stop the project (create the stop_sched and stop_daemon files) -
- bin/start --cron --If the project is started, perform all periodic tasks that are past due, -and start any daemons that aren't running. -Otherwise do nothing. -
- bin/status --Show whether the project is stopped. -Show the status of all daemons. -Show the status of all periodic tasks -(e.g., when they were last executed). - "; + page_tail(); ?> - diff --git a/doc/trickle.php b/doc/trickle.php index 55b1574ccd..5403507c76 100644 --- a/doc/trickle.php +++ b/doc/trickle.php @@ -1,16 +1,25 @@ Trickle messages let applications communicate with the server during the execution of a workunit. -They are intended for applications that have -long work units (multiple days). -Trickle messages may go in either direction: -'trickle up' messages go from application to server, -'trickle down' messages go from server to application. -Typical uses of this mechanism: +They are intended for applications that have long workunits (multiple days). + +
+Trickle messages may from client to server or vice versa. +Messages are XML documents. + +
+Trickle-up messages go from application to server. +They are handled by trickle handler daemons running on the server. +Each message is tagged with a 'variety' (a character string). +Each daemon handles messages of a particular variety. +(This is used, typically, to distinguish different applications.) +Example uses:
+
+Trickle-down messages go from server to application.
+Each one is addressed to a particular host,
+and must include an element <result_name>
+identifying the result to which the message is addressed.
+If that result is still running on the host, it is delivered to it.
+Example uses:
+
+
-Trickle messages are asynchronous and reliable. +Trickle messages are asynchronous, ordered, and reliable. Trickle messages are conveyed in scheduler RPC messages, so they may not be delivered immediately after being generated. - -
-To handle trickle-down messages, a project must include the line -
-<msg_to_host/> --in the configuration (config.xml) file. - - - "; page_tail(); diff --git a/doc/trickle_api.php b/doc/trickle_api.php index 0e42cd0447..413fb9ac50 100644 --- a/doc/trickle_api.php +++ b/doc/trickle_api.php @@ -3,36 +3,72 @@ require_once("docutil.php"); page_head("Trickle message API"); echo " -
int boinc_send_trickle_up(char* variety, char* text)
-sends a trickle message of the given variety.
-Returns zero if success.
+To receive a trickle-down message, call
int boinc_receive_trickle_down(char* buf, int len)
-receives a trickle message.
-Returns true (nonzero) if there was a message.
-Messages are delivered in order.
+This returns true (nonzero) if there was a message.
-+To handle trickle-up messages, use a 'trickle_handler' daemon. +This is a program, based on sched/trickle_handler.C, linked with a function ",html_text(" -int handle_trickle(TRICKLE_UP&); +int handle_trickle(MSG_FROM_HOST&); + +struct MSG_FROM_HOST { + int create_time; + int hostid; + char variety[256]; // project-defined; what kind of msg + char xml[MSG_FROM_HOST_BLOB_SIZE]; +}; + ")," -You may send trickle-down messages, from this function or elsewhere, -as follows: + +This function should return zero if the message was handled successfully; +otherwise it will be retried later. +The 'hostid' field identifies the host from which the message was sent. +The daemon must be passed a '-variety X' command-line argument, +telling it what kind of messages to handle. +The daemon should be specified in the +project configuration file. +
+To send send trickle-down messages
+(from a trickle handler daemon or other program)
+you must insert a record in the 'msg_to_host' table.
+From C/C++, this is done as follows:
",html_text("
-DB_TRICKLE_DOWN tdown;
-// ... populate the tdown object
-tdown.insert();
+DB_MSG_TO_HOST mth;
+
+mth.clear();
+mth.create_time = time(0);
+mth.hostid = hostid;
+sprintf(mth.xml,
+ \"
+To send trickle-down messages, a project must include the line +
+<msg_to_host/> ++in the configuration (config.xml) file. + "; page_tail(); diff --git a/doc/white.css b/doc/white.css index c28bccd1b7..789e968849 100644 --- a/doc/white.css +++ b/doc/white.css @@ -43,6 +43,10 @@ body { color: black; } +pre { + background-color: #d8e8ff; +} + th { background-color: #c8c8ff; color: black; diff --git a/html/inc/prefs.inc b/html/inc/prefs.inc index d13abfb75a..3bc9603917 100644 --- a/html/inc/prefs.inc +++ b/html/inc/prefs.inc @@ -55,7 +55,7 @@ define("IDLE_TIME_TO_RUN_DESC2", "