001: /*
002: * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved
003: *
004: * This file is part of Resin(R) Open Source
005: *
006: * Each copy or derived work must preserve the copyright notice and this
007: * notice unmodified.
008: *
009: * Resin Open Source is free software; you can redistribute it and/or modify
010: * it under the terms of the GNU General Public License as published by
011: * the Free Software Foundation; either version 2 of the License, or
012: * (at your option) any later version.
013: *
014: * Resin Open Source is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
017: * of NON-INFRINGEMENT. See the GNU General Public License for more
018: * details.
019: *
020: * You should have received a copy of the GNU General Public License
021: * along with Resin Open Source; if not, write to the
022: *
023: * Free Software Foundation, Inc.
024: * 59 Temple Place, Suite 330
025: * Boston, MA 02111-1307 USA
026: *
027: * @author Scott Ferguson
028: */
029:
030: package com.caucho.quercus.lib.file;
031:
032: import com.caucho.quercus.annotation.NotNull;
033: import com.caucho.quercus.annotation.Optional;
034: import com.caucho.quercus.annotation.ReturnNullAsFalse;
035: import com.caucho.quercus.env.BooleanValue;
036: import com.caucho.quercus.env.Env;
037: import com.caucho.quercus.env.LongValue;
038: import com.caucho.quercus.env.StringValue;
039: import com.caucho.quercus.env.Value;
040: import com.caucho.quercus.module.AbstractQuercusModule;
041: import com.caucho.util.L10N;
042: import com.caucho.vfs.TempBuffer;
043: import com.caucho.vfs.TempCharBuffer;
044:
045: import java.io.IOException;
046: import java.io.InputStream;
047: import java.net.InetAddress;
048: import java.net.InetSocketAddress;
049: import java.net.Socket;
050: import java.util.HashMap;
051: import java.util.Map;
052: import java.util.logging.Logger;
053:
054: /**
055: * Information and actions for about sockets
056: */
057: public class SocketModule extends AbstractQuercusModule {
058: private static final L10N L = new L10N(SocketModule.class);
059: private static final Logger log = Logger
060: .getLogger(SocketModule.class.getName());
061:
062: private static final int AF_UNIX = 1;
063: private static final int AF_INET = 2;
064: private static final int AF_INET6 = 10;
065: private static final int SOCK_STREAM = 1;
066: private static final int SOCK_DGRAM = 2;
067: private static final int SOCK_RAW = 3;
068: private static final int SOCK_SEQPACKET = 5;
069: private static final int SOCK_RDM = 4;
070: private static final int MSG_OOB = 1;
071: private static final int MSG_WAITALL = 256;
072: private static final int MSG_PEEK = 2;
073: private static final int MSG_DONTROUTE = 4;
074: private static final int SO_DEBUG = 1;
075: private static final int SO_REUSEADDR = 2;
076: private static final int SO_KEEPALIVE = 9;
077: private static final int SO_DONTROUTE = 5;
078: private static final int SO_LINGER = 13;
079: private static final int SO_BROADCAST = 6;
080: private static final int SO_OOBINLINE = 10;
081: private static final int SO_SNDBUF = 7;
082: private static final int SO_RCVBUF = 8;
083: private static final int SO_SNDLOWAT = 19;
084: private static final int SO_RCVLOWAT = 18;
085: private static final int SO_SNDTIMEO = 21;
086: private static final int SO_RCVTIMEO = 20;
087: private static final int SO_TYPE = 3;
088: private static final int SO_ERROR = 4;
089: private static final int SOL_SOCKET = 1;
090: private static final int SOMAXCONN = 128;
091: private static final int PHP_NORMAL_READ = 1;
092: private static final int PHP_BINARY_READ = 2;
093: private static final int SOCKET_EPERM = 1;
094: private static final int SOCKET_ENOENT = 2;
095: private static final int SOCKET_EINTR = 4;
096: private static final int SOCKET_EIO = 5;
097: private static final int SOCKET_ENXIO = 6;
098: private static final int SOCKET_E2BIG = 7;
099: private static final int SOCKET_EBADF = 9;
100: private static final int SOCKET_EAGAIN = 11;
101: private static final int SOCKET_ENOMEM = 12;
102: private static final int SOCKET_EACCES = 13;
103: private static final int SOCKET_EFAULT = 14;
104: private static final int SOCKET_ENOTBLK = 15;
105: private static final int SOCKET_EBUSY = 16;
106: private static final int SOCKET_EEXIST = 17;
107: private static final int SOCKET_EXDEV = 18;
108: private static final int SOCKET_ENODEV = 19;
109: private static final int SOCKET_ENOTDIR = 20;
110: private static final int SOCKET_EISDIR = 21;
111: private static final int SOCKET_EINVAL = 22;
112: private static final int SOCKET_ENFILE = 23;
113: private static final int SOCKET_EMFILE = 24;
114: private static final int SOCKET_ENOTTY = 25;
115: private static final int SOCKET_ENOSPC = 28;
116: private static final int SOCKET_ESPIPE = 29;
117: private static final int SOCKET_EROFS = 30;
118: private static final int SOCKET_EMLINK = 31;
119: private static final int SOCKET_EPIPE = 32;
120: private static final int SOCKET_ENAMETOOLONG = 36;
121: private static final int SOCKET_ENOLCK = 37;
122: private static final int SOCKET_ENOSYS = 38;
123: private static final int SOCKET_ENOTEMPTY = 39;
124: private static final int SOCKET_ELOOP = 40;
125: private static final int SOCKET_EWOULDBLOCK = 11;
126: private static final int SOCKET_ENOMSG = 42;
127: private static final int SOCKET_EIDRM = 43;
128: private static final int SOCKET_ECHRNG = 44;
129: private static final int SOCKET_EL2NSYNC = 45;
130: private static final int SOCKET_EL3HLT = 46;
131: private static final int SOCKET_EL3RST = 47;
132: private static final int SOCKET_ELNRNG = 48;
133: private static final int SOCKET_EUNATCH = 49;
134: private static final int SOCKET_ENOCSI = 50;
135: private static final int SOCKET_EL2HLT = 51;
136: private static final int SOCKET_EBADE = 52;
137: private static final int SOCKET_EBADR = 53;
138: private static final int SOCKET_EXFULL = 54;
139: private static final int SOCKET_ENOANO = 55;
140: private static final int SOCKET_EBADRQC = 56;
141: private static final int SOCKET_EBADSLT = 57;
142: private static final int SOCKET_ENOSTR = 60;
143: private static final int SOCKET_ENODATA = 61;
144: private static final int SOCKET_ETIME = 62;
145: private static final int SOCKET_ENOSR = 63;
146: private static final int SOCKET_ENONET = 64;
147: private static final int SOCKET_EREMOTE = 66;
148: private static final int SOCKET_ENOLINK = 67;
149: private static final int SOCKET_EADV = 68;
150: private static final int SOCKET_ESRMNT = 69;
151: private static final int SOCKET_ECOMM = 70;
152: private static final int SOCKET_EPROTO = 71;
153: private static final int SOCKET_EMULTIHOP = 72;
154: private static final int SOCKET_EBADMSG = 74;
155: private static final int SOCKET_ENOTUNIQ = 76;
156: private static final int SOCKET_EBADFD = 77;
157: private static final int SOCKET_EREMCHG = 78;
158: private static final int SOCKET_ERESTART = 85;
159: private static final int SOCKET_ESTRPIPE = 86;
160: private static final int SOCKET_EUSERS = 87;
161: private static final int SOCKET_ENOTSOCK = 88;
162: private static final int SOCKET_EDESTADDRREQ = 89;
163: private static final int SOCKET_EMSGSIZE = 90;
164: private static final int SOCKET_EPROTOTYPE = 91;
165: private static final int SOCKET_ENOPROTOOPT = 92;
166: private static final int SOCKET_EPROTONOSUPPORT = 93;
167: private static final int SOCKET_ESOCKTNOSUPPORT = 94;
168: private static final int SOCKET_EOPNOTSUPP = 95;
169: private static final int SOCKET_EPFNOSUPPORT = 96;
170: private static final int SOCKET_EAFNOSUPPORT = 97;
171: private static final int SOCKET_EADDRINUSE = 98;
172: private static final int SOCKET_EADDRNOTAVAIL = 99;
173: private static final int SOCKET_ENETDOWN = 100;
174: private static final int SOCKET_ENETUNREACH = 101;
175: private static final int SOCKET_ENETRESET = 102;
176: private static final int SOCKET_ECONNABORTED = 103;
177: private static final int SOCKET_ECONNRESET = 104;
178: private static final int SOCKET_ENOBUFS = 105;
179: private static final int SOCKET_EISCONN = 106;
180: private static final int SOCKET_ENOTCONN = 107;
181: private static final int SOCKET_ESHUTDOWN = 108;
182: private static final int SOCKET_ETOOMANYREFS = 109;
183: private static final int SOCKET_ETIMEDOUT = 110;
184: private static final int SOCKET_ECONNREFUSED = 111;
185: private static final int SOCKET_EHOSTDOWN = 112;
186: private static final int SOCKET_EHOSTUNREACH = 113;
187: private static final int SOCKET_EALREADY = 114;
188: private static final int SOCKET_EINPROGRESS = 115;
189: private static final int SOCKET_EISNAM = 120;
190: private static final int SOCKET_EREMOTEIO = 121;
191: private static final int SOCKET_EDQUOT = 122;
192: private static final int SOCKET_ENOMEDIUM = 123;
193: private static final int SOCKET_EMEDIUMTYPE = 124;
194: private static final int SOL_TCP = 6;
195: private static final int SOL_UDP = 17;
196:
197: private static final HashMap<String, Value> _constMap = new HashMap<String, Value>();
198:
199: /**
200: * Returns the constants defined by this module.
201: */
202: public Map<String, Value> getConstMap() {
203: return _constMap;
204: }
205:
206: @ReturnNullAsFalse
207: public static SocketInputOutput socket_create(Env env, int domain,
208: int type, int protocol) {
209: try {
210: InetAddress local = null;
211:
212: SocketInputOutput.Domain socketDomain = SocketInputOutput.Domain.AF_INET;
213:
214: switch (domain) {
215: case AF_INET:
216: socketDomain = SocketInputOutput.Domain.AF_INET;
217: break;
218: case AF_INET6:
219: socketDomain = SocketInputOutput.Domain.AF_INET6;
220: break;
221: case AF_UNIX:
222: env.warning(L.l("Unix sockets not supported"));
223: return null;
224: default:
225: env.warning(L.l("Unknown domain: {0}", domain));
226: return null;
227: }
228:
229: switch (type) {
230: case SOCK_STREAM:
231: return new SocketInputOutput(env, new Socket(),
232: socketDomain);
233: case SOCK_DGRAM:
234: env.warning(L.l("Datagrams not supported"));
235: return null;
236: default:
237: return null;
238: }
239:
240: } catch (Exception e) {
241: return null;
242: }
243: }
244:
245: public static boolean socket_bind(Env env, @NotNull
246: SocketInputOutput socket, StringValue address, @Optional("0")
247: int port) {
248: try {
249: InetAddress[] addresses = InetAddress.getAllByName(address
250: .toString());
251:
252: if (addresses == null || addresses.length < 1) {
253: //XXX: socket.setError();
254: return false;
255: }
256:
257: InetSocketAddress socketAddress = new InetSocketAddress(
258: addresses[0], port);
259:
260: socket.bind(socketAddress);
261:
262: return true;
263: } catch (IOException e) {
264: return false;
265: }
266: }
267:
268: public static void socket_close(Env env, @NotNull
269: SocketInputOutput socket) {
270: socket.close();
271: }
272:
273: public static boolean socket_connect(Env env, @NotNull
274: SocketInputOutput socket, StringValue address, @Optional
275: int port) {
276: try {
277: InetAddress[] addresses = InetAddress.getAllByName(address
278: .toString());
279:
280: if (addresses == null || addresses.length < 1) {
281: //XXX: socket.setError();
282: return false;
283: }
284:
285: InetSocketAddress socketAddress = new InetSocketAddress(
286: addresses[0], port);
287:
288: socket.connect(socketAddress);
289:
290: return true;
291: } catch (IOException e) {
292: return false;
293: }
294: }
295:
296: public static Value socket_get_status(Env env, BinaryStream stream) {
297: return StreamModule.stream_get_meta_data(env, stream);
298: }
299:
300: public static Value socket_read(Env env, @NotNull
301: SocketInputOutput socket, int length, @Optional
302: int type) {
303: TempBuffer tempBuffer = null;
304: TempCharBuffer tempCharBuffer = null;
305:
306: try {
307: if (type == PHP_NORMAL_READ) {
308: return socket.readLine(length);
309: } else {
310: tempBuffer = TempBuffer.allocate();
311:
312: if (length > tempBuffer.getCapacity())
313: length = tempBuffer.getCapacity();
314:
315: byte[] buffer = tempBuffer.getBuffer();
316:
317: length = socket.read(buffer, 0, length);
318:
319: if (length > 0) {
320: StringValue sb = env.createBinaryBuilder(buffer, 0,
321: length);
322: return sb;
323: } else
324: return BooleanValue.FALSE;
325: }
326: } catch (IOException e) {
327: env.warning(e);
328:
329: return BooleanValue.FALSE;
330: } finally {
331: if (tempCharBuffer != null)
332: TempCharBuffer.free(tempCharBuffer);
333:
334: if (tempBuffer != null)
335: TempBuffer.free(tempBuffer);
336: }
337: }
338:
339: public static boolean socket_set_timeout(Env env, @NotNull
340: Value stream, int seconds, @Optional("-1")
341: int milliseconds) {
342: return StreamModule.stream_set_timeout(env, stream, seconds,
343: milliseconds);
344: }
345:
346: public static Value socket_write(Env env, @NotNull
347: SocketInputOutput socket, @NotNull
348: InputStream is, @Optional("-1")
349: int length) {
350: if (is == null)
351: return BooleanValue.FALSE;
352:
353: // php/4800
354: if (length < 0)
355: length = Integer.MAX_VALUE;
356:
357: int result = socket.write(is, length);
358:
359: if (result < 0)
360: return BooleanValue.FALSE;
361: else
362: return LongValue.create(result);
363: }
364:
365: /**
366: * Closes a socket.
367: *
368: * @param how 0 = read, 1 = write, 2 = both
369: */
370: public boolean socket_shutdown(Env env, @NotNull
371: SocketInputOutput file, int how) {
372: if (file == null)
373: return false;
374:
375: switch (how) {
376: case 0:
377: file.closeRead();
378: return true;
379:
380: case 1:
381: file.closeWrite();
382: return true;
383:
384: case 2:
385: file.close();
386: return true;
387:
388: default:
389: return false;
390: }
391: }
392:
393: static {
394: _constMap.put("AF_UNIX", LongValue.create(AF_UNIX));
395: _constMap.put("AF_INET", LongValue.create(AF_INET));
396: _constMap.put("AF_INET6", LongValue.create(AF_INET6));
397:
398: _constMap.put("SOCK_STREAM", LongValue.create(SOCK_STREAM));
399: _constMap.put("SOCK_DGRAM", LongValue.create(SOCK_DGRAM));
400: _constMap.put("SOCK_RAW", LongValue.create(SOCK_RAW));
401: _constMap.put("SOCK_SEQPACKET", LongValue
402: .create(SOCK_SEQPACKET));
403: _constMap.put("SOCK_RDM", LongValue.create(SOCK_RDM));
404:
405: _constMap.put("MSG_OOB", LongValue.create(MSG_OOB));
406: _constMap.put("MSG_WAITALL", LongValue.create(MSG_WAITALL));
407: _constMap.put("MSG_PEEK", LongValue.create(MSG_PEEK));
408: _constMap.put("MSG_DONTROUTE", LongValue.create(MSG_DONTROUTE));
409:
410: _constMap.put("SO_DEBUG", LongValue.create(SO_DEBUG));
411: _constMap.put("SO_REUSEADDR", LongValue.create(SO_REUSEADDR));
412: _constMap.put("SO_KEEPALIVE", LongValue.create(SO_KEEPALIVE));
413: _constMap.put("SO_DONTROUTE", LongValue.create(SO_DONTROUTE));
414: _constMap.put("SO_LINGER", LongValue.create(SO_LINGER));
415: _constMap.put("SO_BROADCAST", LongValue.create(SO_BROADCAST));
416: _constMap.put("SO_OOBINLINE", LongValue.create(SO_OOBINLINE));
417: _constMap.put("SO_SNDBUF", LongValue.create(SO_SNDBUF));
418: _constMap.put("SO_RCVBUF", LongValue.create(SO_RCVBUF));
419: _constMap.put("SO_SNDLOWAT", LongValue.create(SO_SNDLOWAT));
420: _constMap.put("SO_RCVLOWAT", LongValue.create(SO_RCVLOWAT));
421: _constMap.put("SO_SNDTIMEO", LongValue.create(SO_SNDTIMEO));
422: _constMap.put("SO_RCVTIMEO", LongValue.create(SO_RCVTIMEO));
423: _constMap.put("SO_TYPE", LongValue.create(SO_TYPE));
424: _constMap.put("SO_ERROR", LongValue.create(SO_ERROR));
425:
426: _constMap.put("SOL_SOCKET", LongValue.create(SOL_SOCKET));
427:
428: _constMap.put("SOMAXCONN", LongValue.create(SOMAXCONN));
429:
430: _constMap.put("PHP_NORMAL_READ", LongValue
431: .create(PHP_NORMAL_READ));
432: _constMap.put("PHP_BINARY_READ", LongValue
433: .create(PHP_BINARY_READ));
434:
435: _constMap.put("SOCKET_EPERM", LongValue.create(SOCKET_EPERM));
436: _constMap.put("SOCKET_ENOENT", LongValue.create(SOCKET_ENOENT));
437: _constMap.put("SOCKET_EINTR", LongValue.create(SOCKET_EINTR));
438: _constMap.put("SOCKET_EIO", LongValue.create(SOCKET_EIO));
439: _constMap.put("SOCKET_ENXIO", LongValue.create(SOCKET_ENXIO));
440: _constMap.put("SOCKET_E2BIG", LongValue.create(SOCKET_E2BIG));
441: _constMap.put("SOCKET_EBADF", LongValue.create(SOCKET_EBADF));
442: _constMap.put("SOCKET_EAGAIN", LongValue.create(SOCKET_EAGAIN));
443: _constMap.put("SOCKET_ENOMEM", LongValue.create(SOCKET_ENOMEM));
444: _constMap.put("SOCKET_EACCES", LongValue.create(SOCKET_EACCES));
445: _constMap.put("SOCKET_EFAULT", LongValue.create(SOCKET_EFAULT));
446: _constMap.put("SOCKET_ENOTBLK", LongValue
447: .create(SOCKET_ENOTBLK));
448: _constMap.put("SOCKET_EBUSY", LongValue.create(SOCKET_EBUSY));
449: _constMap.put("SOCKET_EEXIST", LongValue.create(SOCKET_EEXIST));
450: _constMap.put("SOCKET_EXDEV", LongValue.create(SOCKET_EXDEV));
451: _constMap.put("SOCKET_ENODEV", LongValue.create(SOCKET_ENODEV));
452: _constMap.put("SOCKET_ENOTDIR", LongValue
453: .create(SOCKET_ENOTDIR));
454: _constMap.put("SOCKET_EISDIR", LongValue.create(SOCKET_EISDIR));
455: _constMap.put("SOCKET_EINVAL", LongValue.create(SOCKET_EINVAL));
456: _constMap.put("SOCKET_ENFILE", LongValue.create(SOCKET_ENFILE));
457: _constMap.put("SOCKET_EMFILE", LongValue.create(SOCKET_EMFILE));
458: _constMap.put("SOCKET_ENOTTY", LongValue.create(SOCKET_ENOTTY));
459: _constMap.put("SOCKET_ENOSPC", LongValue.create(SOCKET_ENOSPC));
460: _constMap.put("SOCKET_ESPIPE", LongValue.create(SOCKET_ESPIPE));
461: _constMap.put("SOCKET_EROFS", LongValue.create(SOCKET_EROFS));
462: _constMap.put("SOCKET_EMLINK", LongValue.create(SOCKET_EMLINK));
463: _constMap.put("SOCKET_EPIPE", LongValue.create(SOCKET_EPIPE));
464: _constMap.put("SOCKET_ENAMETOOLONG", LongValue
465: .create(SOCKET_ENAMETOOLONG));
466: _constMap.put("SOCKET_ENOLCK", LongValue.create(SOCKET_ENOLCK));
467: _constMap.put("SOCKET_ENOSYS", LongValue.create(SOCKET_ENOSYS));
468: _constMap.put("SOCKET_ENOTEMPTY", LongValue
469: .create(SOCKET_ENOTEMPTY));
470: _constMap.put("SOCKET_ELOOP", LongValue.create(SOCKET_ELOOP));
471: _constMap.put("SOCKET_EWOULDBLOCK", LongValue
472: .create(SOCKET_EWOULDBLOCK));
473: _constMap.put("SOCKET_ENOMSG", LongValue.create(SOCKET_ENOMSG));
474: _constMap.put("SOCKET_EIDRM", LongValue.create(SOCKET_EIDRM));
475: _constMap.put("SOCKET_ECHRNG", LongValue.create(SOCKET_ECHRNG));
476: _constMap.put("SOCKET_EL2NSYNC", LongValue
477: .create(SOCKET_EL2NSYNC));
478: _constMap.put("SOCKET_EL3HLT", LongValue.create(SOCKET_EL3HLT));
479: _constMap.put("SOCKET_EL3RST", LongValue.create(SOCKET_EL3RST));
480: _constMap.put("SOCKET_ELNRNG", LongValue.create(SOCKET_ELNRNG));
481: _constMap.put("SOCKET_EUNATCH", LongValue
482: .create(SOCKET_EUNATCH));
483: _constMap.put("SOCKET_ENOCSI", LongValue.create(SOCKET_ENOCSI));
484: _constMap.put("SOCKET_EL2HLT", LongValue.create(SOCKET_EL2HLT));
485: _constMap.put("SOCKET_EBADE", LongValue.create(SOCKET_EBADE));
486: _constMap.put("SOCKET_EBADR", LongValue.create(SOCKET_EBADR));
487: _constMap.put("SOCKET_EXFULL", LongValue.create(SOCKET_EXFULL));
488: _constMap.put("SOCKET_ENOANO", LongValue.create(SOCKET_ENOANO));
489: _constMap.put("SOCKET_EBADRQC", LongValue
490: .create(SOCKET_EBADRQC));
491: _constMap.put("SOCKET_EBADSLT", LongValue
492: .create(SOCKET_EBADSLT));
493: _constMap.put("SOCKET_ENOSTR", LongValue.create(SOCKET_ENOSTR));
494: _constMap.put("SOCKET_ENODATA", LongValue
495: .create(SOCKET_ENODATA));
496: _constMap.put("SOCKET_ETIME", LongValue.create(SOCKET_ETIME));
497: _constMap.put("SOCKET_ENOSR", LongValue.create(SOCKET_ENOSR));
498: _constMap.put("SOCKET_ENONET", LongValue.create(SOCKET_ENONET));
499: _constMap.put("SOCKET_EREMOTE", LongValue
500: .create(SOCKET_EREMOTE));
501: _constMap.put("SOCKET_ENOLINK", LongValue
502: .create(SOCKET_ENOLINK));
503: _constMap.put("SOCKET_EADV", LongValue.create(SOCKET_EADV));
504: _constMap.put("SOCKET_ESRMNT", LongValue.create(SOCKET_ESRMNT));
505: _constMap.put("SOCKET_ECOMM", LongValue.create(SOCKET_ECOMM));
506: _constMap.put("SOCKET_EPROTO", LongValue.create(SOCKET_EPROTO));
507: _constMap.put("SOCKET_EMULTIHOP", LongValue
508: .create(SOCKET_EMULTIHOP));
509: _constMap.put("SOCKET_EBADMSG", LongValue
510: .create(SOCKET_EBADMSG));
511: _constMap.put("SOCKET_ENOTUNIQ", LongValue
512: .create(SOCKET_ENOTUNIQ));
513: _constMap.put("SOCKET_EBADFD", LongValue.create(SOCKET_EBADFD));
514: _constMap.put("SOCKET_EREMCHG", LongValue
515: .create(SOCKET_EREMCHG));
516: _constMap.put("SOCKET_ERESTART", LongValue
517: .create(SOCKET_ERESTART));
518: _constMap.put("SOCKET_ESTRPIPE", LongValue
519: .create(SOCKET_ESTRPIPE));
520: _constMap.put("SOCKET_EUSERS", LongValue.create(SOCKET_EUSERS));
521: _constMap.put("SOCKET_ENOTSOCK", LongValue
522: .create(SOCKET_ENOTSOCK));
523: _constMap.put("SOCKET_EDESTADDRREQ", LongValue
524: .create(SOCKET_EDESTADDRREQ));
525: _constMap.put("SOCKET_EMSGSIZE", LongValue
526: .create(SOCKET_EMSGSIZE));
527: _constMap.put("SOCKET_EPROTOTYPE", LongValue
528: .create(SOCKET_EPROTOTYPE));
529: _constMap.put("SOCKET_ENOPROTOOPT", LongValue
530: .create(SOCKET_ENOPROTOOPT));
531: _constMap.put("SOCKET_EPROTONOSUPPORT", LongValue
532: .create(SOCKET_EPROTONOSUPPORT));
533: _constMap.put("SOCKET_ESOCKTNOSUPPORT", LongValue
534: .create(SOCKET_ESOCKTNOSUPPORT));
535: _constMap.put("SOCKET_EOPNOTSUPP", LongValue
536: .create(SOCKET_EOPNOTSUPP));
537: _constMap.put("SOCKET_EPFNOSUPPORT", LongValue
538: .create(SOCKET_EPFNOSUPPORT));
539: _constMap.put("SOCKET_EAFNOSUPPORT", LongValue
540: .create(SOCKET_EAFNOSUPPORT));
541: _constMap.put("SOCKET_EADDRINUSE", LongValue
542: .create(SOCKET_EADDRINUSE));
543: _constMap.put("SOCKET_EADDRNOTAVAIL", LongValue
544: .create(SOCKET_EADDRNOTAVAIL));
545: _constMap.put("SOCKET_ENETDOWN", LongValue
546: .create(SOCKET_ENETDOWN));
547: _constMap.put("SOCKET_ENETUNREACH", LongValue
548: .create(SOCKET_ENETUNREACH));
549: _constMap.put("SOCKET_ENETRESET", LongValue
550: .create(SOCKET_ENETRESET));
551: _constMap.put("SOCKET_ECONNABORTED", LongValue
552: .create(SOCKET_ECONNABORTED));
553: _constMap.put("SOCKET_ECONNRESET", LongValue
554: .create(SOCKET_ECONNRESET));
555: _constMap.put("SOCKET_ENOBUFS", LongValue
556: .create(SOCKET_ENOBUFS));
557: _constMap.put("SOCKET_EISCONN", LongValue
558: .create(SOCKET_EISCONN));
559: _constMap.put("SOCKET_ENOTCONN", LongValue
560: .create(SOCKET_ENOTCONN));
561: _constMap.put("SOCKET_ESHUTDOWN", LongValue
562: .create(SOCKET_ESHUTDOWN));
563: _constMap.put("SOCKET_ETOOMANYREFS", LongValue
564: .create(SOCKET_ETOOMANYREFS));
565: _constMap.put("SOCKET_ETIMEDOUT", LongValue
566: .create(SOCKET_ETIMEDOUT));
567: _constMap.put("SOCKET_ECONNREFUSED", LongValue
568: .create(SOCKET_ECONNREFUSED));
569: _constMap.put("SOCKET_EHOSTDOWN", LongValue
570: .create(SOCKET_EHOSTDOWN));
571: _constMap.put("SOCKET_EHOSTUNREACH", LongValue
572: .create(SOCKET_EHOSTUNREACH));
573: _constMap.put("SOCKET_EALREADY", LongValue
574: .create(SOCKET_EALREADY));
575: _constMap.put("SOCKET_EINPROGRESS", LongValue
576: .create(SOCKET_EINPROGRESS));
577: _constMap.put("SOCKET_EISNAM", LongValue.create(SOCKET_EISNAM));
578: _constMap.put("SOCKET_EREMOTEIO", LongValue
579: .create(SOCKET_EREMOTEIO));
580: _constMap.put("SOCKET_EDQUOT", LongValue.create(SOCKET_EDQUOT));
581: _constMap.put("SOCKET_ENOMEDIUM", LongValue
582: .create(SOCKET_ENOMEDIUM));
583: _constMap.put("SOCKET_EMEDIUMTYPE", LongValue
584: .create(SOCKET_EMEDIUMTYPE));
585:
586: _constMap.put("SOL_TCP", LongValue.create(SOL_TCP));
587: _constMap.put("SOL_UDP", LongValue.create(SOL_UDP));
588: }
589: }
|