theLink 10.0 NHI1 - theKernel - theLink - theConfig - theSq3Lite - theCompiler - theBrain - theGuard
c - tcl - cs - py - rb - jv - cc
Loading...
Searching...
No Matches
Example: MyTransaction

Documentation of the MyTransaction tool used for example.test.

INTRODUCTION

The MyTransaction tool is used to test the longterm-transaction-feature of tclmqmsgque.

To test this feature the client connect to the server and send two service-calls:

  • one longterm-transaction-service-call using the low-api
  • one longterm-transaction-service-call using the high-api

The service-call itself is quite simple:

  • the private part is a string : Privat_Data_1 or Privat_Data_2
  • the public part is an integer : 1111 or 2222

The GOAL for this test is:

  • test the longterm-transaction-feature
  • test the BufferListCheckOptionSTR with and without default-value
  • test the callback-feature with and without error

CODE client

package require tclmqmsgque
namespace import tclmqmsgque::*
namespace import tclmkkernel::*

proc callback {ctx} {
  $ctx ReadT_START
  set myPrivateHandle [$ctx ReadSTR]
  $ctx ReadT_END
  set myServiceResult [$ctx ReadI32]

  puts "myPrivateHandle=$myPrivateHandle, myServiceResult=$myServiceResult"
}

# setup the client-context
set ctx [MqContextC new]

try {

  $ctx ConfigSetName "MyTransaction"

  # setup commandline arguments used for parsing
  set args [MkBufferListC CreateLA {*}$argv]

  # check if the '--token' option is available, default "SRVC"
  set token [$args CheckOptionSTR "--token" "SRVC"]
   
  # connect to the server
  $ctx LinkCreate $args
   
  # register callback
  $ctx ServiceCreate CLB1 callback
   
  # send block using the LOW-Api
  $ctx SendSTART
  $ctx SendT_START
  $ctx SendSTR "Privat_Data_1"
  $ctx SendT_END
  $ctx SendI32 11111
  $ctx SendEND_AND_TRANSACTION $token CLB1
   
  # send block using the HIGN-Api -> same as above, but shorter
  $ctx Send "T" CLB1 "$token:(C)I" "Privat_Data_2" 22222
   
  # now we wait for exact ONE result of the $ctx
  $ctx ProcessEvent MQ_WAIT_OWN

} on error {} {
  $ctx ErrorCatch
} finally {
  $ctx Exit
}