ipc

package
v1.109.1184 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 4, 2023 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Ln_IPC_GoEmitJS         = "IPCGoEmitJS"                   //Go执行Js on监听
	Ln_GET_BIND_FIELD_VALUE = "internal_GET_BIND_FIELD_VALUE" //browse进程监听获取字段值
	Ln_SET_BIND_FIELD_VALUE = "internal_SET_BIND_FIELD_VALUE" //browse进程监听设置字段值
	Ln_EXECUTE_BIND_FUNC    = "internal_EXECUTE_BIND_FUNC"    //browse进程监听执行绑定函数
	Ln_onConnectEvent       = "connect"
)

Variables

View Source
var (
	MemoryAddress = "energy.sock"
	//GO IPC 通道选择条件
	//
	//默认值=IsDarwin() true:使用net socket, false:使用unix socket
	UseNetIPCChannel = true

	//主进程Browser启动 IPC,Render进程创建 IPC
	IPC = &ipcChannel{
		browser: &browserChannel{
			msgID:              &MsgID{},
			cliID:              &CliID{},
			events:             &event{event: make(map[string]EventCallback)},
			channel:            sync.Map{},
			emitSync:           make(map[string]*EmitSyncCollection),
			mutex:              sync.Mutex{},
			emitCallback:       &EmitCallbackCollection{EmitCollection: sync.Map{}},
			browseOnEvents:     make([]func(browseProcess IEventOn), 0),
			browseEmitCallback: make([]func(renderProcess IEventEmit), 0)},
		render: &renderChannel{
			msgID:              &MsgID{},
			mutex:              sync.Mutex{},
			emitCallback:       &EmitCallbackCollection{EmitCollection: sync.Map{}},
			emitSync:           make(map[string]*EmitSyncCollection),
			events:             &event{event: make(map[string]EventCallback)},
			renderOnEvents:     make([]func(browseProcess IEventOn), 0),
			renderEmitCallback: make([]func(renderProcess IEventEmit), 0),
		},
	}
)

Functions

func IPCChannelChooseInit

func IPCChannelChooseInit()

func InternalIPCNameCheck

func InternalIPCNameCheck(name string) bool

Types

type ArgumentDataItem

type ArgumentDataItem struct {
	// contains filtered or unexported fields
}

func (*ArgumentDataItem) Data

func (m *ArgumentDataItem) Data() []byte

func (*ArgumentDataItem) GetBool

func (m *ArgumentDataItem) GetBool() bool

func (*ArgumentDataItem) GetDouble

func (m *ArgumentDataItem) GetDouble() float64

func (*ArgumentDataItem) GetFloat32

func (m *ArgumentDataItem) GetFloat32() float32

func (*ArgumentDataItem) GetFloat64

func (m *ArgumentDataItem) GetFloat64() float64

func (*ArgumentDataItem) GetInt

func (m *ArgumentDataItem) GetInt() int

func (*ArgumentDataItem) GetInt16

func (m *ArgumentDataItem) GetInt16() int16

func (*ArgumentDataItem) GetInt32

func (m *ArgumentDataItem) GetInt32() int32

func (*ArgumentDataItem) GetInt64

func (m *ArgumentDataItem) GetInt64() int64

func (*ArgumentDataItem) GetInt8

func (m *ArgumentDataItem) GetInt8() int8

func (*ArgumentDataItem) GetNumber

func (m *ArgumentDataItem) GetNumber() int32

func (*ArgumentDataItem) GetString

func (m *ArgumentDataItem) GetString() string

func (*ArgumentDataItem) IsBoolean

func (m *ArgumentDataItem) IsBoolean() bool

func (*ArgumentDataItem) IsFloat32

func (m *ArgumentDataItem) IsFloat32() bool

func (*ArgumentDataItem) IsFloat64

func (m *ArgumentDataItem) IsFloat64() bool

func (*ArgumentDataItem) IsFloatAuto

func (m *ArgumentDataItem) IsFloatAuto() bool

func (*ArgumentDataItem) IsInt

func (m *ArgumentDataItem) IsInt() bool

func (*ArgumentDataItem) IsInt16

func (m *ArgumentDataItem) IsInt16() bool

func (*ArgumentDataItem) IsInt32

func (m *ArgumentDataItem) IsInt32() bool

func (*ArgumentDataItem) IsInt64

func (m *ArgumentDataItem) IsInt64() bool

func (*ArgumentDataItem) IsInt8

func (m *ArgumentDataItem) IsInt8() bool

func (*ArgumentDataItem) IsIntAuto

func (m *ArgumentDataItem) IsIntAuto() bool

func (*ArgumentDataItem) IsString

func (m *ArgumentDataItem) IsString() bool

func (*ArgumentDataItem) VType

func (m *ArgumentDataItem) VType() int8

func (*ArgumentDataItem) VTypeToJS

func (m *ArgumentDataItem) VTypeToJS() V8_JS_VALUE_TYPE

type BuildBytes

type BuildBytes struct {
	// contains filtered or unexported fields
}

func (*BuildBytes) Bytes

func (m *BuildBytes) Bytes() []byte

func (*BuildBytes) Set

func (m *BuildBytes) Set(data interface{})

type CefProcessMessagePtr

type CefProcessMessagePtr struct {
	Name    uintptr
	Data    uintptr
	DataLen uintptr
}

type EmitCallbackCollection

type EmitCallbackCollection struct {
	EmitCollection sync.Map
}

触发事件回调函数集合

type EmitSyncCollection

type EmitSyncCollection struct {
	Mutex          *sync.Mutex
	EmitCollection sync.Map
}

触发同步事件集合

type EventCallback

type EventCallback func(context IIPCContext)

type IArgumentList

type IArgumentList interface {
	Clear()
	Size() int
	Package() []byte
	UnPackageBytePtr(bytePtr uintptr, byteLength int32)
	UnPackage(dataByte []byte)
	ToReflectValue() []reflect.Value
	ReflectValueConvert(ref []reflect.Value)

	SetArguments(index int, argument IArgumentList)
	SetString(index int, v string, isDStr ...bool) //设置字符串参数 isDStr: 在传递参数到JavaScript需要设置为true
	GetString(index int) string
	SetIntAuto(index int, v interface{}, gov GO_VALUE_TYPE)
	SetInt(index int, v int)
	SetInt8(index int, v int8)
	SetData(index int, vType int8, data []byte)
	SetInt16(index int, v int16)
	SetInt32(index int, v int32)
	SetInt64(index int, v int64)
	GetInt(index int) int
	GetInt8(index int) int8
	GetInt16(index int) int16
	GetInt32(index int) int32
	GetBytes(index int) []byte
	GetData(index int) *ArgumentDataItem
	GetInt64(index int) int64
	SetFloatAuto(index int, v interface{}, gov GO_VALUE_TYPE)
	SetFloat32(index int, v float32)
	SetFloat64(index int, v float64)
	GetFloat32(index int) float32
	GetFloat64(index int) float64
	SetBool(index int, v bool)
	GetBool(index int) bool
	Items() []*ArgumentDataItem
	RangeItems(start, end int) []*ArgumentDataItem
	Item(index int) *ArgumentDataItem
	SetItems(items []*ArgumentDataItem)
	AddItems(items []*ArgumentDataItem)
	// contains filtered or unexported methods
}

func NewArgumentList

func NewArgumentList() IArgumentList

NewArgumentList

type IBrowseEventEmit

type IBrowseEventEmit interface {
	IEventOn
	IEventEmit
	Channel(channelId int64) *channel                                                                          //IPC 获取指定的通道
	ChannelIds() (result []int64)                                                                              //IPC 获取所有通道
	EmitChannelId(eventName string, channelId int64, arguments IArgumentList)                                  //IPC 异步事件触发-指定通道ID
	EmitChannelIdAndCallback(eventName string, channelId int64, arguments IArgumentList, callback IPCCallback) //IPC 回调事件触发-指定通道ID
	EmitChannelIdAndReturn(eventName string, channelId int64, arguments IArgumentList) IIPCContext             //IPC 返回值事件触发(处理时间复杂操作尽量不使用,容易造成UI进程锁死)-指定通道ID
}

主进程事件emit

type ICefProcessMessage

type ICefProcessMessage struct {
	Name         string
	ArgumentList IArgumentList
}

func NewProcessMessage

func NewProcessMessage(name string) *ICefProcessMessage

type IEventEmit

type IEventEmit interface {
	IEventOn
	Events() *event
	SetOnEvent(callback func(event IEventOn))                                        //IPC 事件监听
	Emit(eventName string, arguments IArgumentList)                                  //IPC 异步事件触发
	EmitAndCallback(eventName string, arguments IArgumentList, callback IPCCallback) //IPC 回调事件触发
	EmitAndReturn(eventName string, arguments IArgumentList) IIPCContext             //IPC 返回值事件触发(处理时间复杂操作尽量不使用,容易造成UI进程锁死)
}

主Browser进程和Render进程事件emit

type IEventMessage

type IEventMessage interface {
	Data() []byte
	DataLen() int32
}

type IEventOn

type IEventOn interface {
	On(name string, eventCallback EventCallback) //IPC 事件监听
	Close()
}

主Browser进程和Render进程事件on

type IIPCContext

type IIPCContext interface {
	Connect() net.Conn         //IPC 链接
	EventId() int32            //IPC 事件ID
	ChannelId() int64          //render channel channelId
	BrowserId() int32          //render channel browserId
	Message() *IPCEventMessage //接收的消息数据 一搬配合Response函数
	Response(data []byte)      //通过响应应达的方式返回结果,在data符合[argumentList]规范可使用Arguments() 一搬配合Message函数
	Free()                     //释放内存
	Arguments() IArgumentList  //用于 ipc 进程之间通信, 带有参数类型
	Result() *IPCContextResult //用于 render(js)进程触发 browser(go)进程监听返回值, 带有固定几个参数类型
	// contains filtered or unexported methods
}

进程间IPC通信回调上下文

func NewIPCContext

func NewIPCContext(eventName string, browserId int32, channelId int64, ipcType IPC_TYPE, conn net.Conn, eventMessage *IPCEventMessage, result *IPCContextResult, arguments IArgumentList) IIPCContext

type IPCCallback

type IPCCallback func(context IIPCContext)

type IPCContext

type IPCContext struct {
	// contains filtered or unexported fields
}

IPC 上下文

func (*IPCContext) Arguments

func (m *IPCContext) Arguments() IArgumentList

func (*IPCContext) BrowserId

func (m *IPCContext) BrowserId() int32

func (*IPCContext) ChannelId

func (m *IPCContext) ChannelId() int64

func (*IPCContext) Connect added in v1.1.0

func (m *IPCContext) Connect() net.Conn

func (*IPCContext) EventId

func (m *IPCContext) EventId() int32

func (*IPCContext) Free

func (m *IPCContext) Free()

func (*IPCContext) Message

func (m *IPCContext) Message() *IPCEventMessage

func (*IPCContext) Response

func (m *IPCContext) Response(data []byte)

func (*IPCContext) Result

func (m *IPCContext) Result() *IPCContextResult

type IPCContextResult

type IPCContextResult struct {
	// contains filtered or unexported fields
}

func (*IPCContextResult) Data added in v1.106.11

func (m *IPCContextResult) Data() unsafe.Pointer

func (*IPCContextResult) SetBool

func (m *IPCContextResult) SetBool(ret bool)

func (*IPCContextResult) SetFloat64

func (m *IPCContextResult) SetFloat64(ret float64)

func (*IPCContextResult) SetInt

func (m *IPCContextResult) SetInt(ret int32)

func (*IPCContextResult) SetString

func (m *IPCContextResult) SetString(ret string)

func (*IPCContextResult) VType

func (m *IPCContextResult) VType() V8_JS_VALUE_TYPE

type IPCEventMessage

type IPCEventMessage struct {
	// contains filtered or unexported fields
}

func (*IPCEventMessage) Data

func (m *IPCEventMessage) Data() []byte

func (*IPCEventMessage) DataLen

func (m *IPCEventMessage) DataLen() int32

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL