Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F949078
Streamer.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
Streamer.js
View Options
if
(
!
dojo
.
_hasResource
[
"dojox.timing.Streamer"
]){
//_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo
.
_hasResource
[
"dojox.timing.Streamer"
]
=
true
;
dojo
.
provide
(
"dojox.timing.Streamer"
);
dojo
.
require
(
"dojox.timing._base"
);
dojox
.
timing
.
Streamer
=
function
(
/* function */
input
,
/* function */
output
,
/* int */
interval
,
/* int */
minimum
,
/* array */
initialData
){
// summary
// Streamer will take an input function that pushes N datapoints into a
// queue, and will pass the next point in that queue out to an
// output function at the passed interval; this way you can emulate
// a constant buffered stream of data.
// input: the function executed when the internal queue reaches minimumSize
// output: the function executed on internal tick
// interval: the interval in ms at which the output function is fired.
// minimum: the minimum number of elements in the internal queue.
var
self
=
this
;
var
queue
=
[];
// public properties
this
.
interval
=
interval
||
1000
;
this
.
minimumSize
=
minimum
||
10
;
// latency usually == interval * minimumSize
this
.
inputFunction
=
input
||
function
(
q
){
};
this
.
outputFunction
=
output
||
function
(
point
){
};
// more setup
var
timer
=
new
dojox
.
timing
.
Timer
(
this
.
interval
);
var
tick
=
function
(){
self
.
onTick
(
self
);
if
(
queue
.
length
<
self
.
minimumSize
){
self
.
inputFunction
(
queue
);
}
var
obj
=
queue
.
shift
();
while
(
typeof
(
obj
)
==
"undefined"
&&
queue
.
length
>
0
){
obj
=
queue
.
shift
();
}
// check to see if the input function needs to be fired
// stop before firing the output function
// TODO: relegate this to the output function?
if
(
typeof
(
obj
)
==
"undefined"
){
self
.
stop
();
return
;
}
// call the output function.
self
.
outputFunction
(
obj
);
};
this
.
setInterval
=
function
(
/* int */
ms
){
// summary
// sets the interval in milliseconds of the internal timer
this
.
interval
=
ms
;
timer
.
setInterval
(
ms
);
};
this
.
onTick
=
function
(
/* dojox.timing.Streamer */
obj
){
};
// wrap the timer functions so that we can connect to them if needed.
this
.
start
=
function
(){
// summary
// starts the Streamer
if
(
typeof
(
this
.
inputFunction
)
==
"function"
&&
typeof
(
this
.
outputFunction
)
==
"function"
){
timer
.
start
();
return
;
}
throw
new
Error
(
"You cannot start a Streamer without an input and an output function."
);
};
this
.
onStart
=
function
(){
};
this
.
stop
=
function
(){
// summary
// stops the Streamer
timer
.
stop
();
};
this
.
onStop
=
function
(){
};
// finish initialization
timer
.
onTick
=
this
.
tick
;
timer
.
onStart
=
this
.
onStart
;
timer
.
onStop
=
this
.
onStop
;
if
(
initialData
){
queue
.
concat
(
initialData
);
}
};
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 26, 22:12 (2 d, 19 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26272
Default Alt Text
Streamer.js (2 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment