Initial import of the CDE 2.1.30 sources from the Open Group.

This commit is contained in:
Peter Howkins
2012-03-10 18:21:40 +00:00
commit 83b6996daa
18978 changed files with 3945623 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
<!-- $XConsortium: BEntity.sgm /main/1 1996/12/17 06:36:42 cde-hit $ -->
<!ENTITY TTUG.Intro.fig.1 SYSTEM "./ttGuide/graphics/ttserv.cgm" NDATA CGM-BINARY>

View File

@@ -0,0 +1,3 @@
/* $XConsortium: Title.tmpl /main/2 1996/06/19 16:05:00 drk $ */
/* TOC title, only what's between quotes should be modified. */
title = "共通デスクトップ環境 ToolTalk メッセージの概要"

View File

@@ -0,0 +1,56 @@
<!-- $XConsortium: adbook.sgm /main/1 1996/12/17 06:37:04 cde-hit $ -->
<!DOCTYPE DocBook PUBLIC "-//HaL and O'Reilly//DTD DocBook V2.2.1//EN" [
<!ENTITY TTUG.Intro.fig.1 SYSTEM "./graphics/TTUG.Intro.iFrame.1.eps" NDATA eps>
<!ENTITY GSCr SYSTEM "./credits.sgm">
<!ENTITY Pref SYSTEM "./preface.sgm">
<!ENTITY Intro SYSTEM "./ch01.sgm">
<!ENTITY HTU SYSTEM "./ch02.sgm">
<!ENTITY ttsnp SYSTEM "./ch03.sgm">
<!ENTITY tttrc SYSTEM "./ch04.sgm">
<!ENTITY MsgTk SYSTEM "./appa.sgm">
<!ENTITY BrCast SYSTEM "./appb.sgm">
<!ENTITY ttmt SYSTEM "./appc.sgm">
<!ENTITY Examp SYSTEM "./appd.sgm">
<!ENTITY % Solaris "INCLUDE">
<!ENTITY % CDE.C.XO "IGNORE">
<!ENTITY % CDE.C.CDE "INCLUDE">
<!ENTITY % CDE.C.HP "IGNORE">
<!ENTITY % CDE.C.SUN "IGNORE">
]>
<!-- -->
<DocBook>
<Book>
<Title>共通デスクトップ環境 ToolTaklk メッセージの概要</Title>
&GSCr;
&Pref;
&Intro;
&HTU;
&ttsnp;
&tttrc;
&MsgTk;
&BrCast;
<Appendix Id="TTUG.ttmt.div.1">
&ttmt;
</appendix>
&Examp;
</Book>
</DocBook>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,306 @@
<!-- $XConsortium: appb.sgm /main/6 1996/08/25 15:16:07 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Appendix Id="TTUG.BrCast.div.1">
<Title Id="TTUG.BrCast.mkr.1">broadcastデモンストレーション・プログラム
</Title>
<indexterm><primary>broadcastデモ・プログラム</primary></indexterm>
<indexterm><primary>プログラム例</primary></indexterm>
<Para>この付録には、ToolTalkデモ・プログラム、<literal>broadcast</literal>
のためのソース・コードがあります。このソース・コードは、ファイル
<filename>/usr/dt/examples/tt/broadcast.c</filename>の中にもあります。デモ・プログ
ラムの目的は、一部のToolTalk APIの使用方法を示すことです。このプログラムの主な機能
を以下に示します。
</para>
<itemizedlist>
<listitem>
<para>パターンの作成と登録
</para>
</listitem>
<listitem>
<para>通知メッセージの作成と送信(自分自身への)
</para>
</listitem>
<listitem>
<para>メッセージの受信
</para>
</listitem>
</itemizedlist>
<Sect1 Id="TTUG.BrCast.div.2">
<title>broadcast.c プログラム一覧</title>
<programlisting>
/*
* (c) Copyright 1995 Digital Equipment Corporation.
* (c) Copyright 1993, 1994, 1995 Hewlett-Packard Company
* (c) Copyright 1993, 1994, 1995 International Business Machines Corp.
* (c) Copyright 1993, 1994, 1995 Sun Microsystems, Inc.
* (c) Copyright 1993, 1994, 1995 Novell, Inc.
* (c) Copyright 1995 FUJITSU LIMITED.
* (c) Copyright 1995 Hitachi.
*
* $XConsortium: appb.sgm /main/6 1996/08/25 15:16:07 rws $
*
* broadcast - dynamic pattern and procedural notification example
*
*/
#include &lt;stdio.h&gt;
#include &lt;sys/param.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;string.h&gt;
#include &lt;Xm/XmAll.h&gt;
#include &lt;Tt/tt_c.h&gt;
Widget toplevel, base_frame, controls, slider, gauge, button;
char *my_procid;
void broadcast_value();
void receive_tt_message();
void create_ui_components();
void
main(argc, argv)
int argc;
char **argv;
{
int ttfd;
Tt_pattern pat;
XtAppContext app;
/*
* Initialize Motif and create ui components
*/
toplevel = XtVaAppInitialize(&amp;app, "ttsample1", NULL, 0,
&amp;argc, argv, NULL, NULL);
XtVaSetValues(toplevel, XmNtitle, "ToolTalk Sample 1", 0);
create_ui_components();
/*
* Initialize ToolTalk, using the initial default session, and
* obtain the file descriptor that will become active whenever
* ToolTalk has a message for this process.
*/
my_procid = tt_open();
ttfd = tt_fd();
/*
* Arrange for Motif to call receive_tt_message when the ToolTalk
* file descriptor becomes active.
*/
XtAppAddInput(app, ttfd, (XtPointer) XtInputReadMask,
receive_tt_message, 0);
/*
* Create and register a pattern so ToolTalk knows we are interested
* in "ttsample1_value" messages within the session we join.
*/
pat = tt_pattern_create();
tt_pattern_category_set(pat, TT_OBSERVE);
tt_pattern_scope_add(pat, TT_SESSION);
tt_pattern_op_add(pat, "ttsample1_value");
tt_pattern_register(pat);
/*
* Join the default session
*/
tt_session_join(tt_default_session());
/*
* Turn control over to Motif.
*/
XtRealizeWidget(toplevel);
XtAppMainLoop(app);
/*
* Before leaving, allow ToolTalk to clean up.
*/
tt_close();
exit(0);
}
/*
* When the button is pressed, broadcast the new slider value.
*/
void
broadcast_value(widget, client_data, call_data)
Widget widget;
XtPointer client_data, call_data;
{
int slider_value;
Tt_message msg_out;
/*
* Create and send a ToolTalk notice message
* ttsample1_value(in int &lt;new value)
*/
XtVaGetValues(slider, XmNvalue, &amp;slider_value, 0);
slider_value++;
XtVaSetValues(slider, XmNvalue, slider_value, 0);
msg_out = tt_pnotice_create(TT_SESSION, "ttsample1_value");
tt_message_arg_add(msg_out, TT_IN, "integer", NULL);
tt_message_arg_ival_set(msg_out, 0, slider_value);
tt_message_send(msg_out);
/*
* Since this message is a notice, we don't expect a reply, so
* there's no reason to keep a handle for the message.
*/
tt_message_destroy(msg_out);
}
/*
* When a ToolTalk message is available, receive it; if it's a
* ttsample1_value message, update the gauge with the new value.
*/
void
receive_tt_message(client_data, fid, id)
XtPointer client_data;
int *fid;
XtInputId *id;
{
Tt_message msg_in;
int mark;
int val_in;
char *op;
Tt_status err;
msg_in = tt_message_receive();
/*
* It's possible that the file descriptor would become active
* even though ToolTalk doesn't really have a message for us.
* The returned message handle is NULL in this case.
*/
if (msg_in == NULL) return;
/*
* Get a storage mark so we can easily free all the data
* ToolTalk returns to us.
*/
mark = tt_mark();
op = tt_message_op(msg_in);
err = tt_ptr_error(op);
if (err &gt; TT_WRN_LAST) {
printf( "tt_message_op(): %s\n", tt_status_message(err));
} else if (op != 0) {
if (0==strcmp("ttsample1_value", tt_message_op(msg_in))) {
tt_message_arg_ival(msg_in, 0, &amp;val_in);
XtVaSetValues(gauge, XmNvalue, val_in, 0);
}
}
tt_message_destroy(msg_in);
tt_release(mark);
return;
}
/*
* Straight Motif calls for creating the ui elements. No
* ToolTalk-specific code here.
*/
void
create_ui_components()
{
int decor;
Widget glabel, slabel;
XmString label;
base_frame = XtVaCreateManagedWidget("base_frame",
xmMainWindowWidgetClass, toplevel,
XmNwidth, 250,
XmNheight, 175,
0);
XtVaGetValues(base_frame, XmNmwmDecorations, &amp;decor, 0);
decor &amp;= ~MWM_DECOR_RESIZEH;
XtVaSetValues(base_frame, XmNmwmDecorations, &amp;decor, 0);
controls = XtVaCreateManagedWidget("controls",
xmFormWidgetClass, base_frame, NULL, 0, 0);
slabel = XtVaCreateManagedWidget("Send:",
xmLabelWidgetClass, controls,
XmNleftAttachment, XmATTACH_WIDGET,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, controls,
XmNtopOffset, 10,
XmNleftOffset, 5,
0);
slider = XtVaCreateManagedWidget("slider",
xmScaleWidgetClass, controls,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, controls,
XmNleftOffset, 10,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, slabel,
XmNscaleWidth, 225,
XmNscaleHeight, 18,
XmNminimum, 0,
XmNmaximum, 25,
XmNorientation, XmHORIZONTAL,
XmNshowValue, TRUE,
0);
glabel = XtVaCreateManagedWidget("Received:",
xmLabelWidgetClass, controls,
XmNleftAttachment, XmATTACH_WIDGET,
XmNtopAttachment, XmATTACH_WIDGET,
XmNleftOffset, 5,
XmNtopWidget, slider,
0);
gauge = XtVaCreateManagedWidget("gauge",
xmScaleWidgetClass, controls,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, controls,
XmNleftOffset, 10,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, glabel,
XmNorientation, XmHORIZONTAL,
XmNscaleWidth, 225,
XmNscaleHeight, 18,
XmNminimum, 0,
XmNmaximum, 25,
XmNshowValue, TRUE,
0);
label = XmStringCreateSimple("Broadcast");
button = XtVaCreateManagedWidget("button",
xmPushButtonWidgetClass, controls,
XmNtopWidget, gauge,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopOffset, 5,
XmNleftOffset, 75,
XmNleftWidget, controls,
XmNleftAttachment, XmATTACH_WIDGET,
XmNbottomOffset, 5,
XmNlabelString, label,
0);
XmStringFree(label);
XtAddCallback(button, XmNactivateCallback, broadcast_value, 0);
}
</programlisting>
</Sect1>
</Appendix>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 05:02:32-->

View File

@@ -0,0 +1,92 @@
<!-- $XConsortium: appc.sgm /main/6 1996/09/08 19:35:15 rws $ -->
<!-- (c) Copyright 1996 Digital Equipment Corporation. -->
<!-- (c) Copyright 1996 Hewlett-Packard Company. -->
<!-- (c) Copyright 1996 International Business Machines Corp. -->
<!-- (c) Copyright 1996 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1996 Novell, Inc. -->
<!-- (c) Copyright 1996 FUJITSU LIMITED. -->
<!-- (c) Copyright 1996 Hitachi. -->
<Title Id="TTUG.ttmt.mkr.1">スレッド・セイフToolTalkアプリケーションの作成</Title>
<indexterm><primary>スレッド・セイフToolTalkアプリケーション</primary><secondary>作成</secondary></indexterm>
<Para>アプリケーション開発者は、マルチ・スレッド・セイフToolTalkライブラリを使用する
ことによって、ToolTalkのためのマルチ・スレッド・アプリケーションを作成することができ
ます。このとき、アプリケーション・コード中のToolTalkリソースのロックを明示的に管理
する必要はありません。<Filename>Xthreads.h</Filename>スレッドAPIラッパーの拡張版を
使用しているので、マルチ・スレッドlibttを多様なスレッド実装に問題なく移植でき
ます。
</para>
<para>libttリソースの内部を保護するため、プロセス単位のロックを導入し保守します。
ウィンドウ・ツールキットの場合と違い、libttに大量の時間をさくアプリケーションはほ
とんどないので、より精緻なロック技法の付加並列性によって性能が大幅に向上すること
はありません。
</para>
<para>デフォルト<literal>procid</literal>、<function>tt_mark</function>に操作され
る記憶装置のスタック、<function>tt_release</function> APIなどのいくつかのToolTalk
のグローバル値には、ToolTalkのAPI呼び出しを行うスレッドが参照できるように、一貫し
た状態でなければならないものがあります。(これらの値はスレッド固有のデータとなり
ます。この動作を初期化し、新しいデータを操作するためにさらにAPI呼び出しが導入さ
れます。現在のスレッドにスレッド固有の値が設定されると、プロセス単位の値のか
わりにスレッド固有の値を参照するため既存のAPI呼び出しを変更します。スレッド固有の
値が設定されない場合は、プロセス単位の値が使用されます。
</para>
<para>すべてのプラットフォームでマルチ・スレッド機能が使用できるとはかぎりません。
そのため、ライブラリに機能の存在を尋ねるAPIがあります。たとえマルチ・スレッド機能
を使用できないプラットフォームであっても、新規のAPI呼び出しを実装し
<Symbol>TT_ERR_UNIMP</Symbol>をスレッド固有のものに対して返せるようにします。
そうすればアプリケーション開発者は、未解決のシンボルの問題にかかわることなく
実行時のチェックが行えます。
</para>
<para>APIの要約を次に示します。
</para>
<itemizedlist>
<listitem>
<para><function>tt_feature_enabled</function>は、指定された機能が使用できるかどうか
決定します。
<indexterm><primary>スレッド・セイフToolTalkアプリケーション</primary><secondary>tt_feature_enabled</secondary></indexterm>
<indexterm><primary>tt_feature_enabled関数</primary></indexterm>
</para>
</listitem>
<listitem>
<para><function>tt_feature_required</function>は、指定された機能が要求されているこ
とを宣言し、その機能が存在する場合、使用可能にします。
<indexterm><primary>スレッド・セイフToolTalkアプリケーション</primary><secondary>tt_feature_required</secondary></indexterm>
<indexterm><primary>tt_feature_required関数</primary></indexterm>
</para>
</listitem>
<listitem>
<para><function>tt_thread_session_set</function>は、スレッドのためのデフォルト・
セッションを設定します。
<indexterm><primary>スレッド・セイフToolTalkアプリケーション</primary><secondary>tt_thread_session_set</secondary></indexterm>
<indexterm><primary>tt_thread_session_set関数</primary></indexterm>
</para>
</listitem>
<listitem>
<para><function>tt_thread_session</function>は、スレッドのためのデフォルト・
セッションを取り出します。
<indexterm><primary>スレッド・セイフToolTalkアプリケーション</primary><secondary>tt_thread_session</secondary></indexterm>
<indexterm><primary>tt_thread_session関数</primary></indexterm>
</para>
</listitem>
<listitem>
<para><function>tt_thread_procid_set</function>は、スレッドのためのデフォルト・
プロセスIDを設定します。
<indexterm><primary>スレッド・セイフToolTalkアプリケーション</primary><secondary>tt_thread_procid_set</secondary></indexterm>
<indexterm><primary>tt_thread_procid_set関数</primary></indexterm>
</para>
</listitem>
<listitem>
<para><function>tt_procid_session</function>は、指定されたプロセスIDと関連する
セッションを返します。
<indexterm><primary>スレッド・セイフToolTalkアプリケーション</primary><secondary>tt_procid_session</secondary></indexterm>
<indexterm><primary>tt_procid_session関数</primary></indexterm>
</para>
</listitem>
<listitem>
<para><function>Tttt_c</function>は、typedefと列挙型です。
<indexterm><primary>スレッド・セイフToolTalkアプリケーション</primary><secondary>Tttt_c</secondary></indexterm>
<indexterm><primary>Tttt_c typdef/列挙型宣言</primary></indexterm>
<indexterm><primary>Tttt_c typdef/enum declarations</primary></indexterm>
</para>
</listitem>
</itemizedlist>

View File

@@ -0,0 +1,398 @@
<!-- $XConsortium: appd.sgm /main/7 1996/09/08 19:35:23 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Appendix Id="TTUG.Examp.div.0">
<Title>例</Title>
<Sect1 Id="TTUG.Examp.div.1">
<Title>Ttdt_contract_cbの例</Title>
<Para><!--Original XRef content: 'Code&numsp;Example&numsp;D&hyphen;1'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.Examp.mkr.1">は、アプリケーションの
ための
<Filename><IndexTerm>
<Primary>Ttdt_contract_cb</Primary>
</IndexTerm>Ttdt_contract_cb</Filename>コールバックの典型的なアルゴリズムの例です。
このアプリケーションは、Pause要求、Resume要求、Quit要求を処理しますが、ツールキット
には、X11関連の要求しか処理させません。</Para>
<Note>
<Para>この例にあるコールバックは、<Emphasis>contract</Emphasis>パラメータがゼロ
以外の値を持っている場合に処理を行います。したがって、<Filename>ttdt_message_accept</Filename>
に渡される<Filename>Ttdt_contract_cb</Filename>コールバックとして使用することもできます。</Para>
</Note>
<Example Id="TTUG.Examp.tbl.1">
<Title Id="TTUG.Examp.mkr.1">Ttdt_contract_cbの典型的なアルゴリズム</Title>
<ProgramListing>Tt_message
myContractCB(
Tt_message msg,
void *clientdata,
Tt_message contract
)
{
char *opString = tt_message_op( msg );
Tttk_op op = tttk_string_op( opString );
tt_free( opString );
int silent = 0;
int force = 0;
Boolean cancel = False;
Boolean sensitive = True;
char *status, command;
switch (op) {
case TTDT_QUIT:
tt_message_arg_ival( msg, 0, &amp;silent );
tt_message_arg_ival( msg, 1, &amp;force );
if (contract == 0) {
/* Quit entire application */
cancel = ! myQuitWholeApp( silent, force );
} else {
/* Quit just the specified request being worked on */
cancel = ! myCancelThisRequest(contract, silent, force);
}
if (cancel) {
/* User canceled Quit; fail the Quit request */
tttk_message_fail( msg, TT_DESKTOP_ECANCELED, 0, 1 );
} else {
tt_message_reply( msg );
tttk_message_destroy( msg );
}
return 0;
case TTDT_PAUSE:
sensitive = False;
case TTDT_RESUME:
if (contract == 0) {
int already = 1;
if (XtIsSensitive( myTopShell) != sensitive) {
already = 0;
XtSetSensitive( myTopShell, sensitive );
}
if (already) {
tt_message_status_set(msg,TT_DESKTOP_EALREADY);
}
} else {
if (XtIsSensitive( thisShell) == sensitive) {
tt_message_status_set(msg,TT_DESKTOP_EALREADY);
} else {
XtSetSensitive( thisShell, sensitive );
}
}
tt_message_reply( msg );
tttk_message_destroy( msg );
return 0;
case TTDT_GET_STATUS:
if (contract == 0) {
status = &ldquo;Message about status of entire app&ldquo;;
} else {
status = &ldquo;Message about status of this request&ldquo;;
}
tt_message_arg_val_set( msg, 0, status );
tt_message_reply( msg );
tttk_message_destroy( msg );
return 0;
case TTDT_DO_COMMAND:
if (! haveExtensionLanguage) {
tttk_message_fail( msg, TT_DESKTOP_ENOTSUP, 0, 1 );
return 0;
}
command = tt_message_arg_val( msg, 0 );
result = myEval( command );
tt_free( command );
tt_message_status_set( msg, result );
if (tt_is_err( result )) {
tttk_message_fail( msg, result, 0, 1 );
} else {
tt_message_reply( msg );
tttk_message_destroy( msg );
}
return 0;
}
/* Unrecognized message; do not consume it */
return msg;
}
</ProgramListing>
</Example>
</Sect1>
<Sect1 Id="TTUG.Examp.div.2">
<Title>
<IndexTerm>
<Primary>Ttdt_file_cb</Primary>
</IndexTerm>Ttdt_file_cbの例</Title>
<Para><!--Original XRef content: 'Code&numsp;Example&numsp;D&hyphen;2'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.Examp.mkr.2">は、このコールバックの
典型的なアルゴリズムの例です。</Para>
<Example Id="TTUG.Examp.tbl.2">
<Title Id="TTUG.Examp.mkr.2">Ttdt_file_cbの典型的なアルゴリズム</Title>
<ProgramListing>Tt_message
myFileCB(
Tt_message msg,
Tttk_op op,
char *pathname,
int trust,
int isMe
)
{
tt_free( pathname );
Tt_status status = TT_OK;
switch (op) {
case TTDT_MODIFIED:
if ((_modifiedByMe) &amp;&amp; (! isMe)) {
// Hmm, the other editor either does not know or
// does not care that we are already modifying the
// file, so the last saver will win.
} else {
// Interrogate user if she ever modifies the buffer
_modifiedByOther = 1;
XtAddCallback( myTextWidget, XmNmodifyVerifyCallback,
myTextModifyCB, 0 );
}
break;
case TTDT_GET_MODIFIED:
tt_message_arg_ival_set( msg, 1, _modifiedByMe );
tt_message_reply( msg );
break;
case TTDT_SAVE:
status = mySave( trust );
if (status == TT_OK) {
tt_message_reply( msg );
} else {
tttk_message_fail( msg, status, 0, 0 );
}
break;
case TTDT_REVERT:
status = myRevert( trust );
if (status == TT_OK) {
tt_message_reply( msg );
} else {
tttk_message_fail( msg, status, 0, 0 );
}
break;
case TTDT_REVERTED:
if (! isMe) {
_modifiedByOther = 0;
}
break;
case TTDT_SAVED:
if (! isMe) {
_modifiedByOther = 0;
int choice = myUserChoice( myContext, myBaseFrame,
&ldquo;Another tool has saved &ldquo;
&ldquo;this file.&ldquo;, 2, &ldquo;Ignore&ldquo;,
&ldquo;Revert&ldquo; );
switch (choice) {
case 1:
myRevert( 1 );
break;
}
}
break;
case TTDT_MOVED:
case TTDT_DELETED:
// Do something appropriate
break;
}
tttk_message_destroy( msg );
return 0;
}
</ProgramListing>
</Example>
</Sect1>
<Sect1 Id="TTUG.Examp.div.3">
<Title>
<IndexTerm>
<Primary>Ttmedia_load_msg_cb</Primary>
</IndexTerm>Ttmedia_load_msg_cbの例</Title>
<Para><!--Original XRef content: 'Code&numsp;Example&numsp;D&hyphen;3'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.Examp.mkr.3">は、このコールバックの
典型的なアルゴリズムの例です。</Para>
<Example Id="TTUG.Examp.tbl.3">
<Title Id="TTUG.Examp.mkr.3">Ttmedia_load_msg_cbの典型的なアルゴリズム</Title>
<ProgramListing>Tt_message
myLoadMsgCB(
Tt_message msg,
void *clientData,
Tttk_op op,
unsigned char *contents,
int len,
char *file
)
{
if (len > 0) {
// Replace data with len bytes in contents
} else if (file != 0) {
// Replace data with data read from file
}
if (op == TTME_DEPOSIT) {
tt_message_reply( msg );
}
tttk_message_destroy( msg );
return 0;
}
</ProgramListing>
</Example>
</Sect1>
<Sect1 Id="TTUG.Examp.div.4">
<Title>
<IndexTerm>
<Primary>Ttmedia_load_pat_cb</Primary>
</IndexTerm>Ttmedia_load_pat_cbの例</Title>
<Para><!--Original XRef content: 'Code&numsp;Example&numsp;D&hyphen;4'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.Examp.mkr.4">は、このコールバックの
典型的なアルゴリズムの例です。</Para>
<Example Id="TTUG.Examp.tbl.4">
<Title Id="TTUG.Examp.mkr.4">Ttmedia_load_pat_cbの典型的なアルゴリズム</Title>
<ProgramListing>Tt_message
myAcmeSheetLoadCB(
Tt_message msg,
void *client_data,
Tttk_op op,
Tt_status diagnosis,
unsigned char *contents,
int len,
char *file,
char *docname
)
{
Tt_status status = TT_OK;
if (diagnosis != TT_OK) {
// toolkit detected an error
if (tt_message_status( msg) == TT_WRN_START_MESSAGE) {
//
// Error is in start message! We now have no
// reason to live, so tell main() to exit().
//
myAbortCode = 2;
}
// let toolkit handle the error
return msg;
}
if ((op == TTME_COMPOSE) &amp;&amp; (file == 0)) {
// open empty new buffer
} else if (len > 0) {
// load contents into new buffer
} else if (file != 0) {
if (ttdt_Get_Modified( msg, file, TT_BOTH, myCntxt, 5000 )) {
switch (myUserChoice( &ldquo;Save, Revert, Ignore?&ldquo; )) {
case 0:
ttdt_Save( msg, file, TT_BOTH, myCntxt, 5000 );
break;
case 1:
ttdt_Revert( msg, file, TT_BOTH, myCntxt, 5000);
break;
}
}
// load file into new buffer
} else {
tttk_message_fail( msg, TT_DESKTOP_ENODATA, 0, 1 );
tt_free( contents ); tt_free( file ); tt_free( docname );
return 0;
}
int w, h, x, y = INT_MAX;
ttdt_sender_imprint_on( 0, msg, 0, &amp;w, &amp;h, &amp;x, &amp;y, myCntxt, 5000 );
positionMyWindowRelativeTo( w, h, x, y );
if (maxBuffersAreNowOpen) {
// Un-volunteer to handle future requests until less busy
tt_ptype_undeclare( &ldquo;Acme_Calc&ldquo; );
}
if (tt_message_status( msg) == TT_WRN_START_MESSAGE) {
//
// Join session before accepting start message,
// to prevent unnecessary starts of our ptype
//
ttdt_session_join( 0, myContractCB, myShell, 0, 1 );
}
ttdt_message_accept( msg, myContractCB, myShell, 0, 1, 1 );
tt_free( contents ); tt_free( file ); tt_free( docname );
return 0;
}
</ProgramListing>
</Example>
</Sect1>
<Sect1 Id="TTUG.Examp.div.5">
<Title>
<IndexTerm>
<Primary>Ttmedia_ptype_declare</Primary>
</IndexTerm> Ttmedia_ptype_declare関数のptypeシグニチャの例</Title>
<Para><!--Original XRef content: 'Code&numsp;Example&numsp;D&hyphen;5'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.Examp.mkr.5">は、メディアptypeのシグニチャ・
レイアウトの例です。</Para>
<Example Id="TTUG.Examp.tbl.5">
<Title Id="TTUG.Examp.mkr.5">メディアptypeのシグニチャ・レイアウトの例</Title>
<ProgramListing>ptype Acme_Calc {
start &ldquo;acalc&ldquo;;
handle:
/*
* Display Acme_Sheet
* Include in tool's ptype if tool can display a document.
*/
session Display( in Acme_Sheet contents) => start opnum = 1;
session Display( in Acme_Sheet contents,
in messageID counterfoil) => start opnum = 2;
session Display( in Acme_Sheet contents,
in title docName) => start opnum = 3;
session Display( in Acme_Sheet contents,
in messageID counterfoil,
in title docName) => start opnum = 4;
/*
* Edit Acme_Sheet
* Include in tool's ptype if tool can edit a document.
*/
session Edit( inout Acme_Sheet contents) => start opnum = 101;
session Edit( inout Acme_Sheet contents,
in messageID counterfoil) => start opnum = 102;
session Edit( inout Acme_Sheet contents,
in title docName) => start opnum = 103;
session Edit( inout Acme_Sheet contents,
in messageID counterfoil,
in title docName) => start opnum = 104;
/*
* Compose Acme_Sheet
* Include in tool's ptype if tool can compose a document from scratch.
*/
session Edit( out Acme_Sheet contents) => start opnum = 201;
session Edit( out Acme_Sheet contents,
in messageID counterfoil) => start opnum = 202;
session Edit( out Acme_Sheet contents,
in title docName) => start opnum = 203;
session Edit( out Acme_Sheet contents,
in messageID counterfoil,
in title docName) => start opnum = 204;
/*
* Mail Acme_Sheet
* Include in tool's ptype if tool can mail a document.
*/
session Mail( in Acme_Sheet contents) => start opnum = 301;
session Mail( inout Acme_Sheet contents) => start opnum = 311;
session Mail( inout Acme_Sheet contents,
in title docName) => start opnum = 313;
session Mail( out Acme_Sheet contents) => start opnum = 321;
session Mail( out Acme_Sheet contents,
in messageID counterfoil) => start opnum = 323;
};
</ProgramListing>
</Example>
</Sect1>
<Sect1 Id="TTUG.Examp.div.6">
<Title>Xt入力処理関数の例</Title>
<Para><!--Original XRef content: 'Code&numsp;Example&numsp;D&hyphen;6'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.Examp.mkr.6">は、Xt入力処理関数
の例です。</Para>
<Example Id="TTUG.Examp.tbl.6">
<Title Id="TTUG.Examp.mkr.6">Xt入力処理関数の例</Title>
<ProgramListing>int myTtFd;
char *myProcID;
myProcID = ttdt_open( &amp;myTtFd, &ldquo;WhizzyCalc&ldquo;, &ldquo;Acme&ldquo;, &ldquo;1.0&ldquo;, 1 );
/* ... */
/* Process the message that started us, if any */
tttk_Xt_input_handler( myProcID, 0, 0 );
/* ... */
XtAppAddInput( myContext, myTtFd, (XtPointer)XtInputReadMask,
<IndexTerm><Primary>tttk_Xt_input_handler</Primary></IndexTerm>
tttk_Xt_input_handler, myProcID );
</ProgramListing>
</Example>
</Sect1>
</Appendix>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 05:02:32-->

View File

@@ -0,0 +1,75 @@
<!-- $XConsortium: book.sgm /main/1 1996/12/17 06:37:55 cde-hit $ -->
<!DOCTYPE Book PUBLIC "-//HaL and O'Reilly//DTD DocBook//EN" [
<!ENTITY % ISOpublishing PUBLIC "ISO 8879-1986//ENTITIES Publishing//EN">
%ISOpublishing;
<!ENTITY % ISOnumeric PUBLIC "ISO 8879-1986//ENTITIES Numeric and Special Graphic//EN">
%ISOnumeric;
<!ENTITY % ISOdiacritical PUBLIC "ISO 8879-1986//ENTITIES Diacritical Marks//EN">
%ISOdiacritical;
<!ENTITY % ISOgeneraltech PUBLIC "ISO 8879-1986//ENTITIES General Technical//EN">
%ISOgeneraltech;
<!ENTITY % ISOalatin1 PUBLIC "ISO 8879-1986//ENTITIES Added Latin 1//EN">
%ISOalatin1;
<!ENTITY % ISOalatin2 PUBLIC "ISO 8879-1986//ENTITIES Added Latin 2//EN">
%ISOalatin2;
<!ENTITY % ISOgreek PUBLIC "ISO 8879-1986//ENTITIES Greek Symbols//EN">
%ISOgreek;
<!ENTITY % ISOboxandline PUBLIC "ISO 8879-1986//ENTITIES Box and Line Drawing//EN">
%ISOboxandline;
<!ENTITY % BEntities SYSTEM "./ttGuide/BEntity.sgm">
%BEntities;
<!ENTITY GSCr SYSTEM "./ttGuide/credits.sgm">
<!ENTITY Pref SYSTEM "./ttGuide/preface.sgm">
<!ENTITY Intro SYSTEM "./ttGuide/ch01.sgm">
<!ENTITY HTU SYSTEM "./ttGuide/ch02.sgm">
<!ENTITY ttsnp SYSTEM "./ttGuide/ch03.sgm">
<!ENTITY tttrc SYSTEM "./ttGuide/ch04.sgm">
<!ENTITY MsgTk SYSTEM "./ttGuide/appa.sgm">
<!ENTITY BrCast SYSTEM "./ttGuide/appb.sgm">
<!ENTITY ttmt SYSTEM "./ttGuide/appc.sgm">
<!ENTITY Examp SYSTEM "./ttGuide/appd.sgm">
<!ENTITY % Solaris "INCLUDE">
<!ENTITY % CDE.C.XO "IGNORE">
<!ENTITY % CDE.C.CDE "INCLUDE">
<!ENTITY % CDE.C.HP "IGNORE">
<!ENTITY % CDE.C.SUN "IGNORE">
]>
<!-- ____________________________________________________________________________ -->
<Book>
<Title>共通デスクトップ環境 ToolTalk メッセージ概要</Title>
&GSCr;
&Pref;
&Intro;
&HTU;
&ttsnp;
&tttrc;
&MsgTk;
&BrCast;
<Appendix Id="TTUG.ttmt.div.1">
&ttmt;
</appendix>
&Examp;
</Book>

View File

@@ -0,0 +1,682 @@
<!-- $XConsortium: ch01.sgm /main/8 1996/09/08 19:35:32 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Chapter Id="TTUG.Intro.div.1">
<Title Id="TTUG.Intro.mkr.1">ToolTalkサービスの紹介</Title>
<Para>独自に開発されたアプリケーションが同時に動作することを要求するコンピュータ・
ユーザが増えてきているため、相互運用はソフトウェア開発者にとって重要なテーマに
なってきています。お互いの機能を共同で使用することにより、相互運用アプリケーション
は、単一のアプリケーションが提供するには難しい機能をユーザに提供します。ToolTalk
サービスは、個人やワーク・グループで利用される相互運用アプリケーションの開発を簡単
に行えるように設計されています。</Para>
<Para>
<IndexTerm>
<Primary>ToolTalkサービス</Primary>
</IndexTerm>ToolTalkサービスを使用すると、独立したアプリケーションが互いに直接認識
していなくても通信することができます。アプリケーションはToolTalkメッセージを作成
し、送信することで相互に通信します。ToolTalkサービスは、これらのメッセージを受信
し、受信先を決定してから、そのメッセージを適切なアプリケーションに配信します。
この通信の様子を
<!--Original XRef content: 'Figure&numsp;1&hyphen;1'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.Intro.mkr.2">に示します。</Para>
<Figure>
<Title Id="TTUG.Intro.mkr.2">ToolTalkサービスを使ったアプリケーション</Title>
<Graphic Entityref="TTUG.Intro.fig.1" Id="TTUG.Intro.grph.1"></Graphic>
</Figure>
<Sect1 Id="TTUG.Intro.div.2">
<Title>ToolTalkサービスが解決できる業務上の問題</Title>
<Para>この節では、
<IndexTerm>
<Primary>ToolTalkサービスが解決する相互運用の問題</Primary>
</IndexTerm>ToolTalkサービスが解決するようになっている相互運用に関する問題について
説明します。ToolTalkサービスは、アプリケーションが次のようなことを必要とする場合
に使用するのに適切な技術です。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>ツール互換性</Para>
</ListItem>
<ListItem>
<Para>制御統合</Para>
</ListItem>
<ListItem>
<Para>ごく一般的なサーバたとえばXサーバでは所有しておらず、予想可能なリスナの
集合がないネットワーク透過イベント</Para>
</ListItem>
<ListItem>
<Para>自動ツール起動機能</Para>
</ListItem>
<ListItem>
<Para>広範囲で使用可能な分散オブジェクトシステム</Para>
</ListItem>
<ListItem>
<Para>固定表示オブジェクト</Para>
</ListItem>
</ItemizedList>
<Para>もちろん、相互運用の問題に対してToolTalkサービスを使用するのは適切でない場合
もあります。しかし、アプリケーションが両方の問題つまり、ToolTalkサービスが解決
するようになっている相互運用に関する問題とToolTalkが解決するのではない問題の解決
を必要としている場合は、ToolTalkサービスを他の技術と組み合わせて使用することができ
ます。</Para>
<Sect2 Id="TTUG.Intro.div.3">
<Title>ツール互換性</Title>
<Para>
<IndexTerm>
<Primary>プラグ・アンド・プレイ</Primary>
</IndexTerm>プラグ・アンド・プレイ機能を必要とする場合は、ToolTalkサービスを使用してください。
<Emphasis>プラグ・アンド・プレイ</Emphasis>とは、同じプロトコルを使用しているかぎ
り、どんなツールでも交換が可能であるということを意味します。つまり、ToolTalkによ
って与えられるプロトコルに従うツールであれば、それをコンピューティング環境に配置
(プラグ)し、プロトコルが示す関数を実行(プレイ)することができます。ツールを変更
することなく、またお互いの特定の組み込み知識を持っていなくてもツールを併用すること
ができます。</Para>
</Sect2>
<Sect2 Id="TTUG.Intro.div.4">
<Title>制御統合</Title>
<Para>アプリケーションが
<IndexTerm>
<Primary>制御統合</Primary>
</IndexTerm>制御統合を要求する場合、ToolTalkサービスを使用してください。
<Emphasis>制御統合</Emphasis>という語は、ユーザの直接介入がなくても共通の目的に
向かって一緒に動作するツールのグループを示します。ToolTalkサービスを使うと、簡単
で柔軟性のある機能により特定のツール・インスタンスか不特定のサービス・プロバイダ
に対して任意の要求を発行する制御統合が可能になります。</Para>
</Sect2>
<Sect2 Id="TTUG.Intro.div.5">
<Title>ネットワーク透過イベント</Title>
<Para>アプリケーションが
<IndexTerm>
<Primary>ネットワーク透過イベント</Primary>
</IndexTerm>ネットワーク透過イベントの生成や受信を必要とする場合は、ToolTalk
サービスを使用してください。従来のイベント機構(シグナルやウィンドウ・システム・
イベントなど)を使用するには、特別な環境を必要とします。たとえば、プロセスや
ウィンドウIDを認識していることなどです。ToolTalkサービスにより、イベントが参照する
ファイルやイベントを適用できるネットワーク上のプロセスのグループに関して、イベント
が自然に記述されます。ToolTalkサービスは、ネットワーク上のいたる所にある配信対象
プロセスにイベント(<Emphasis>通知</Emphasis>と呼ぶ)を配信します。ToolTalkの通知は
柔軟性があり、システムの拡張を簡単にします。</Para>
</Sect2>
<Sect2 Id="TTUG.Intro.div.6">
<Title>自動ツール起動機能</Title>
<Para>アプリケーションがネットワーク透過な
<IndexTerm>
<Primary>自動ツール起動機能</Primary>
</IndexTerm>自動ツール起動機能を必要とする場合は、ToolTalkサービスを使用してくだ
さい。ToolTalkサービスは、メッセージがネットワークから送信されると、ツールを起動
させるメッセージを記述させます。ToolTalk自動起動機能の使用は簡単で、従来の
<Filename MoreInfo="RefEntry">inetd</Filename>(1) 機能ほどホストに固有のものでは
ありません。</Para>
</Sect2>
<Sect2 Id="TTUG.Intro.div.7">
<Title>分散オブジェクト・システム</Title>
<Para>さまざまなプラットフォームにまたがって使用可能である
<IndexTerm>
<Primary>分散オブジェクト・システム</Primary>
</IndexTerm>分散オブジェクト・システムでアプリケーションを作成する必要がある場合
は、ToolTalkを使用してください。
ToolTalkのオブジェクト・システムは、一般的なUNIXプラットフォームすべてにある
アプリケーションで使用できます。次のようなアプリケーションでも使用できます。
</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>シングル・スレッドまたはマルチ・スレッドである</Para>
</ListItem>
<ListItem>
<Para>コマンド行またはグラフィカル・ユーザ・インタフェースを持っている</Para>
</ListItem>
<ListItem>
<Para>独自のイベント・ループ、またはウィンドウ・システムのツールキットの
イベント・ループを使用している。</Para>
</ListItem>
</ItemizedList>
<Note>
<Para>ToolTalkのオブジェクト指向メッセージ・インタフェース用にコーディングされたプログラムは、
<IndexTerm>
<Primary>OMG準拠システム</Primary>
</IndexTerm>ソースコードを変更しなければCORBA準拠システムに
<Symbol Role="Variable">移植できません</Symbol>。</Para>
</Note>
</Sect2>
<Sect2 Id="TTUG.Intro.div.8">
<Title>固定表示オブジェクト</Title>
<Para>アプリケーションがUNIXファイル・システムで
<IndexTerm>
<Primary>固定表示オブジェクト</Primary>
</IndexTerm>オブジェクトを目立たないように配置する必要がある場合は、
ToolTalkサービスを使用してください。</Para>
</Sect2>
<Sect2 Id="TTUG.Intro.div.9">
<Title>ToolTalkサービスが業務上の問題を解決する方法を示すシナリオ</Title>
<Para>この節にある
<IndexTerm>
<Primary>使用中のToolTalkサービスを示すシナリオ</Primary>
</IndexTerm>シナリオは、ToolTalkサービスを利用することによって、業務上の問題をどの
ように解決できるかを示しています。これらのシナリオで使用するメッセージ・プロトコル
は、架空のものです。</Para>
<Sect3 Id="TTUG.Intro.div.10">
<Title>ToolTalkデスクトップ・サービス・メッセージ・セットの使用</Title>
<Para>
<IndexTerm>
<Primary>ToolTalkメッセージ・セット</Primary>
<Secondary>デスクトップ</Secondary>
</IndexTerm>ToolTalk
<IndexTerm>
<Primary>デスクトップ・サービス・セット</Primary>
</IndexTerm>デスクトップ・サービス・セットを使用することにより、アプリケーション
は、ユーザの介入がなくても他のアプリケーションを統合およびコントロールすることが
できます。この節では、デスクトップ・サービス・メッセージ・セットの実行方法を示す
2つのシナリオ(下記の
<!--Original XRef content: '&xd2;The Smart Desktop'-->
<XRef Role="SectionTitle" Linkend="TTUG.Intro.mkr.3">と
<!--Original XRef content: '&xd2;Integrated Toolsets&xd3; on page&numsp;6'-->
<XRef Role="SecTitleAndPageNum" Linkend="TTUG.Intro.mkr.4">)について
説明します。</Para>
<Sect4 Id="TTUG.Intro.div.11">
<Title Id="TTUG.Intro.mkr.3">スマート・デスクトップ</Title>
<Note>
<Para>この節のシナリオは、ユーザの要求を翻訳するアプリケーション・レベルのプログラ
ムで、ToolTalkサービスを使用する方法を示すためのものです。共通デスクトップ環境
プロダクトによりToolTalkサービスにユーザの要求を翻訳させる方法を
<Symbol Role="Variable">示すためのものではありません</Symbol>。</Para>
</Note>
<Para>グラフィカル・ユーザ・インタフェース(GUI)のフロント・エンドに対するユーザの
共通した要求は、データ・ファイルがアプリケーションに気づく
(または 「知っている」)ようにできることにあります。これを行うには、
アプリケーション・レベルのプログラムがユーザの要求を翻訳する必要があります。
このアプリケーション・レベルのプログラム(<Emphasis>スマート・デスクトップ</Emphasis>という)には、
アップル社の Macintosh&reg; ファインダ、 マイクロソフト社の Windows&trade;
ファイル・マネージャ、共通デスクトップ環境のファイル・マネージャなどがありま
す。スマート・デスクトップの主な共通要件は、次のとおりです。</Para>
<OrderedList Remap="List1">
<ListItem>
<Para>ファイルを取得する</Para>
</ListItem>
<ListItem>
<Para>アプリケーションを決定する</Para>
</ListItem>
<ListItem>
<Para>アプリケーションを起動する</Para>
</ListItem>
</OrderedList>
<Para>ToolTalkサービスは、ツールのクラスが特定のデータ型を編集できるようにすること
によって柔軟性が増します。次のシナリオでは、デスクトップ・サービス・メッセージ・
セットをエンドユーザに対して透過的なスマート・デスクトップとして実行する方法を説明
します。</Para>
<OrderedList>
<ListItem>
<Para>ダイアンが[ファイルマネージャ]アイコンをダブルクリックします。</Para>
<ItemizedList Remap="Bullet2">
<ListItem>
<Para>ファイル・マネージャが開き、ダイアンの現在のディレクトリ内のファイルを表示します。</Para>
</ListItem>
</ItemizedList>
</ListItem>
<ListItem>
<Para>ダイアンは、データ・ファイルのアイコンをダブルクリックします。</Para>
<OrderedList Remap="List2">
<ListItem>
<Para>ファイル・マネージャは、アイコンで表現されているファイルの表示を要求します。
また、<Symbol Role="Variable">表示</Symbol> メッセージ内のファイル・タイプを
符号化します。</Para>
</ListItem>
<ListItem>
<Para>ToolTalkセッション・マネージャは、登録されたアプリケーション(この場合は
アイコン・エディタ)に<Symbol Role="Variable">表示</Symbol> メッセージ内のパターン
を照合して、ダイアンのデスクトップ上で実行中のアプリケーションのインスタンスを見
つけます。</Para>
<Note>
<Para>ToolTalkセッション・マネージャがアプリケーションの実行中のインスタンスを
見つけられない場合は、静的に定義した
<IndexTerm>
<Primary>プロセス型 (ptype)</Primary>
</IndexTerm>プロセス型 (ptypes)をチェックし、メッセージ内のパターンに最も一致
するアプリケーションを起動します。一致するptyepがないと、ファイル・マネージャ
に異常終了を返します。</Para>
</Note>
</ListItem>
<ListItem>
<Para>アイコン・エディタは<Symbol Role="Variable">表示</Symbol>メッセージを受け取り、自分のアイコン化を解除し、
自分を一番上に表示します。</Para>
</ListItem>
</OrderedList>
</ListItem>
<ListItem>
<Para>ダイアンは、ファイルを手動で編集します。</Para>
</ListItem>
</OrderedList>
</Sect4>
<Sect4 Id="TTUG.Intro.div.12">
<Title Id="TTUG.Intro.mkr.4">統合ツールセット</Title>
<Para>デスクトップ・サービス・メッセージ・セットを実行できるもう1つの重要な
アプリケーションは、<Emphasis>統合ツールセット</Emphasis>です。これらの環境は、
垂直のアプリケーションCASEソフトウェア開発者用ツールセットなどまたは水平の環境
(複合ドキュメントなど)に適用することができます。その両方のアプリケーションの
共通点は、総合的な解決法が、1つの特定のタスクをうまく実行するように設計されている
専門のアプリケーションから構築された、という前提があることです。統合ツールセット
アプリケーションには、テキスト・エディタ、描画パッケージ、ビデオ・ディスプレイ・
ツール、オーディオ・ディスプレイ・ツール、コンパイラのフロント・エンド、デバッガ
などがあります。統合ツールセット環境には、相互に呼び出して対話し、ユーザからの
要求を処理するアプリケーションが必要です。たとえば、ビデオを表示するには、エディタ
がビデオ・ディスプレイ・プログラムを呼び出します。または、完成したコードの
ブロックを確認するには、エディタがコンパイラを呼び出します。</Para>
<Para>次のシナリオでは、デスクトップ・サービス・メッセージ・セットを統合ツール
セットとして実行する方法を説明します。</Para>
<OrderedList>
<ListItem>
<Para>ブルースは、好みのエディタを使用して複合ドキュメントを扱う作業をしています。
</Para>
<Para>ソースコード・テキストの一部を変更することにします。</Para>
</ListItem>
<ListItem>
<Para>ブルースは、ソースコード・テキストをダブルクリックします。</Para>
<OrderedList Remap="List2">
<ListItem>
<Para>ドキュメント・エディタは、まずソースコードを表すテキストを判別し、その後
そのソースコードがどのファイルに入っているかを判別します。</Para>
</ListItem>
<ListItem>
<Para>ドキュメント・エディタは、ファイル名をメッセージのパラメータとして使用し、
<Emphasis>編集</Emphasis>メッセージ要求を送信します。</Para>
</ListItem>
<ListItem>
<Para>ToolTalkセッション・マネージャは、登録されたアプリケーションこの場合は、
ソースコード・エディタ)に<Emphasis>編集</Emphasis>メッセージ内のパターンを照合
して、ブルースのデスクトップ上で実行中のアプリケーションのインスタンスを見つけ
ます。</Para>
<Note>
<Para>ToolTalkセッション・マネージャがアプリケーションの実行中のインスタンスを
見つけられない場合は、静的に定義したptypeをチェックし、メッセージ内のパターンに
最も一致するアプリケーションを起動します。一致するptypeがないと、ドキュメント・
エディタ・アプリケーションに異常終了を返します。</Para>
</Note>
</ListItem>
<ListItem>
<Para>ソースコード・エディタが<Emphasis>編集</Emphasis>メッセージ要求を受け取ります。</Para>
</ListItem>
<ListItem>
<Para>ソースコード・エディタは、ソースコード・ファイルが構成コントロールを受けて
いると判別し、ファイルをチェックするためのメッセージを送信します。
</Para>
</ListItem>
<ListItem>
<Para>そのメッセージをソースコード制御アプリケーションが受け取り、要求されたファイ
ルの読み取り書き込み用コピーを作成します。その後、ファイル名をソースコード・
エディタに戻します。</Para>
</ListItem>
<ListItem>
<Para>ソースコード・エディタは、ソース・ファイルが入っているウィンドウを開きます。</Para>
</ListItem>
</OrderedList>
</ListItem>
<ListItem>
<Para>ブルースは、ソースコード・テキストを編集します。</Para>
</ListItem>
</OrderedList>
</Sect4>
</Sect3>
<Sect3 Id="TTUG.Intro.div.13">
<Title>ToolTalkドキュメント・メディア交換メッセージ・セットの使用</Title>
<Para>
<IndexTerm>
<Primary>ToolTalkメッセージ・セット</Primary>
<Secondary>ドキュメント・メディア交換</Secondary>
</IndexTerm>ToolTalk
<IndexTerm>
<Primary>ドキュメント・メディア交換メッセージ・セット</Primary>
</IndexTerm>ToolTalkドキュメント・メディア交換メッセージ・セットは、非常に柔軟性
があり、強力です。この節では、次のようなToolTalkドキュメント・メディア交換
メッセージ・セットの3つの使用方法について説明します。 </Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>マルチメディアのオーサリング・アプリケーションへの統合</Para>
</ListItem>
<ListItem>
<Para>既存のアプリケーションへのマルチメディア拡張機能の追加</Para>
</ListItem>
<ListItem>
<Para>メディア交換機能の追加によるXの<Emphasis>カット&ペースト</Emphasis>機能の拡張</Para>
</ListItem>
</ItemizedList>
<Sect4 Id="TTUG.Intro.div.14">
<Title>マルチメディア機能の統合</Title>
<Para>マルチメディア機能をアプリケーションに統合することによって、アプリケーション
のエンド・ユーザは、さまざまなメディアの型をドキュメントに埋め込むことができます。
</Para>
<Para>通常、メディア・オブジェクトを表すアイコンは、ドキュメントに埋め込まれます。
埋め込まれたオブジェクトを選択すると、ToolTalkサービスは自動的に適切な外部メディア
・アプリケーションを起動し、オブジェクトは次のシナリオで説明するように処理されま
す。</Para>
<OrderedList Remap="List1">
<ListItem>
<Para>ダニエルがマルチメディア・オブジェクトが入っているドキュメントを開きます。</Para>
</ListItem>
<ListItem>
<Para>ウィンドウがさまざまなメディアの種類(音声、画像、グラフィックスなど)を
表すアイコンで、ドキュメントを表示します。</Para>
</ListItem>
<ListItem>
<Para>ダニエルは、[音声]アイコンをダブルクリックします。</Para>
<Para>音声アプリケーション(<Emphasis>プレイヤ</Emphasis>と呼ぶ)が起動され、録音済
みの音声が再生されます。</Para>
</ListItem>
<ListItem>
<Para>録音状態を編集するために、ダニエルはアイコンを1回クリックして選択し、3番
目のマウス・ボタンを使用して[編集]メニューを表示します。</Para>
<Para>編集アプリケーションが起動され、ダニエルはメディア・オブジェクトを編集
します。</Para>
</ListItem>
</OrderedList>
</Sect4>
<Sect4 Id="TTUG.Intro.div.15">
<Title>既存のアプリケーションへのマルチメディア拡張機能の追加</Title>
<Para>ToolTalkドキュメント・メディア交換メッセージ・セットによって、アプリケーシ
ョンは他のマルチメディア・アプリケーションを使用してその機能または性能を拡張する
こともできます。たとえば、次のシナリオで示すように、カレンダ・マネージャを拡張
し、オーディオ・ツールを使って音声ファイルをアポイントメントの覚え書きとして再生
することもできます。</Para>
<OrderedList Remap="List1">
<ListItem>
<Para>シェルビーは、自分のカレンダ・マネージャを開き、アポイトメントを設定します。</Para>
</ListItem>
<ListItem>
<Para>シェルビーが[音声応答]ボタンをクリックすると、オーディオ・ツールが起動
します。</Para>
</ListItem>
<ListItem>
<Para>シェルビーは、たとえば「レポートを持ってくる」といったようなメッセージを記録します。</Para>
</ListItem>
</OrderedList>
<Para>シェルビーがアポイントの覚え書きを実行すると、カレンダ・マネージャは
オーディオ・ツールを起動し、シェルビーが録音した覚え書きを再生します。</Para>
</Sect4>
<Sect4 Id="TTUG.Intro.div.16">
<Title>Xのカットペースト機能の拡張</Title>
<Para>ToolTalkドキュメント・メディア交換メッセージ・セットは、拡張可能なオープン・
エンドの交換機能をサポートできます。次のシナリオは、拡張可能なマルチメディアの
<Emphasis>カット&ペースト</Emphasis>機能の動作を示します。</Para>
<OrderedList Remap="List1">
<ListItem>
<Para>マリアがメディア型が異なる2つのドキュメントを開きます。</Para>
</ListItem>
<ListItem>
<Para>マリアがドキュメントAの一部分を選択し、標準の<Emphasis>X</Emphasis>
ウィンドウの<Emphasis>カット</Emphasis>機能を使用して、その部分をカットします。</Para>
</ListItem>
<ListItem>
<Para>さらにマリアは、そのカットした部分をドキュメントBにペーストします。</Para>
<OrderedList Remap="List2">
<ListItem>
<Para>ドキュメントBは、カットしたデータの転送についてドキュメントAと交渉します。</Para>
</ListItem>
<ListItem>
<Para>ドキュメント&numsp;Aが提供するデータのどの型についてもドキュメントBが認識
しない場合、ドキュメントBは<Emphasis>タグ付メディア型</Emphasis>を送信してくれる
ようドキュメント&numsp;Aに要求します。ドキュメントBは、タグ付メディア型を使用
して、そのメディア型を理解可能なメディア型へ変換するように要求するToolTalk
メッセージをブロードキャストします。</Para>
</ListItem>
<ListItem>
<Para>登録されている変換ユーティリティはその要求を受けて、変換後のバージョンの
メディア型をドキュメントBへ返します。</Para>
</ListItem>
<ListItem>
<Para>変換されたデータのドキュメントBへのペーストが実行されます。</Para>
</ListItem>
</OrderedList>
</ListItem>
</OrderedList>
</Sect4>
</Sect3>
</Sect2>
</Sect1>
<Sect1 Id="TTUG.Intro.div.17">
<Title><IndexTerm>
<Primary>アプリケーションのToolTalkメッセージの使用方法</Primary>
</IndexTerm>アプリケーションのToolTalkメッセージの使用方法</Title>
<Para>アプリケーションは、ToolTalkメッセージを作成、送信、および受信することに
よって、他のアプリケーションと通信を行います<Interface Class="Button">。
<IndexTerm>
<Primary>送信側</Primary>
</IndexTerm>送信側は、</Interface>メッセージを作成、書き込み、および送信します。
ToolTalkサービスは受信側を判別し、そのメッセージを
<IndexTerm>
<Primary>受信側</Primary>
</IndexTerm>受信側に配信します。
受信側はメッセージを検出してメッセージ内の情報をチェックし、メッセージを破棄する
か、オペレーションを実行してその結果を返答します。</Para>
<Sect2 Id="TTUG.Intro.div.18">
<Title><IndexTerm>
<Primary>ToolTalkメッセージの送信</Primary>
</IndexTerm><IndexTerm>
<Primary>メッセージ</Primary>
<Secondary>送信</Secondary>
</IndexTerm>ToolTalkメッセージの送信</Title>
<Para><IndexTerm>
<Primary>ToolTalkメッセージ</Primary>
</IndexTerm>ToolTalkメッセージの構造は簡単で、アドレス、サブジェクト、および配信
情報のフィールドを含みます。ToolTalkメッセージを送信するため、アプリケーションは
空のメッセージを取得し、メッセージ属性を書き込んだ後、メッセージを送信します。
送信を行うアプリケーションは、次の情報を提供する必要があります。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>通知用メッセージか要求用メッセージか(つまり、受信側がメッセージに応答する
必要があるかどうか)</Para>
</ListItem>
<ListItem>
<Para>受信側と送信側は、どのような処理対象を共有しているか(たとえば、受信側は特
定のユーザ・セッションで実行されているものか、または特定のファイルを処理対象とし
ているものか)</Para>
</ListItem>
</ItemizedList>
<Para>メッセージの配信の範囲を限定するために、送信側アプリケーションはメッセージ
内にさらに情報を指定できます。</Para>
</Sect2>
<Sect2 Id="TTUG.Intro.div.19">
<Title>メッセージ・パターン</Title>
<Para>ToolTalkの重要な
<IndexTerm>
<Primary>ToolTalkの特徴</Primary>
</IndexTerm>特徴は、送信側が受信側について何も認識していなくてもかまわないという
ことです。これは、メッセージを受信したいアプリケーション側が、受け取りたい
メッセージの種類を明示的に示すからです。この情報は、<Emphasis>メッセージ・パターン</Emphasis>としてToolTalkサービスに登録されます。</Para>
<Para>アプリケーションは、そのインストール時または実行時にメッセージ・パターンを
ToolTalkサービスに指定できます。メッセージ・パターンは、メッセージと同じ方法で
作成します。つまり、どちらの場合も同じ型の情報を使用します。アプリケーションは受
信したいそれぞれの型のメッセージについて、空のメッセージ・パターンを取得し、属性
を書き込み、そのパターンをToolTalkサービスに登録します。
<IndexTerm>
<Primary>メッセージ・パターン</Primary>
</IndexTerm>これらのメッセージ・パターンは通常、アプリケーションが相互に使用する
ことにしたメッセージ・プロトコルと一致します。アプリケーションは、個々の使用に応
じてさらにパターンを追加できます</Para>
<Para>ToolTalkサービスは、送信側アプリケーションからメッセージを受信すると、
メッセージ内の情報と登録されているパターンとを比較します。一致するものが見つかる
と、ToolTalkサービスは、
<IndexTerm>
<Primary>メッセージ</Primary>
<Secondary>受信側の判別</Secondary>
</IndexTerm>受信側アプリケーションすべてにメッセージのコピーを
配信します。</Para>
<Para>アプリケーションは、受信を希望するメッセージを記述したパターンごとに、
メッセージを<Emphasis><IndexTerm>
<Primary>メッセージ</Primary>
<Secondary>処理する</Secondary>
</IndexTerm>処理</Emphasis>または<Emphasis><IndexTerm>
<Primary>メッセージ</Primary>
<Secondary>監視する</Secondary>
</IndexTerm>監視</Emphasis>できるかどうかを宣言しています。多数のアプリケーション
がメッセージを監視できますが、メッセージを処理できるアプリケーションは1つだけで
す。これは、要求されたオペレーションが確実に1回だけ実行されるようにするためです。
ToolTalkサービスが要求に対するハンドラを見つけだせなかった場合は、そのメッセージ
を送信側アプリケーションに返し、配信が失敗したことを示します。</Para>
</Sect2>
<Sect2 Id="TTUG.Intro.div.20">
<Title><IndexTerm>
<Primary>ToolTalkメッセージの受信</Primary>
</IndexTerm><IndexTerm>
<Primary>メッセージ</Primary>
<Secondary>受信</Secondary>
</IndexTerm>ToolTalkメッセージの受信</Title>
<Para>ToolTalkサービスは、メッセージを特定のプロセスに配信する必要があると判断する
と、メッセージのコピーを作成し、受信待ちメッセージがあることをそのプロセスに通知
します。受信側アプリケーションが実行中でない場合、ToolTalkサービスは、アプリケーシ
ョンの起動方法に関する指示(インストール時にアプリケーションが指示したもの)を
検索します。</Para>
<Para>プロセスは、メッセージを検索し、その内容をチェックします。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>オペレーションが実行されたという情報がメッセージに含まれている場合、プロセス
はその情報を読み取ってから、メッセージを破棄します。</Para>
</ListItem>
<ListItem>
<Para>オペレーションの実行要求がメッセージに含まれている場合、プロセスはそのオペ
レーションを実行し、元のメッセージへの応答という形でオペレーションの結果を返しま
す。応答が送信されると、プロセスは元のメッセージを破棄します。</Para>
</ListItem>
</ItemizedList>
</Sect2>
</Sect1>
<Sect1 Id="TTUG.Intro.div.21">
<Title>ToolTalkメッセージの配信</Title>
<Para>ToolTalkサービスは、
<IndexTerm>
<Primary>メッセージを配布する方式</Primary>
</IndexTerm><IndexTerm>
<Primary>メッセージ</Primary>
<Secondary>配布する方式</Secondary>
</IndexTerm>メッセージを配布する2つの方式を提供します。
<Emphasis>プロセス指向</Emphasis>メッセージ方式と<Emphasis>オブジェクト指向</Emphasis>メッセージ方式です。</Para>
<Sect2 Id="TTUG.Intro.div.22">
<Title>プロセス指向メッセージ方式</Title>
<Para><IndexTerm>
<Primary>プロセス指向メッセージ方式</Primary>
</IndexTerm><IndexTerm>
<Primary>メッセージ</Primary>
<Secondary>プロセス指向</Secondary>
</IndexTerm>プロセス指向メッセージとは、プロセスにアドレス指定されたメッセージです。
プロセス指向メッセージを作成するアプリケーションは、指定されたプロセスか特定の型の
プロセスのどちらかにそのメッセージをアドレス指定します。プロセス指向メッセージ方式
は、既存のアプリケーションが他のアプリケーションと通信するのに便利な方法です。プロ
セス指向メッセージ方式をサポートするための修正は簡単で、通常は実行するのもそんなに
時間はかかりません。</Para>
</Sect2>
<Sect2 Id="TTUG.Intro.div.23">
<Title>オブジェクト指向メッセージ方式</Title>
<Para><IndexTerm>
<Primary>オブジェクト指向メッセージ方式</Primary>
</IndexTerm><IndexTerm>
<Primary>メッセージ</Primary>
<Secondary>オブジェクト指向</Secondary>
</IndexTerm>オブジェクト指向メッセージは、アプリケーションが管理するオブジェクトに
アドレス指定されます。オブジェクト指向メッセージを作成するアプリケーションは、指定
されたオブジェクトか特定の型のオブジェクトのどちらかにそのメッセージをアドレス指定
します。オブジェクト指向メッセージ方式は、現在オブジェクトを使用しているアプリケー
ション、またはオブジェクトを対象として設計されたアプリケーションに対して特に便利
です。既存のアプリケーションがオブジェクト指向でない場合は、ToolTalkサービスを
使うと、アプリケーションがアプリケーションのデータの一部をオブジェクトとして識別す
るので、これらのオブジェクトに関する通信ができるようになります。</Para>
<Note>
<Para>ToolTalkオブジェクト指向メッセージ・インタフェース用にコーディングされた
プログラムは、ソースコードを変更しなければCORBA準拠のシステムに
<Symbol Role="Variable">移植できません</Symbol>
<IndexTerm>
<Primary>OMG準拠システム</Primary>
</IndexTerm>。</Para>
</Note>
</Sect2>
<Sect2 Id="TTUG.Intro.div.24">
<Title>メッセージ配信の判別</Title>
<Para>
<IndexTerm>
<Primary>メッセージの受信者の判別</Primary>
</IndexTerm>メッセージを受信するグループを判別するために、メッセージの
<Emphasis>配信範囲</Emphasis>を指定します。配信範囲指定を行うことにより、メッセー
ジの配信を特定のセッションまたはファイルに限定します。</Para>
<Sect3 Id="TTUG.Intro.div.25">
<Title>セッション</Title>
<Para>
<IndexTerm>
<Primary>ToolTalkのセッションの概念</Primary>
</IndexTerm><Emphasis>セッション</Emphasis>とは、同じToolTalkメッセージ・サーバの
インスタンスを持つプロセスのグループのことです(スレッド・セイフ・セッション管理
の情報については、付録を参照してください。プロセスがToolTalkサービスとの通信
を開始すると、デフォルトのセッションが配置され(または、セッションが存在していない
場合は作成され)、プロセスには、<Emphasis>プロセス識別子</Emphasis> (<Emphasis>procid</Emphasis>)が割り当てられます。
デフォルト・セッションは、環境変数 (「プロセス・ツリー・セッション」と呼ぶ)、
またはXディスプレイ(「Xセッション」と呼ぶ)によって配置されます。</Para>
<Para>セッションの概念は、メッセージの配信において重要です。送信側は、あるセッショ
ンをメッセージの配信範囲とすることができます。ToolTalkサービスは、現在のセッション
を参照するメッセージ・パターンを持つすべてのプロセスにメッセージを配信します。現在の
<IndexTerm>
<Primary>セッション識別子(sessid)</Primary>
</IndexTerm><Emphasis>セッション識別子</Emphasis> (sessid)でメッセージ・パターンを
更新するときは、アプリケーションはそのセッションを結合します。</Para>
</Sect3>
<Sect3 Id="TTUG.Intro.div.26">
<Title>ファイル</Title>
<Para>このマニュアルでは、アプリケーションの処理対象であるデータを入れるコンテナの
<IndexTerm>
<Primary>ファイル</Primary>
<Secondary>ToolTalkファイルの概念</Secondary>
</IndexTerm>ことを<Symbol Role="Variable">ファイル</Symbol>と呼びます。</Para>
<Para>ファイルの概念は、メッセージの配信において重要です。送信側は、あるファイルを
メッセージの配信範囲とすることができます。また、ToolTalkサービスは、プロセスの
デフォルト・セッションに関係なく、そのファイルを参照するメッセージ・パターンを持つ
すべてのプロセスにメッセージを配信します。現在のファイルのパス名でメッセージ・パター
ンを更新するときは、アプリケーションはそのファイルを結合します。</Para>
<Para>また、1つのセッション内にあるファイルをメッセージの配信範囲とすることもでき
ます。ToolTalkサービスは、そのメッセージ・パターン内にあるファイルとセッションの
両方を参照するすべてのプロセスにメッセージを配信します。</Para>
<Note>
<Para>
<IndexTerm>
<Primary>ファイルの配信範囲指定機能の制限</Primary>
</IndexTerm>ファイルの配信範囲指定機能が使用できるのは、NFS&reg;ファイル・システム
とUFSファイル・システムだけです。</Para>
</Note>
</Sect3>
</Sect2>
</Sect1>
<Sect1 Id="TTUG.Intro.div.27">
<Title><IndexTerm>
<Primary>ToolTalkサービスを使用するためのアプリケーションの変更</Primary>
</IndexTerm>ToolTalkサービスを使用するためのアプリケーションの変更</Title>
<Para>ToolTalkサービスを使用できるようにアプリケーションを変更する前に、ToolTalk
<IndexTerm>
<Primary>メッセージ・プロトコル</Primary>
</IndexTerm><Emphasis>メッセージ・プロトコル</Emphasis>を定義(または配置)する
必要があります。メッセージ・プロトコルとは、アプリケーションが実行を認めたオペレー
ションについて記述したToolTalkメッセージの集合です。メッセージ・プロトコル仕様の内
容は、メッセージの設定およびアプリケーションがメッセージを受信したときの動作です。
</Para>
<Para>ToolTalkサービスを使用するために、アプリケーションは、ToolTalk
<IndexTerm>
<Primary>アプリケーション・プログラミング・インタフェース(API)</Primary>
</IndexTerm>アプリケーション・プログラミング・インタフェース(API)からToolTalk関数
を呼び出します。ToolTalk APIには、ToolTalkサービスに登録する機能、メッセージ・パタ
ーンを作成する機能、メッセージを送信する機能、メッセージを受信する機能、メッセージ
情報をチェックする機能などがあります。ToolTalkサービスを使用できるようにアプリケー
ションを変更するには、まずプログラムにToolTalk APIのヘッダ・ファイルを組み込まなけ
ればなりません。また、次のことを実現するためにアプリケーションを変更する必要があり
ます。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>ToolTalkサービスを初期化し、セッションに参加する</Para>
</ListItem>
<ListItem>
<Para>メッセージ・パターンをToolTalkサービスに登録する</Para>
</ListItem>
<ListItem>
<Para>メッセージを送信および受信する</Para>
</ListItem>
<ListItem>
<Para>メッセージ・パターンを登録解除し、ToolTalkを終了する</Para>
</ListItem>
</ItemizedList>
</Sect1>
</Chapter>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 05:02:32-->

View File

@@ -0,0 +1,600 @@
<!-- $XConsortium: ch02.sgm /main/8 1996/08/31 15:12:59 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Chapter Id="TTUG.HTU.div.1">
<Title Id="TTUG.HTU.mkr.1">ToolTalkメッセージの使用方法</Title>
<indexterm><primary>メッセージ</primary><secondary>一般情報</secondary></indexterm>
<note>
<para>この章のコーディング例は、<literal>broadcast</literal>とういう名前の
ToolTalkデモ・プログラムの一部です。このプログラムのソース・コード、<filename>
Makefile</filename>、や<filename>README</filename>ファイルについては、 <filename>/usr/dt/examples/tt</filename>ディレクトリを参照してください。
</para>
</note>
<Sect1 Id="TTUG.HTU.div.2">
<title>ToolTalk機能のアプリケーションへの通知</title>
<para>アプリケーションは、ToolTalkサービスとメッセージ・ツールキットが提供する相互
運用機能を利用する前に、ToolTalkライブラリとツールキットがある場所を認識しておく
必要があります。
</para>
<Sect2 Id="TTUG.HTU.div.3">
<title>メッセージ・ツールキットの使用とToolTalkコマンドの組み込み</title>
<para>ToolTalkサービスを使用するために、アプリケーションはToolTalkアプリケーション
・プログラミング・インタフェース(API)からToolTalk関数を呼び出します。メッセージ・
ツールキットは、ToolTalkサービスへの登録、メッセージ・パターンの作成、メッセージの
送信、メッセージの受信、およびメッセージ情報のチェックを行うための関数を提供
します。これらは、ToolTalk APIよりもハイレベルな関数です。ToolTalkサービスとツール
キットを使用できるようにアプリケーションを変更するには、以下のヘッダ・ファイルを
組み込まなければなりません。
</para>
<indexterm><primary>ヘッダ・ファイル</primary></indexterm>
<programlisting>#include &lt;Tt/tt_c.h&gt; /* ToolTalk Header File */
#include &lt;Tt/tttk.h&gt; /* Messaging Toolkit Header File */
</programlisting>
</sect2>
<Sect2 Id="TTUG.HTU.div.4">
<title>ToolTalkライブラリの使用</title>
<indexterm><primary>ToolTalkライブラリ</primary></indexterm>
<para>ToolTalkライブラリは、以下のディレクトリにあります。
</para>
<programlisting>/usr/dt/lib
</programlisting>
<para>ライブラリ名は、プラットフォームに依存していますたとえば、Solarisでは
<filename>libtt.so</filename>そしてHP-UXでは
<filename>libtt.sl</filename>です)。
</para>
</sect2>
</sect1>
<Sect1 Id="TTUG.HTU.div.5">
<title>コーディングを開始する前に</title>
<para>メッセージ・ツールキット機能をアプリケーションに組み込む前に、アプリケーショ
ンのツールが他のツールと一緒に動作する方法を決定する必要があります。考慮すべき基本
的な内容は以下のとおりです。
</para>
<itemizedlist>
<listitem>
<para>これらのツールはどのように同時に動作するか
</para>
</listitem>
<listitem>
<para>これらのツールはどのようなオペレーションを実行できるか
</para>
</listitem>
<listitem>
<para>他のツールにどのようなオペレーションを実行するように要求できるか
</para>
</listitem>
<listitem>
<para>他のツールを配信対象にできるこれらのツールはどのようなイベントを生成するか
(これらのツールはどの型のメッセージを送信したいか)
</para>
</listitem>
<listitem>
<para>他のツールによって生成されたイベントの中でこれらのツールの配信対象となるイベ
ントはどれか(これらのツールはどの型のメッセージを受信したいか)
</para>
</listitem>
</itemizedlist>
<para>これらの質問に的確に答えるには、イベントとオペレーションの間の違いと、
ToolTalkサービスがお互いに関連のあるメッセージを処理する方法を理解する必要がありま
す。</para>
<Sect2 Id="TTUG.HTU.div.6">
<title>イベントとオペレーションの違い</title>
<indexterm><primary>イベントの定義</primary></indexterm>
<indexterm><primary>オペレーションの定義</primary></indexterm>
<para><emphasis>イベント</emphasis>は、何か起きたことを通知するものです。イベン
は、簡単に言えばニュース速報です。送信側のプロセスは、他のプロセスがイベントが起き
たことを聞くかどうかと、アクションがイベントの結果として起こるかどうかについての
正式な予想を持っていません。プロセスがToolTalkサービスを使用して、配信対象のプロ
セスにイベントが発生したことを知らせる場合、<emphasis>通知</emphasis>を送信します
。送信側プロセスは応答を期待しないため、イベントは失敗できません。
</para>
<para><emphasis>オペレーション</emphasis>は、問い合わせまたはアクションです。要求
側プロセスは、オペレーションが実行されるように問い合わせまたは要求を行います。要求
側プロセスは結果が返されることを予想し、問い合わせまたはアクションのステータスを
通知するように要求します。プロセスがToolTalkサービスを使用して、他のツールにオペ
レーションを実行するように依頼する場合、<emphasis>要求</emphasis>を送信します。
ToolTalkサービスは配信対象のプロセスに要求を配信し、送信側プロセスに要求のステー
タスを通知します。
</para>
<Sect3 Id="TTUG.HTU.div.7">
<title>通知の送信</title>
<para>アプリケーションがToolTalkの通知を送信する場合、応答は受信せず、ツールがその
通知に注意を払うかどうかについて通知を受けることもありません。通知をイベントの発生
に応じて正確なレポートにすることが重要です。たとえば、ツールがデスクトップ・サービ
スのメッセージの<literal>Modified</literal>を送信する場合、聞き手側のツールを指定
の方法で反応させることができます。しかしツールは、他のツールがそのメッセージに反応
するかどうか気にしたり、通知を受ける必要はありません。次のイベントをレポートしたい
だけです。
<Symbol>THE_USER_HAS_MADE_CHANGES_TO_THIS</Symbol>
</para>
</sect3>
<Sect3 Id="TTUG.HTU.div.8">
<title>要求の送信</title>
<para>アプリケーションがToolTalkの要求を送信する場合、つのツールが指示されたオ
ペレーションを実行する、または問い合わせに答え、応答メッセージを返すことを期待しま
す。たとえば、ツールがデスクトップ・サービス・メッセージの
<literal>Get_Modified</literal>を送信する場合、メッセージが配信され、アクションが
実行されたという通知が期待できます。ToolTalkサービスでは必ず、プロセスの受信によっ
て応答が返されるか、送信側に要求の失敗が通知されます。
</para>
<para>次の3つの方法で要求を識別できます。
</para>
<itemizedlist>
<listitem>
<para>異常終了できるツールによって要求されるオペレーションを識別する
</para>
</listitem>
<listitem>
<para>他のツール用に実行できるオペレーションを識別する
</para>
</listitem>
<listitem>
<para>他のツールに実行させたいオペレーションを識別する
</para>
</listitem>
</itemizedlist>
<para>これらのオペレーションを識別するための良い方法は、ツールが実行するまたは
実行を完了したイベントおよびオペレーションの順序について概説するシナリオを開発する
ことです。
</para>
</sect3>
</sect2>
<Sect2 Id="TTUG.HTU.div.9">
<title>シナリオの開発</title>
<para>シナリオは、ツールが実行するおよび実行を完了したイベントおよびオペレーション
の順序を概説しています。たとえば、次のシナリオは、一般的なエディタが実行するおよび
実行を完了したイベントについて概説しています。
</para>
<orderedlist>
<listitem>
<para>ファイル・マネージャのドキュメント・アイコンをダブルクリックします。
ファイルはエディタで開きます。エディタを実行中でない場合はシステムによって起動され
ます。ドキュメントに対して別のツールが保留中のテキストに変更を行うと、その別のツー
ルが変更したテキストを保存するか、それとも最後に保存されたバージョンのドキュメント
に戻るか尋ねられます。
</para>
</listitem>
<listitem>
<para>テキストを挿入します。
</para>
</listitem>
<listitem>
<para>ドキュメントを保存します。
別のツールがそのドキュメントに保留中の変更点を持っている場合、ドキュメントを変更
するか尋ねられます。
</para>
</listitem>
<listitem>
<para>エディタを終了します。
テキストに保存されていない変更がある場合、ファイルを終了する前にその変更を保存する
かそれとも破棄するか尋ねられます。
</para>
</listitem>
</orderedlist>
<para>シナリオがいったん実行されると、基本的な質問に答えることができます。
</para>
<Sect3 Id="TTUG.HTU.div.10">
<title>ツールを同時に動作させる方法</title>
<itemizedlist>
<listitem>
<para>ファイル・マネージャは、編集用のドキュメントを開くように要求します。
</para>
</listitem>
<listitem>
<para>各インスタンスは、その他の配信対象のインスタンスにドキュメントの状態に対して
行われる変更を通知します。
</para>
</listitem>
</itemizedlist>
</sect3>
<Sect3 Id="TTUG.HTU.div.11">
<title>これらのツールはどのようなオペレーションを実行できるか</title>
<itemizedlist>
<listitem>
<para>各インスタンスは、それ自身とその状態に関する質問
(「ステータスは?」など)に答えることができます。
</para>
</listitem>
<listitem>
<para>各インスタンスには、次のようなオペレーションを実行する機能があります。
</para>
<itemizedlist>
<listitem>
<para>アイコン化とアイコン化解除
</para>
</listitem>
<listitem>
<para>重なり順の変更
</para>
</listitem>
<listitem>
<para>ドキュメントの編集
</para>
</listitem>
<listitem>
<para>ドキュメントの表示(読み取り専用)
</para>
</listitem>
<listitem>
<para>終了
</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</sect3>
<Sect3 Id="TTUG.HTU.div.12">
<title>他のツールにどのようなオペレーションを実行するように要求できるか</title>
<itemizedlist>
<listitem>
<para>ファイル・マネージャは、エディタが編集用のドキュメントを開くように要求する
必要があります。
</para>
</listitem>
<listitem>
<para>エディタのインスタンスは、別のインスタンスに対し、開いているドキュメントの
変更を保存するように要求できます。
</para>
</listitem>
<listitem>
<para>エディタのインスタンスは、別のインスタンスに対し、開いているドキュメントの
最後のに保存されたバージョンに戻るように要求できます。
</para>
</listitem>
</itemizedlist>
</sect3>
<Sect3 Id="TTUG.HTU.div.13">
<title>他のツールを配信対象にできるこれらのツールはどのようなイベントを生成
するか</title>
<itemizedlist>
<listitem>
<para>ドキュメントを開いています。
</para>
</listitem>
<listitem>
<para>ドキュメントを変更しています。
</para>
</listitem>
<listitem>
<para>ドキュメントは最後に保存されたバージョンの内容に戻っています。
</para>
</listitem>
<listitem>
<para>ドキュメントを保存しています。
</para>
</listitem>
<listitem>
<para>エディタのインスタンスは終了しています。
</para>
</listitem>
</itemizedlist>
</sect3>
<Sect3 Id="TTUG.HTU.div.14">
<title>他のツールによって生成されたイベントの中でこれらのツールの配信対象となる
イベントはどれか</title>
<itemizedlist>
<listitem>
<para>ドキュメントを開いています。
</para>
</listitem>
<listitem>
<para>ドキュメントを変更しています。
</para>
</listitem>
<listitem>
<para>ドキュメントは最後に保存されたバージョンの内容に戻っています。
</para>
</listitem>
<listitem>
<para>ドキュメントを保存しています。
</para>
</listitem>
<listitem>
<para>エディタのインスタンスは終了しています。
</para>
</listitem>
</itemizedlist>
</sect3>
</sect2>
</sect1>
<Sect1 Id="TTUG.HTU.div.15">
<title>通信用アプリケーションの準備</title>
<para>ToolTalkサービスは、アプリケーション統合用の完全な関数セットを提供します。
ToolTalkメッセージ・ツールキットが提供する機能を使用して、アプリケーションは
ToolTalk準拠のほかのアプリケーションと「通信」を行うことができます。この
節では、同じプロトコルに基づく他のToolTalk対応アプリケーションと通信できるように、
アプリケーションに組み込む必要があるToolTalk関数の追加方法について説明します。
</para>
<Sect2 Id="TTUG.HTU.div.16">
<title>ptypeファイルの作成</title>
<indexterm><primary>ptypeファイルの作成</primary></indexterm>
<para>ToolTalk型機構は、ToolTalkサービス・ルート・メッセージに役立つように設計され
ています。ツールがptypeプロセス型を宣言すると、そこにリストされているメッセー
ジ・パターンが自動的に登録されます。ToolTalkサービスは、受信するメッセージとこれら
の登録されたパターンを一致させます。これらの静的メッセージ・パターンは、ツールが
ToolTalkサービスとの通信を終了するまで有効です。
</para>
<para>ToolTalk型データベースは、本リリースに付いているツール用のptypeをすでにイン
ストールしてあります。次のようにして、ToolTalk型データベースからインストールされた
ptypeのリストを取り出すことができます。
</para>
<screen>% tt_type_comp -d <symbol role="variable">user | system | network</symbol> -P
</screen>
<para>ptypeの名前は、ソース形式で出力されます。
</para>
<para>次のようにして、シグニチャを含むインストールされたptypeのリストを生成します。
</para>
<screen>% tt_type_comp -d <symbol role="variable">user | system | network</symbol> -p
</screen>
<para>他のツールすべて(つまり、本リリースには含まれていないツール)に対して、最初
にptypeファイルを作成してアプリケーションのptypeを定義し、ToolTalk型コンパイラ
<filename>tt_type_comp</filename>で、ptypeをコンパイルする必要があります。ptypeを
定義するには、次の情報をファイルに入れる必要があります。
</para>
<itemizedlist>
<listitem>
<para>プロセス型識別子(<literal>ptid</literal>)
</para>
</listitem>
<listitem>
<para>オプションの開始文字列
ToolTalkサービスは、必要に応じてこのコマンドを実行し、プログラムを実行する
プロセスを開始します。
</para>
</listitem>
<listitem>
<para>シグニチャ
プログラムが受信したい<Symbol>TT_PROCEDURE</Symbol>アドレス指定メッセージを記述
しています。監視されるメッセージは、処理されるメッセージと別々に記述します。
</para>
</listitem>
</itemizedlist>
<para>ptypeファイルを作成するには、どのテキスト・エディタ
(<command>vi</command>、 <command>emacs</command>、<command>dtpad</command>
など)でも使用できます。
</para>
<para>ptypeファイルを作成したら、ptypeをインストールします。このためには、ToolTalk
型コンパイラを実行します。コマンド行に次のように入力してください。
</para>
<screen>% tt_type_comp <symbol role="variable">file_name.ptype</symbol>
</screen>
<para><symbol role="variable">file_name.ptype</symbol>
は、ptypeファイルの名前です。
</para>
<Sect3 Id="TTUG.HTU.div.17">
<title>現在のセッションにおける既存のptypeに対するテスト</title>
<indexterm><primary>既存のptypeに対するテスト</primary></indexterm>
<para>ToolTalkサービスは、指定のptypeがすでに現在のセッションに登録されているかど
うかテストする、次のような関数を提供します。
</para>
<programlisting>tt_ptype_exists(const char *ptype_id)
</programlisting>
<para><symbol role="variable">ptype_id</symbol>は、登録用にテストするセッションの
識別子です。
</para>
</sect3>
<Sect3 Id="TTUG.HTU.div.18">
<title>コンパイルされたptypeファイルと現在実行中のttsessionのマージ</title>
<para>ToolTalkサービスは、コンパイルされたToolTalk型ファイルを現在実行中
の<literal>ttsession</literal>にマージする、次のような関数を提供します。
</para>
<programlisting>tt_session_types_load (
const char *session,
const char *compile_types_file)
</programlisting>
<para><symbol role="variable">session</symbol>は現在のデフォルトのToolTalkセッショ
ンで、<symbol role="variable">compiled_types_file</symbol>はコンパイルされた
ToolTalk型ファイルの名前です。この関数は、新しい型を追加し、同じ名前の既存の型と
置換します。その他の既存の型は変更されません。
</para>
</sect3>
</sect2>
<Sect2 Id="TTUG.HTU.div.19">
<title>各ToolTalk対応アプリケーションが実行する必要があるタスク</title>
<para>各ToolTalk対応アプリケーションが実行する必要があるタスクは、多数あります。
たとえば次のとおりです。
</para>
<itemizedlist>
<listitem>
<para>ツールキットの初期化
</para>
</listitem>
<listitem>
<para>ToolTalkセッションへの参加とパターンの登録
</para>
</listitem>
<listitem>
<para>ToolTalkサービスをそのイベント・ループへ追加
</para>
</listitem>
</itemizedlist>
<para>この節では、これらのタスクを実行できるようにアプリケーションに組み込む必要
があるToolTalkのコーディング例を取り上げます。
</para>
<Sect3 Id="TTUG.HTU.div.20">
<title>ツールキットの初期化</title>
<indexterm><primary>ツールキットの初期化</primary></indexterm>
<para>アプリケーションはツールキットを初期化し、ToolTalkの初期セッションに登録する
必要があります。そのためには、最初にプロセス識別子(procid)を取得します。次のコー
ディングの一部分は、procidの取得方法とツールキットの初期化方法を示します。
</para>
<programlisting>char *procid = ttdt_open(
int *tt_fd,
const char *ptype_name,
const char *vendor_name,
const char *version,
int send_started)
</programlisting>
<note>
<para>アプリケーションは、他のToolTalkの呼び出しが行われる前に必ず
<function>ttdt_open</function>を呼び出さなければなりません。そうしない場合、エラー
が発生します。
</para>
</note>
</sect3>
<Sect3 Id="TTUG.HTU.div.21">
<title>ToolTalkセッションへの参加とメッセージ・パターンの登録</title>
<indexterm><primary>メッセージ・パターンの登録</primary></indexterm>
<para>アプリケーションはメッセージを受信する前に、ToolTalkセッションに参加し、一致
するメッセージ・パターンを登録する必要があります。ttdt_session_join関数は
メッセージ・パターンと多くの標準デスクトップ・メッセージ・インタフェース用の
デフォルト・コールバックを登録します。
</para>
<programlisting>Tt_pattern *sess_patt = ttdt_session_join(
const char *session_id,
Ttdt_contract_cb cb,
Widget shell,
void *client_data,
int join)
</programlisting>
<para>ptypeがアプリケーションにインストールされていた場合、
<function>ttdt_session_join</function>が呼ばれる前に、通常<function>ttmedia_ptype_
declare</function>が呼ばれるので、注意してください。
</para>
</sect3>
<Sect3 Id="TTUG.HTU.div.22">
<title>イベント・ループへのToolTalkサービスの追加</title>
<para>アプリケーションは、ToolTalkサービスをそのイベント・ループに追加することも
行わなければなりません。アプリケーションがXtクライアントの場合、
<function>XtAppAddInput</function>を以下のように使用します。
</para>
<programlisting>XtAppAddInput (app_context,
tt_fd(),
(XtPointer) XtInputReadMask,
tttk_Xt_input_handler,
client_data)
</programlisting>
</sect3>
</sect2>
<Sect2 Id="TTUG.HTU.div.23">
<title>ToolTalk対応エディタ・アプリケーションが実行する必要があるタスク</title>
<para>前述の「各ToolTalk対応アプリケーションが実行する必要があるタスク」
で説明しているタスクの他に、ToolTalk対応エディタ・アプリケーションは次のタスクも
実行する必要があります。
</para>
<itemizedlist>
<listitem>
<para>ptypeの宣言
</para>
</listitem>
<listitem>
<para>メディア・ロード・コールバックの記述
</para>
</listitem>
<listitem>
<para>メッセージ処理の受け入れ
</para>
</listitem>
<listitem>
<para>要求完了時の応答
</para>
</listitem>
</itemizedlist>
<para>この節では、これらの追加タスクを実行できるようにエディタ・アプリケーションに
組み込む必要があるToolTalkのコーディング例を取り上げます。
</para>
<Sect3 Id="TTUG.HTU.div.24">
<title>ptypeの宣言</title>
<indexterm><primary>ptypeの宣言</primary></indexterm>
<para>ptypeファイルがすでにアプリケーションにインストールされている場合、ptype
をアプリケーションに関連付ける必要があります。この関連付けの宣言には、関数
ttmedia_ptype_declareが便利です。
</para>
<programlisting>Tt_status status = ttmedia_ptype_declare(
char *ptype_name,
int base_opnum,
Ttmedia_load_pat_cb cb,
void *client_data,
int declare)
</programlisting>
<para>アプリケーションにptype <symbol role="variable">ptype_name</symbol>が
サポートする要求を出すように依頼がいくと、コールバック<function>cb</function>が
起動します。
</para>
</sect3>
<Sect3 Id="TTUG.HTU.div.25">
<title>メディア・ロード・パターン・コールバックの記述</title>
<para>ToolTalk関数を組み込むためのエディタ・アプリケーションをコーディングする前
に、メディア・ロード・コールバック・ルーチンを記述する必要があります。このコール
バックは、<function>ttmedia_load</function>を呼び出すアプリケーションに別の
アプリケーションが応答した時に起動します。
</para>
</sect3>
<Sect3 Id="TTUG.HTU.div.26">
<title>メッセージ処理の受け入れ</title>
<para>アプリケーションが<function>ttmedia_ptype_declare</function>ハンドラでメッ
セージを受信した場合、要求の処理を受け入れるため次の関数を呼ぶ必要がある。
</para>
<programlisting>Tt_pattern *desktop_patts = ttdt_message_accept (
Tt_message contract,
Ttdt_contract_cb cb,
Widget shell,
void *client_data,
int accept,
int send_status)
</programlisting>
</sect3>
<Sect3 Id="TTUG.HTU.div.27">
<title>要求完了時の応答</title>
<para>アプリケーションはオペレーションの要求を完了した後(たとえば、ドキュメント
の編集)、送信側アプリケーションに応答しなければなりません。次の関数を使用して
応答およびテキストの編集された内容を送信側に返します。
</para>
<programlisting>Tt_message msg = ttmedia_load_reply (
Tt_message contract,
const unsigned char *new_contents,
int new_length,
int reply_and_destroy)
</programlisting>
</sect3>
</sect2>
<Sect2 Id="TTUG.HTU.div.28">
<title>ToolTalk対応エディタ・アプリケーションが実行できるオプションのタスク</title>
<para>前述の「ToolTalk対応エディタ・アプリケーションが実行する必要のある
タスク」で説明しているタスクの他に、エディタ・アプリケーションはその他の
オプションのタスクも実行できます。オプションのタスクには、他のエディタとの調整を
取るためにデスクトップ・ファイル・インタフェースを使用するものなどがあります。この
節では、これらのオプションのタスクを実行できるようにエディタ・アプリケーションに
組み込む必要があるToolTalk関数をいくつか取り上げています。
</para>
<Sect3 Id="TTUG.HTU.div.29">
<title>オペレーションの変更、復元、または保存の要求</title>
<para>オペレーションの変更、復元、または保存を要求する時に次の関数を使用します。
</para>
<itemizedlist>
<listitem>
<para><function>ttdt_Get_Modified</function>
</para>
</listitem>
<listitem>
<para><function>ttdt_Revert</function>
</para>
</listitem>
<listitem>
<para><function>ttdt_Save</function>
</para>
</listitem>
</itemizedlist>
</sect3>
<Sect3 Id="TTUG.HTU.div.30">
<title>ファイルの変更、復元、または保存時の通知</title>
<para>アプリケーションのファイルの変更、復元、または保存を他のToolTalk
アプリケーションに通知する時に<function>ttdt_file_event</function>関数を使用しま
す。
</para>
</sect3>
<Sect3 Id="TTUG.HTU.div.31">
<title>ファイルの終了</title>
<para><function>ttdt_file_quit</function>関数は、ファイルに関するToolTalkイベント
の配信対象を登録解除し、関連パターンを破棄します。
</para>
</sect3>
</sect2>
</sect1>
</chapter>

View File

@@ -0,0 +1,178 @@
<!-- $XConsortium: ch03.sgm /main/6 1996/09/08 19:35:41 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Chapter Id="TTUG.ttsnp.div.1">
<Title Id="TTUG.ttsnp.mkr.1">TTSnoopの使用によるメッセージ
およびパターンのデバッグ</Title>
<Para><Emphasis><IndexTerm>
<Primary>TTSnoop</Primary>
</IndexTerm></Emphasis>TTSnoopは、カスタム構築のToolTalkメッセージを作成して送信
するためのツールです。ToolTalkメッセージの一部またはすべてを選択的に監視するツール
としてTTSnoopを使用することもできます。</Para>
<Sect1 Id="TTUG.ttsnp.div.2">
<Title>TTSnoopについて</Title>
<Para>TTSnoopは便利な対話型ツールで、これによりTookTalkの概念とAPI呼び出しをデモン
ストレーションの実行と同様よく知ることができます。さらに、TTSnoopはアプリケーショ
ンの開発中には貴重なデバッグ・ツールです。</Para>
<Para>TTSnoopを使用して、つ以上のパターンと一致するメッセージを監視できます。
一致したメッセージが表示されると、エントリと一致したパターンの名前も表示されます。
</Para>
<Para>スクロール可能なリストにメッセージおよびパターンを追加、編集、または削除でき
ます。TTSnoopにより、複数のパターンとメッセージの定義を保存したり、ファイルから読
み込むことができます。また、アプリケーションたとえば、DeskSet&trade;ツール)の
カテゴリに特有のパターンとメッセージを定義、保存、および再び読み込んだり、メッセー
ジとパターンをユーザ定義の名前に関連付けることもできます。</Para>
</Sect1>
<Sect1 Id="TTUG.ttsnp.div.3">
<Title>TTSnoopはどこにあるか</Title>
<Para>TTSnoopプログラムは、ディレクトリ
<IndexTerm>
<Primary>/usr/dt/bin/ttsnoop</Primary>
</IndexTerm><Filename>/usr/dt/bin</Filename>にあります。</Para>
</Sect1>
<Sect1 Id="TTUG.ttsnp.div.4">
<Title>TTSnoopの起動</Title>
<Para>プログラムを起動するには、コマンド行に次のコマンドを入力します。</Para>
<ProgramListing>ttsnoop [ -t ]</ProgramListing>
<Para><IndexTerm><Primary>ttsnoopコマンドの-tオプション</Primary>
</IndexTerm><Filename>-t</Filename>オプションは、特定のパターンまたはメッセージの
作成に使用するToolTalk API関数を表示するようにします。
<!--Original XRef content: 'Table&numsp;3&hyphen;1'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.ttsnp.mkr.2">では、TTSnoopの起動時
に表示されるメニュー・オプションについて説明します。</Para>
<Table Id="TTUG.ttsnp.tbl.1" Frame="Topbot">
<Title Id="TTUG.ttsnp.mkr.2">TTSnoopメニュー・オプション</Title>
<TGroup Cols="2">
<ColSpec Colname="1" Colwidth="1.25 in">
<ColSpec Colname="2" Colwidth="3.75 in">
<THead>
<Row>
<Entry><Para><Literal>メニュー・オプション</Literal></Para></Entry>
<Entry><Para><Literal>説明</Literal></Para></Entry>
</Row>
</THead>
<TBody>
<Row>
<Entry><Para>Snoop</Para></Entry>
<Entry><Para>トレースをオンにしたりオフにしたりします。また、バージョン
情報も獲得します。</Para></Entry>
</Row>
<Row>
<Entry><Para>Message</Para></Entry>
<Entry><Para>メッセージの作成、オープン、受信、破棄を行います。
</Para></Entry>
</Row>
<Row>
<Entry><Para>Pattern</Para></Entry>
<Entry><Para>パターンの作成、オープン、破棄を行います。</Para></Entry>
</Row>
<Row>
<Entry><Para>File</Para></Entry>
<Entry><Para>多くのタスクを行います。これらのタスクにはファイルの結合
も含まれます。</Para></Entry>
</Row>
<Row>
<Entry><Para>Session</Para></Entry>
<Entry><Para>特定のセッションに参加します。また、デフォルト・
セッションを設定します。</Para></Entry>
</Row>
<Row>
<Entry><Para>Ptype</Para></Entry>
<Entry><Para><literal>ptype</literal>の宣言および宣言解除をします。
また、<literal>ptype</literal>の存在の有無を決定します。</Para></Entry>
</Row>
<Row>
<Entry><Para>Types</Para></Entry>
<Entry><Para>宣言された型の一覧を生成します。また、ToolTalkに基づいた
アクションの一覧も生成します。</Para></Entry>
</Row>
<Row>
<Entry><Para>Procid</Para></Entry>
<Entry><Para>procidのオープン、クローズ、保留、回復を行います。
</Para></Entry>
</Row>
<Row>
<Entry><Para>libc</Para></Entry>
<Entry><Para><function>system()</function>、<function>putenv()
</function>、<function>chdir()</function>、<function>pause()</function>
および、<function>exit()</function>を呼び出します。<function>exit()
</function>を使用して、<command>ttsnoop</command>を終了してください。
</Para></Entry>
</Row>
</TBody>
</TGroup>
</Table>
</Sect1>
<Sect1 Id="TTUG.ttsnp.div.5">
<Title>メッセージの作成および送信</Title>
<Para><command>Message -&gt; Create</command>を選択すると、以下のような
表示されたダイアログの内容を実行できます。</para>
<itemizedlist>
<listitem>
<para>メッセージの作成および送信
</para>
</listitem>
<listitem>
<para>ptypeのテンプレートの作成
</para>
</listitem>
<listitem>
<para>ToolTalk型アクションのテンプレートの作成
</para>
</listitem>
<listitem>
<para>メッセージ応答ハンドラのC言語テンプレートの作成
</para>
</listitem>
</itemizedlist>
<para><command>Create -&gt; Tt_message</command>オプションを選択して
メッセージを作成してください。以下のものをメッセージに対して指定する
ことができます。</para>
<itemizedlist>
<listitem>
<para>配信範囲(例えば、ファイル、セッション、ファイルおよび
セッション、もしくはセッション内のファイル)
</para>
</listitem>
<listitem>
<para>セッションID
</para>
</listitem>
<listitem>
<para>クラス(例えば、通知または要求)
</para>
</listitem>
<listitem>
<para>アドレス(例えば、オブジェクト、ハンドラ、プロシジャ)
</para>
</listitem>
<listitem>
<para>処置(破棄、キュー、起動)
</para>
</listitem>
<listitem>
<para>引き数
</para>
</listitem>
</itemizedlist>
</sect1>
<Sect1 Id="TTUG.ttsnp.div.9">
<Title>Snoopの開始</Title>
<Para><command>Snoop -&gt; On</command>を選択して、メッセージおよび
パターンのトラフィックの表示をオンにしてください。
</Para>
</Sect1>
<Sect1 Id="TTUG.ttsnp.div.10">
<Title>Snoopの停止</Title>
<Para><command>Snoop -&gt; Off</command>を選択して、メッセージおよび
パターンのトラフィックの表示をオフにしてください。
</Para>
</Sect1>
</Chapter>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 05:02:32-->

View File

@@ -0,0 +1,668 @@
<!-- $XConsortium: ch04.sgm /main/6 1996/09/08 19:35:49 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Chapter Id="TTUG.tttrc.div.1">
<Title Id="TTUG.tttrc.mkr.1">ToolTalkトレースの使い方</Title>
<Para>ToolTalk
<IndexTerm>
<Primary>ttsessionトレース</Primary>
</IndexTerm>ttsessionトレースは、ToolTalkパターンをttsessionにある各メッセージと
一致させ配信する方法を示します。本リリースのToolTalkトレースは次のことを行い
ます。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>単一クライアントのToolTalkとの対話を表示します。この機能により、実行者は
のクライアントだけをトレースできます。</Para>
</ListItem>
<ListItem>
<Para>ttsessionトレースを、たとえばメッセージ型、送信者、または受信者ごとといった
フィルタに通します。</Para>
</ListItem>
</ItemizedList>
<Sect1 Id="TTUG.tttrc.div.2">
<Title>ToolTalkトレースへのアクセス</Title>
<Para>本リリースの新規コマンドである
<IndexTerm>
<Primary>tttrace</Primary>
</IndexTerm><IndexTerm>
<Primary>ToolTalkコマンド</Primary>
<Secondary>tttrace</Secondary>
</IndexTerm><Command>tttrace</Command>は、おもにToolTalkトレースへのアクセスに
使用します。このコマンドは、用途やコマンド行インタフェースの点で、
<IndexTerm>
<Primary>trussコマンド</Primary>
</IndexTerm><Command>truss</Command>コマンドに似ています。このコマンドにより、3
種類のToolTalkトレースをコントロールできます。
<IndexTerm>
<Primary>tttraceコマンド</Primary>
</IndexTerm><Command>tttrace</Command>コマンドには、
<IndexTerm>
<Primary>サーバ・モード</Primary>
</IndexTerm><Symbol Role="Variable">サーバ</Symbol>
・モードと
<IndexTerm>
<Primary>クライアント・モード</Primary>
</IndexTerm><Symbol Role="Variable">クライアント</Symbol>・モードの2つの基本
モードがあります。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>サーバ・モードでは、Session_Trace要求を送信することによって、
<Command>tttrace</Command>が指定されたセッションのトレースを指示します。</Para>
</ListItem>
<ListItem>
<Para>クライアント・モードでは、<Command>tttrace</Command>は環境変数を設定し、コマ
ンド行に指定されたToolTalkクライアント・コマンドを実行します。実行されたクライアン
トの環境変数は、クライアント・メッセージとクライアントAPI呼び出しをトレースするか
どうかとその方法を
<IndexTerm>
<Primary>libtt</Primary>
</IndexTerm><Command>libtt</Command>に指示します。</Para>
</ListItem>
</ItemizedList>
<Note>
<Para><Command>tttrace</Command>は、旧バージョンのサーバや、
<Command>libtt</Command>の旧バージョンを使用するクライアントとの下位互換性はありま
せん。<Command>tttrace</Command>は旧バージョンのサーバを検出して診断する一方で、
<Command>libtt</Command>の旧バージョンを使用するクライアント上で何も通知せずに
異常終了します。.</Para>
</Note>
</Sect1>
<Sect1 Id="TTUG.tttrc.div.3">
<Title>トレースのコントロール</Title>
<Sect2 Id="TTUG.tttrc.div.4">
<Title>libttトレースのコントロール</Title>
<Para><Command>libtt</Command>トレースの動作をコントロールする方法の1つは、
<IndexTerm>
<Primary>環境変数</Primary>
<Secondary>$DT_TT_TRACE_SCRIPT</Secondary>
</IndexTerm>環境変数
<ComputerOutput>$
<IndexTerm>
<Primary>$DT_TT_TRACE_SCRIPT</Primary>
</IndexTerm>TT_TRACE_SCRIPT</ComputerOutput>を設定することです。</Para>
<Note>
<Para><Command>libtt</Command>のトレースは、変数の値が正確でなかったり、一貫性が
ない場合は異常終了します。</Para>
</Note>
</Sect2>
<Sect2 Id="TTUG.tttrc.div.5">
<Title>クライアント側トレースのコントロール</Title>
<Para>The
<IndexTerm>
<Primary>tt_trace_control呼び出し</Primary>
</IndexTerm><Filename>tt_trace_control</Filename>呼び出しは、内部フラグを設定また
はクリアして、すべてのクライアント側トレースをコントロールします。この呼び出しを
使用して、コード内の問題の領域をトレースします。この呼び出しの形式は次のとおりで
す。</Para>
<ProgramListing>int tt_trace_control(int <Symbol Role="Variable">option</Symbol>)</ProgramListing>
<Para><Symbol Role="Variable">option</Symbol>の値として0を指定するとトレースをオフ
にし、1を指定するとトレースをオンにします。-1を指定すると、トレースのオンとオフを
切り替えます。トレースがオンの場合は、トレースの範囲を
<IndexTerm>
<Primary>tttraceコマンド</Primary>
</IndexTerm><Filename>TT_TRACE_SCRIPT</Filename>変数かトレースファイルでコントロー
ルします。この呼び出しは、トレース・フラグの以前の設定を返します。</Para>
</Sect2>
</Sect1>
<Sect1 Id="TTUG.tttrc.div.6">
<Title>ToolTalkセッション内のメッセージ・トラフィックのトレース</Title>
<Para>
<IndexTerm>
<Primary>Session_Trace要求</Primary>
</IndexTerm>Session_Trace要求は、ttsessionがそれ自身を処理するために登録する
ToolTalk要求です。つまり、ttsessionはSession_Trace要求のハンドラです。この要求は、
どのToolTalkクライアントでも送信できます。お勧めできる方法ではありませんが、この
要求を処理するために他のToolTalkクライアントを登録できます。この方法では
トレースは<Symbol Role="Variable">行われません</Symbol>。)この要求の構文は次の
とおりです。</Para>
<ProgramListing>[<Symbol Role="Variable">file</Symbol>] Session_Trace( in boolean <Symbol Role="Variable">on</Symbol>,
in boolean <Symbol Role="Variable">follow</Symbol>
[in attribute <Symbol Role="Variable">toPrint</Symbol>
|in state <Symbol Role="Variable">toTrace</Symbol>
|in op <Symbol Role="Variable">toTrace</Symbol>
|in handler_ptype <Symbol Role="Variable">toTrace</Symbol>
|in sender_ptype <Symbol Role="Variable">toTrace</Symbol>][...] );</ProgramListing>
<Para>Session_Trace要求は、配信範囲指定されたセッションでのメッセージ・トレースを
オンまたはオフにします。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para>トレースがオンで、要求のファイル属性が設定されている場合、後続のトレース出力
は属性が名前を付けたファイルに付け加えられます。
</Para>
</ListItem>
<ListItem>
<Para>トレースがオンで、ファイル属性が<Symbol Role="Variable">設定されていない
</Symbol>場合、トレースは現在のトレースを続行します。</Para>
</ListItem>
</ItemizedList>
<Para>デフォルトの場合、<Emphasis>デーモン</Emphasis>・モードではttsessionを実行中
のホストのコンソールが出力先になります。ジョブ・コントロール・モードでは、
ttsessionの標準エラーが出力先になります。
<!--Original XRef content: 'Table&numsp;4&hyphen;1'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.tttrc.mkr.2">は、この要求の必須
およびオプションの引き数を示しています。</Para>
<Table Id="TTUG.tttrc.tbl.1" Frame="Topbot">
<Title Id="TTUG.tttrc.mkr.2">Session_Trace引き数</Title>
<TGroup Cols="3">
<ColSpec Colname="1" Colwidth="1.56191 in">
<ColSpec Colname="2" Colwidth="0.65667 in">
<ColSpec Colname="3" Colwidth="2.79167 in">
<THead>
<Row>
<Entry><Para><Literal>引き数</Literal></Para></Entry>
<Entry></Entry>
<Entry><Para><Literal>説明</Literal></Para></Entry>
</Row>
</THead>
<TBody>
<Row>
<Entry><Para><Command>boolean</Command> <Emphasis>on</Emphasis></Para></Entry>
<Entry><Para>必須</Para></Entry>
<Entry><Para>トレースをオンまたはオフにします。<Emphasis>toTrace</Emphasis>引き数
がなく<Emphasis>on</Emphasis>がtrueの場合は、前のトレース設定が復元されます。
</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>boolean</Command> <Emphasis>follow</Emphasis></Para></Entry>
<Entry><Para>必須</Para></Entry>
<Entry><Para>起動したクライアントのクライアント側トレースをオンにします。
</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>attribute</Command> <Emphasis>toPrint</Emphasis></Para></Entry>
<Entry><Para>オプション</Para></Entry>
<Entry><Para>トレースされた各メッセージの属性を出力します。
有効な属性は次のとおりです。</Para><Para>&bull; <Symbol Role="Variable">none</Symbol>&ndash;トレースされた各メッセージの記述を1行だけ
出力(デフォルト)</Para><Para>&bull; <Symbol Role="Variable">all</Symbol>&ndash;トレースされたメッセージの属性全部を出力</Para></Entry>
</Row>
<Row>
<Entry></Entry>
<Entry></Entry>
<Entry></Entry>
</Row>
<Row>
<Entry></Entry>
<Entry></Entry>
<Entry></Entry>
</Row>
<Row>
<Entry><Para><Command>state</Command> <Emphasis>toTrace</Emphasis></Para></Entry>
<Entry><Para>オプション</Para></Entry>
<Entry><Para>メッセージをトレースするための状態。
<Filename>tt_c.h</Filename>に定義されているTt_statesの他に有効な
<Symbol Role="Variable">状態</Symbol>は次のとおりです。</Para><Para>&bull; <Emphasis>edge</Emphasis>&ndash;初期の状態(<Filename>TT_SENT</Filename>)
と最後の状態(<Filename>TT_HANDLED</Filename>, <Command>TT_FAILED</Command>)
を入力しているメッセージ</Para><Para>&bull; <Emphasis>deliver</Emphasis>&ndash;すべての状態の変更と、すべてのクライアントの
配信</Para><Para>&bull; <Emphasis>dispatch</Emphasis>&ndash;deliver状態および一致
するように考慮されたすべてのパターン(デフォルト)</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>op</Command> <Emphasis>toTrace</Emphasis></Para><Para><Filename>sender_ptype</Filename> <Emphasis>toTrace</Emphasis></Para><Para><Filename>handler_ptype</Filename> <Emphasis>toTrace</Emphasis></Para></Entry>
<Entry><Para>オプション</Para><Para>オプション</Para><Para>オプション</Para></Entry>
<Entry><Para>表示されたメッセージの属性の値として<Emphasis>toTrace</Emphasis>を
持っているトレース・メッセージ</Para><Para>&bull;要求には、<Emphasis>toTrace</Emphasis>引き数を任意の数だけ
含めることができます。</Para><Para><Emphasis>&bull; toTrace</Emphasis>には<Command>sh</Command>(シェル)のワイルドカード文字も指定できます。</Para><Para>&bull; 指定のメッセージ属性に対してtoTrace引き数がない場合、トレースから
メッセージを除外する属性の値もありません。</Para></Entry>
</Row>
</TBody>
</TGroup>
</Table>
<Para>現在のセッション・トレースの動作には、この要求が失敗しない場合にのみ変更され
ます。失敗した場合には、応答の<ComputerOutput>tt_message_status</ComputerOutput>
は、
<!--Original XRef content: 'Table&numsp;4&hyphen;2'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.tttrc.mkr.3">で説明されている
エラーの1つに設定されます。</Para>
<Table Id="TTUG.tttrc.tbl.2" Frame="Topbot">
<Title Id="TTUG.tttrc.mkr.3">Session_Trace要求が返すエラー・メッセージ</Title>
<TGroup Cols="2">
<ColSpec Colname="1" Colwidth="2.0 in">
<ColSpec Colname="2" Colwidth="3.0 in">
<THead>
<Row>
<Entry><Para><Literal>エラー</Literal></Para></Entry>
<Entry><Para><Literal>説明</Literal></Para></Entry>
</Row>
</THead>
<TBody>
<Row>
<Entry><Para><Filename><IndexTerm>
<Primary>TT_ERR_NO_MATCH</Primary>
</IndexTerm><IndexTerm>
<Primary>エラー</Primary>
<Secondary>TT_ERR_NO_MATCH</Secondary>
</IndexTerm>TT_ERR_NO_MATCH</Filename></Para></Entry>
<Entry><Para>要求に対するハンドラを見つけることができません。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command><IndexTerm>
<Primary>TT_ERR_APPFIRST + EACCES</Primary>
</IndexTerm><IndexTerm>
<Primary>エラー</Primary>
<Secondary>TT_ERR_APPFIRST + EACCES</Secondary>
</IndexTerm>TT_ERR_APPFIRST + EACCES</Command></Para></Entry>
<Entry><Para>ttsessionがトレース・ファイルを開くまたは作成するためのアクセス権を
持っていません。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command><IndexTerm>
<Primary>TT_ERR_APPFIRST + EISDIR</Primary>
</IndexTerm><IndexTerm>
<Primary>エラー</Primary>
<Secondary>TT_ERR_APPFIRST + EISDIR</Secondary>
</IndexTerm>TT_ERR_APPFIRST + EISDIR</Command></Para></Entry>
<Entry><Para>トレース・ファイルがディレクトリです。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command><IndexTerm>
<Primary>TT_ERR_APPFIRST + ENOSPC</Primary>
</IndexTerm><IndexTerm>
<Primary>エラー</Primary>
<Secondary>TT_ERR_APPFIRST + ENOSPC</Secondary>
</IndexTerm>TT_ERR_APPFIRST + ENOSPC</Command></Para></Entry>
<Entry><Para>ターゲット・ファイル・システムにトレース・ファイル作成の
十分なスペースがありません。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command><IndexTerm>
<Primary>TT_ERR_APPFIRST + EEXIST</Primary>
</IndexTerm><IndexTerm>
<Primary>エラー</Primary>
<Secondary>TT_ERR_APPFIRST + EEXIST</Secondary>
</IndexTerm>TT_ERR_APPFIRST + EEXIST</Command></Para></Entry>
<Entry><Para>トレースがすでに別のファイルで行われています。
ttsessionは、応答のファイル属性を再設定して既存のトレース・ファイルの名前を付け
ます。別のファイルへのトレースを行うには、最初に現在のトレース・ファイルへの
トレースをオフにします。</Para></Entry>
</Row>
</TBody>
</TGroup>
</Table>
</Sect1>
<Sect1 Id="TTUG.tttrc.div.7">
<Title>サーバによるToolTalk呼び出しとメッセージのトレース</Title>
<Para>
<IndexTerm>
<Primary>tttrace関数</Primary>
</IndexTerm><IndexTerm>
<Primary>ToolTalk関数</Primary>
<Secondary>tttrace</Secondary>
</IndexTerm><Command>tttrace</Command>関数は、指定のToolTalkセッションのために
サーバによりメッセージ・トラフィックをトレースするか、ToolTalkクライアント・トレー
スをオンにしてコマンドを実行します。セッションとコマンドの両方とも指定されない場合
は、デフォルトのセッションがトレースされます。デフォルトでは、<Command>tttrace
</Command>が終了するとトレースも終了します。この関数の構文は次のとおりです。
</Para>
<ProgramListing>tttrace [-0FCa] [-o <Symbol Role="Variable">outfile</Symbol> ] [-S <Symbol Role="Variable">session</Symbol> | <Symbol Role="Variable">command</Symbol>]
tttrace [-e <Symbol Role="Variable">script</Symbol> | -f <Symbol Role="Variable">scriptfile</Symbol> ] [-S <Symbol Role="Variable">session</Symbol> | <Symbol Role="Variable">command</Symbol>]</ProgramListing>
<Para><!--Original XRef content: 'Table&numsp;4&hyphen;3'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.tttrc.mkr.4">では、
<Command>tttrace</Command>オプションにつて説明します。</Para>
<Table Id="TTUG.tttrc.tbl.3" Frame="Topbot">
<Title Id="TTUG.tttrc.mkr.4">tttraceオプション</Title>
<TGroup Cols="2">
<ColSpec Colname="1" Colwidth="0.84259 in">
<ColSpec Colname="2" Colwidth="4.14583 in">
<THead>
<Row>
<Entry><Para><Literal>Option</Literal></Para></Entry>
<Entry><Para><Literal>Description</Literal></Para></Entry>
</Row>
</THead>
<TBody>
<Row>
<Entry><Para><Command>-0</Command></Para></Entry>
<Entry><Para>セッション内のメッセージ・トレースをオフにするか、メッセージ・トレー
スを行わないで(つまり呼び出しのトレースだけを行って)指定コマンドを実行します。
</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>-F</Filename></Para></Entry>
<Entry><Para>指定のコマンドによってフォークされた、またはttsessionによりセッション
内で続けて起動されたすべての子を追跡します。通常、指定のコマンドだけかttsession
インスタンスがトレースされます。<Filename>-F</Filename>オプションが指定されている
場合、プロセスIDがトレース出力の各行に表示され、どのプロセスが生成したかを示しま
す。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>-C</Filename></Para></Entry>
<Entry><Para>ToolTalk APIへのクライアント呼び出しをトレースしないようにします。
デフォルトでは呼び出しをトレースします。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>-a</Command></Para></Entry>
<Entry><Para>トレースされたメッセージのすべての属性、引き数、およびコンテキスト・
スロットを出力します。デフォルトでは、トレース出力へメッセージを出力するには単一
行だけを使用します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>-o</Filename> <Symbol Role="Variable">outfile</Symbol></Para></Entry>
<Entry><Para>トレース出力に使用されるファイル。セッション・トレースの場合、出力先
はtttraceの標準出力です。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>-S</Filename> <Symbol Role="Variable">session</Symbol></Para></Entry>
<Entry><Para>トレースするセッション。デフォルトではデフォルト・セッション、つまり
<IndexTerm>
<Primary>tt_open</Primary>
</IndexTerm><Filename>tt_open</Filename>が通知するセッションです。</Para></Entry>
</Row>
<Row>
<Entry><Para><Symbol Role="Variable">command</Symbol></Para></Entry>
<Entry><Para>起動し、トレースを行うToolTalkクライアント・コマンド。</Para></Entry>
</Row>
<Row>
<Entry><Para>-e <Symbol Role="Variable">script</Symbol></Para></Entry>
<Entry><Para><Command>ttrace</Command>設定として使用されるスクリプト。</Para></Entry>
</Row>
<Row>
<Entry><Para>-f <Symbol Role="Variable">scriptfile</Symbol></Para></Entry>
<Entry><Para><Command>tttrace</Command>設定を読み取るファイル。</Para></Entry>
</Row>
</TBody>
</TGroup>
</Table>
<Para><Command>tttrace</Command>は、ttsessionへのメッセージ・インタフェースと
<IndexTerm>
<Primary>TT_TRACE_SCRIPT環境変数</Primary>
</IndexTerm><Filename>TT_TRACE_SCRIPT</Filename>環境変数を使用するToolTalk
クライアントとして実行できるようになっています。この変数が設定されると、トレース・
スクリプトに指定されているようにクライアント側トレースをオンにすることを
<Command>libtt</Command>に通知します。値の最初の文字が「.」か「/」の場合、その値
は使用するトレース・スクリプトが入っているファイルのパス名として認識されます。その
他の文字の場合は、インライン・トレース・スクリプトとして認識されます。</Para>
<Sect2 Id="TTUG.tttrc.div.8">
<Title>トレースされた関数の形式</Title>
<Para>次は、トレースされたToolTalk関数の例です。</Para>
<ProgramListing>[<Symbol Role="Variable">pid</Symbol>] <Symbol Role="Variable">function_name</Symbol>(<Symbol Role="Variable">params</Symbol>) = <Symbol Role="Variable">return_value</Symbol> (<Symbol Role="Variable">Tt_status</Symbol>)</ProgramListing>
<Sect3 Id="TTUG.tttrc.div.9">
<Title>メッセージ要約形式</Title>
<Para><Filename>-a</Filename>オプションは、次のように1行のメッセージ要約の後に、
メッセージ属性を出力します。</Para>
<ProgramListing><Symbol Role="Variable">Tt_state Tt_paradigm Tt_class</Symbol> (<Symbol Role="Variable">Tt_disposition in Tt_scope</Symbol>): <Symbol Role="Variable">status</Symbol> == <Symbol Role="Variable">Tt_status</Symbol></ProgramListing>
</Sect3>
<Sect3 Id="TTUG.tttrc.div.10">
<Title>状態変更形式</Title>
<Para>状態の変更は次の形式で示されます。</Para>
<ProgramListing><Symbol Role="Variable">old_state</Symbol> => <Symbol Role="Variable">new_state</Symbol>.</ProgramListing>
</Sect3>
<Sect3 Id="TTUG.tttrc.div.11">
<Title>メッセージ配信形式</Title>
<Para>配信は次のように示されます。</Para>
<ProgramListing>Tt_message => procid <Symbol Role="Variable">recipient_procid</Symbol></ProgramListing>
<Para><!--Original XRef content: 'Table&numsp;4&hyphen;4'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.tttrc.mkr.5">は、ディスパッチ・
トレース中に受信するメッセージについて説明しています。</Para>
<Table Id="TTUG.tttrc.tbl.4" Frame="Topbot">
<Title Id="TTUG.tttrc.mkr.5">ディスパッチ・トレース用の理由</Title>
<TGroup Cols="2">
<ColSpec Colname="1" Colwidth="1.86148 in">
<ColSpec Colname="2" Colwidth="3.16667 in">
<THead>
<Row>
<Entry><Para><Literal>メッセージ</Literal></Para></Entry>
<Entry><Para><Literal>説明</Literal></Para></Entry>
</Row>
</THead>
<TBody>
<Row>
<Entry><Para><Filename>tt_message_send</Filename></Para></Entry>
<Entry><Para>送信するメッセージ。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>tt_message_reject</Filename></Para></Entry>
<Entry><Para>メッセージが拒否されました。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>tt_message_fail</Filename></Para></Entry>
<Entry><Para>メッセージが無視されました。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>tt_message_reply</Filename></Para></Entry>
<Entry><Para>メッセージへの応答。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>tt_session_join</Filename></Para></Entry>
<Entry><Para>参加するセッション。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>tt_file_join</Filename></Para></Entry>
<Entry><Para>参加するファイル。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>tt_message_reply</Filename></Para></Entry>
<Entry><Para>クライアントが指定の関数を呼び出しました。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>tt_message_send_on_exit</Filename></Para></Entry>
<Entry><Para>ttsessionは、<Filename>tt_close</Filename>を呼び出す前に切り離された
クライアントに対してon_exitメッセージをディスパッチしています。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>tt_message_accept</Filename></Para></Entry>
<Entry><Para>ttsessionは、ptypeが起動されている間にブロックされたメッセージを
ディスパッチしています。起動されたクライアントは、ptypeがブロック解除されることを
示す<Filename>tt_message_accept</Filename>か<Filename>tt_message_reply</Filename>
のどちらかを呼び出します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>TT_ERR_PTYPE_START</Filename></Para></Entry>
<Entry><Para>ptypeインスタンスがメッセージの受信のために起動されましたが、起動コマ
ンドはttsessionに接続される前に終了しました。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>TT_ERR_PROCID</Filename></Para></Entry>
<Entry><Para>ttsessionはこの要求に応じて動作中であったクライアントの接続を切りまし
た。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>ttsession -> ttsession</Command></Para></Entry>
<Entry><Para>別のセッションがこのセッションに対してメッセージの受信者を見つけるよ
うに求めています。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>ttsession &lt;- ttsession</Command></Para></Entry>
<Entry><Para>別のセッションがこのセッションで発信したメッセージの更新(たとえば
失敗すること)を求めています。</Para></Entry>
</Row>
</TBody>
</TGroup>
</Table>
</Sect3>
<Sect3 Id="TTUG.tttrc.div.12">
<Title>形式の照合</Title>
<Para>ディスパッチがトレースされているとき、照合は次の形式のうちの1つで示されま
す。</Para>
<ProgramListing>Tt_message &amp; Tt_pattern {
Tt_message &amp; ptype <Symbol Role="Variable">ptid</Symbol> {
Tt_message &amp; otype <Symbol Role="Variable">otid</Symbol> {</ProgramListing>
<Para>パターンまたはシグニチャが次の形式で出力されます。</Para>
<ProgramListing>} == <Symbol Role="Variable">match_score</Symbol>; [/* <Symbol Role="Variable">mismatch_reason</Symbol> */]</ProgramListing>
</Sect3>
</Sect2>
<Sect2 Id="TTUG.tttrc.div.13">
<Title>例</Title>
<Para>この節では、tttrace関数の使用例を取り上げます。</Para>
<Sect3 Id="TTUG.tttrc.div.14">
<Title>パターンの登録とパターンの一致通知の送信</Title>
<Para>パターンを登録し、そのパターンに一致するという通知を送信するには、次のように
入力します。</Para>
<ProgramListing>&percnt; tttrace -a <Symbol Role="Variable">myclientprogram</Symbol></ProgramListing>
<Para><!--Original XRef content: 'Code&numsp;Example&numsp;4&hyphen;1'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.tttrc.mkr.6">は、その結果を示し
ます。</Para>
<Example Id="TTUG.tttrc.tbl.5">
<Title Id="TTUG.tttrc.mkr.6">パターンの登録と通知の送信</Title>
<ProgramListing>tt_open() = 0x51708==&ldquo;7.jOHHM X 129.144.153.55 0&ldquo; (TT_OK)
tt_fd() = 11 (TT_OK)
tt_pattern_create() = 0x50318 (TT_OK)
tt_pattern_category_set(0x50318, TT_OBSERVE) = 0 (TT_OK)
tt_pattern_scope_add(0x50318, TT_SESSION) = 0 (TT_OK)
tt_pattern_op_add(0x50318, 0x2f308==&ldquo;Hello World&ldquo;) = 0 (TT_OK)
tt_default_session() = 0x519e0==&ldquo;X 129.144.153.55 0&ldquo; (TT_OK)
tt_pattern_session_add(0x50318, 0x519e0==&ldquo;X 129.144.153.55 0&ldquo;) = 0 (TT_OK)
tt_pattern_register(0x50318) = 0 (TT_OK)
tt_message_create() = 0x51af0 (TT_OK)
tt_message_class_set(0x51af0, TT_NOTICE) = 0 (TT_OK)
tt_message_address_set(0x51af0, TT_PROCEDURE) = 0 (TT_OK)
tt_message_scope_set(0x51af0, TT_SESSION) = 0 (TT_OK)
tt_message_op_set(0x51af0, 0x2f308==&ldquo;Hello World&ldquo;) = 0 (TT_OK)
tt_message_send(0x51af0) ...
TT_CREATED => TT_SENT:
TT_SENT TT_PROCEDURE TT_NOTICE (TT_DISCARD in TT_SESSION): 0 == TT_OK
id: 0 7.jOHHM X 129.144.153.55 0
op: Hello World
session: X 129.144.153.55 0
sender: 7.jOHHM X 129.144.153.55 0
= 0 (TT_OK)
tt_message_receive() ...
Tt_message => procid &lt;7.jOHHM X 129.144.153.55 0>
TT_SENT TT_PROCEDURE TT_NOTICE (TT_DISCARD in TT_SESSION): 0 == TT_OK
id: 0 7.jOHHM X 129.144.153.55 0
op: Hello World
session: X 129.144.153.55 0
sender: 7.jOHHM X 129.144.153.55 0
pattern: 0:7.jOHHM X 129.144.153.55 0
= 0x51af0 (TT_OK)
</ProgramListing></Example>
<Para>ttsessionによるメッセージ・フローの表示を見るには、次のように入力します。
</Para>
<ProgramListing>&percnt; tttrace -a</ProgramListing>
<Para>ttsession's view</Para>
<Example Id="TTUG.tttrc.tbl.6">
<Title Id="TTUG.tttrc.mkr.7">ttsessionによるトレースの表示</Title>
<ProgramListing>tt_message_reply:
TT_SENT => TT_HANDLED:
TT_HANDLED TT_PROCEDURE TT_REQUEST (TT_DISCARD in TT_SESSION): 0 == TT_OK
id: 0 2.jOHHM X 129.144.153.55 0
op: Session_Trace
args: TT_IN string: &ldquo;> /tmp/traceAAAa002oL; version 1; states&ldquo;[...]
session: X 129.144.153.55 0
sender: 2.jOHHM X 129.144.153.55 0
pattern: 0:X 129.144.153.55 0
handler: 0.jOHHM X 129.144.153.55 0
Tt_message => procid &lt;2.jOHHM X 129.144.153.55 0>
tt_message_send:
TT_CREATED TT_PROCEDURE TT_NOTICE (TT_DISCARD in TT_SESSION): 0 == TT_OK
id: 0 7.jOHHM X 129.144.153.55 0
op: Hello World
session: X 129.144.153.55 0
sender: 7.jOHHM X 129.144.153.55 0
TT_CREATED => TT_SENT:
TT_SENT TT_PROCEDURE TT_NOTICE (TT_DISCARD in TT_SESSION): 0 == TT_OK
id: 0 7.jOHHM X 129.144.153.55 0
op: Hello World
session: X 129.144.153.55 0
sender: 7.jOHHM X 129.144.153.55 0
Tt_message &amp; Tt_pattern {
id: 0:7.jOHHM X 129.144.153.55 0
category: TT_OBSERVE
scopes: TT_SESSION
sessions: X 129.144.153.55 0
ops: Hello World
} == 3;
Tt_message => procid &lt;7.jOHHM X 129.144.153.55 0></ProgramListing>
</Example>
<Para><Emphasis>mylientprogram</Emphasis>のメッセージ・フローの表示は、
<!--Original XRef content: 'Code&numsp;Example&numsp;4&hyphen;2'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.tttrc.mkr.7">のとおりです。</Para>
<Note>
<Para>トレースされた最初のメッセージは、ほとんどの場合<Command>tttrace</Command>
が送信した要求へのttsessionによる応答になります。</Para>
</Note>
</Sect3>
<Sect3 Id="TTUG.tttrc.div.15">
<Title>メッセージ・フローのトレース</Title>
<Para>特定の、デフォルトではないセッション内のメッセージ・フローをトレースするに
は、次のように入力します。</Para>
<ProgramListing>&percnt; tttrace -S &ldquo;01 15303 1342177284 1 0 13691 129.144.153.55 2&ldquo;</ProgramListing>
<Para><Emphasis>&ldquo;01 15303 1342177284 1 0 13691 129.144.153.55 2&ldquo;</Emphasis>は、デフォルトではない
特定のトレースされるセッションです。</Para>
<Para><Emphasis>&ldquo;01 15303 1342177284 1 0 13691 129.144.153.55 2&ldquo; is the</Emphasis></Para>
</Sect3>
</Sect2>
</Sect1>
<Sect1 Id="TTUG.tttrc.div.16">
<Title>ToolTalkトレースのための設定</Title>
<Para><Command>tttrace</Command>スクリプトには、ToolTalk呼び出しとメッセージをコン
トロールする設定があります。<Command>tttrace</Command>スクリプトは、セミコロンか
復帰改行で区切られたコマンドから成ります。重複している値が設定に指定されると、最後
の値が使用されます。
<!--Original XRef content: 'Table&numsp;4&hyphen;5'-->
<XRef Role="CodeOrFigureOrTable" Linkend="TTUG.tttrc.mkr.8">では、これらのコマンド
について説明します。</Para>
<Table Id="TTUG.tttrc.tbl.7" Frame="Topbot">
<Title Id="TTUG.tttrc.mkr.8">tttraceスクリプト・コマンド</Title>
<TGroup Cols="2">
<ColSpec Colname="1" Colwidth="1.88658 in">
<ColSpec Colname="2" Colwidth="4.53704 in">
<THead>
<Row>
<Entry><Para><Literal>コマンド</Literal></Para></Entry>
<Entry><Para><Literal>説明</Literal></Para></Entry>
</Row>
</THead>
<TBody>
<Row>
<Entry><Para><Command>version</Command> n</Para></Entry>
<Entry><Para>使用されている<Filename>tttracefile</Filename>コマンド構文のバーショ
ン。現在のバージョンは1です。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>follow [off | on]</Command></Para></Entry>
<Entry><Para>トレースされたクライアントによってフォークされた、またはトレースされ
たセッションで続けて起動されたすべての子についても追跡するかどうか設定します。
デフォルトは<Command>off</Command>です。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>[> | >>]</Command> <Emphasis>outfile</Emphasis></Para></Entry>
<Entry><Para>トレース出力に使用されるファイル。デフォルトでは、トレースの出力先は
標準エラーです。<Emphasis>></Emphasis>と<Emphasis>>></Emphasis>の通常のシェル解釈
が適用されます。</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>functions</Command> [all | none |
<Emphasis>func...</Emphasis>]</Para></Entry>
<Entry><Para>トレースするToolTalk API関数。<Emphasis>func</Emphasis>には、シェル・
ワイルドカード文字が入ります。デフォルトは<Command>all</Command>です。
</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>attributes [all | none]</Command></Para></Entry>
<Entry><Para><Command>none</Command>(デフォルト)は、トレース出力にメッセージを
出力するとき、単一行だけを使用することを意味します。<Command>all</Command>は、
トレースされたメッセージの属性、引き数、コンテキスト・スロットすべてを出力すること
を意味します。</Para></Entry>
</Row>
<Row>
<Entry><Para><Filename>states [none | edge |
deliver | dispatch |</Filename>
<StructName Role="typedef">Tt_state</StructName><Filename>]...</Filename></Para></Entry>
<Entry><Para>メッセージをトレースするための状態。<Filename>tt_c.h</Filename>に定議
されているTt_statesの他に有効な<Symbol Role="Variable">状態</Symbol>は次のとおりで
す。</Para><Para>&bull; <Command>none</Command> &ndash; メッセージのトレースをすべ
て使用不可能にする</Para><Para>&bull; <Command>edge</Command> &ndash; 最初の状態
(<Filename>TT_SENT</Filename>)と最後の状態(<Filename>TT_HANDLED</Filename>と
<Filename>TT_FAILED</Filename>)を入力しているメッセージ</Para><Para>&bull; <Command>deliver</Command> &ndash; すべての状態の変更と、すべての
クライアントの配信</Para><Para>&bull; <Command>dispatch</Command> &ndash; 配信およ
び一致するように考慮されたすべてのパターン(デフォルト)</Para></Entry>
</Row>
<Row>
<Entry><Para><Command>ops</Command> <Emphasis>toTrace</Emphasis>...</Para><Para><Filename>sender_ptypes</Filename> <Emphasis>toTrace</Emphasis>...</Para><Para><Filename>handler_ptypes</Filename> <Emphasis>toTrace</Emphasis>...</Para></Entry>
<Entry><Para>表示されたメッセージの属性として<Emphasis>toTrace</Emphasis>を持って
いるトレース・メッセージ。<Emphasis>toTrace</Emphasis>にはシェル・ワイルドカード
文字が入ります。指定のメッセージ属性に対して<Emphasis>toTrace</Emphasis>
引き数がない場合、その属性がどんな値を持っていてもメッセージをトレースから除外する
ことはありません。</Para></Entry>
</Row>
</TBody>
</TGroup>
</Table>
</Sect1>
</Chapter>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 05:02:32-->

View File

@@ -0,0 +1,31 @@
<!-- $XConsortium: credits.sgm /main/1 1996/12/17 06:38:48 cde-hit $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<!--Para: Copyright &xd3; 1994, 1995 Hewlett-Packard Company
Copyright &xd3; 1994, 1995 International Business Machines Corp.
Copyright &xd3; 1994, 1995 Sun Microsystems, Inc.
Copyright &xd3; 1994, 1995 Novell, Inc.-->
<!--Para: All rights reserved. This product and related documentation are protected by copyright and distributed under licenses
restricting its use, copying, distribution, and decompilation. No part of this product or related documentation may be
reproduced in any form by any means without prior written authorization.-->
<!--Para: RESTRICTED RIGHTS LEGEND: Use, duplication, or disclosure by the United States Government is subject to the restrictions
set forth in DFARS 252.227-7013 (c)(1)(ii) and FAR 52.227-19.-->
<!--Para: THIS PUBLICATION IS PROVIDED &xd2;AS IS&xd3; WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE, OR NON-INFRINGEMENT.-->
<!--Para: The code and documentation for the DtComboBox and DtSpinBox widgets were contributed by Interleaf, Inc. Copyright 1993,
Interleaf, Inc.-->
<!--Para: ToolTalk is a registered trademark of Sun Microsystems, Inc.-->
<!--Para: UNIX is a trademark exclusively licensed through X/Open Company, Ltd.-->
<!--Para: Motif and Motif are trademarks of Open Software Foundation, Ltd.-->
<!--Para: X Window System is a trademark of X Consortium, Inc.-->
<!--Para: PostScript is a trademark of Adobe Systems, Inc., which may be registered in certain jurisdictions.-->
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 05:02:32-->

View File

@@ -0,0 +1,256 @@
<!-- $XConsortium: preface.sgm /main/7 1996/09/08 19:35:59 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->
<Preface Id="TTUG.Pref.div.1">
<Title>はじめに</Title>
<Para>このマニュアルでは、共通デスクトップ環境のコンポーネント、コマンド、および、
ToolTalk<Superscript>&reg;</Superscript>サービスのエラー・メッセージについて記述しています。</Para>
<Note>
<Para>一般的なToolTalkサービスの機能についてのより詳細な情報は、このマニュアルの対象外です
。 つまり、この<Emphasis>共通デスクトップ環境ToolTalkメッセージの概要</Emphasis> では、ToolTalk API全般、コマンド、そして共通デスクトップ環境対応である今回の
リリースには特に関連のないToolTalk機能等については<Emphasis Role="Lead-in">説明していません</Emphasis>。
これらの情報については、
<IndexTerm>
<Primary>ToolTalkリファレンスマニュアル</Primary>
</IndexTerm><Emphasis>ToolTalkリファレンスマニュアル</Emphasis> および
<IndexTerm>
<Primary>ToolTalkユーザー</Primary>
</IndexTerm><IndexTerm>
<Primary>ズガイド</Primary>
</IndexTerm><Emphasis>ToolTalkユーザーズガイド</Emphasis>を参照してください。</Para>
</Note>
<Sect1 Id="TTUG.Pref.div.2">
<Title>対象読者</Title>
<Para>このマニュアルは、ToolTalkサービスを使用して共通デスクトップ環境で他のアプリケーションと
連携するアプリケーションを作成し保守する開発者を対象としています
。 このマニュアルでは、読者が<![ %Solaris; [the ToolTalk service and
its functionality, UNIX<Superscript>&trade;</Superscript> ]]>オペレーティング・システムのコマンド、システム管理者の
コマンド、およびシステム用語についての知識を持っていると想定しています。</Para>
</Sect1>
<Sect1 Id="TTUG.Pref.div.3">
<Title>このマニュアルの構成</Title>
<Para>このマニュアルは、次のように構成されています。</Para>
<Para><Literal><!--Literal closed to allow XRef:--></Literal>
<!--Original XRef content: 'Chapter&numsp;1, &xd2;Introducing the ToolTalk Service'-->
<XRef Role="ChapNumAndTitle" Linkend="TTUG.tttrc.mkr.1">は、ToolTalkのサービスの動作、
アプリケーションが提供した情報を使ってToolTalkサービスがメッセージを配信する
方法、アプリケーションがToolTalkサービスを使用する方法、およびアプリケーション
とToolTalkのコンポーネントについて説明します。</Para>
<Para><Literal><!--Literal closed to allow XRef:--></Literal>
<!--Original XRef content: 'Chapter&numsp;2, &xd2;How to Use ToolTalk Messaging'-->
<XRef Role="ChapNumAndTitle" Linkend="TTUG.HTU.mkr.1">は、アプリケーションを
作成するのに必要となる共通デスクトップ環境下でのToolTalkサービスの使用方法を
説明します。 他のToolTalk対応の共通デスクトップ環境準拠のアプリケーションと
連携するためにアプリケーションに組み込む必要のあるToolTalkツールキット・
メッセージの種類についても説明します。</Para>
<Para><Literal><!--Literal closed to allow XRef:--></Literal>
<!--Original XRef content: 'Chapter&numsp;3, &xd2;Using TTSnoop to Debug Messages and Patterns'-->
<XRef Role="ChapNumAndTitle" Linkend="TTUG.tttrc.mkr.1">は、カスタム構築の
ToolTalkメッセージを作成および送信する方法と、ToolTalkメッセージの一部または
すべてを選択して監視する方法についても説明します。</Para>
<Para><Literal><!--Literal closed to allow XRef:--></Literal>
<!--Original XRef content: 'Chapter&numsp;4, &xd2;Using ToolTalk Tracing'-->
<XRef Role="ChapNumAndTitle" Linkend="TTUG.tttrc.mkr.1">は、ToolTalkパターンを
ttsessionにある各メッセージと一致させ配信する方法について説明します。</Para>
<Para><Literal><!--Literal closed to allow XRef:--></Literal>
<!--Original XRef content: 'Appendix&numsp;A, &xd2;The Messaging Toolkit'-->
<XRef Role="AppendixNumAndTitle" Linkend="TTUG.MsgTk.mkr.1">は、メッセージ・ツールキットの一部であるアプリケーション・
プログラム・インタフェース(API 関数)について説明します。</Para>
<Para><Literal><!--Literal closed to allow XRef:--></Literal>
<!--Original XRef content: 'Appendix&numsp;B, &xd2;The broadcast Demonstration Program'-->
<XRef Role="AppendixNumAndTitle" Linkend="TTUG.BrCast.mkr.1">は、ToolTalkデモ・プログラム、
<literal>broadcast</literal>のソース・コードについて説明します。</Para>
<para>付録では、スレッド・セイフToolTalkアプリケーションの作成について説明します。
</para>
</Sect1>
<Sect1 Id="TTUG.Pref.div.4">
<Title>関連マニュアルとその他の文書</Title>
<Para>この<Emphasis>共通デスクトップ環境 ToolTalkメッセージの概要</Emphasis> には、
ToolTalkとその機能についての詳細な情報は<Emphasis>載っていません</Emphasis>。 ToolTalkプロダクトの基本マニュアル
(つまり、 <Emphasis>ToolTalkユーザーズガイド</Emphasis>と<Emphasis>ToolTalkリファレンスマニュアル</Emphasis>),
の他に、次のToolTalkの関連マニュアルにも、
<IndexTerm>
<Primary>このマニュアルの範囲</Primary>
</IndexTerm>このマニュアルには載っていない
<Indexterm>
<Primary>ToolTalkとその機能についての詳しい情報</Primary>
</Indexterm>
ToolTalkの機能についての詳細な情報が載っています。</Para>
<ItemizedList Remap="Bullet1">
<ListItem>
<Para><Emphasis><IndexTerm>
<Primary>The ToolTalk Service - An Inter-Operability Solution, ISBN 013-088717-X</Primary>
</IndexTerm>The ToolTalk Service - An Inter-Operability Solution</Emphasis> <Emphasis>(SunSoft Press/PTR Prentice Hall, ISBN 013-088717-X により発行)</Emphasis></Para>
<Para><Emphasis>このマニュアルでは、ToolTalkとその機能について詳細に説明しています。
また、ToolTalkが移植されたすべてのプラットフォームで使用可能です。一般の書店または
PTR Prentice Hallから直接お求めになれます。</Emphasis></Para>
</ListItem>
<ListItem>
<Para><Emphasis><IndexTerm>
<Primary>ToolTalk and Open Protocols, ISBN 013-031055-7</Primary>
</IndexTerm>ToolTalk and Open Protocols</Emphasis> <Emphasis>Astrid M. Julienne およびBrian Holtz著
(SunSoft Press/PTR Prentice Hall, ISBN 013-031055-7により発行)</Emphasis></Para>
<Para>このマニュアルは、他のアプリケーションと通信するためにメッセージ・サービス
を使用するアプリケーション用のオープン・プロトコルを作成および開発する方法について
説明しています。このマニュアルで説明している一般原理は、ツールを簡単に交換するため
にユーザーが必要とする柔軟性をアプリケーションに提供します。一般の書店またはPTR
Prentice Hallから直接お求めになれます。</Para>
</ListItem>
<ListItem>
<Para><Emphasis>ToolTalk Message Sets</Emphasis></Para>
<ItemizedList Remap="Bullet2">
<ListItem>
<Para>ToolTalk
<IndexTerm>
<Primary>Desktop Services Message Set</Primary>
</IndexTerm> Desktop Services Message Set</Para>
<Para>これらの規約は、POSIXまたはX11環境にあるツールに適用されます。これらの
環境標準メッセージの他に、デスクトップの規約はToolTalk内部クライアント規約の
すべてに適用されるデータ型とエラー・コードを定義します。</Para>
</ListItem>
<ListItem>
<Para>ToolTalk
<IndexTerm>
<Primary>Document and Media Exchange Message Set</Primary>
</IndexTerm>Document and Media Exchange Message Set</Para>
<Para>ツールを任意のメディアのコンテナ、またはそのようなコンテナから駆動される
メディア・プレイヤー/エディタにします。</Para>
</ListItem>
<ListItem>
<Para><Emphasis><IndexTerm>
<Primary>CASE Inter-Operability Message Set</Primary>
</IndexTerm>CASE Inter-Operability Message Set</Emphasis></Para>
<Para>SunSoft、DECおよびSGIによって、CASEセットアップのための抽象的なフレーム・
ワーク・ニュートラル・メッセージ・インタフェースを定義する<Emphasis>オープン</Emphasis>仕様。
この作業はHPのCASE Communique作業にマージされ、HPのSoftBench Broadcast Message
Serverフレームワーク用のメッセージ・インタフェースを定義し、ANSI X3H6に共同
ドラフトとして提出されたものです。このマニュアルが書かれた時点では、ANSI X3H6は、
共同ドラフトをまだレビュー中です。
<IndexTerm>
<Primary>X3H6標準</Primary>
</IndexTerm>X3H6標準のドラフトに関する情報については、
<Indexterm>
<Primary>/pub/X3H6</Primary>
</Indexterm>/pub/X3H6の
<Emphasis><IndexTerm>
<Primary>ftp.netcomcom</Primary>
</IndexTerm>ftp.netcom.com</Emphasis> から
取り出すことができます。または下記のところに連絡をとることもできます。</Para>
</ListItem>
</ItemizedList>
</ListItem>
</ItemizedList>
<Para>X3 Secretariat
<IndexTerm>
<Primary>Computer and Business Equipment Manufactures Assoc</Primary>
</IndexTerm>
Computer and Business Equipment Manufactures Assoc
1250 Eye St NW
Washington DC&numsp;&numsp;20005-3922
Telephone: (202) 737-8888 (press `1' twice)
Fax: (202) 638-4922 or (202) 628-2829</Para>
</Sect1>
<Sect1 Id="TTUG.Pref.div.5">
<Title>ToolTalkのニュースグループ</Title>
<Para>ToolTalkの
<IndexTerm>
<Primary>ニュースグループ</Primary>
</IndexTerm>ニュースグループは次のとおりです。</Para>
<Para><IndexTerm>
<Primary>alt.soft-sys.tooltalk</Primary>
</IndexTerm> <Emphasis>alt.soft-sys.tooltalk</Emphasis></Para>
</Sect1>
<sect1 id="TTUG.Pref.div.6">
<title>表記上の規則</title>
<para>次の表に、このマニュアルで使用する表記上の規則を示します。
このマニュアルは、DocBook文書型定義(DTD)を使用したSGML(StandardGeneralized Mark-Up Language)で記述されています。
</para>
<table id="TTUG.Pref.tbl.1" frame="Topbot">
<title>表記上の規則</title>
<tgroup cols="3" colsep="0" rowsep="0">
<colspec colwidth="1.65in">
<colspec colwidth="2.63in">
<colspec colwidth="2.92in">
<thead>
<row>
<entry align="left" valign="bottom"><para><literal>文字または記号</literal></para></entry>
<entry align="left" valign="bottom"><para><literal>意味</literal></para></entry>
<entry align="left" valign="bottom"><para><literal>使用例</literal></para></entry></row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><para><command>AaBbCc123</command></para></entry>
<entry align="left" valign="top"><para>コマンドの名前。</para></entry>
<entry align="left" valign="top"><para><command>ls</command>コマンドを使用してファイルをリストします。</para></entry>
</row>
<row>
<entry align="left" valign="top"><para><literal>AaBbCc123</literal></para></entry>
<entry align="left" valign="top"><para>コマンド・オプションの名前。</para></entry>
<entry align="left" valign="top"><para><command>ls</command> <literal>&minus;a</literal>を使用して
すべてのファイルをリストします。</para></entry>
</row>
<row>
<entry align="left" valign="top"><para><symbol role="Variable">AaBbCc123</symbol></para></entry>
<entry align="left" valign="top"><para>コマンド行プレイス・ホルダー:
実際に使用する特定の名前または値で置き換えます。</para></entry>
<entry align="left" valign="top"><para>ファイルを削除するには、<command>rm</command> <symbol role="Variable">filename</symbol>を入力します。</para></entry>
</row>
<row>
<entry align="left" valign="top"><para><filename>AaBbCc123</filename></para></entry>
<entry align="left" valign="top"><para>ファイルとディレクトリ
の名前</para></entry>
<entry align="left" valign="top"><para><filename>.login</filename>ファイルを
編集します。</para></entry>
</row>
<row>
<entry align="left" valign="top"><para><emphasis>AaBbCc123</emphasis></para></entry>
<entry align="left" valign="top"><para>書名、新しい語句、用語や
強調される語句。</para></entry>
<entry align="left" valign="top"><para><emphasis>ユーザーズ・ガイド</emphasis>の
第6章を参照してください。
これらは<emphasis>クラス</emphasis>オプションです。
使用する際は、<emphasis>必ず</emphasis>rootでなくてはなりません。</para></entry>
</row>
<row>
<entry align="left" valign="top"><para>「」</para></entry>
<entry align="left" valign="top"><para>参照する章、節を示します。また、強調する単語を囲む場合にも使用します。</para></entry>
<entry align="left" valign="top"><para>第章「ToolTalkサービスの紹介」、「統合ツールセット」など</para></entry>
</row>
<row>
<entry align="left" valign="top"><para>[ ]</para></entry>
<entry align="left" valign="top"><para>アイコン、ボタン、メニューなどのラベルに使用します。</para></entry>
<entry align="left" valign="top"><para>[了解]ボタン</para></entry>
</row>
<row>
<entry><para>コード例は次のように表示されます。</para></entry>
</row>
<row>
<entry align="left" valign="top"><para>%</para></entry>
<entry align="left" valign="top"><para>UNIX Cシェル・プロンプト</para></entry>
<entry align="left" valign="top"><para>system%</para></entry>
</row>
<row>
<entry align="left" valign="top"><para>$</para></entry>
<entry align="left" valign="top"><para>UNIX Bourneシェル・プロンプトおよび
Kornシェル・プロンプト</para></entry>
<entry align="left" valign="top"><para>system$</para></entry>
</row>
<row>
<entry align="left" valign="top"><para>#</para></entry>
<entry align="left" valign="top"><para>スーバーユーザ・プロンプト(すべてのシェル)</para></entry>
<entry align="left" valign="top"><para>system#</para></entry>
</row></tbody></tgroup></table>
<note>
<para>(バックスラッシュ)は、デバイスによって¥(円記号)で
表示されるものがあります。</para>
</note>
</sect1>
</Preface>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 05:02:32-->