Ik heb isdnlog-0.03.zip op mijn anonieme ftp server gezet. Het is alleen een kaal service programma.
Germ, Je hoeft deze versie niet te testen. Ik maak soms een versie waarop ik later weer verder borduur.
Je hebt m.i. eigenlijk drie threads.
De service thread (win_main2(int argc, char **argv)). Hierin bouw je alles op. Als conditie (ready_to_exit) waar wordt dan ga je afbouwen.
Een thread (handle_isdnlogd_requests)()) die de isdn capi dll gaat monitoren. Ik heb dit gesimuleerd in deze versie door om de 5 seconden een regel in c:\test.txt te zetten.
Mogelijk een shutdown thread (handle_shutdown)()) die zorgt dat bij shutdown het programma doorloopt en het programma geen “not reponding” status krijgt. Deze thread heb ik nog niet aangezet in de code.
Het opbouwen gaat goed. Het beëindigen werkt ook. Echter het gecontroleerd afbouwen heb ik nog niet voor elkaar. Je zal goed moeten uitzoeken hoe je alles (“ bijvoorbeeld alle threads”, control C) laat synchroniseren. Vandaag voor het eerst met threads bezig --)
Ik ga nu een isdnlog-0.04.zip maken waarin ik de fshisdnlog code er in toevoeg. Het synchronisatie m.b.t. de afbouw ga ik later oplossen.
Ik heb versie isdnlogd-0.06.zip op mijn anonieme ftp server (www.foonsearch.com) gezet.
Deze versie start op na reboot van de windows machine. Hij haalt mysql hostnaam, database, user uit de registery. Deze info wordt door Foondump/Megafoon aangemaakt.
De fout (mem error) in het stoppen van de isdnlogd service op XP zit in handle_isdnlogd_requests thread.
if (pthread_create(&hThreadmain,&connection_attrib, handle_isdnlogd_requests, 0))
Ik zal nog gaan uitzoeken of het te maken heeft met de capi monitor parse error of dat bovenstaande sub thread nog doorloopt en de bijgehorende main service thead al is afgesloten.
isdnlogd is een windows service programma dat de technische monitoring doet van binnen komende isdn calls. Het monitort wie, wanneer gebeld heeft in MySQL. Het programmatje is relatief klein.
Mijn bedoeling is om via een MFC GUI de technisch ISDN registratie database uit te lezen.
Het programma werkt niet goed met een nieuwe ppc Etech kaart. RJG’s RING programma werkt wel goed. Als RING af is ga ik “de tien verschillen zoeken” om het programma ook voor mijn Etech ppc kaart goed te laten werken.
Gisteren begonnen met de ODBC koppeling. Niet alle MySQL SQL werkt bij ODBC SQL. Bijvoorbeeld “SELECT MAX(SNcapilog) AS SNcapilog FROM capilog;” maar vervangen door “SELECT MAX(SNcapilog) FROM capilog;”.
Ik wil eerst de backend in RING ‘af’ maken en daarna de backend gaan programmeren in Isdnlogd.
Alle service programmering behalve de “–load” werkt al in isdnlogd. Dus vanuit dosbox kan je service installeren en starten/stoppen.
De –load optie is een trigger naar het serviceprogramma/windowsproces dat nieuwe informatie is binnen gekomen. Het serviceprogramma kijkt dan in de database wat er gebeuren moet. Het triggeren ga ik met tcp/ip portprogramming doen. Het kan denk ik wel op simpelere manier, maar ik wil isdnlogd als framework voor andere programma’s gebruiken.
Ik denk hierbij aan een Skype achtige variant. Foonsearchd.exe krijgt een SQL berichtje binnen (met online prioriteit) dat een andere peer met een VoIP telefoon/webcam je wilt bellen. Foonsearchd verwerkt het berichtje en stuurt een lokaal tcp/ip (interrupt) request naar videocalld serviceprogramma om een verbinding met deze externe peer op te zetten.
Vandaag even de ODBC/MySQL Backend programmering van RING poorten na isdnlogd. Ook het aantal sekonden dat het duurt tot je de telefoon “opneemt” in database gaan zetten.
De vriendelijke groet Jan Marco
P.S. Met ODBC kan je andere databases gebruiken zoals Access, MSSQL, Oracle, DB2, etc.
Ik heb “MySQL/ODBC” back-end-code van RING in isdnlogd gestopt. Deze code ga ik straks weer terug zetten naar RING. Krijg je dezelfde back-end code in beide projecten.
Een extra veld (StartTime) in capilog opgenomen. Het veld geeft aantal seconden aan voordat je hem opneemt. Het is bij mij een getal tussen 3 en 90 seconden.
Het termineren met Control-C is mij bij MySQL gelukt. Bij ODBC moet ik nog een probleem oplossen dat hij twee maal Close() op database connectie uitvoert. Bij de laatste blijft hij hangen.
Ik heb back-end van ODBC uitgezet. Ik zie dat bij afsluiten van het programma de verwerkingsthread niet stopt. Ik ga vandaag wat test programma’s maken op deze fout op te lossen. Als ik dit oplos kan ik de oplossing ook in foonseachd.exe stoppen.