Что нового

Connector - интеракция. Взаимодействие между скриптами и процессами

Vanguger

Новичок
Сообщения
77
Репутация
4
Версия AutoIt
3.3.14.5
Версия
2.0.1
Библиотека, для взаимодействия между процессами. Подходит для постоянного, множественного взаимообмена данных.

Особенности:
  1. Множественное взаимодействие между участниками*
  2. Типы передачи данных: Int32, Int64, String, Double, Boolean, Binary, hWhd, Ptr, Keyword, Array.
  3. Поддерживаются многомерные массивы. В сборке по умолчанию, поддерживаются 5-мерные массивы. Есть возможность расширить до 255 измерений.
  4. Поддержка группового общения. Это как public и private. Возможность взаимодействия между всеми участниками, включёнными в Connector, но возможно, создать и отдельную группу.
  5. Возможность назначить общий приёмник, для всех входящих, в текущем процессе.
  6. Возможность назначить приёмник для входящих, только ОТ определённого участника.
  7. Возможность назначить приёмник для входящих, только ДЛЯ определённого получателя.
  8. Возможность автоматического запуска получателя по указанному пути.
  9. Возможность закрыть процесс получателя, после получения ответа.
  10. Возможность минимизировать скрипт и выбрать функционал, с помощью сборщика Packager.au3
* -Участники, это скрипты, функции, или процессы, которым нужно обмениваться данными. Ими являются, как отдельные процессы, так и скрипты загруженные через #include (подходит, когда необходимо организовать, как системные, так и пользовательские плагины, модули в одинаковой архитектуре)

Примечание:
  • не предназначен для взаимодействия со сторонними процессами не использующими Connector.
  • Не поддерживаются вложенные массивы, внутри массивов.
Основной принцип пересылки, в данной ветке Connector 2.x.x заключается в передаче данных в структуре(памяти).
Если в более ранних версиях, каждый элемент массива комплектовался как wchar[x]. То, в данной версии, типы данных, не занимают, размер больший, чем им необходимо. Например: Bool и Keyword, занимают 1 байт; Число 123456789, раньше занимало 18 байт, сейчас, как и положено, это стандартный Int(4 байта)
v2.0.1
Небольшие корректировки кода.
v2.0.0
Первая версия этой ветки
Полностью обновлён способ отправки и получения данных. Все заявленные типы данных передаются в структуре,соответственно своему размеру.
Добавлен сборщик коннектора Packager.au3, позволяющий сжать скрипт библиотеки или выбрать необходимый функционал.
Поддержка пятимерных массивов в версии по умолчанию.
Добавлена возможность изменить количество поддерживаемых измерений массива через сборщик Packager.au3
Основной принцип пересылки, в данной ветке Connector 1.x.x заключается в преобразовании отправляемых типов данных в простую строку, после пересылки строка снова собирается в переменную с тем типом данных, который был послан отправителем.
v1.3.0
* Добавлена поддержка Int64
* Исправлен баг с типом Ptr
* Исправлен баг с передачей типов внутри массива
v1.2.0
* исправлена ошибка, появляющаяся при добавлении | в массив
* исправлена небольшая логика, с возвратом ошибки от отправителя
v1.1.0
* исправлен функционал с ожиданием получателя
* добавлена возможность запуска процесса получателя по указанному пути
* добавлено несколько примеров
v1.0.0
* Первая опубликованная версия
Connector vA.B.C
A
- ветка больших изменений. Принципиально нового функционала, новой логики.
B - ветка изменений, добавления функций в общей логике, корректировок кода, исправления багов.
C - ветка минимальных исправлений, комментарии, мелкие ошибки.
 
Автор
Vanguger

Вложения

Последнее редактирование:
  • Like
Реакции: xXx

joiner

Модератор
Локальный модератор
Сообщения
3 254
Репутация
552
по сути то передает строки со спец обозначением. а приемник их переворачивает в нужный тип данных
есть баг
если один отправляет, второй принимает - при выгрузке принимающей стороны невозможно отключить отправляющего. не реагирует на стоп
 
Последнее редактирование:
  • Like
Реакции: xXx
Автор
Vanguger

Vanguger

Новичок
Сообщения
77
Репутация
4
по сути то передает строки со спец обозначением. а приемник их переворачивает в нужный тип данных
есть баг
если один отправляет, второй принимает - при выгрузке принимающей стороны невозможно отключить отправляющего. не реагирует на стоп
По сути да, в версиях 1.x.x тело передачи, это строка, но, до адресата доходит то, что требуется. Никак не получалось вернуть правильные данные, поэтому решил использовать такой способ. По сути, машинный код в памяти делает тоже самое, байт, есть байт, а, тип сохраняемой последовательности в памяти, нужно определять метками.

Проблема со стопом, это проблема, возникающая при ожидании получателя через WinWait, в этот момент, нет реакции на кнопки. Думаю об этом сейчас. Ещё один момент обнаружил, тоже разбираюсь.
 
Последнее редактирование:

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 444
Репутация
2 393
Хорошая версия.
Про типы данных, я тут вспомнил про свою похожую библиотеку которую делал давно (Container), так вот там через свойство PutProperty можно передать любой тип данных, просто на 10-ке у меня библиотека отказывается работать, нужно видимо что то ещё там учитывать.
 
Автор
Vanguger

Vanguger

Новичок
Сообщения
77
Репутация
4
Обновил библиотеку. Решены выявленные проблемы. Добавлено несколько примеров.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 444
Репутация
2 393
Есть проблема с передачей массивов (я кстати тоже с ней сталкивался когда пытался делать поддержку передачи массивов) - если в элементе массива присутствует символ разделителя (|), то естественно будет создан дополнительный элемент на этапе конвертирования строки обратно в массив.
 
Автор
Vanguger

Vanguger

Новичок
Сообщения
77
Репутация
4
Есть проблема с передачей массивов (я кстати тоже с ней сталкивался когда пытался делать поддержку передачи массивов) - если в элементе массива присутствует символ разделителя (|), то естественно будет создан дополнительный элемент на этапе конвертирования строки обратно в массив.
Да, я понял) Спасибо дружище! Я предполагал, что до этого дойдёт) Были мысли сделать эту фильтрацию, просто вылетело из головы, тупо забыл. Как всегда, на потом, оставляешь штуки, которые считаешь важными, но менее приоритетными, а потом, забываешь про них. Прошу прощения! Всё будет в новой версии) Благодарю тебя, что помог мне вспомнить об этом!
 
Последнее редактирование:

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 444
Репутация
2 393
Прикрепил свой вариант упаковки переменных (поддерживаются двумерные массивы). Позже выложу отдельно.
 

Вложения

Автор
Vanguger

Vanguger

Новичок
Сообщения
77
Репутация
4
Есть проблема с передачей массивов (я кстати тоже с ней сталкивался когда пытался делать поддержку передачи массивов) - если в элементе массива присутствует символ разделителя (|), то естественно будет создан дополнительный элемент на этапе конвертирования строки обратно в массив.
Исправил.
Сообщение автоматически объединено:

Выпустил обновление и ветку номер 2. Цель ветки, передача данных, соответственно их минимальному размеру в памяти.
Благодарность CreatoR, За идею возврата данных, из WM_COPYDATA
 
Последнее редактирование:
Верх