Страница 24 из 26

Re: Технология создания плагинов

Добавлено: 14:46, 11.01.2011
Maxim Mirgorodsky
ОреЛ писал(а):Вопрос к Максиму:
Будет ли внесены когда-либо (желательно в ближайших версиях) для серверных плагинов прием событий Публикация/Редактирование/Удаление объявления/комментария?
На данный момент возможно лишь получение данных о разделах ДО, обо всех объявлений раздела, но нет приема события Публикации или Редактирования или Удаления объявлений или комментария к нему.
P.S.: приношу извинения за повтор вопроса.
Невнимательно прочитал. Прием таких событий реализуем.
dark писал(а):Плагин делает все что надо, но ошибка остается.
Опишите пожалуйста подробнее что именно делает плагин успешно и где именно сохранилась ошибка.

Re: Технология создания плагинов

Добавлено: 17:33, 18.01.2011
ОреЛ
может кто-нибудь мог бы показать пример плагина на c++ с использованием многопоточности?
я просто хочу понять, как это делается

Re: Технология создания плагинов

Добавлено: 18:59, 18.01.2011
@serg@
ОреЛ писал(а):может кто-нибудь мог бы показать пример плагина на c++ с использованием многопоточности?
я просто хочу понять, как это делается
+1

Re: Технология создания плагинов

Добавлено: 20:17, 18.01.2011
Cilvay
Ув. Разработчики, может прокомментируете?
http://commfort.com/ru/forum/viewtopic. ... 768#p51768

Re: Технология создания плагинов

Добавлено: 13:09, 19.01.2011
Maxim Mirgorodsky
Работа в одном потоке - это наиболее простой, понятный и стабильный для разработчика плагина вариант. Он позволяет без проблем синхронно обмениваться данными между плагином и программой. Для многопоточности необходимо защищать данные от параллельной работы с ними. Программа и плагины образуют собой единое приложение. Если нет понимания всех аспектов многопоточности - ни в коем случае нельзя с ней связываться. Ошибки будут неминуемо, причем труднодиагностируемые.

Re: Технология создания плагинов

Добавлено: 18:37, 19.01.2011
@serg@
Я лично, помучившись с разбиением на потоки, забил на данную идею. Основная часть ошибок у меня была в момент попытки инициировать событие в чате при помощи соответствующей функции. Мне пока не совсем ясны принципы, по которым работают DLL-плагины, и как грамотно разбить свою часть кода на потоки, но коль разработчики этого не предусмотрели, придётся как-то ухищряться, пока для себя решил вернуться к ботам, это самое простое. Получается работать будут 2 независимые (по процессорному времени) программы, обмениваться через ip-протокол и бог с ним.

Re: Технология создания плагинов

Добавлено: 19:32, 19.01.2011
-=SJ=-
Как уже говорилось выше чтобы подружить плагин с потоками надо использовать функции typeCommFortProcess и typeCommFortGetData в основном потоке.
У объекта TThread есть метод Synchronize который позволяет запустить переданную процедуру в основном потоке.
Так как typeCommFortProcess не возвращает никаких данных то использование вместе с Synchronize не должно вызывать проблем.
Тяжелее с typeCommFortGetData, для получения результата надо:
1) вызвать функцию через Synchronize.
2) приостановить поток дождаться получения результата (уйти в бесконечный цикл пока не установится определенный флаг)
3) в основном потоке после получения результата от typeCommFortGetData обязательно скопировать буфер с результатом в свою память.
Во первых мы не знаем когда будет очищен этот буфер, во вторых для работы через критические секции лучше все же использовать свою память.
4) в потоке войти в критическую секцию и обработать результат.

Ну, а в идеале чат в следующих версиях сам должен определять в основном ли потоке вызываются typeCommFortProcess и typeCommFortGetData и действовать соответствующим образом.

Re: Технология создания плагинов

Добавлено: 07:38, 31.01.2011
ZigZagkms
Такой вопрос: Вот допустим плагин подал запрос на активацию, когда активацию принимают какое нибудь событие происходит?
Чтобы плагин знал когда учетку активировали и действовал дальше. Знаю про способ подавать заявку каждые N секунд и смотреть ответ по ID ответа 1090. Но все же есть более красивое решение?

Re: Технология создания плагинов

Добавлено: 08:03, 01.02.2011
Maxim Mirgorodsky
Как обычный пользователь, так и виртуальный могут проверить состояние активации только попыткой авторизации. Предполагается, что ручная обработка заявки на активацию может занять значительное время и не стоит клиента все это время нервировать окном "Пожалуйста, подождите...". Более предпочтительный вариант - "Пожалуйста, зайдите позже". Плагин унаследовал этот принцип.

Re: Технология создания плагинов

Добавлено: 21:00, 06.02.2011
ZigZagkms
Как получить пароль еще не авторизованного пользователя?

Код: Выделить всё

Запрос на активацию новой учетной записи  

ID: 1082
Блок данных: текст(имя) + текст(IP-адрес) + текст(сообщение модератору)
Вот с этим чтобы событием вместе узнать еще и пароль. Пробовал запросить данные у программы этим способом

Код: Выделить всё

Пароль учетной записи  

ID: 1060
Блок данных (исходящий): текст(имя пользователя)
Блок данных (входящий): текст(32 символьный MD5 хэш-код пароля)

Если пользователь не зарегистрирован, то вместо MD5 хэш-кода во входящий блок данных будет записана пустая строка.
не получается, т.к. еще не авторизован.
Так как же узнать пароль на стадии авторизации? Чтобы можно было отклонять авторизацию в зависимости от внешних совпадений логин\пароль

Re: Технология создания плагинов

Добавлено: 21:35, 06.02.2011
SV
ZigZagkms писал(а):Как получить пароль еще не авторизованного пользователя?

Код: Выделить всё

Запрос на активацию новой учетной записи  

ID: 1082
Блок данных: текст(имя) + текст(IP-адрес) + текст(сообщение модератору)
Вот с этим чтобы событием вместе узнать еще и пароль. Пробовал запросить данные у программы этим способом

Код: Выделить всё

Пароль учетной записи  

ID: 1060
Блок данных (исходящий): текст(имя пользователя)
Блок данных (входящий): текст(32 символьный MD5 хэш-код пароля)

Если пользователь не зарегистрирован, то вместо MD5 хэш-кода во входящий блок данных будет записана пустая строка.
не получается, т.к. еще не авторизован.
Так как же узнать пароль на стадии авторизации? Чтобы можно было отклонять авторизацию в зависимости от внешних совпадений логин\пароль
Запрос на активацию новой учетной записи

ID: 1082
Блок данных: текст(имя) + текст(IP-адрес) + текст(сообщение модератору) + текст(32 символьный MD5 хэш-код пароля)

Смотри внимательнее. Вот юзай полную документацию по плагину под сервер Chudika

Re: Технология создания плагинов

Добавлено: 21:39, 06.02.2011
ZigZagkms
В моей документации этого не было и мне не давали специализированную. Не знал, теперь знаю, спасибо.

Re: Технология создания плагинов

Добавлено: 21:45, 06.02.2011
SV
ZigZagkms писал(а):В моей документации этого не было и мне не давали специализированную. Не знал, теперь знаю, спасибо.
Учти на форуме не кто про эту спецификацию не знает. У нас у троих только пропаченный сервер. Если только тебе Максим поможет советом.

Re: Технология создания плагинов

Добавлено: 13:39, 07.02.2011
@serg@
anonim писал(а):
ZigZagkms писал(а):В моей документации этого не было и мне не давали специализированную. Не знал, теперь знаю, спасибо.
Учти на форуме не кто про эту спецификацию не знает. У нас у троих только пропаченный сервер. Если только тебе Максим поможет советом.
Вот ту поподробней, нифика не понятно, в чём смысл пропатченного сервера? Выходит эта документация для него или просто в шапке топика не обновлённая?

Re: Технология создания плагинов

Добавлено: 14:22, 07.02.2011
Chudik
@serg@ писал(а):
anonim писал(а):
ZigZagkms писал(а):В моей документации этого не было и мне не давали специализированную. Не знал, теперь знаю, спасибо.
Учти на форуме не кто про эту спецификацию не знает. У нас у троих только пропаченный сервер. Если только тебе Максим поможет советом.
Вот ту поподробней, нифика не понятно, в чём смысл пропатченного сервера? Выходит эта документация для него или просто в шапке топика не обновлённая?
Сервер немного изменён под запросы моей сети.
http://www.commfort.com/ru/forum/viewto ... 40&start=0