comparison server_socket.cpp @ 40:f86740dc5fa0

Added an almost-completely-unimplemented TCP server socket object that uses NSPR.
author Atul Varma <varmaa@toolness.com>
date Wed, 24 Jun 2009 13:01:11 -0700
parents
children 68d2a675a33a
comparison
equal deleted inserted replaced
39:067371eb9601 40:f86740dc5fa0
1 /* ***** BEGIN LICENSE BLOCK *****
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3 *
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
8 *
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
12 * License.
13 *
14 * The Original Code is Ubiquity.
15 *
16 * The Initial Developer of the Original Code is Mozilla.
17 * Portions created by the Initial Developer are Copyright (C) 2007
18 * the Initial Developer. All Rights Reserved.
19 *
20 * Contributor(s):
21 * Atul Varma <atul@mozilla.com>
22 *
23 * Alternatively, the contents of this file may be used under the terms of
24 * either the GNU General Public License Version 2 or later (the "GPL"), or
25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26 * in which case the provisions of the GPL or the LGPL are applicable instead
27 * of those above. If you wish to allow use of your version of this file only
28 * under the terms of either the GPL or the LGPL, and not to allow others to
29 * use your version of this file under the terms of the MPL, indicate your
30 * decision by deleting the provisions above and replace them with the notice
31 * and other provisions required by the GPL or the LGPL. If you do not delete
32 * the provisions above, a recipient may use your version of this file under
33 * the terms of any one of the MPL, the GPL or the LGPL.
34 *
35 * ***** END LICENSE BLOCK ***** */
36
37 #include "server_socket.h"
38
39 #include "nspr.h"
40
41 static void finalize(JSContext *cx, JSObject *obj)
42 {
43 PRFileDesc *fd = (PRFileDesc *) JS_GetPrivate(cx, obj);
44 // Just in case, ensure we don't have a dangling pointer.
45 JS_SetPrivate(cx, obj, NULL);
46 PR_Close(fd);
47 }
48
49 JSExtendedClass sServerSocket_JSClass = {
50 // JSClass (JSExtendedClass.base) initialization
51 { "FlexibleWrapper",
52 JSCLASS_IS_EXTENDED | JSCLASS_HAS_PRIVATE |
53 JSCLASS_HAS_RESERVED_SLOTS(0),
54 JS_PropertyStub, JS_PropertyStub,
55 JS_PropertyStub, JS_PropertyStub,
56 JS_EnumerateStub, JS_ResolveStub,
57 JS_ConvertStub, finalize,
58 NULL, NULL,
59 NULL, NULL,
60 NULL, NULL,
61 NULL, NULL
62 },
63 // JSExtendedClass initialization
64 NULL, // equality
65 NULL, // outerObject
66 NULL, // innerObject
67 NULL, // iterator
68 NULL, // wrapper
69 JSCLASS_NO_RESERVED_MEMBERS
70 };
71
72 JSBool createServerSocket(JSContext *cx, JSObject *obj, uintN argc,
73 jsval *argv, jsval *rval)
74 {
75 JSObject *object = JS_NewObject(
76 cx,
77 &sServerSocket_JSClass.base,
78 NULL,
79 JS_GetScopeChain(cx)
80 );
81 PRFileDesc *fd = PR_OpenTCPSocket(PR_AF_INET);
82 JS_SetPrivate(cx, object, fd);
83 *rval = OBJECT_TO_JSVAL(object);
84 return JS_TRUE;
85 }