You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

cluster.d.ts 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. declare module "cluster" {
  2. import * as child from "child_process";
  3. import * as events from "events";
  4. import * as net from "net";
  5. // interfaces
  6. interface ClusterSettings {
  7. execArgv?: string[]; // default: process.execArgv
  8. exec?: string;
  9. args?: string[];
  10. silent?: boolean;
  11. stdio?: any[];
  12. uid?: number;
  13. gid?: number;
  14. inspectPort?: number | (() => number);
  15. }
  16. interface Address {
  17. address: string;
  18. port: number;
  19. addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6"
  20. }
  21. class Worker extends events.EventEmitter {
  22. id: number;
  23. process: child.ChildProcess;
  24. send(message: any, sendHandle?: any, callback?: (error: Error | null) => void): boolean;
  25. kill(signal?: string): void;
  26. destroy(signal?: string): void;
  27. disconnect(): void;
  28. isConnected(): boolean;
  29. isDead(): boolean;
  30. exitedAfterDisconnect: boolean;
  31. /**
  32. * events.EventEmitter
  33. * 1. disconnect
  34. * 2. error
  35. * 3. exit
  36. * 4. listening
  37. * 5. message
  38. * 6. online
  39. */
  40. addListener(event: string, listener: (...args: any[]) => void): this;
  41. addListener(event: "disconnect", listener: () => void): this;
  42. addListener(event: "error", listener: (error: Error) => void): this;
  43. addListener(event: "exit", listener: (code: number, signal: string) => void): this;
  44. addListener(event: "listening", listener: (address: Address) => void): this;
  45. addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
  46. addListener(event: "online", listener: () => void): this;
  47. emit(event: string | symbol, ...args: any[]): boolean;
  48. emit(event: "disconnect"): boolean;
  49. emit(event: "error", error: Error): boolean;
  50. emit(event: "exit", code: number, signal: string): boolean;
  51. emit(event: "listening", address: Address): boolean;
  52. emit(event: "message", message: any, handle: net.Socket | net.Server): boolean;
  53. emit(event: "online"): boolean;
  54. on(event: string, listener: (...args: any[]) => void): this;
  55. on(event: "disconnect", listener: () => void): this;
  56. on(event: "error", listener: (error: Error) => void): this;
  57. on(event: "exit", listener: (code: number, signal: string) => void): this;
  58. on(event: "listening", listener: (address: Address) => void): this;
  59. on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
  60. on(event: "online", listener: () => void): this;
  61. once(event: string, listener: (...args: any[]) => void): this;
  62. once(event: "disconnect", listener: () => void): this;
  63. once(event: "error", listener: (error: Error) => void): this;
  64. once(event: "exit", listener: (code: number, signal: string) => void): this;
  65. once(event: "listening", listener: (address: Address) => void): this;
  66. once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
  67. once(event: "online", listener: () => void): this;
  68. prependListener(event: string, listener: (...args: any[]) => void): this;
  69. prependListener(event: "disconnect", listener: () => void): this;
  70. prependListener(event: "error", listener: (error: Error) => void): this;
  71. prependListener(event: "exit", listener: (code: number, signal: string) => void): this;
  72. prependListener(event: "listening", listener: (address: Address) => void): this;
  73. prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
  74. prependListener(event: "online", listener: () => void): this;
  75. prependOnceListener(event: string, listener: (...args: any[]) => void): this;
  76. prependOnceListener(event: "disconnect", listener: () => void): this;
  77. prependOnceListener(event: "error", listener: (error: Error) => void): this;
  78. prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this;
  79. prependOnceListener(event: "listening", listener: (address: Address) => void): this;
  80. prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
  81. prependOnceListener(event: "online", listener: () => void): this;
  82. }
  83. interface Cluster extends events.EventEmitter {
  84. Worker: Worker;
  85. disconnect(callback?: () => void): void;
  86. fork(env?: any): Worker;
  87. isMaster: boolean;
  88. isWorker: boolean;
  89. // TODO: cluster.schedulingPolicy
  90. settings: ClusterSettings;
  91. setupMaster(settings?: ClusterSettings): void;
  92. worker?: Worker;
  93. workers?: {
  94. [index: string]: Worker | undefined
  95. };
  96. /**
  97. * events.EventEmitter
  98. * 1. disconnect
  99. * 2. exit
  100. * 3. fork
  101. * 4. listening
  102. * 5. message
  103. * 6. online
  104. * 7. setup
  105. */
  106. addListener(event: string, listener: (...args: any[]) => void): this;
  107. addListener(event: "disconnect", listener: (worker: Worker) => void): this;
  108. addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
  109. addListener(event: "fork", listener: (worker: Worker) => void): this;
  110. addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
  111. addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
  112. addListener(event: "online", listener: (worker: Worker) => void): this;
  113. addListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
  114. emit(event: string | symbol, ...args: any[]): boolean;
  115. emit(event: "disconnect", worker: Worker): boolean;
  116. emit(event: "exit", worker: Worker, code: number, signal: string): boolean;
  117. emit(event: "fork", worker: Worker): boolean;
  118. emit(event: "listening", worker: Worker, address: Address): boolean;
  119. emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;
  120. emit(event: "online", worker: Worker): boolean;
  121. emit(event: "setup", settings: ClusterSettings): boolean;
  122. on(event: string, listener: (...args: any[]) => void): this;
  123. on(event: "disconnect", listener: (worker: Worker) => void): this;
  124. on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
  125. on(event: "fork", listener: (worker: Worker) => void): this;
  126. on(event: "listening", listener: (worker: Worker, address: Address) => void): this;
  127. on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
  128. on(event: "online", listener: (worker: Worker) => void): this;
  129. on(event: "setup", listener: (settings: ClusterSettings) => void): this;
  130. once(event: string, listener: (...args: any[]) => void): this;
  131. once(event: "disconnect", listener: (worker: Worker) => void): this;
  132. once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
  133. once(event: "fork", listener: (worker: Worker) => void): this;
  134. once(event: "listening", listener: (worker: Worker, address: Address) => void): this;
  135. once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
  136. once(event: "online", listener: (worker: Worker) => void): this;
  137. once(event: "setup", listener: (settings: ClusterSettings) => void): this;
  138. prependListener(event: string, listener: (...args: any[]) => void): this;
  139. prependListener(event: "disconnect", listener: (worker: Worker) => void): this;
  140. prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
  141. prependListener(event: "fork", listener: (worker: Worker) => void): this;
  142. prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
  143. prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
  144. prependListener(event: "online", listener: (worker: Worker) => void): this;
  145. prependListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
  146. prependOnceListener(event: string, listener: (...args: any[]) => void): this;
  147. prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this;
  148. prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
  149. prependOnceListener(event: "fork", listener: (worker: Worker) => void): this;
  150. prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
  151. // the handle is a net.Socket or net.Server object, or undefined.
  152. prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;
  153. prependOnceListener(event: "online", listener: (worker: Worker) => void): this;
  154. prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
  155. }
  156. function disconnect(callback?: () => void): void;
  157. function fork(env?: any): Worker;
  158. const isMaster: boolean;
  159. const isWorker: boolean;
  160. // TODO: cluster.schedulingPolicy
  161. const settings: ClusterSettings;
  162. function setupMaster(settings?: ClusterSettings): void;
  163. const worker: Worker;
  164. const workers: {
  165. [index: string]: Worker | undefined
  166. };
  167. /**
  168. * events.EventEmitter
  169. * 1. disconnect
  170. * 2. exit
  171. * 3. fork
  172. * 4. listening
  173. * 5. message
  174. * 6. online
  175. * 7. setup
  176. */
  177. function addListener(event: string, listener: (...args: any[]) => void): Cluster;
  178. function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
  179. function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
  180. function addListener(event: "fork", listener: (worker: Worker) => void): Cluster;
  181. function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
  182. // the handle is a net.Socket or net.Server object, or undefined.
  183. function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
  184. function addListener(event: "online", listener: (worker: Worker) => void): Cluster;
  185. function addListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
  186. function emit(event: string | symbol, ...args: any[]): boolean;
  187. function emit(event: "disconnect", worker: Worker): boolean;
  188. function emit(event: "exit", worker: Worker, code: number, signal: string): boolean;
  189. function emit(event: "fork", worker: Worker): boolean;
  190. function emit(event: "listening", worker: Worker, address: Address): boolean;
  191. function emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;
  192. function emit(event: "online", worker: Worker): boolean;
  193. function emit(event: "setup", settings: ClusterSettings): boolean;
  194. function on(event: string, listener: (...args: any[]) => void): Cluster;
  195. function on(event: "disconnect", listener: (worker: Worker) => void): Cluster;
  196. function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
  197. function on(event: "fork", listener: (worker: Worker) => void): Cluster;
  198. function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
  199. function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.
  200. function on(event: "online", listener: (worker: Worker) => void): Cluster;
  201. function on(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
  202. function once(event: string, listener: (...args: any[]) => void): Cluster;
  203. function once(event: "disconnect", listener: (worker: Worker) => void): Cluster;
  204. function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
  205. function once(event: "fork", listener: (worker: Worker) => void): Cluster;
  206. function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
  207. function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.
  208. function once(event: "online", listener: (worker: Worker) => void): Cluster;
  209. function once(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
  210. function removeListener(event: string, listener: (...args: any[]) => void): Cluster;
  211. function removeAllListeners(event?: string): Cluster;
  212. function setMaxListeners(n: number): Cluster;
  213. function getMaxListeners(): number;
  214. function listeners(event: string): Function[];
  215. function listenerCount(type: string): number;
  216. function prependListener(event: string, listener: (...args: any[]) => void): Cluster;
  217. function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
  218. function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
  219. function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster;
  220. function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
  221. // the handle is a net.Socket or net.Server object, or undefined.
  222. function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
  223. function prependListener(event: "online", listener: (worker: Worker) => void): Cluster;
  224. function prependListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
  225. function prependOnceListener(event: string, listener: (...args: any[]) => void): Cluster;
  226. function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
  227. function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
  228. function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster;
  229. function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
  230. // the handle is a net.Socket or net.Server object, or undefined.
  231. function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
  232. function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster;
  233. function prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
  234. function eventNames(): string[];
  235. }