From 1e55dfb8a11faedb028f39d7529374a3714f4e9a Mon Sep 17 00:00:00 2001 From: fukachan Date: Tue, 29 Jul 2003 12:13:54 +0000 Subject: translated --- fml/doc/en/tutorial/command/internal.sgml | 100 ++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 fml/doc/en/tutorial/command/internal.sgml (limited to 'fml/doc/en/tutorial/command') diff --git a/fml/doc/en/tutorial/command/internal.sgml b/fml/doc/en/tutorial/command/internal.sgml new file mode 100644 index 00000000..d671dcf0 --- /dev/null +++ b/fml/doc/en/tutorial/command/internal.sgml @@ -0,0 +1,100 @@ + + + + + How differ coding style among &fml4; and &fml8; + + + +(... not yet translated ...) + + + +Consider help command which send back help message to the sender, an +example of command. + + + +In the case of &fmldevel;, the main code of help command locates at +FML::Command::User::help class. This class is called by +FML::Process::Command via AUTOLOAD of FML::Command. + + + + +All commands are implemented as either of FML::Command::User +FML::Command::Admin classes. CUI (makefml, fml) and GUI (CGI) uses +FML::Command::Admin class. Command mail users both classes according +to the context. + + + + +The real content of help command is process() method in +FML::Command::User::help class. + +sub process +{ + my ($self, $curproc, $optargs) = @_; + my $config = $curproc->{ config }; + my $charset = $config->{ reply_message_charset }; + my $help_file = $config->{ help_file }; + + # template substitution: kanji code, $varname expansion et. al. + my $params = { + src => $help_file, + charset_out => $charset, + }; + my $help_template = $curproc->prepare_file_to_return( $params ); + + if (-f $help_template) { + $curproc->reply_message( { + type => "text/plain; charset=$charset", + path => $help_template, + filename => "help", + disposition => "help", + }); + } + else { + croak("no help file ($help_template)\n"); + } +} + +where $curproc is an object, which type is hash reference. +It corresponds to %Envelope of &fml4;. +It contains several references to objects for this process. +$config is an object, but global in $fml4;. + + + +prepare_file_to_return() converts the message language and expands the +arguments in the message templtes. + + + +$curproc->reply_message() inserts the specified mesage string into the +queue. + + + +The error/log messages queued in are aggergated to one message at the +last of the current process. It is driven by Mail::Delivery class to +send it. If needed, the aggregator handles text strings and multipart +properly. + + + +This mechanism is same as Notify() of &fml4; but the last aggregator +is different. + + + +FYI: commands such as get for the file manipulation uses the same +message queuing mechanism. This is different from &fml4;'s Notify() +fundamentally. + + + -- cgit v1.2.1