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

<この項の構成>
(1) C#の場合のコーディング例
(2) J#の場合のコーディング例
(3) Visual Basicの場合のコーディング例

(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