Autor Wątek: Wtyczka protokołu  (Przeczytany 2900 razy)

0 Użytkowników i 1 Gość przegląda ten wątek.

Offline Luki

  • Junior Developer
  • Narybek
  • *
Wtyczka protokołu
« dnia: Kwiecień 03, 2012, 18:44:43 pm »
Jakieś podpowiedzi jak się zabrać do tworzenia wtyczki protokołu?
Konkretniej chodziłoby mi o jakieś informacje co wtyczka powinna na początku zrobić i w jaki sposób informować komunikator o nowych wiadomościach etc.
Dodatkowo: istnieje możliwość by zablokować userowi ręczne dodawanie nowych kontaktów a jedynie w osobnej grupie wypluwać komunikatorowi listę kontaktów?

Offline adrian_007

  • Master Developer
  • Starszyzna
  • *
    • WTW PLUGINS
Odp: Wtyczka protokołu
« Odpowiedź #1 dnia: Kwiecień 03, 2012, 20:19:13 pm »
zarejestruj proto, wstaw implementacje fcji ktore chcesz wystawic przez wtyczke, obsluz to i w sumie gotowe :F

co do dodawania uzytkownikow to da sie to zmienic, przyklad - moja wtyczka bonjour sama wsadza kontakty gdy pojawia sie w sieci, recznie to raczej srednio idzie

Offline Luki

  • Junior Developer
  • Narybek
  • *
Odp: Wtyczka protokołu
« Odpowiedź #2 dnia: Kwiecień 04, 2012, 17:50:05 pm »
Mógłbyś napisać coś dokładniej? Jaką funkcję wywołać etc... Bo to co napisałeś powiedziałbym że jest oczywiste ;)

Offline adrian_007

  • Master Developer
  • Starszyzna
  • *
    • WTW PLUGINS
Odp: Wtyczka protokołu
« Odpowiedź #3 dnia: Kwiecień 04, 2012, 23:31:01 pm »
na dobry poczatek
void wtwShell::install() {
    // rejestracja protokolu
    {
        wtwProtocolDef pDef;
        initStruct(pDef);

        pDef.protoCaps1 = WTW_PROTO_CAPS1_CHAT;
        pDef.protoCaps2    = WTW_PROTO_CAPS2_UTF;
        pDef.protoDescr    = L"Windows Shell";
        pDef.netClass    = PROTO_NAME;
        pDef.protoName    = L"- Windows Shell -";
        pDef.netGUID    = this->uuid.c_str();

        pDef.pInterface.pfDeleteContact    = &wtwShell::funcRemoveChannel;
        pDef.pInterface.pfMoveContact    = &wtwShell::funcMoveChannel;
        pDef.flags        = WTW_PROTO_FLAG_PSEUDO | WTW_PROTO_FLAG_NO_MENU | WTW_PROTO_FLAG_NO_PUBDIR;

        wtw->fnCall(WTW_PROTO_FUNC_ADD, reinterpret_cast<WTW_PARAM>(&pDef), 0);
        netSID = pDef.netId;

        protoFunc = wtwInstProtoFunc(wtw, PROTO_NAME, netSID, WTW_PF_INIT_CHAT, &funcChannelInit, 0);
        messageFunc = wtwInstProtoFunc(wtw, PROTO_NAME, netSID, WTW_PF_MESSAGE_SEND, &funcMessageSend, 0);
    }

    // strona opcji kontaktu
    {
        wtwPropertiesPage pPage;
        initStruct(pPage);

        wchar_t pageID[1024];
        swprintf(pageID, sizeof(pageID), PROTO_NAME L"/%d/Properties", netSID);

        pPage.callback            = &ContactPage::callback;
        pPage.caption            = L"Właściwości";
        pPage.flags                = WTW_PP_FLAG_ALLOW_ADD | WTW_PP_FLAG_ALLOW_EDT | WTW_PP_FLAG_AS_GROUP;
        pPage.netClass            = PROTO_NAME;
        pPage.netId                = netSID;
        pPage.cbData            = (void*)this;
        pPage.pageID            = pageID;
        pPage.position            = -1000;
        pPage.iconID            = L"wtwShell/command";

        wtw->fnCall(WTW_PROPERTIES_WND_ADD_STATIC_PROTO_PAGE, reinterpret_cast<WTW_PARAM>(&pPage), 0);
    }
   
    onMenuRebuildHook = wtw->evHook(WTW_EVENT_MENU_REBUILD, &wtwShell::funcMenuRebuild, (void*)this);

    for(CommandList::iterator i = commands.begin(); i != commands.end(); ++i) {
        Command* c = *i;
        //c->add();
        c->update(c->name, c->group, c->command, c->type, c->presence, c->description);
    }
}

Offline Luki

  • Junior Developer
  • Narybek
  • *
Odp: Wtyczka protokołu
« Odpowiedź #4 dnia: Kwiecień 05, 2012, 19:42:23 pm »
Zrobienie mniej więcej tego co wkleiłeś (więcej flag i nie-pseudo) dodało tylko protokół do opcji tworzenia kontaktu (gdzie mamy aż 0 kontrolek z informacjami do wpisania) i puste submenu statusu.
Byłoby fajnie gdyś mógł podzielić się większym fragmentem kodu. Co prawda Kaworu wspomniał że za tydzień może znajdzie chwilę by przygotować szablon wtyczki protokołu, ale do tego czasu może już bym zakończył pisać tą jeśli byś się podzielił ;)


Przyczynę braku opcji opcji już znam patrząc do innego wątku, będzie trzeba pobawić się z tworzeniem okna.
« Ostatnia zmiana: Kwiecień 05, 2012, 19:57:07 pm wysłana przez Luki »

Offline mucha

  • Senior Developer
  • Młodzież
  • *
Odp: Wtyczka protokołu
« Odpowiedź #5 dnia: Kwiecień 06, 2012, 11:03:52 am »
Kiedyś używałem czegoś takiego (bridgePlug.zip), żeby podejrzeć jak działają inne wtyczki. Kompilujesz jako wtyczkę, wrzucasz do plugins, ładujesz w opcjach. Wtyczkę, która ma być podsłuchiwana zmieniasz w PLUG_FILE, miejsce gdzie zapisują się wywoływane funkcje w LOG_FILE.

Offline Luki

  • Junior Developer
  • Narybek
  • *
Odp: Wtyczka protokołu
« Odpowiedź #6 dnia: Kwiecień 06, 2012, 11:43:28 am »
O, fajnie. Przyda się, dzięki ;)

Tak czy tak jednak będzie trzeba poczekać na szablon od Kaworu, no chyba że gdy Adrian zaglądnie na forum to wspomoże ;)
« Ostatnia zmiana: Kwiecień 06, 2012, 14:47:14 pm wysłana przez Luki »

Offline profrook

  • Junior Developer
  • Narybek
  • *
Odp: Wtyczka protokołu
« Odpowiedź #7 dnia: Listopad 07, 2012, 17:28:31 pm »
jest nadzieja na uzyskanie źródełek jakiejś działającej kompletnej wtyczki obsługującej jakiś protokół ?

Offline adrian_007

  • Master Developer
  • Starszyzna
  • *
    • WTW PLUGINS
Odp: Wtyczka protokołu
« Odpowiedź #8 dnia: Listopad 07, 2012, 20:56:53 pm »
calkiem raczej watpliwe

Offline profrook

  • Junior Developer
  • Narybek
  • *
Odp: Wtyczka protokołu
« Odpowiedź #9 dnia: Listopad 08, 2012, 14:01:48 pm »
to w jaki sposób Wy chcecie żeby ktoś pomógł rozwijać komunikator ?

Offline adrian_007

  • Master Developer
  • Starszyzna
  • *
    • WTW PLUGINS
Odp: Wtyczka protokołu
« Odpowiedź #10 dnia: Listopad 08, 2012, 18:06:24 pm »
przeciez jest api, inni jakos sobie z tym poradzili

Offline profrook

  • Junior Developer
  • Narybek
  • *
Odp: Wtyczka protokołu
« Odpowiedź #11 dnia: Listopad 09, 2012, 00:08:57 am »
być może do napisania prostej wtyczki tak, ale chcąc napisać pełną wtyczkę obsługującą jakiś protokół, wiele kont, konferencje, przesyłanie plików i inne bzdury, potrzebujesz czegoś więcej niż zrzutów definicji struktur...

Offline tiritto

  • Junior Developer
  • Narybek
  • *
Odp: Wtyczka protokołu
« Odpowiedź #12 dnia: Grudzień 14, 2014, 07:46:26 am »
Podpinam się do tematu.  Jest gdzieś dostępny jakiś szablon wtyczki proto albo protokół udostępniony jako Open-Source?