Är Telldus APIet trådsäkert?

Moderator: Telldus

Post Reply
jeinor
Posts: 38
Joined: Fri Mar 17, 2023 9:45 am

Är Telldus APIet trådsäkert?

Post by jeinor »

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!
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Är Telldus APIet trådsäkert?

Post by micke.prag »

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.
Micke Prag
Software
Telldus Technologies
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: Är Telldus APIet trådsäkert?

Post by krambriw »

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
jeinor
Posts: 38
Joined: Fri Mar 17, 2023 9:45 am

Re: Är Telldus APIet trådsäkert?

Post by jeinor »

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.
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? :)

Nu blev det lite förvirrat här, jag kollrar väl bort mig som vanligt...

Tack för svar!
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
Det du pratar om är Telldus Live? Eller?
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: Är Telldus APIet trådsäkert?

Post by krambriw »

Det du pratar om är Telldus Live? Eller?
Nej, jag menar Telldus Service som körs under Windows så jag antar det är telldus-core

mvh
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Är Telldus APIet trådsäkert?

Post by micke.prag »

Jag pratar inte om Telldus Live! utan endast telldus-core (telldusd + libtelldus-core.so).
Micke Prag
Software
Telldus Technologies
jeinor
Posts: 38
Joined: Fri Mar 17, 2023 9:45 am

Re: Är Telldus APIet trådsäkert?

Post by jeinor »

micke.prag wrote:Jag pratar inte om Telldus Live! utan endast telldus-core (telldusd + libtelldus-core.so).
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
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Är Telldus APIet trådsäkert?

Post by micke.prag »

telldusd = service som alltid är igång
libtelldus-core.so, TelldusCore.dll och TelldusCore.framework = klient som applikationer länkar mot.
Micke Prag
Software
Telldus Technologies
jeinor
Posts: 38
Joined: Fri Mar 17, 2023 9:45 am

Re: Är Telldus APIet trådsäkert?

Post by jeinor »

Det är uppfattat. Jag trodde att det funkade så här:

tdTurnOn()/tdDim()/etc -> libtelldus-core.so -> telldusd -> TellStick

Alltså att klientlibbet utför kommandon genom att anropa tjänsten (och att tjänsten sedan utför dem mot TellSticken). Som jag förstår dig nu går tdTurnOn() och de anropen som finns i libtelldus-core.so direkt mot TellStick:en, och telldusd är någonting annat? Hur använder jag som utvecklare telldusd?

Det om förvirrar mig är det här:
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 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)?

Tack för alla svar!
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Är Telldus APIet trådsäkert?

Post by micke.prag »

jeinor wrote:Jag trodde att det funkade så här:
tdTurnOn()/tdDim()/etc -> libtelldus-core.so -> telldusd -> TellStick
Det stämmer, det fungerar precis så.
Micke Prag
Software
Telldus Technologies
jeinor
Posts: 38
Joined: Fri Mar 17, 2023 9:45 am

Re: Är Telldus APIet trådsäkert?

Post by jeinor »

Okej, och libtelldus-core.so är inte trådsäkert, men tjänsten är trådsäker? 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. När anropen väl anländer till tjänsten är det lungt, så att säga?
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Är Telldus APIet trådsäkert?

Post by micke.prag »

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.
Precis.

Dock som jag sa så delas inga resurser i ett tdTurnOn() anrop i den aktuella versionen. Så du kan anropa på. Dock är det inget vi garanterar för kommande versioner. Därav rekommenderade jag dig att bygga in eget lås.
jeinor wrote:När anropen väl anländer till tjänsten är det lungt, så att säga?
Ja, annars ska det behandlas som en bugg.
Micke Prag
Software
Telldus Technologies
Post Reply