Mercurial > spidermonkey-playground
comparison server_socket.cpp @ 47:e46bf8ff5dc5
implemented simple send().
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Wed, 24 Jun 2009 15:32:58 -0700 |
parents | 48dfabed15be |
children | aabc1dd92639 |
comparison
equal
deleted
inserted
replaced
46:48dfabed15be | 47:e46bf8ff5dc5 |
---|---|
85 NULL, // iterator | 85 NULL, // iterator |
86 NULL, // wrapper | 86 NULL, // wrapper |
87 JSCLASS_NO_RESERVED_MEMBERS | 87 JSCLASS_NO_RESERVED_MEMBERS |
88 }; | 88 }; |
89 | 89 |
90 static JSBool send(JSContext *cx, JSObject *obj, uintN argc, | |
91 jsval *argv, jsval *rval) | |
92 { | |
93 JSString *data; | |
94 | |
95 if (!JS_ConvertArguments(cx, argc, argv, "S", &data)) | |
96 return JS_FALSE; | |
97 | |
98 char *dataBytes = JS_GetStringBytes(data); | |
99 size_t dataLength = JS_GetStringLength(data); | |
100 | |
101 if (dataLength > 0) { | |
102 PRFileDesc *fd; | |
103 if (!getSocket(cx, obj, &fd)) | |
104 return JS_FALSE; | |
105 | |
106 PRInt32 sent = PR_Send(fd, dataBytes, dataLength, 0, | |
107 PR_INTERVAL_NO_TIMEOUT); | |
108 | |
109 if (sent == -1) { | |
110 JS_ReportError(cx, "Send failed."); | |
111 return JS_FALSE; | |
112 } | |
113 } | |
114 | |
115 *rval = JSVAL_VOID; | |
116 return JS_TRUE; | |
117 } | |
118 | |
119 static JSBool recv(JSContext *cx, JSObject *obj, uintN argc, | |
120 jsval *argv, jsval *rval) | |
121 { | |
122 | |
123 } | |
124 | |
90 static JSBool listen(JSContext *cx, JSObject *obj, uintN argc, | 125 static JSBool listen(JSContext *cx, JSObject *obj, uintN argc, |
91 jsval *argv, jsval *rval) | 126 jsval *argv, jsval *rval) |
92 { | 127 { |
93 PRInt32 backlog = 0; | 128 PRInt32 backlog = 0; |
94 | 129 |
173 | 208 |
174 static JSFunctionSpec methods[] = { | 209 static JSFunctionSpec methods[] = { |
175 JS_FS("bind", bind, 2, 0, 0), | 210 JS_FS("bind", bind, 2, 0, 0), |
176 JS_FS("listen", listen, 0, 0, 0), | 211 JS_FS("listen", listen, 0, 0, 0), |
177 JS_FS("accept", accept, 0, 0, 0), | 212 JS_FS("accept", accept, 0, 0, 0), |
213 JS_FS("send", send, 1, 0, 0), | |
214 JS_FS("recv", recv, 1, 0, 0), | |
178 JS_FS_END | 215 JS_FS_END |
179 }; | 216 }; |
180 | 217 |
181 static JSBool createWithFd(JSContext *cx, jsval *rval, PRFileDesc *fd) | 218 static JSBool createWithFd(JSContext *cx, jsval *rval, PRFileDesc *fd) |
182 { | 219 { |