// LoadWithOptions loads and executes a javascript file with the ScriptOrigin specified by // origin and the contents of the file specified by the param code. func (w *Worker) LoadWithOptions(origin *ScriptOrigin, code string) error { cCode := C.CString(code) if origin == nil { origin = new(ScriptOrigin) } if origin.ScriptName == "" { origin.ScriptName = nextScriptName() } cScriptName := C.CString(origin.ScriptName) cLineOffset := C.int(origin.LineOffset) cColumnOffset := C.int(origin.ColumnOffset) cIsSharedCrossOrigin := C.bool(origin.IsSharedCrossOrigin) cScriptId := C.int(origin.ScriptId) cIsEmbedderDebugScript := C.bool(origin.IsEmbedderDebugScript) cSourceMapURL := C.CString(origin.SourceMapURL) cIsOpaque := C.bool(origin.IsOpaque) defer C.free(unsafe.Pointer(cScriptName)) defer C.free(unsafe.Pointer(cCode)) defer C.free(unsafe.Pointer(cSourceMapURL)) r := C.worker_load(w.cWorker, cCode, cScriptName, cLineOffset, cColumnOffset, cIsSharedCrossOrigin, cScriptId, cIsEmbedderDebugScript, cSourceMapURL, cIsOpaque) if r != 0 { errStr := C.worker_last_exception(w.cWorker) return errors.New(C.GoString(errStr)) } return nil }
// Sends a message to a worker. The $recv callback in js will be called. func (w *Worker) Send(msg string) error { msg_s := C.CString(string(msg)) defer C.free(unsafe.Pointer(msg_s)) r := C.worker_send(w.cWorker, msg_s) if r != 0 { errStr := C.GoString(C.worker_last_exception(w.cWorker)) return errors.New(errStr) } return nil }
// Load and executes a javascript file with the filename specified by // scriptName and the contents of the file specified by the param code. func (w *Worker) Load(scriptName string, code string) error { scriptName_s := C.CString(scriptName) code_s := C.CString(code) defer C.free(unsafe.Pointer(scriptName_s)) defer C.free(unsafe.Pointer(code_s)) r := C.worker_load(w.cWorker, scriptName_s, code_s) if r != 0 { errStr := C.GoString(C.worker_last_exception(w.cWorker)) return errors.New(errStr) } return nil }
// Load and executes a javascript file with the filename specified by // scriptName and the contents of the file specified by the param code. func (w *Worker) Load(scriptName string, code string, _offset ...int) error { scriptName_s := C.CString(scriptName) code_s := C.CString(code) defer C.free(unsafe.Pointer(scriptName_s)) defer C.free(unsafe.Pointer(code_s)) var offset int if _offset != nil { offset = _offset[0] } offset_s := C.int(offset) r := C.worker_load(w.cWorker, scriptName_s, code_s, offset_s) if r != 0 { errStr := C.GoString(C.worker_last_exception(w.cWorker)) return errors.New(errStr) } return nil }