| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338 | 
							- 'use strict';
 
- const Defaults = require('../entities/Defaults.js'),
 
-     Client = require('../dao/client.js'),
 
-     Server = require('../dao/socketServer.js'),
 
-     util = require('util');
 
- class IPC{
 
-     constructor(){
 
-         Object.defineProperties(
 
-             this,
 
-             {
 
-                 config      : {
 
-                     enumerable:true,
 
-                     writable:true,
 
-                     value:new Defaults
 
-                 },
 
-                 connectTo   : {
 
-                     enumerable:true,
 
-                     writable:false,
 
-                     value:connect
 
-                 },
 
-                 connectToNet: {
 
-                     enumerable:true,
 
-                     writable:false,
 
-                     value:connectNet
 
-                 },
 
-                 disconnect  : {
 
-                     enumerable:true,
 
-                     writable:false,
 
-                     value:disconnect
 
-                 },
 
-                 serve       : {
 
-                     enumerable:true,
 
-                     writable:false,
 
-                     value:serve
 
-                 },
 
-                 serveNet    : {
 
-                     enumerable:true,
 
-                     writable:false,
 
-                     value:serveNet
 
-                 },
 
-                 of          : {
 
-                     enumerable:true,
 
-                     writable:true,
 
-                     value:{}
 
-                 },
 
-                 server      : {
 
-                     enumerable:true,
 
-                     writable:true,
 
-                     configurable:true,
 
-                     value:false
 
-                 },
 
-                 log         : {
 
-                     enumerable:true,
 
-                     writable:false,
 
-                     value:log
 
-                 }
 
-             }
 
-         );
 
-     }
 
- }
 
- function log(...args){
 
-     if(this.config.silent){
 
-         return;
 
-     }
 
-     for(let i=0, count=args.length; i<count; i++){
 
-         if(typeof args[i] != 'object'){
 
-             continue;
 
-         }
 
-         args[i]=util.inspect(
 
-             args[i],
 
-             {
 
-                 depth:this.config.logDepth,
 
-                 colors:this.config.logInColor
 
-             }
 
-         );
 
-     }
 
-     this.config.logger(
 
-         args.join(' ')
 
-     );
 
- }
 
- function disconnect(id){
 
-     if(!this.of[id]){
 
-         return;
 
-     }
 
-     this.of[id].explicitlyDisconnected=true;
 
-     this.of[id].off('*','*');
 
-     if(this.of[id].socket){
 
-         if(this.of[id].socket.destroy){
 
-             this.of[id].socket.destroy();
 
-         }
 
-     }
 
-     delete this.of[id];
 
- }
 
- function serve(path,callback){
 
-     if(typeof path=='function'){
 
-         callback=path;
 
-         path=false;
 
-     }
 
-     if(!path){
 
-         this.log(
 
-             'Server path not specified, so defaulting to',
 
-             'ipc.config.socketRoot + ipc.config.appspace + ipc.config.id',
 
-             this.config.socketRoot+this.config.appspace+this.config.id
 
-         );
 
-         path=this.config.socketRoot+this.config.appspace+this.config.id;
 
-     }
 
-     if(!callback){
 
-         callback=emptyCallback;
 
-     }
 
-     this.server=new Server(
 
-         path,
 
-         this.config,
 
-         log
 
-     );
 
-     this.server.on(
 
-         'start',
 
-         callback
 
-     );
 
- }
 
- function emptyCallback(){
 
-     //Do Nothing
 
- }
 
- function serveNet(host,port,UDPType,callback){
 
-     if(typeof host=='number'){
 
-         callback=UDPType;
 
-         UDPType=port;
 
-         port=host;
 
-         host=false;
 
-     }
 
-     if(typeof host=='function'){
 
-         callback=host;
 
-         UDPType=false;
 
-         host=false;
 
-         port=false;
 
-     }
 
-     if(!host){
 
-         this.log(
 
-             'Server host not specified, so defaulting to',
 
-             'ipc.config.networkHost',
 
-             this.config.networkHost
 
-         );
 
-         host=this.config.networkHost;
 
-     }
 
-     if(host.toLowerCase()=='udp4' || host.toLowerCase()=='udp6'){
 
-         callback=port;
 
-         UDPType=host.toLowerCase();
 
-         port=false;
 
-         host=this.config.networkHost;
 
-     }
 
-     if(typeof port=='string'){
 
-         callback=UDPType;
 
-         UDPType=port;
 
-         port=false;
 
-     }
 
-     if(typeof port=='function'){
 
-         callback=port;
 
-         UDPType=false;
 
-         port=false;
 
-     }
 
-     if(!port){
 
-         this.log(
 
-             'Server port not specified, so defaulting to',
 
-             'ipc.config.networkPort',
 
-             this.config.networkPort
 
-         );
 
-         port=this.config.networkPort;
 
-     }
 
-     if(typeof UDPType=='function'){
 
-         callback=UDPType;
 
-         UDPType=false;
 
-     }
 
-     if(!callback){
 
-         callback=emptyCallback;
 
-     }
 
-     this.server=new Server(
 
-         host,
 
-         this.config,
 
-         log,
 
-         port
 
-     );
 
-     if(UDPType){
 
-         this.server[UDPType]=true;
 
-         if(UDPType === "udp4" && host === "::1") {
 
-             // bind udp4 socket to an ipv4 address
 
-             this.server.path = "127.0.0.1";
 
-         }
 
-     }
 
-     this.server.on(
 
-         'start',
 
-         callback
 
-     );
 
- }
 
- function connect(id,path,callback){
 
-     if(typeof path == 'function'){
 
-         callback=path;
 
-         path=false;
 
-     }
 
-     if(!callback){
 
-         callback=emptyCallback;
 
-     }
 
-     if(!id){
 
-         this.log(
 
-             'Service id required',
 
-             'Requested service connection without specifying service id. Aborting connection attempt'
 
-         );
 
-         return;
 
-     }
 
-     if(!path){
 
-         this.log(
 
-             'Service path not specified, so defaulting to',
 
-             'ipc.config.socketRoot + ipc.config.appspace + id',
 
-             (this.config.socketRoot+this.config.appspace+id).data
 
-         );
 
-         path=this.config.socketRoot+this.config.appspace+id;
 
-     }
 
-     if(this.of[id]){
 
-         if(!this.of[id].socket.destroyed){
 
-             this.log(
 
-                 'Already Connected to',
 
-                 id,
 
-                 '- So executing success without connection'
 
-             );
 
-             callback();
 
-             return;
 
-         }
 
-         this.of[id].socket.destroy();
 
-     }
 
-     this.of[id] = new Client(this.config,this.log);
 
-     this.of[id].id = id;
 
-     this.of[id].path = path;
 
-     this.of[id].connect();
 
-     callback(this);
 
- }
 
- function connectNet(id,host,port,callback){
 
-     if(!id){
 
-         this.log(
 
-             'Service id required',
 
-             'Requested service connection without specifying service id. Aborting connection attempt'
 
-         );
 
-         return;
 
-     }
 
-     if(typeof host=='number'){
 
-         callback=port;
 
-         port=host;
 
-         host=false;
 
-     }
 
-     if(typeof host=='function'){
 
-         callback=host;
 
-         host=false;
 
-         port=false;
 
-     }
 
-     if(!host){
 
-         this.log(
 
-             'Server host not specified, so defaulting to',
 
-             'ipc.config.networkHost',
 
-             this.config.networkHost
 
-         );
 
-         host=this.config.networkHost;
 
-     }
 
-     if(typeof port=='function'){
 
-         callback=port;
 
-         port=false;
 
-     }
 
-     if(!port){
 
-         this.log(
 
-             'Server port not specified, so defaulting to',
 
-             'ipc.config.networkPort',
 
-             this.config.networkPort
 
-         );
 
-         port=this.config.networkPort;
 
-     }
 
-     if(typeof callback == 'string'){
 
-         UDPType=callback;
 
-         callback=false;
 
-     }
 
-     if(!callback){
 
-         callback=emptyCallback;
 
-     }
 
-     if(this.of[id]){
 
-         if(!this.of[id].socket.destroyed){
 
-             this.log(
 
-                 'Already Connected to',
 
-                 id,
 
-                 '- So executing success without connection'
 
-             );
 
-             callback();
 
-             return;
 
-         }
 
-         this.of[id].socket.destroy();
 
-     }
 
-     this.of[id] = new Client(this.config,this.log);
 
-     this.of[id].id = id;
 
-     (this.of[id].socket)? this.of[id].socket.id=id:null;
 
-     this.of[id].path = host;
 
-     this.of[id].port = port;
 
-     this.of[id].connect();
 
-     callback(this);
 
- }
 
- module.exports=IPC;
 
 
  |