testagent.frm

来自「SRI international 发布的OAA框架软件」· FRM 代码 · 共 250 行

FRM
250
字号
VERSION 5.00
Begin VB.Form frmMain 
   Caption         =   "TestAgent"
   ClientHeight    =   3330
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   4830
   LinkTopic       =   "Form1"
   ScaleHeight     =   3330
   ScaleWidth      =   4830
   StartUpPosition =   3  'Windows Default
   Begin VB.Frame SolveablesFrame 
      Caption         =   "Solveables"
      Height          =   3015
      Left            =   120
      TabIndex        =   0
      Top             =   120
      Width           =   4455
      Begin VB.ListBox SolveablesList 
         Height          =   2595
         Left            =   120
         TabIndex        =   1
         Top             =   240
         Width           =   4335
      End
   End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Public WithEvents myOaaEvents As Oaa2JavaNet.LibOaaEvents
Attribute myOaaEvents.VB_VarHelpID = -1
Dim oaaUtil As Oaa2JavaNet.ILibOaaUtil
Dim comFactory As Oaa2COMFactory
Dim comFactoryImpl As Oaa2COMFactoryImpl
Const AGENT_NAME = "TestAgent"
Const CONNECTION_ID = "parent"
Dim buildStrCachEnabled As Boolean
Dim onekstring As String
Dim fivekstring As String
Dim tenkstring As String
Dim twentykstring As String
Dim fiftykstring As String
Dim sixtykstring As String
Dim fiftykLen As Long
Dim sixtykLen As Long

Private Sub Form_Load()
    Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 1000)
    Me.Top = GetSetting(App.Title, "Settings", "MainTop", 1000)
    Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 6500)
    Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 6500)
    ' Needed to avoid an overflow error where intermediate values are integers
    fiftykLen = 50
    fiftykLen = fiftykLen * 1024
    sixtykLen = 60
    sixtykLen = sixtykLen * 1024
    buildStrCachEnabled = False
    onekstring = BuildString(1024)
    fivekstring = BuildString(5 * 1024)
    tenkstring = BuildString(10 * 1024)
    twentykstring = BuildString(20 * 1024)
    fiftykstring = BuildString(fiftykLen)
    sixtykstring = BuildString(sixtykLen)
    buildStrCachEnabled = True
    Call initOaa
End Sub

Private Sub initOaa()
    Set oaaUtil = New LibOaaUtil
    
    ' To set the connect address and port of the dotnetproxyagent, uncomment these lines:
    ' These lines must be the first lines of the application, executed before any
    ' .NET objects are created.
    ' oaaUtil.setConnectAddress ("128.18.233.111")
    ' oaaUtil.setConnectPort (4080)
    
    Set comFactoryImpl = New Oaa2COMFactoryImpl
    Set comFactory = comFactoryImpl
    Set myOaaEvents = New Oaa2JavaNet.LibOaaEvents
    Dim ievents As Oaa2JavaNet.ILibOaaEvents
    Set ievents = myOaaEvents
    
    Dim protocol As Oaa2JavaNet.LibComTcpProtocol
    Set protocol = New Oaa2JavaNet.LibComTcpProtocol
    Dim libCom As Oaa2JavaNet.libCom
    Dim strArray() As String
    
    ReDim strArray(1)
    strArray(0) = "-oaa_listen"
    strArray(1) = "tcp('localhost',4020)"
    
    Set libCom = comFactoryImpl.newLibCom(protocol, strArray)
    
    Set myOaa = comFactory.newLibOaa(libCom)
    If Not myOaa.oaaSetupCommunication(AGENT_NAME) Then
        MsgBox ("Error: Failed to setup OAA")
    End If
    
    Dim solveables As Oaa2JavaNet.IclTerm
    Set solveables = oaaUtil.fromString("[add(Num1, Num2, Sum),doNothing(Nothing),copyString(A,B),makeString(Len,Ret),setData(Data,RetLength),copyData(A,B)]")
    
    myOaa.oaaRegister CONNECTION_ID, AGENT_NAME, solveables, New Oaa2JavaNet.IclList
    myOaa.oaaReady True
    
    ievents.setLibOaa myOaa
    ievents.oaaRegisterCallback "app_do_event"
End Sub

Private Sub myOaaEvents_DoOAAEvent(ByVal goalTerm As Oaa2JavaNet.IclTerm, ByVal params As Oaa2JavaNet.IclList, ByVal solutions As Oaa2JavaNet.IclList)
    'MsgBox ("Got Event: " & goalTerm.ToIdentifyingString() & ", " & params.ToIdentifyingString() & ", " & solutions.ToIdentifyingString())
    Dim goalStr As String
    goalStr = goalTerm.ToIdentifyingString
    
    If goalStr = "add" Then
        Call addOaa(goalTerm, solutions)
    End If
    If goalStr = "doNothing" Then
        Call doNothingOaa(goalTerm, solutions)
    End If
    If goalStr = "copyString" Then
        Call copyStringOaa(goalTerm, solutions)
    End If
    If goalStr = "makeString" Then
        Call makeStringOaa(goalTerm, solutions)
    End If
    If goalStr = "setData" Then
        Call setDataOaa(goalTerm, solutions)
    End If
    If goalStr = "copyData" Then
        Call copyDataOaa(goalTerm, solutions)
    End If
End Sub

Private Sub addOaa(ByRef goalTerm As Oaa2JavaNet.IclTerm, ByRef solutions As Oaa2JavaNet.IclList)
    Dim term1 As Oaa2JavaNet.IclTerm
    Dim term2 As Oaa2JavaNet.IclTerm
    Dim num1 As Long
    Dim num2 As Long
    Set term1 = goalTerm.getTerm(0)
    Set term2 = goalTerm.getTerm(1)
    num1 = term1.IclInt()
    num2 = term2.IclInt()
    Dim sum As Long
    sum = num1 + num2
    Dim sumTerm As Oaa2JavaNet.IclInt
    Set sumTerm = comFactory.newIclIntB(sum)
    
    oaaUtil.Add solutions, comFactory.newIclStructF(goalTerm.ToIdentifyingString, term1, term2, sumTerm)
End Sub

Private Sub doNothingOaa(ByRef goalTerm As Oaa2JavaNet.IclTerm, ByRef solutions As Oaa2JavaNet.IclList)
    oaaUtil.Add solutions, comFactory.newIclStructD(goalTerm.ToIdentifyingString, comFactory.newIclVarA("Nothing"))
End Sub

Private Sub copyStringOaa(ByRef goalTerm As Oaa2JavaNet.IclTerm, ByRef solutions As Oaa2JavaNet.IclList)
    oaaUtil.Add solutions, comFactory.newIclStructE(goalTerm.ToIdentifyingString, goalTerm.getTerm(0).Clone(), comFactory.newIclStrB(goalTerm.getTerm(0).IclStr()))
End Sub

Private Sub makeStringOaa(ByRef goalTerm As Oaa2JavaNet.IclTerm, ByRef solutions As Oaa2JavaNet.IclList)
    oaaUtil.Add solutions, comFactory.newIclStructE(goalTerm.ToIdentifyingString, goalTerm.getTerm(0).Clone(), comFactory.newIclStrB(BuildString(goalTerm.getTerm(0).IclInt())))
End Sub

Private Function BuildString(ByVal strLen As Long) As String
    Dim strCreated As Boolean
    strCreated = False
    If buildStrCachEnabled Then
    If strLen = 1024 Then
        BuildString = onekstring
        strCreated = True
    Else
    If strLen = 5 * 1024 Then
        BuildString = fivekstring
        strCreated = True
    Else
    If strLen = 10 * 1024 Then
        BuildString = tenkstring
        strCreated = True
    Else
    If strLen = 20 * 1024 Then
        BuildString = twentykstring
        strCreated = True
    Else
    If strLen = fiftykLen Then
        BuildString = fiftykstring
        strCreated = True
    Else
    If strLen = sixtykLen Then
        BuildString = sixtykstring
        strCreated = True
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    If strCreated Then
        ' The cached string will be returned...
    Else
        Dim randomString As String
        Dim randomChars As String
        Dim randomCharsLen As Integer
        randomString = Space(strLen)
        randomChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        randomCharsLen = Len(randomChars)
        For f = 1 To strLen
            Randomize
            z = Int(Rnd(1) * randomCharsLen) + 1
            Mid(randomString, f, 1) = Mid(randomChars, z, 1)
        Next f
        BuildString = randomString
    End If
End Function


Private Sub setDataOaa(ByRef goalTerm As Oaa2JavaNet.IclTerm, ByRef solutions As Oaa2JavaNet.IclList)
    Dim length As Long
    Dim data() As Byte
    data = goalTerm.getTerm(0).GetData()
    length = UBound(data) - LBound(data) + 1
    oaaUtil.Add solutions, comFactory.newIclStructE(goalTerm.ToIdentifyingString, comFactory.newIclVarA("Data"), comFactory.newIclIntB(length))
End Sub

Private Sub copyDataOaa(ByRef goalTerm As Oaa2JavaNet.IclTerm, ByRef solutions As Oaa2JavaNet.IclList)
    Dim length As Long
    Dim data() As Byte
    data = goalTerm.getTerm(0).GetData()
    length = UBound(data) - LBound(data) + 1
    oaaUtil.Add solutions, comFactory.newIclStructE(goalTerm.ToIdentifyingString, goalTerm.getTerm(0).Clone(), comFactoryImpl.newIclDataQA(data))
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Dim i As Integer


    'close all sub forms
    For i = Forms.Count - 1 To 1 Step -1
        Unload Forms(i)
    Next
    If Me.WindowState <> vbMinimized Then
        SaveSetting App.Title, "Settings", "MainLeft", Me.Left
        SaveSetting App.Title, "Settings", "MainTop", Me.Top
        SaveSetting App.Title, "Settings", "MainWidth", Me.Width
        SaveSetting App.Title, "Settings", "MainHeight", Me.Height
    End If
End Sub

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?