Conversation
# Conflicts: # engine/src/main/java/com/github/otymko/jos/runtime/context/type/StandardTypeInitializer.java # engine/src/main/java/com/github/otymko/jos/runtime/context/type/TypeManager.java
|
Kudos, SonarCloud Quality Gate passed! |
| @GlobalContextClass | ||
| public class SystemEnvironmentGlobalContext implements AttachableContext { | ||
| public static final ContextInfo INFO = ContextInfo.createByClass(SystemEnvironmentGlobalContext.class); | ||
| private static final Map<String, String> environmentVariables = getEnvironmentVariablesSnapshot(); |
There was a problem hiding this comment.
@dmpas, мне не очень нравится текущее решение с static field, т.к. при многократном использовании контекста будет будут просачиваться значения из других. Давай пока сделаем синглтон + todo на исправление с DI, потом переделаем.
There was a problem hiding this comment.
Нужен какой-то стейт на процесс выполнения (
|
|
||
| @ContextMethod(name = "УстановитьПеременнуюСреды", alias = "SetEnvironmentVariable") | ||
| public void setEnvironmentVariable(String name, String value) { | ||
| environmentVariables.put(name, value); |
There was a problem hiding this comment.
@dmpas, как это работает дальше? Ну изменили мы у себя кеш, а на систему как это влияет?
There was a problem hiding this comment.
@otymko На систему никак не влияет.
В рамках работы движка скрипты будут получать значение, установленное внутри скрипта(движка).
При запуске процесса из скрипта в него будем передавать переменные отсюда.
Ну либо пилить нативную либу. Других вариантов гугель не предложил, так что тут либо костыли, либо C++
There was a problem hiding this comment.
@otymko в дотнете оно из коробки умеет ставить переменные среды в ОС
https://learn.microsoft.com/ru-ru/dotnet/api/system.environment.setenvironmentvariable?view=net-7.0
| import java.util.TreeMap; | ||
|
|
||
| @GlobalContextClass | ||
| public class SystemEnvironmentGlobalContext implements AttachableContext { |
engine/src/main/java/com/github/otymko/jos/runtime/context/type/env/PlatformType.java
Show resolved
Hide resolved
| */ | ||
| public static PlatformType parse(String osName, boolean is64) { | ||
| var prepared = osName.toUpperCase(); | ||
| if (prepared.contains("WINDOWS")) |
| */ | ||
| @ContextProperty(name = "КоличествоПроцессоров", alias = "ProcessorCount") | ||
| public int getProcessorCount() { | ||
| return Runtime.getRuntime().availableProcessors(); |
There was a problem hiding this comment.
@dmpas, кстати, в v8 возвращается количество физический или логических процессоров?
| */ | ||
| @ContextProperty(name = "ВремяРаботыСМоментаЗагрузки", alias = "TickCount") | ||
| public long getTickCount() { | ||
| return System.currentTimeMillis(); |
There was a problem hiding this comment.
@dmpas, System.currentTimeMillis возвращает не ВремяРаботыСМоментаЗагрузки. Смотри как в https://github.com/oshi/oshi работает getSystemUptime
There was a problem hiding this comment.
Можно здесь закинуть нон-саппортед, а а отдельной задаче реализовать.
There was a problem hiding this comment.
@otymko getSystemUptime - там ад, если честно. Куча if (os1) get_os1(); if (os2) get_os2();
| import com.github.otymko.jos.runtime.context.TestScript; | ||
|
|
||
| @TestScript(script = "src/test/resources/tests/SystemInfo.os") | ||
| public class V8SystemInfoTest extends BaseScriptTest { |
|
|
||
| Процедура ТестДолжен_ПолучитьВремяРаботыСМоментаЗагрузки() Экспорт | ||
| Си = Новый СистемнаяИнформация(); | ||
| юТест.ПроверитьБольше(Си.ВремяРаботыСМоментаЗагрузки,0); |








No description provided.