Är Telldus APIet trådsäkert?
Posted: Fri Mar 17, 2023 9:45 am
Kan jag kalla på flera tdTurnOn samtidigt? Kommer anropen att köas då? Om inte, hur länge måste man vänta mellan varje anrop?
Tack på förhand!
Tack på förhand!
A little text to describe your forum
https://forum.telldus.com/
När du skriver att ert API består av två delar, vad menar du mer specifikt då? På er Trac på http://developer.telldus.se/ står det "Telldus provides two different APIs for access". Är det dessa du refererar till? Isåfall är det ena telldus-core och det andra Telldus Live? Eller menar du att telldus-core består av en service (/etc/init.d/telldusd start|stop|restart) och ett klientlib (libtelldus-core.so), och att detta bör anses trådsäkert? Vad är isåfall icke-trådsäkert?micke.prag wrote:Vårt api består av två delar (fr.o.m. version 2.1). En service och ett klientbibliotek. Servicen garanterar vi tråd- och processäkerhet eftersom flera applikationer ska kunna använda APIt samtidigt.
Vi garanterar inte trådsäkerhet i klientbiblioteket utan det bör du lösa själv i ditt program. En snabb koll på koden så delar dock inte två tdTurnOn() anrop samma resurser så det bör inte vara några problem att ha två anrop samtidigt.
Om du köar upp för många anrop på en gång och anropen tar tid kan du istället få problem med timeout.
Ang. väntan så kan du direkt börja med nästa anrop när första returnerar.
Det du pratar om är Telldus Live? Eller?krambriw wrote:Min mag-gropskänsla (kan man säga så?) är att Telldus Service svarar mycket säkrare och snabbare nu än någonsin tidigare.
Åtminstone när jag skickar kommandon från EventGhost så fungerar allting mycket bra. Jag kan sända som en tokig utan att jag ser några retries (vilket ofta förekom tidigare om man sände många kommandon snabbt efter varandra) , allting verkar köa upp sig snyggt och prydligt.
mvh Walter
Nej, jag menar Telldus Service som körs under Windows så jag antar det är telldus-coreDet du pratar om är Telldus Live? Eller?
Okej, och vad är det du kallar "klientdel" som inte är trådsäker? Är det libtelldus-core.so-funktionerna (tdTurnOn, tdTurnOff, tdDim, etc)? Som jag fattat det använder libtelldus-core.so tjänsten telldusd för att exekvera kommandona, men det kan jag ha fattat fel.micke.prag wrote:Jag pratar inte om Telldus Live! utan endast telldus-core (telldusd + libtelldus-core.so).
Det låter som att jag kan välja mellan att använda tjänsten, som är trådsäker, eller klientbiblioteket som inte är trådsäkert. Var finns dokumentation om tjänsten (jag letade på http://developer.telldus.se/, hittade inget)?micke.prag wrote:Vårt api består av två delar (fr.o.m. version 2.1). En service och ett klientbibliotek. Servicen garanterar vi tråd- och processäkerhet eftersom flera applikationer ska kunna använda APIt samtidigt.
Det stämmer, det fungerar precis så.jeinor wrote:Jag trodde att det funkade så här:
tdTurnOn()/tdDim()/etc -> libtelldus-core.so -> telldusd -> TellStick
Precis.jeinor wrote: Alltså, om jag i samma applikationer använder tdTurnOn() (eller motsvarande anrop) samtidigt från flera olika trådar KAN det bli problem, men flera applikationer kan var och en för sig anropa olika td-funktioner utan att det blir synkroniseringsproblem.
Ja, annars ska det behandlas som en bugg.jeinor wrote:När anropen väl anländer till tjänsten är det lungt, så att säga?