Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

36 lines
5.3 KiB

{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
{\f32\froman\fcharset238\fprq2 Times New Roman CE;}{\f33\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f35\froman\fcharset161\fprq2 Times New Roman Greek;}{\f36\froman\fcharset162\fprq2 Times New Roman Tur;}
{\f37\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f38\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f39\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f40\fswiss\fcharset238\fprq2 Arial CE;}{\f41\fswiss\fcharset204\fprq2 Arial Cyr;}
{\f43\fswiss\fcharset161\fprq2 Arial Greek;}{\f44\fswiss\fcharset162\fprq2 Arial Tur;}{\f45\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f46\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f47\fswiss\fcharset186\fprq2 Arial Baltic;}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}}{\info{\author Joe Porkka}{\operator Joe Porkka}{\creatim\yr2000\mo1\dy13\hr11\min7}{\revtim\yr2000\mo4\dy21\hr12\min40}{\version6}
{\edmins344}{\nofpages1}{\nofwords432}{\nofchars2463}{\*\company Microsoft Corp.}{\nofcharsws0}{\vern8247}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701
\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind4\viewscale100\nolnhtadjtbl \fet0\sectd \linex0\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3
\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}
{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain
\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f1\fs20 File publishing process:
\par }\pard \ql \fi720\li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\f1\fs20
\par When slaveproxy::CheckBuildStatus() detects that a slave has gone into the "waitbuild" state, it calls the slaves "GetPublishLog" command to retrieve the list of files to be published. This function returns an array of files per
enlistment to be published. It then calls Slaveproxy:: PreCopyFilesToPostBuild () to process this information.
\par
\par Slaveproxy:: CopyFilesToPostBuild() builds the }{\i\f1\fs20 PrivateData.hPublisher["remotemachine"] }{\f1\fs20 data structure from this list of files. Duplicated files
are marked at this point to reduce the number of files that need to be copied. A list of the \'93not yet copied\'94 files is built, and the status of each file is changed to \'93copied to master\'94. Slave status is changed to \lquote waitcopytopostbuild
\rquote .
\par
\par Slaveproxy::RemoveDuplicateFileNames() is single threaded. This scans each file in }{\i\f1\fs20 PrivateData.hPublisher["remotemachinename"] }{\f1\fs20 looking for files whose status is "not yet copied". Each of these files is checked against the }{
\i\f1\fs20 PrivateData.hPublishedFiles}{\f1\fs20 hash. If the file is al
ready in this hash, then its status is changed to "duplicate", otherwise it is added to the hash. (Publisher information is recorded for each file so that in the case of duplicates we can report this information).
\par
\par Upon receiving the "handlebuildwaiting" signal harness::HandleBuildWaiting() checks the status of all slave machines. When all the slaves are at \'93waitcopytopostbuild\'94, the \'93net yet copied\'94 list of files is sent to each slaves \'93
copyfilestopostbuild\'94 command to actually copy the files.
\par
\par When slave receives the "copyfilestopostbuild" message, slave::CompletePublishFilesCopyFilesToPostBuild() copies the \'93not yet copied\'94 files from its \'93Public\'94
folder to the postbuild machine. After all files are copied the status of this machine is changed to \'93waitnext\'94.
\par
\par When all slaves are at "waitnext" then harness::HandleWaitNext() first updates the status of all published files. Any files marked "copy to slave" are changed to "complete" and files marked "copied to master" are changed to "copy to slave". Then it s
ends the "copyfilestoslaves" and "nextpass" messages. (These messages are processed serially by each slaveproxy).
\par
\par In response to the "copyfilestoslaves" message, slaveproxy:: CopyFilesToSlaves() checks the status of each file in the }{\i\f1\fs20 PrivateData.hPublishedFiles}{\f1\fs20
hash. It makes a list of the files marked "copy to slave". This list is then passed to the slaves \'93copyfilesfrompostbuildtoslave\'94 command.
\par }}