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); |