Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Extension for .NET Framework 使用の手引


4.3.4 .NETインタフェース定義を使用しないSPP.NETのコーディング例

〈この項の構成〉

(1) C#の場合のコーディング例

using System;
using Hitachi.OpenTP1;
using Hitachi.OpenTP1.Server;
 
namespace MyApplication
{
  public class MySPP : SPPBase
  {
    public MySPP()
    {
      // コンストラクタの処理
      // ** コンストラクタでOpenTP1のクラスは使用できません **
      // ** 必要な初期化処理はInitializeSPPで行ってください **
    }
    ~MySPP()
    {
      // デストラクタの処理
      // ** デストラクタでOpenTP1のクラスは使用できません **
      // ** 必要な終了処理はFinalizeSPPで行ってください **
    }
    // SPP初期化および終了処理メソッドの実装
    public override void InitializeSPP() {
      // SPPの初期化処理
    }
    public override void FinalizeSPP() {
      // SPPの終了処理
    }
    // サービスメソッドの実装(引数の並びは固定です)
    // クライアントからRPCで呼び出されます
    [TP1RpcMethod]
    public void Service1(byte[] inData, int inLen,
                         byte[] outData, ref int outLen)
    {
      // Service1()の処理
    }
    [TP1RpcMethod]
    public void Service2(byte[] inData, int inLen,
                         byte[] outData, ref int outLen)
    {
      // Service2()の処理
    }
    // SPP内部メソッドの実装(自由に実装できます)
    // RPCで呼び出すことはできません
    public string GetUserInfo()
    {
      // 処理
    }
    private void PutErrorLog(string errorInfo, int errorCode)
    {
      // 処理
    }
  }
}

(2) J#の場合のコーディング例

package MyApplication;
import System.*;
import Hitachi.OpenTP1.*;
import Hitachi.OpenTP1.Server.*;
 
public class MySPP extends SPPBase
{
  public MySPP()
  {
    // コンストラクタの処理
    // ** コンストラクタでOpenTP1のクラスは使用できません **
    // ** 必要な初期化処理はInitializeSPPで行ってください **
  }
  protected void Finalize()
  {
    // Finalizeメソッドの処理
    // ** FinalizeメソッドでOpenTP1のクラスは使用できません **
    // ** 必要な終了処理はFinalizeSPPで行ってください **
  }
  // SPP初期化および終了処理メソッドの実装
  public void InitializeSPP() {
    // SPPの初期化処理
  }
  public void FinalizeSPP() {
    // SPPの終了処理
  }
 
  // サービスメソッドの実装 (引数の並びは固定です)
  // クライアントからRPCで呼び出されます
  /** @attribute TP1RpcMethod() */
  void Service1(ubyte[] inData, int inLen,
                ubyte[] outData, IntHolder outLen)
  {
    // Service1()の処理
  }
 
  /** @attribute TP1RpcMethod () */
  void Service2(ubyte[] inData, int inLen,
                ubyte[] outData, IntHolder outLen)
  {
    // Service2()の処理
  }
 
  // SPP内部メソッドの実装(自由に実装できます)
  // RPCで呼び出すことはできません
  public String GetUserInfo()
  {
    // 処理
  }
  private void PutErrorLog(String errorInfo, int errorCode)
  {
    // 処理
  }
}

(3) Visual Basicの場合のコーディング例

Imports System
Imports Hitachi.OpenTP1
Imports Hitachi.OpenTP1.Server
 
Namespace MyApplication
  Public Class MySPP
    Inherits SPPBase
    Sub MySPP()
      ' コンストラクタの処理
      ' ** コンストラクタでOpenTP1のクラスは使用できません **
      ' ** 必要な初期化処理はInitializeSPPで行ってください **
    End Sub
    Sub Finalize()
      'Finalizeメソッドの処理
      ' ** FinalizeメソッドでOpenTP1のクラスは使用できません **
      ' ** 必要な終了処理はFinalizeSPPで行ってください **
    End Sub
    ' SPP初期化および終了処理メソッドの実装
    Public Overrides Sub InitializeSPP()
      ' SPPの初期化処理
    End Sub
    Public Overrides Sub FinalizeSPP()
      ' SPPの終了処理
    End Sub
 
    ' サービスメソッドの実装 (引数の並びは固定です)
    ' クライアントからRPCで呼び出されます
    <TP1RpcMethod()> _
    Public Sub Service1(ByVal inData() As Byte, _
                        ByVal inLen As Integer, _
                        ByVal outData() As Byte, _
                        ByRef outLen As Integer)
      ' Service1()の処理
    End Sub
 
    <TP1RpcMethod()> _
    Public Sub Service2(ByVal inData() As Byte, _ 
     ByVal inLen As Integer, _
     ByVal outData() As Byte, ByRef outLen As Integer)
      ' Service2()の処理
    End Sub
 
    ' SPP内部メソッドの実装(自由に実装できます)
    ' RPCで呼び出すことはできません
    Public Function GetUserInfo() As String
      ' 処理
    End Function
    Private Sub PutErrorLog(errorInfo As String, _
                            errorCode As Integer)
      ' 処理
    End Sub
  End Class
End Namespace