You can specify the following types of scopes in your message patterns:
Scope to a session only.
Scope to a file only.
Scope only to a file in a particular session.
Scope to either or both a file and a session.
File scopes are restricted to NFS and UFS file systems; you cannot scope a file across other types of file systems (for example, a tmpfs file system).
The type TT_SESSION
scopes to a session only. Static session-scoped patterns require an explicit tt_session_join call to set the scope value; dynamic session-scoped
patterns can be set with either the tt_session_join call
or the tt_pattern_session_add call.
The session specified by these calls must be the default session.
Example 3–1 shows a static session-scoped pattern; Example 3–2 shows a dynamic session-scoped pattern.
Obtain procid |
tt_open(); |
Ptype is scoped to session |
tt_ptype_declare(ptype); |
Join session |
tt_session_join(tt_default_session()); |
Obtain procid |
tt_open(); |
Create pattern |
Tt_pattern pat = tt_create_pattern(); |
Add scope to pattern |
tt_pattern_scope_add(pat, TT_SESSION); |
Add session to pattern |
tt_pattern_session_add (tt_default_session()); |
Register pattern |
tt_pattern_register(pat); |
The type TT_FILE
scopes to a file only. Example 3–3 shows a static file-scoped pattern; Example 3–4 shows a dynamic file-scoped pattern.
Obtain procid |
tt_open(); |
Ptype is scoped to file |
tt_ptype_declare(ptype); |
Join file |
tt_file_join(file); |
Obtain procid |
tt_open(); |
Create pattern |
Tt_pattern pat = tt_create_pattern(); |
Add scope to pattern |
tt_pattern_scope_add(pat, TT_FILE); |
Add file to pattern |
tt_pattern_file_add (pat, file); |
Register pattern |
tt_pattern_register(pat); |
The type TT_FILE_IN_SESSION
scopes to the specified file in the specified session only.
A pattern with this scope set will only match messages that are scoped to
both the file and the session. Example 3–5 adds the session and then registers the pattern.
Obtain procid |
tt_open(); |
Create pattern |
Tt_pattern pat = tt_create_pattern(); |
Add scope to pattern |
tt_pattern_scope_add(pat,TT_FILE_IN_SESSION); |
Add file to pattern |
tt_pattern_file_add(pat, file); |
Add session to pattern |
tt_pattern_session_add(pat, tt_default_session()); |
Register pattern |
tt_pattern_register(pat); |
Example 3–6 registers the pattern and then joins a session.
TT_FILE_IN_SESSION
-Scoped Pattern
Obtain procid |
tt_open(); |
Create pattern |
Tt_pattern pat = tt_create_pattern(); |
Add scope to pattern |
tt_pattern_scope_add(pat, TT_FILE_IN_SESSION); |
Add file to pattern |
tt_pattern_file_add(pat, file); |
Register pattern |
tt_pattern_register(pat); |
Join session |
tt_session_join(tt_default_session()); |
Example 3–7 sets the scope value for a static pattern.
TT_FILE_IN_SESSION
Static Pattern
Obtain procid |
tt_open(); |
Declare Ptype |
Tt_ptype_declare(ptype); |
Join File |
tt_file_join(file); |
Join session |
tt_session_join(tt_default_session()); |
A TT_BOTH
-scoped
pattern will match messages that are scoped to the file, the session, or the
file and the session. However, when you use this scope, you must explicitly
make a tt_file_join call; otherwise, the ToolTalk service
will only match messages that are scoped to both the file and session of the
registered pattern. Example 3–8 and Example 3–9 show examples of how to use this scope.
TT_BOTH
Scope
Obtain procid |
tt_open(); |
Create pattern |
Tt_pattern pat = tt_create_pattern(); |
Add scope to pattern |
tt_pattern_scope_add(pat, TT_BOTH); |
Add session to pattern |
tt_pattern_session_add(pat,tt_default_session()); |
Add file to pattern |
tt_pattern_file_add (pat, file); |
Register pattern |
tt_pattern_register(pat); |
TT_BOTH
Scope
Obtain procid |
tt_open(); |
Declare Ptype |
Tt_ptype_declare(ptype); |
Join file |
tt_file_join(file); |
Join session |
tt_session_join(tt_default_session()); |
To match TT_SESSION
-scoped messages and TT_SESSION
-scoped patterns that have the same file attributes, you can
add file attributes to TT_SESSION
-scoped
patterns with the tt_pattern_file_add call, as shown in Example 3–10.
The file attribute values do not affect the scope of the pattern.
Obtain procid |
tt_open(); |
Create pattern |
Tt_pattern pat = tt_create_pattern(); |
Add scope to pattern |
tt_pattern_scope_add(pat, TT_SESSION); |
Add session to pattern |
tt_pattern_session_add(tt_default_session()); |
Add first file attribute to pattern |
tt_pattern_file_add(pat, file1); |
Add second file attribute to pattern |
tt_pattern_file_add(pat, file2); |
Register pattern |
tt_pattern_register(pat); |