aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-10-01 16:35:27 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-10-01 16:35:27 -0700
commit6c8ac389060b685dec87faade39841c2799c4d0a (patch)
tree497941020c5863a2a0052ad1088b47c2b0b39424 /src
parent2a4599a92a570a461a60b1eb79df03908a047711 (diff)
add socket send(), and almost working test
Diffstat (limited to 'src')
-rw-r--r--src/library.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/library.js b/src/library.js
index 938a3c92..a41887bd 100644
--- a/src/library.js
+++ b/src/library.js
@@ -6391,6 +6391,29 @@ LibraryManager.library = {
console.log('binary!');
}
}
+ info.sendQueue = [];
+ info.senderWaiting = false;
+ info.sender = function(data) {
+ if (data) {
+ info.sendQueue.push(data);
+ } else if (info.sendQueue.length == 0) {
+ return;
+ }
+ if (info.socket.readyState != info.socket.OPEN) {
+ if (!info.senderWaiting) {
+ console.log('waiting for socket in order to send');
+ setTimeout(info.sender, 100);
+ info.senderWaiting = true;
+ }
+ return;
+ }
+ for (var i = 0; i < info.sendQueue.length; i++) {
+ console.log('sending ' + info.sendQueue[i]);
+ info.socket.send(window.btoa(info.sendQueue[i]));
+ }
+ info.sendQueue = [];
+ info.senderWaiting = false;
+ }
return 0;
},
@@ -6413,6 +6436,13 @@ LibraryManager.library = {
return ret;
},
+ send__deps: ['$Sockets'],
+ send: function(fd, buf, len, flags) {
+ var info = Sockets.fds[fd];
+ if (!info) return -1;
+ info.sender(Pointer_stringify(buf, len));
+ },
+
shutdown: function(fd, how) {
var info = Sockets.fds[fd];
if (!info) return -1;