1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "TGSRequest"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit

'Request Code
Private m_hRequest As Long
'[INTERNAL ] ******************************* Native Low-Level API *********************************************
Private Declare Function gsAddRequestAction Lib "gsCore.dll" Alias "#37" (ByVal hReq As Long, ByVal actId As Byte, ByVal hLic As Long) As Long
Private Declare Function gsGetRequestCode Lib "gsCore.dll" Alias "#45" (ByVal hReq As Long) As Long


'============================== Internal Properties ====================================
Friend Property Let handle(ByVal hRequest As Long)
  m_hRequest = hRequest
End Property

Friend Property Get handle() As Long
  handle = m_hRequest
End Property


Private Sub Class_Terminate()
  Call gsCloseHandle(m_hRequest)
End Sub

Friend Function addAction(ByVal actId As Byte, Optional entity As TGSEntity = Nothing) As TGSAction
  Dim hAct As Long
  
  If entity Is Nothing Then
    hAct = gsAddRequestAction(m_hRequest, actId, 0)
  Else
    hAct = gsAddRequestAction(m_hRequest, actId, entity.License.handle)
  End If
  
  If hAct <> 0 Then
    Set addAction = New TGSAction
    addAction.handle = hAct
  Else
    err.Raise vbObjectError + GSErr.ACTION_CREATE_FAILURE, "TGSRequest.addAction", "Action create failure!"
  End If
End Function

Friend Property Get Code() As String
  Code = PCharToStr(gsGetRequestCode(m_hRequest))
End Property