PageRenderTime 26ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/bianca/src/main/java/com/clevercloud/bianca/lib/file/SocketModule.java

http://github.com/CleverCloud/Bianca
Java | 544 lines | 452 code | 48 blank | 44 comment | 24 complexity | 7df5b8af95818f60627b1bea8205b81e MD5 | raw file
Possible License(s): GPL-2.0, MPL-2.0-no-copyleft-exception
  1. /*
  2. * Copyright (c) 1998-2010 Caucho Technology -- all rights reserved
  3. * Copyright (c) 2011-2012 Clever Cloud SAS -- all rights reserved
  4. *
  5. * This file is part of Bianca(R) Open Source
  6. *
  7. * Each copy or derived work must preserve the copyright notice and this
  8. * notice unmodified.
  9. *
  10. * Bianca Open Source is free software; you can redistribute it and/or modify
  11. * it under the terms of the GNU General Public License as published by
  12. * the Free Software Foundation; either version 2 of the License, or
  13. * (at your option) any later version.
  14. *
  15. * Bianca Open Source is distributed in the hope that it will be useful,
  16. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
  18. * of NON-INFRINGEMENT. See the GNU General Public License for more
  19. * details.
  20. *
  21. * You should have received a copy of the GNU General Public License
  22. * along with Bianca Open Source; if not, write to the
  23. *
  24. * Free Software Foundation, Inc.
  25. * 59 Temple Place, Suite 330
  26. * Boston, MA 02111-1307 USA
  27. *
  28. * @author Scott Ferguson
  29. * @author Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
  30. */
  31. package com.clevercloud.bianca.lib.file;
  32. import com.clevercloud.bianca.annotation.NotNull;
  33. import com.clevercloud.bianca.annotation.Optional;
  34. import com.clevercloud.bianca.annotation.ReturnNullAsFalse;
  35. import com.clevercloud.bianca.env.*;
  36. import com.clevercloud.bianca.module.AbstractBiancaModule;
  37. import com.clevercloud.util.L10N;
  38. import com.clevercloud.vfs.TempBuffer;
  39. import java.io.IOException;
  40. import java.io.InputStream;
  41. import java.net.DatagramSocket;
  42. import java.net.InetAddress;
  43. import java.net.InetSocketAddress;
  44. import java.net.Socket;
  45. import java.util.HashMap;
  46. import java.util.Map;
  47. import java.util.logging.Level;
  48. import java.util.logging.Logger;
  49. /**
  50. * Information and actions for about sockets
  51. */
  52. public class SocketModule extends AbstractBiancaModule {
  53. private static final L10N L = new L10N(SocketModule.class);
  54. private static final Logger log = Logger.getLogger(SocketModule.class.getName());
  55. private static final int AF_UNIX = 1;
  56. private static final int AF_INET = 2;
  57. private static final int AF_INET6 = 10;
  58. private static final int SOCK_STREAM = 1;
  59. private static final int SOCK_DGRAM = 2;
  60. private static final int SOCK_RAW = 3;
  61. private static final int SOCK_SEQPACKET = 5;
  62. private static final int SOCK_RDM = 4;
  63. private static final int MSG_OOB = 1;
  64. private static final int MSG_WAITALL = 256;
  65. private static final int MSG_PEEK = 2;
  66. private static final int MSG_DONTROUTE = 4;
  67. private static final int SO_DEBUG = 1;
  68. private static final int SO_REUSEADDR = 2;
  69. private static final int SO_KEEPALIVE = 9;
  70. private static final int SO_DONTROUTE = 5;
  71. private static final int SO_LINGER = 13;
  72. private static final int SO_BROADCAST = 6;
  73. private static final int SO_OOBINLINE = 10;
  74. private static final int SO_SNDBUF = 7;
  75. private static final int SO_RCVBUF = 8;
  76. private static final int SO_SNDLOWAT = 19;
  77. private static final int SO_RCVLOWAT = 18;
  78. private static final int SO_SNDTIMEO = 21;
  79. private static final int SO_RCVTIMEO = 20;
  80. private static final int SO_TYPE = 3;
  81. private static final int SO_ERROR = 4;
  82. private static final int SOL_SOCKET = 1;
  83. private static final int SOMAXCONN = 128;
  84. private static final int PHP_NORMAL_READ = 1;
  85. private static final int PHP_BINARY_READ = 2;
  86. private static final int SOCKET_EPERM = 1;
  87. private static final int SOCKET_ENOENT = 2;
  88. private static final int SOCKET_EINTR = 4;
  89. private static final int SOCKET_EIO = 5;
  90. private static final int SOCKET_ENXIO = 6;
  91. private static final int SOCKET_E2BIG = 7;
  92. private static final int SOCKET_EBADF = 9;
  93. private static final int SOCKET_EAGAIN = 11;
  94. private static final int SOCKET_ENOMEM = 12;
  95. private static final int SOCKET_EACCES = 13;
  96. private static final int SOCKET_EFAULT = 14;
  97. private static final int SOCKET_ENOTBLK = 15;
  98. private static final int SOCKET_EBUSY = 16;
  99. private static final int SOCKET_EEXIST = 17;
  100. private static final int SOCKET_EXDEV = 18;
  101. private static final int SOCKET_ENODEV = 19;
  102. private static final int SOCKET_ENOTDIR = 20;
  103. private static final int SOCKET_EISDIR = 21;
  104. private static final int SOCKET_EINVAL = 22;
  105. private static final int SOCKET_ENFILE = 23;
  106. private static final int SOCKET_EMFILE = 24;
  107. private static final int SOCKET_ENOTTY = 25;
  108. private static final int SOCKET_ENOSPC = 28;
  109. private static final int SOCKET_ESPIPE = 29;
  110. private static final int SOCKET_EROFS = 30;
  111. private static final int SOCKET_EMLINK = 31;
  112. private static final int SOCKET_EPIPE = 32;
  113. private static final int SOCKET_ENAMETOOLONG = 36;
  114. private static final int SOCKET_ENOLCK = 37;
  115. private static final int SOCKET_ENOSYS = 38;
  116. private static final int SOCKET_ENOTEMPTY = 39;
  117. private static final int SOCKET_ELOOP = 40;
  118. private static final int SOCKET_EWOULDBLOCK = 11;
  119. private static final int SOCKET_ENOMSG = 42;
  120. private static final int SOCKET_EIDRM = 43;
  121. private static final int SOCKET_ECHRNG = 44;
  122. private static final int SOCKET_EL2NSYNC = 45;
  123. private static final int SOCKET_EL3HLT = 46;
  124. private static final int SOCKET_EL3RST = 47;
  125. private static final int SOCKET_ELNRNG = 48;
  126. private static final int SOCKET_EUNATCH = 49;
  127. private static final int SOCKET_ENOCSI = 50;
  128. private static final int SOCKET_EL2HLT = 51;
  129. private static final int SOCKET_EBADE = 52;
  130. private static final int SOCKET_EBADR = 53;
  131. private static final int SOCKET_EXFULL = 54;
  132. private static final int SOCKET_ENOANO = 55;
  133. private static final int SOCKET_EBADRQC = 56;
  134. private static final int SOCKET_EBADSLT = 57;
  135. private static final int SOCKET_ENOSTR = 60;
  136. private static final int SOCKET_ENODATA = 61;
  137. private static final int SOCKET_ETIME = 62;
  138. private static final int SOCKET_ENOSR = 63;
  139. private static final int SOCKET_ENONET = 64;
  140. private static final int SOCKET_EREMOTE = 66;
  141. private static final int SOCKET_ENOLINK = 67;
  142. private static final int SOCKET_EADV = 68;
  143. private static final int SOCKET_ESRMNT = 69;
  144. private static final int SOCKET_ECOMM = 70;
  145. private static final int SOCKET_EPROTO = 71;
  146. private static final int SOCKET_EMULTIHOP = 72;
  147. private static final int SOCKET_EBADMSG = 74;
  148. private static final int SOCKET_ENOTUNIQ = 76;
  149. private static final int SOCKET_EBADFD = 77;
  150. private static final int SOCKET_EREMCHG = 78;
  151. private static final int SOCKET_ERESTART = 85;
  152. private static final int SOCKET_ESTRPIPE = 86;
  153. private static final int SOCKET_EUSERS = 87;
  154. private static final int SOCKET_ENOTSOCK = 88;
  155. private static final int SOCKET_EDESTADDRREQ = 89;
  156. private static final int SOCKET_EMSGSIZE = 90;
  157. private static final int SOCKET_EPROTOTYPE = 91;
  158. private static final int SOCKET_ENOPROTOOPT = 92;
  159. private static final int SOCKET_EPROTONOSUPPORT = 93;
  160. private static final int SOCKET_ESOCKTNOSUPPORT = 94;
  161. private static final int SOCKET_EOPNOTSUPP = 95;
  162. private static final int SOCKET_EPFNOSUPPORT = 96;
  163. private static final int SOCKET_EAFNOSUPPORT = 97;
  164. private static final int SOCKET_EADDRINUSE = 98;
  165. private static final int SOCKET_EADDRNOTAVAIL = 99;
  166. private static final int SOCKET_ENETDOWN = 100;
  167. private static final int SOCKET_ENETUNREACH = 101;
  168. private static final int SOCKET_ENETRESET = 102;
  169. private static final int SOCKET_ECONNABORTED = 103;
  170. private static final int SOCKET_ECONNRESET = 104;
  171. private static final int SOCKET_ENOBUFS = 105;
  172. private static final int SOCKET_EISCONN = 106;
  173. private static final int SOCKET_ENOTCONN = 107;
  174. private static final int SOCKET_ESHUTDOWN = 108;
  175. private static final int SOCKET_ETOOMANYREFS = 109;
  176. private static final int SOCKET_ETIMEDOUT = 110;
  177. private static final int SOCKET_ECONNREFUSED = 111;
  178. private static final int SOCKET_EHOSTDOWN = 112;
  179. private static final int SOCKET_EHOSTUNREACH = 113;
  180. private static final int SOCKET_EALREADY = 114;
  181. private static final int SOCKET_EINPROGRESS = 115;
  182. private static final int SOCKET_EISNAM = 120;
  183. private static final int SOCKET_EREMOTEIO = 121;
  184. private static final int SOCKET_EDQUOT = 122;
  185. private static final int SOCKET_ENOMEDIUM = 123;
  186. private static final int SOCKET_EMEDIUMTYPE = 124;
  187. private static final int SOL_TCP = 6;
  188. private static final int SOL_UDP = 17;
  189. private static final HashMap<StringValue, Value> _constMap = new HashMap<StringValue, Value>();
  190. /**
  191. * Returns the constants defined by this module.
  192. */
  193. @Override
  194. public Map<StringValue, Value> getConstMap() {
  195. return _constMap;
  196. }
  197. @ReturnNullAsFalse
  198. public static SocketInputOutput socket_create(Env env,
  199. int domain,
  200. int type,
  201. int protocol) {
  202. try {
  203. SocketInputOutput.Domain socketDomain = SocketInputOutput.Domain.AF_INET;
  204. switch (domain) {
  205. case AF_INET:
  206. socketDomain = SocketInputOutput.Domain.AF_INET;
  207. break;
  208. case AF_INET6:
  209. socketDomain = SocketInputOutput.Domain.AF_INET6;
  210. break;
  211. case AF_UNIX:
  212. env.warning(L.l("Unix sockets not supported"));
  213. return null;
  214. default:
  215. env.warning(L.l("Unknown domain: {0}", domain));
  216. return null;
  217. }
  218. switch (type) {
  219. case SOCK_STREAM:
  220. return new TcpInputOutput(env, new Socket(), socketDomain);
  221. case SOCK_DGRAM:
  222. return new UdpInputOutput(env, new DatagramSocket(), socketDomain);
  223. default:
  224. env.warning(L.l("socket stream not socked"));
  225. return null;
  226. }
  227. } catch (Exception e) {
  228. env.warning(e);
  229. return null;
  230. }
  231. }
  232. public static boolean socket_bind(Env env,
  233. @NotNull SocketInputOutput socket,
  234. StringValue address,
  235. @Optional("0") int port) {
  236. try {
  237. InetAddress[] addresses = InetAddress.getAllByName(address.toString());
  238. if (addresses == null || addresses.length < 1) {
  239. //XXX: socket.setError();
  240. return false;
  241. }
  242. InetSocketAddress socketAddress =
  243. new InetSocketAddress(addresses[0], port);
  244. socket.bind(socketAddress);
  245. return true;
  246. } catch (IOException e) {
  247. return false;
  248. }
  249. }
  250. public static void socket_close(Env env, @NotNull SocketInputOutput socket) {
  251. socket.close();
  252. }
  253. public static boolean socket_connect(Env env,
  254. @NotNull SocketInputOutput socket,
  255. StringValue address, @Optional int port) {
  256. try {
  257. InetAddress[] addresses = InetAddress.getAllByName(address.toString());
  258. if (addresses == null || addresses.length < 1) {
  259. //XXX: socket.setError();
  260. return false;
  261. }
  262. InetSocketAddress socketAddress =
  263. new InetSocketAddress(addresses[0], port);
  264. socket.connect(socketAddress);
  265. return true;
  266. } catch (IOException e) {
  267. return false;
  268. }
  269. }
  270. public static Value socket_get_status(Env env, BinaryStream stream) {
  271. return StreamModule.stream_get_meta_data(env, stream);
  272. }
  273. public static Value socket_read(Env env,
  274. @NotNull SocketInputOutput socket,
  275. int length, @Optional int type) {
  276. TempBuffer tempBuffer = null;
  277. try {
  278. if (type == PHP_NORMAL_READ) {
  279. return socket.readLine(length);
  280. } else {
  281. tempBuffer = TempBuffer.allocate();
  282. if (length > tempBuffer.getCapacity()) {
  283. length = tempBuffer.getCapacity();
  284. }
  285. byte[] buffer = tempBuffer.getBuffer();
  286. length = socket.read(buffer, 0, length);
  287. if (length > 0) {
  288. StringValue sb = new StringValue(new String(buffer));
  289. return sb;
  290. } else {
  291. return BooleanValue.FALSE;
  292. }
  293. }
  294. } catch (IOException e) {
  295. env.warning(e);
  296. return BooleanValue.FALSE;
  297. } finally {
  298. if (tempBuffer != null) {
  299. TempBuffer.free(tempBuffer);
  300. }
  301. }
  302. }
  303. public static boolean socket_set_timeout(Env env,
  304. @NotNull Value stream,
  305. int seconds,
  306. @Optional("-1") int milliseconds) {
  307. return StreamModule.stream_set_timeout(env, stream, seconds, milliseconds);
  308. }
  309. public static Value socket_write(Env env,
  310. @NotNull SocketInputOutput socket,
  311. @NotNull InputStream is,
  312. @Optional("-1") int length) {
  313. if (is == null) {
  314. return BooleanValue.FALSE;
  315. }
  316. // php/4800
  317. if (length < 0) {
  318. length = Integer.MAX_VALUE;
  319. }
  320. try {
  321. int result = socket.write(is, length);
  322. if (result < 0) {
  323. return BooleanValue.FALSE;
  324. } else {
  325. return LongValue.create(result);
  326. }
  327. } catch (IOException e) {
  328. log.log(Level.FINER, e.toString(), e);
  329. return BooleanValue.FALSE;
  330. }
  331. }
  332. /**
  333. * Closes a socket.
  334. *
  335. * @param how 0 = read, 1 = write, 2 = both
  336. */
  337. public boolean socket_shutdown(Env env,
  338. @NotNull SocketInputOutput file,
  339. int how) {
  340. if (file == null) {
  341. return false;
  342. }
  343. switch (how) {
  344. case 0:
  345. file.closeRead();
  346. return true;
  347. case 1:
  348. file.closeWrite();
  349. return true;
  350. case 2:
  351. file.close();
  352. return true;
  353. default:
  354. return false;
  355. }
  356. }
  357. static {
  358. addConstant(_constMap, "AF_UNIX", AF_UNIX);
  359. addConstant(_constMap, "AF_INET", AF_INET);
  360. addConstant(_constMap, "AF_INET6", AF_INET6);
  361. addConstant(_constMap, "SOCK_STREAM", SOCK_STREAM);
  362. addConstant(_constMap, "SOCK_DGRAM", SOCK_DGRAM);
  363. addConstant(_constMap, "SOCK_RAW", SOCK_RAW);
  364. addConstant(_constMap, "SOCK_SEQPACKET", SOCK_SEQPACKET);
  365. addConstant(_constMap, "SOCK_RDM", SOCK_RDM);
  366. addConstant(_constMap, "MSG_OOB", MSG_OOB);
  367. addConstant(_constMap, "MSG_WAITALL", MSG_WAITALL);
  368. addConstant(_constMap, "MSG_PEEK", MSG_PEEK);
  369. addConstant(_constMap, "MSG_DONTROUTE", MSG_DONTROUTE);
  370. addConstant(_constMap, "SO_DEBUG", SO_DEBUG);
  371. addConstant(_constMap, "SO_REUSEADDR", SO_REUSEADDR);
  372. addConstant(_constMap, "SO_KEEPALIVE", SO_KEEPALIVE);
  373. addConstant(_constMap, "SO_DONTROUTE", SO_DONTROUTE);
  374. addConstant(_constMap, "SO_LINGER", SO_LINGER);
  375. addConstant(_constMap, "SO_BROADCAST", SO_BROADCAST);
  376. addConstant(_constMap, "SO_OOBINLINE", SO_OOBINLINE);
  377. addConstant(_constMap, "SO_SNDBUF", SO_SNDBUF);
  378. addConstant(_constMap, "SO_RCVBUF", SO_RCVBUF);
  379. addConstant(_constMap, "SO_SNDLOWAT", SO_SNDLOWAT);
  380. addConstant(_constMap, "SO_RCVLOWAT", SO_RCVLOWAT);
  381. addConstant(_constMap, "SO_SNDTIMEO", SO_SNDTIMEO);
  382. addConstant(_constMap, "SO_RCVTIMEO", SO_RCVTIMEO);
  383. addConstant(_constMap, "SO_TYPE", SO_TYPE);
  384. addConstant(_constMap, "SO_ERROR", SO_ERROR);
  385. addConstant(_constMap, "SOL_SOCKET", SOL_SOCKET);
  386. addConstant(_constMap, "SOMAXCONN", SOMAXCONN);
  387. addConstant(_constMap, "PHP_NORMAL_READ", PHP_NORMAL_READ);
  388. addConstant(_constMap, "PHP_BINARY_READ", PHP_BINARY_READ);
  389. addConstant(_constMap, "SOCKET_EPERM", SOCKET_EPERM);
  390. addConstant(_constMap, "SOCKET_ENOENT", SOCKET_ENOENT);
  391. addConstant(_constMap, "SOCKET_EINTR", SOCKET_EINTR);
  392. addConstant(_constMap, "SOCKET_EIO", SOCKET_EIO);
  393. addConstant(_constMap, "SOCKET_ENXIO", SOCKET_ENXIO);
  394. addConstant(_constMap, "SOCKET_E2BIG", SOCKET_E2BIG);
  395. addConstant(_constMap, "SOCKET_EBADF", SOCKET_EBADF);
  396. addConstant(_constMap, "SOCKET_EAGAIN", SOCKET_EAGAIN);
  397. addConstant(_constMap, "SOCKET_ENOMEM", SOCKET_ENOMEM);
  398. addConstant(_constMap, "SOCKET_EACCES", SOCKET_EACCES);
  399. addConstant(_constMap, "SOCKET_EFAULT", SOCKET_EFAULT);
  400. addConstant(_constMap, "SOCKET_ENOTBLK", SOCKET_ENOTBLK);
  401. addConstant(_constMap, "SOCKET_EBUSY", SOCKET_EBUSY);
  402. addConstant(_constMap, "SOCKET_EEXIST", SOCKET_EEXIST);
  403. addConstant(_constMap, "SOCKET_EXDEV", SOCKET_EXDEV);
  404. addConstant(_constMap, "SOCKET_ENODEV", SOCKET_ENODEV);
  405. addConstant(_constMap, "SOCKET_ENOTDIR", SOCKET_ENOTDIR);
  406. addConstant(_constMap, "SOCKET_EISDIR", SOCKET_EISDIR);
  407. addConstant(_constMap, "SOCKET_EINVAL", SOCKET_EINVAL);
  408. addConstant(_constMap, "SOCKET_ENFILE", SOCKET_ENFILE);
  409. addConstant(_constMap, "SOCKET_EMFILE", SOCKET_EMFILE);
  410. addConstant(_constMap, "SOCKET_ENOTTY", SOCKET_ENOTTY);
  411. addConstant(_constMap, "SOCKET_ENOSPC", SOCKET_ENOSPC);
  412. addConstant(_constMap, "SOCKET_ESPIPE", SOCKET_ESPIPE);
  413. addConstant(_constMap, "SOCKET_EROFS", SOCKET_EROFS);
  414. addConstant(_constMap, "SOCKET_EMLINK", SOCKET_EMLINK);
  415. addConstant(_constMap, "SOCKET_EPIPE", SOCKET_EPIPE);
  416. addConstant(_constMap, "SOCKET_ENAMETOOLONG", SOCKET_ENAMETOOLONG);
  417. addConstant(_constMap, "SOCKET_ENOLCK", SOCKET_ENOLCK);
  418. addConstant(_constMap, "SOCKET_ENOSYS", SOCKET_ENOSYS);
  419. addConstant(_constMap, "SOCKET_ENOTEMPTY", SOCKET_ENOTEMPTY);
  420. addConstant(_constMap, "SOCKET_ELOOP", SOCKET_ELOOP);
  421. addConstant(_constMap, "SOCKET_EWOULDBLOCK", SOCKET_EWOULDBLOCK);
  422. addConstant(_constMap, "SOCKET_ENOMSG", SOCKET_ENOMSG);
  423. addConstant(_constMap, "SOCKET_EIDRM", SOCKET_EIDRM);
  424. addConstant(_constMap, "SOCKET_ECHRNG", SOCKET_ECHRNG);
  425. addConstant(_constMap, "SOCKET_EL2NSYNC", SOCKET_EL2NSYNC);
  426. addConstant(_constMap, "SOCKET_EL3HLT", SOCKET_EL3HLT);
  427. addConstant(_constMap, "SOCKET_EL3RST", SOCKET_EL3RST);
  428. addConstant(_constMap, "SOCKET_ELNRNG", SOCKET_ELNRNG);
  429. addConstant(_constMap, "SOCKET_EUNATCH", SOCKET_EUNATCH);
  430. addConstant(_constMap, "SOCKET_ENOCSI", SOCKET_ENOCSI);
  431. addConstant(_constMap, "SOCKET_EL2HLT", SOCKET_EL2HLT);
  432. addConstant(_constMap, "SOCKET_EBADE", SOCKET_EBADE);
  433. addConstant(_constMap, "SOCKET_EBADR", SOCKET_EBADR);
  434. addConstant(_constMap, "SOCKET_EXFULL", SOCKET_EXFULL);
  435. addConstant(_constMap, "SOCKET_ENOANO", SOCKET_ENOANO);
  436. addConstant(_constMap, "SOCKET_EBADRQC", SOCKET_EBADRQC);
  437. addConstant(_constMap, "SOCKET_EBADSLT", SOCKET_EBADSLT);
  438. addConstant(_constMap, "SOCKET_ENOSTR", SOCKET_ENOSTR);
  439. addConstant(_constMap, "SOCKET_ENODATA", SOCKET_ENODATA);
  440. addConstant(_constMap, "SOCKET_ETIME", SOCKET_ETIME);
  441. addConstant(_constMap, "SOCKET_ENOSR", SOCKET_ENOSR);
  442. addConstant(_constMap, "SOCKET_ENONET", SOCKET_ENONET);
  443. addConstant(_constMap, "SOCKET_EREMOTE", SOCKET_EREMOTE);
  444. addConstant(_constMap, "SOCKET_ENOLINK", SOCKET_ENOLINK);
  445. addConstant(_constMap, "SOCKET_EADV", SOCKET_EADV);
  446. addConstant(_constMap, "SOCKET_ESRMNT", SOCKET_ESRMNT);
  447. addConstant(_constMap, "SOCKET_ECOMM", SOCKET_ECOMM);
  448. addConstant(_constMap, "SOCKET_EPROTO", SOCKET_EPROTO);
  449. addConstant(_constMap, "SOCKET_EMULTIHOP", SOCKET_EMULTIHOP);
  450. addConstant(_constMap, "SOCKET_EBADMSG", SOCKET_EBADMSG);
  451. addConstant(_constMap, "SOCKET_ENOTUNIQ", SOCKET_ENOTUNIQ);
  452. addConstant(_constMap, "SOCKET_EBADFD", SOCKET_EBADFD);
  453. addConstant(_constMap, "SOCKET_EREMCHG", SOCKET_EREMCHG);
  454. addConstant(_constMap, "SOCKET_ERESTART", SOCKET_ERESTART);
  455. addConstant(_constMap, "SOCKET_ESTRPIPE", SOCKET_ESTRPIPE);
  456. addConstant(_constMap, "SOCKET_EUSERS", SOCKET_EUSERS);
  457. addConstant(_constMap, "SOCKET_ENOTSOCK", SOCKET_ENOTSOCK);
  458. addConstant(_constMap, "SOCKET_EDESTADDRREQ", SOCKET_EDESTADDRREQ);
  459. addConstant(_constMap, "SOCKET_EMSGSIZE", SOCKET_EMSGSIZE);
  460. addConstant(_constMap, "SOCKET_EPROTOTYPE", SOCKET_EPROTOTYPE);
  461. addConstant(_constMap, "SOCKET_ENOPROTOOPT", SOCKET_ENOPROTOOPT);
  462. addConstant(_constMap, "SOCKET_EPROTONOSUPPORT",
  463. SOCKET_EPROTONOSUPPORT);
  464. addConstant(_constMap, "SOCKET_ESOCKTNOSUPPORT",
  465. SOCKET_ESOCKTNOSUPPORT);
  466. addConstant(_constMap, "SOCKET_EOPNOTSUPP", SOCKET_EOPNOTSUPP);
  467. addConstant(_constMap, "SOCKET_EPFNOSUPPORT", SOCKET_EPFNOSUPPORT);
  468. addConstant(_constMap, "SOCKET_EAFNOSUPPORT", SOCKET_EAFNOSUPPORT);
  469. addConstant(_constMap, "SOCKET_EADDRINUSE", SOCKET_EADDRINUSE);
  470. addConstant(_constMap, "SOCKET_EADDRNOTAVAIL",
  471. SOCKET_EADDRNOTAVAIL);
  472. addConstant(_constMap, "SOCKET_ENETDOWN", SOCKET_ENETDOWN);
  473. addConstant(_constMap, "SOCKET_ENETUNREACH", SOCKET_ENETUNREACH);
  474. addConstant(_constMap, "SOCKET_ENETRESET", SOCKET_ENETRESET);
  475. addConstant(_constMap, "SOCKET_ECONNABORTED", SOCKET_ECONNABORTED);
  476. addConstant(_constMap, "SOCKET_ECONNRESET", SOCKET_ECONNRESET);
  477. addConstant(_constMap, "SOCKET_ENOBUFS", SOCKET_ENOBUFS);
  478. addConstant(_constMap, "SOCKET_EISCONN", SOCKET_EISCONN);
  479. addConstant(_constMap, "SOCKET_ENOTCONN", SOCKET_ENOTCONN);
  480. addConstant(_constMap, "SOCKET_ESHUTDOWN", SOCKET_ESHUTDOWN);
  481. addConstant(_constMap, "SOCKET_ETOOMANYREFS", SOCKET_ETOOMANYREFS);
  482. addConstant(_constMap, "SOCKET_ETIMEDOUT", SOCKET_ETIMEDOUT);
  483. addConstant(_constMap, "SOCKET_ECONNREFUSED", SOCKET_ECONNREFUSED);
  484. addConstant(_constMap, "SOCKET_EHOSTDOWN", SOCKET_EHOSTDOWN);
  485. addConstant(_constMap, "SOCKET_EHOSTUNREACH", SOCKET_EHOSTUNREACH);
  486. addConstant(_constMap, "SOCKET_EALREADY", SOCKET_EALREADY);
  487. addConstant(_constMap, "SOCKET_EINPROGRESS", SOCKET_EINPROGRESS);
  488. addConstant(_constMap, "SOCKET_EISNAM", SOCKET_EISNAM);
  489. addConstant(_constMap, "SOCKET_EREMOTEIO", SOCKET_EREMOTEIO);
  490. addConstant(_constMap, "SOCKET_EDQUOT", SOCKET_EDQUOT);
  491. addConstant(_constMap, "SOCKET_ENOMEDIUM", SOCKET_ENOMEDIUM);
  492. addConstant(_constMap, "SOCKET_EMEDIUMTYPE", SOCKET_EMEDIUMTYPE);
  493. addConstant(_constMap, "SOL_TCP", SOL_TCP);
  494. addConstant(_constMap, "SOL_UDP", SOL_UDP);
  495. }
  496. }