types-process-message.go 2.6 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
//----------------------------------------
//
// Copyright © yanghy. All Rights Reserved.
//
// Licensed under Apache License Version 2.0, January 2004
//
// https://www.apache.org/licenses/LICENSE-2.0
//
//----------------------------------------

11 12
package cef

13
import (
yanghye's avatar
yanghye 已提交
14
	"github.com/energye/energy/v2/common/imports"
15 16 17 18
	"github.com/energye/golcl/lcl/api"
	"unsafe"
)

yanghye's avatar
yanghye 已提交
19 20
// ProcessMessageRef -> ICefProcessMessage
var ProcessMessageRef processMessage
21

yanghye's avatar
yanghye 已提交
22 23
// processMessage
type processMessage uintptr
24

yanghye's avatar
yanghye 已提交
25
// new 创建一个进程消息类型 - internal
26 27
//
// 参数: name 消息名
yanghye's avatar
yanghye 已提交
28
func (*processMessage) new(name string) *ICefProcessMessage {
29 30 31
	var result uintptr
	imports.Proc(internale_CefProcessMessageRef_New).Call(api.PascalStr(name), uintptr(unsafe.Pointer(&result)))
	return &ICefProcessMessage{
yanghye's avatar
yanghye 已提交
32
		name:     name,
33 34 35
		instance: unsafe.Pointer(result),
	}
}
yanghye's avatar
yanghye 已提交
36 37 38 39 40

// New 创建一个进程消息类型 - export
//
// 参数: name 消息名
func (m *processMessage) New(name string) *ICefProcessMessage {
yanghye's avatar
yanghye 已提交
41
	if isIPCInternalKey(name) {
yanghye's avatar
yanghye 已提交
42 43 44 45 46
		return nil
	}
	return m.new(name)
}

yanghye's avatar
yanghye 已提交
47 48 49 50 51 52 53
func (m *processMessage) UnWrap(data *ICefProcessMessage) *ICefProcessMessage {
	var result uintptr
	imports.Proc(internale_CefProcessMessageRef_UnWrap).Call(data.Instance(), uintptr(unsafe.Pointer(&result)))
	data.instance = unsafe.Pointer(result)
	return data
}

yanghye's avatar
yanghye 已提交
54
// Instance 实例
55
func (m *ICefProcessMessage) Instance() uintptr {
yanghye's avatar
yanghye 已提交
56 57 58
	if m == nil {
		return 0
	}
59 60 61
	return uintptr(m.instance)
}

yanghye's avatar
yanghye 已提交
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
func (m *ICefProcessMessage) Free() {
	if m != nil && m.instance != nil {
		m.ArgumentList().Free()
		m.base.Free(m.Instance())
		m.instance = nil
	}
}

func (m *ICefProcessMessage) IsValid() bool {
	if m == nil || m.instance == nil {
		return false
	}
	r1, _, _ := imports.Proc(internale_CefProcessMessage_IsValid).Call(m.Instance())
	return api.GoBool(r1)
}

yanghye's avatar
yanghye 已提交
78
// ArgumentList 参数列表
79
func (m *ICefProcessMessage) ArgumentList() *ICefListValue {
yanghye's avatar
yanghye 已提交
80
	if m.Name() == "" || !m.IsValid() {
yanghye's avatar
yanghye 已提交
81 82
		return nil
	}
yanghye's avatar
yanghye 已提交
83 84 85 86 87 88
	if m.argumentList == nil {
		var result uintptr
		imports.Proc(internale_CefProcessMessage_ArgumentList).Call(m.Instance(), uintptr(unsafe.Pointer(&result)))
		m.argumentList = &ICefListValue{
			instance: unsafe.Pointer(result),
		}
89
	}
yanghye's avatar
yanghye 已提交
90
	return m.argumentList
91 92 93 94 95 96 97 98 99 100 101
}

func (m *ICefProcessMessage) Copy() *ICefProcessMessage {
	var result uintptr
	imports.Proc(internale_CefProcessMessage_Copy).Call(m.Instance(), uintptr(unsafe.Pointer(&result)))
	return &ICefProcessMessage{
		instance: unsafe.Pointer(result),
	}
}

func (m *ICefProcessMessage) Name() string {
yanghye's avatar
yanghye 已提交
102 103 104 105 106
	if m.name == "" {
		r1, _, _ := imports.Proc(internale_CefProcessMessage_Name).Call(m.Instance())
		m.name = api.GoStr(r1)
	}
	return m.name
107
}