*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->HP-UX 11i man pages -> ttdt_session_join (3)              
Title
Content
Arch
Section
 

Contents


 ttdt_session_join(library call)             ttdt_session_join(library call)




 NAME    [Toc]    [Back]
      ttdt_session_join - join a ToolTalk session

 SYNOPSIS    [Toc]    [Back]
      #include <Tt/tttk.h>
      Tt_pattern *ttdt_session_join(
      const char *sessid,
      Ttdt_contract_cb cb,
      Widget shell,
      void *clientdata,
      int join);

 DESCRIPTION    [Toc]    [Back]
      The ttdt_session_join function joins the session sessid, registering
      patterns and default callbacks for many standard Desktop message
      interfaces.  If sessid is NULL, the default session is joined.

      The ttdt_session_join function registers for the following
      TT_HANDLER-addressed requests:

         1. Get_Environment, Set_Environment, Get_Locale, Set_Locale,
            Get_Situation, Set_Situation, Signal, Get_Sysinfo

         2. Get_Geometry, Set_Geometry, Get_Iconified, Set_Iconified,
            Get_Mapped, Set_Mapped, Raise, Lower, Get_XInfo

         3. Pause, Resume, Quit

         4. Get_Status, Do_Command

      If join is True, ttdt_session_join actually joins the indicated
      session.

      The ToolTalk service handles messages in (1) transparently.

      If shell is non- NULL, then it is expected to be a realized
      mappedWhenManaged applicationShellWidget, and the ToolTalk service
      handles messages in (2) transparently.  (If shell is merely a realized
      widget, then the ToolTalk service handles only the Get_XInfo request,
      and ttdt_session_join fails the rest of (2) with TT_DESKTOP_ENOTSUP.)
      If shell is NULL, then the ToolTalk service treats messages in (2)
      equivalently to those in (4).

      If shell is non- NULL and cb is NULL, then the ToolTalk service
      handles messages in (3) transparently as follows; otherwise, it treats
      them as equivalent to those in (4).  The Quit request results in a
      WM_DELETE_WINDOW event on shell if the silent and force arguments of
      the Quit request are both False.  In other words, if shell is supplied
      without a cb, then a Quit request may imply that the user quit the
      application's top-level window using the window manager.  Pause and
      Resume requests result in the ToolTalk service passing shell and the



                                    - 1 -       Formatted:  January 24, 2005






 ttdt_session_join(library call)             ttdt_session_join(library call)




      appropriate boolean value to XtSetSensitive(3).

      If cb is not NULL, the ToolTalk service passes messages in (4) to cb;
      otherwise, ttdt_session_join fails with TT_DESKTOP_ENOTSUP.

      The Ttdt_contract_cb argument is a callback defined as:

      Tt_message (*Ttdt_contract_cb)(Tt_message msg,
              void *clientdata,
              Tt_message contract);

      The msg argument is a message in Tt_state TT_SENT. If msg is a
      TT_REQUEST, the client program becomes responsible for either failing,
      rejecting or replying to msg. After doing so, the client program may
      dispose of msg with tttk_message_destroy. The clientdata argument is
      the clientdata passed to ttdt_session_join or ttdt_message_accept(3).
      The contract argument is the contract passed to ttdt_message_accept.
      For callbacks installed by ttdt_session_join, contract is always zero.

 RETURN VALUE    [Toc]    [Back]
      Upon successful completion, the ttdt_session_join function returns a
      null-terminated array of Tt_pattern; otherwise, it returns an error
      pointer.  The application can use tt_ptr_error(3) to extract one of
      the following Tt_status values from the returned handle:

      TT_ERR_NOMEM
                There is insufficient memory available to perform the
                function.

      TT_ERR_NOMP
                The ttsession(1) process is not running and the ToolTalk
                service cannot restart it.

      TT_ERR_POINTER
                The pointer passed does not point to an object of the
                correct type for this operation.

      TT_ERR_PROCID
                The specified process identifier is out of date or invalid.

      TT_ERR_SESSION
                The specified ToolTalk session is out of date or invalid.

 APPLICATION USAGE    [Toc]    [Back]
      The null-terminated array of Tt_pattern returned by ttdt_session_join
      should be destroyed by passing the array to ttdt_file_quit(3).

      The ToolTalk service will reply to the Quit request before generating
      the WM_DELETE_WINDOW event.  If the application catches and cancels
      this event, then the sender of the Quit request will be misled into
      thinking the application actually quit.  Applications that can cancel



                                    - 2 -       Formatted:  January 24, 2005






 ttdt_session_join(library call)             ttdt_session_join(library call)




      WM_DELETE_WINDOW should install a real Ttdt_contract_cb.

      The ToolTalk service handles the Pause and Resume requests by setting
      the sensitivity of widget. If widget is the parent of any top-level
      pop-up shells, XtSetSensitive(3) will not affect them.  Applications
      that can have such pop-ups should install a real Ttdt_contract_cb.

      A Ttdt_contract_cb should return zero if it processes msg
      successfully, or a tt_error_pointer cast to Tt_message if processing
      results in an error.  It should return the msg if it does not consume
      it.  If msg is returned, then the ToolTalk service passes
      TT_CALLBACK_CONTINUE down the call stack, so that msg will be offered
      to other callbacks or (more likely) be returned from
      tt_message_receive(3). Applications will rarely want msg to get
      processed by other callbacks or in the main event loop.

 EXAMPLES    [Toc]    [Back]
      This is the typical algorithm of a Ttdt_contract_cb for an application
      that handles Pause, Resume or Quit requests for itself, but lets the
      ToolTalk service handle the X11-related requests listed in (2).  Since
      this example callback deals with the case when contract is not zero,
      it can also be used as the Ttdt_contract_cb passed to
      ttdt_message_accept.

      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, &silent);
                      tt_message_arg_ival(msg, 1, &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 */



                                    - 3 -       Formatted:  January 24, 2005






 ttdt_session_join(library call)             ttdt_session_join(library call)




                              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 = "Message about status of entire app";
                      } else {
                              status = "Message about status of this request";
                      }
                      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);



                                    - 4 -       Formatted:  January 24, 2005






 ttdt_session_join(library call)             ttdt_session_join(library call)




                      } else {
                              tt_message_reply(msg);
                              tttk_message_destroy(msg);
                      }
                      return 0;
              }
              /* Unrecognized message; do not consume it */
              return msg;
      }

 SEE ALSO    [Toc]    [Back]
      Tt/tttk.h - Tttttk(5), ttdt_session_quit(3), tt_session_join(3),
      XtSetSensitive(3),


                                    - 5 -       Formatted:  January 24, 2005
[ Back ]
      
      
 Similar pages
Name OS Title
tt_session_join HP-UX join a session and make it the default
ttdt_session_quit HP-UX quit a ToolTalk session
concat IRIX Join lists together
nets Tru64 JOIN DHCP server database
ccsync IRIX Power Fortran join accelerator.
dmFXJoinFields IRIX join two fields into a single frame
getjoinstl IRIX translate between strings and join styles
join Linux join lines of two files on a common field
jdbshow Tru64 Display the contents of a specific JOIN server database
dpkg-split Linux Debian package archive split/join tool
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service