ToolTalk User's Guide

Scope Attributes

You can specify the following types of scopes in your message patterns:

  1. Scope to a session only.

  2. Scope to a file only.

  3. Scope only to a file in a particular session.

  4. Scope to either or both a file and a session.


Note –

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


Scoping to a Session Only

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.


Note –

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.


Example 3–1 Static Session-Scoped Pattern

Obtain procid  

tt_open();  

Ptype is scoped to session 

tt_ptype_declare(ptype);  

Join session 

tt_session_join(tt_default_session()); 



Example 3–2 Dynamic Session-Scoped Pattern with a File Attribute

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


Scoping to a File Only

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.


Example 3–3 Static File-Scoped Pattern

Obtain procid 

tt_open();  

Ptype is scoped to file 

tt_ptype_declare(ptype); 

Join file 

tt_file_join(file); 



Example 3–4 Dynamic File-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); 

Add file to pattern 

tt_pattern_file_add (pat, file); 

Register pattern 

tt_pattern_register(pat); 


Scoping to a File in a Session

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.


Example 3–5 Adding a Session to the 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); 

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.


Example 3–6 Joining a Session to Set the Session of a 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.


Example 3–7 Setting the Scope Value for a 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()); 


Scoping to a File and/or a 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.


Example 3–8 A Dynamic Pattern that Uses the 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); 



Example 3–9 A Static Pattern that Uses the 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()); 


Adding Files to Scoped Patterns

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.


Note –

The file attribute values do not affect the scope of the pattern.



Example 3–10 Adding Two File Attributes to a 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_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);