LlamaLibrary constructor

LlamaLibrary({
  1. EventEmitter? eventEmitter,
  2. String? sharedLibraryPath,
  3. String? eventInvoke,
  4. String? eventUpdate,
  5. InvokeParametersLlamaLibraryDataOptions? invokeParametersLlamaLibraryDataOptions,
})

General Library Documentation Undocument By General Corporation & Global Corporation & General Developer

Implementation

LlamaLibrary({
  super.eventEmitter,
  super.sharedLibraryPath,
  super.eventInvoke,
  super.eventUpdate,
  super.invokeParametersLlamaLibraryDataOptions,
}) {
  receivePort.listen(
    (event) async {
      try {
        if (_isInIsolate == true) {
          if (event is SendPort) {
            if (_completerSendPortInitialized.isCompleted == false) {
              _completerSendPortInitialized.complete(true);
            }
            _sendPort = event;
          } else if (event == LlamaLibraryActionType.close) {
            dispose();
          } else if (event == LlamaLibraryActionType.clear) {
            clear();
          } else if (event == LlamaLibraryActionType.test) {
            test();
          } else if (event is InvokeParametersLlamaLibraryData) {
            await invokeRaw(
              invokeParametersLlamaLibraryData: event.copyWith(
                isVoid: true,
                invokeParametersLlamaLibraryDataOptions:
                    (event.invokeParametersLlamaLibraryDataOptions ??
                            invokeParametersLlamaLibraryDataOptions)
                        .copyWith(
                  isThrowOnError: false,
                ),
              ),
            );
          }
        } else {
          if (event is SendPort) {
            if (_completerSendPortInitialized.isCompleted == false) {
              _completerSendPortInitialized.complete(true);
            }
            _sendPort = event;
          } else if (event == LlamaLibraryActionType.close) {
            if (LlamaLibrary._isolate != Isolate.current) {
              LlamaLibrary._isolate.kill();
            }
          } else if (event is JsonScheme) {
            emit(
              eventType: eventUpdate,
              data: event,
            );
          }
        }
      } catch (e) {}
    },
  );
}