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 {