theLink 10.0 NHI1 - theKernel - theLink - theConfig - theSq3Lite - theCompiler - theBrain - theGuard
c - tcl - 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 pymqmsgque.

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

import sys
from pymkkernel import *
from pymqmsgque import *

def callback(ctx):
  ctx.ReadT_START()
  myPrivateHandle = ctx.ReadSTR()
  ctx.ReadT_END()
  myServiceResult = ctx.ReadI32()

  print(f"myPrivateHandle={myPrivateHandle}, myServiceResult={myServiceResult}")

ctx = MqContextC()
try:
  ctx.ConfigSetName("MyTransaction")

  # setup commandline arguments used for parsing
  args = MkBufferListC.CreateLA(sys.argv)

  # check if the '--token' option is available, default "SRVC"
  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", f"{token}:(C)I", "Privat_Data_2", 22222)
   
  # now we wait for exact ONE result of the $ctx
  ctx.ProcessEvent(MqWaitOnEventE.OWN)
except Exception as ex:
  ctx.ErrorCatch(ex);
finally:
  ctx.Exit()