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 + -
显示快捷键?