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

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

import jvmsgque.mqmsgque.*;
import jvmsgque.mkkernel.*;

final class MyTransaction extends MqContextC {

  static class CallbackC implements MqServiceIF {
    public void Callback(MqContextC ctx) {
      ctx.ReadT_START();
      String myPrivateHandle = ctx.ReadSTR();
      ctx.ReadT_END();
      int myServiceResult = ctx.ReadI32();

      System.out.println("myPrivateHandle=" + myPrivateHandle + ", myServiceResult=" + myServiceResult);
    }
  }

  public static void main(String[] argv) {
    MyTransaction ctx = new MyTransaction();
    try {
      ctx.ConfigSetName("MyTransaction");

      // setup commandline arguments used for parsing
      MkBufferListC args = new MkBufferListC(argv);

      // check if the '--token' option is available, default "SRVC"
      String token = args.CheckOptionSTR("--token", "SRVC");

      // connect to the server
      ctx.LinkCreate(args);

      // register callback
      ctx.ServiceCreate("CLB1", new CallbackC());
       
      // 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(MqWaitOnEventE.OWN);

    } catch (Throwable e) {
      ctx.ErrorCatch(e);
    }
    ctx.Exit();
  }
}