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
//
//----------------------------------------

yanghye's avatar
yanghye 已提交
11
// CEF 进程消息 ProcessMessageRef.New()
12 13
package cef

14 15 16 17 18 19
import (
	"github.com/energye/energy/common/imports"
	"github.com/energye/golcl/lcl/api"
	"unsafe"
)

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

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

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

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

yanghye's avatar
yanghye 已提交
48 49 50 51 52 53 54
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 已提交
55
// Instance 实例
56
func (m *ICefProcessMessage) Instance() uintptr {
yanghye's avatar
yanghye 已提交
57 58 59
	if m == nil {
		return 0
	}
60 61 62
	return uintptr(m.instance)
}

yanghye's avatar
yanghye 已提交
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
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 已提交
79
// ArgumentList 参数列表
80
func (m *ICefProcessMessage) ArgumentList() *ICefListValue {
yanghye's avatar
yanghye 已提交
81
	if m.Name() == "" || !m.IsValid() {
yanghye's avatar
yanghye 已提交
82 83
		return nil
	}
yanghye's avatar
yanghye 已提交
84 85 86 87 88 89
	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),
		}
90
	}
yanghye's avatar
yanghye 已提交
91
	return m.argumentList
92 93 94 95 96 97 98 99 100 101 102
}

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 已提交
103 104 105 106 107
	if m.name == "" {
		r1, _, _ := imports.Proc(internale_CefProcessMessage_Name).Call(m.Instance())
		m.name = api.GoStr(r1)
	}
	return m.name
108
}