⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpjdaemon.java

📁 MPI for java for Distributed Programming
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
	        // .. this line is generating exception which kills the 		//    daemon ... I think we need a try catch here and if		//    any exception is generated, then we will have to 		//    goto back to selector.select() method ..		//		//    this is Windows 2000 specific error ..i have not 		//    seen this error on Windows XP ..	      	      try { 		                      if((readInt = socketChannel.read(lilBuffer)) == -1) {                  if(DEBUG && logger.isDebugEnabled()) {                     logger.debug(" The daemon has received an End of "+	  	  		  "Stream signal") ; 	    	    logger.debug(" checking if this channel is still open");		  }		  		  if(socketChannel.isOpen()) {                    if(DEBUG && logger.isDebugEnabled()) {                       logger.debug("closing the channel");		    }		    socketChannel.close() ; 			  		  }                  if(DEBUG && logger.isDebugEnabled()) {                     logger.debug("continuing to select()");		  }		  continue ;                   //END_OF_STREAM signal ....                 }	      }	      catch(Exception innerException) {                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("Exception in selector thread, message is"+				  innerException.getMessage() );                  logger.debug (" continuing to select() method ..."); 		}		continue; 	      }		                      if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("READ_EVENT (read)" + readInt);		}              lilBuffer.flip();              lilBuffer.get(lilArray, 0, 4);              String read = new String(lilArray);              if(DEBUG && logger.isDebugEnabled()) {                 logger.debug ("READ_EVENT (String)<" + read + ">");	      }              if (read.equals("url-")) { 	        if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("url-");		}                int length = lilBuffer.getInt();                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("URL Length -->" + length);		}                lilBuffer.clear();                buffer.limit(length);                socketChannel.read(buffer);                byte[] byteArray = new byte[length];                buffer.flip();                buffer.get(byteArray, 0, length);                URL = new String(byteArray);                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("URL:<" + URL + ">");		}				if(URL.endsWith(".jar")) {                  className = null ;  					}		                buffer.clear();              }	                    if (read.equals("mul-")) {                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("mul-");		}                int length = lilBuffer.getInt();                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("URL Length -->" + length);		}                lilBuffer.clear();                buffer.limit(length);                socketChannel.read(buffer);                byte[] byteArray = new byte[length];                buffer.flip();                buffer.get(byteArray, 0, length);                mpjURL = new String(byteArray);                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("mpjURL:<" + mpjURL + ">");		}                buffer.clear();              }	                    if (read.equals("cls-")) {                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("cls-");		}                int length = lilBuffer.getInt();                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("className length -->" + length);		}                lilBuffer.clear();                buffer.limit(length);                socketChannel.read(buffer);                byte[] byteArray = new byte[length];                buffer.flip();                buffer.get(byteArray, 0, length);                className = new String(byteArray);                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("className :<" + className + ">");		}                buffer.clear();              }              if (read.equals("app-")) {		                      if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("app-");		}                int length = lilBuffer.getInt();                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("Application args Length -->" + length);		}                lilBuffer.clear();		for(int j=0 ; j<length ; j++) {                  lilBuffer2.position(0); lilBuffer2.limit(4); 			                  socketChannel.read(lilBuffer2);		  lilBuffer2.flip();                  int argLen = lilBuffer2.getInt();                  buffer.limit(argLen);                  socketChannel.read(buffer);                  byte[] t = new byte[argLen];                  buffer.flip();                  buffer.get(t,0,argLen);		  appArgs.add(new String(t)); 		  buffer.clear(); 		  lilBuffer2.clear();		}                 		//for loop to create a new array ...                buffer.clear();		              }              else if (read.equals("num-")) {                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("num-");		}                int length = lilBuffer.getInt();                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("should be 4, isit ? -->" + length);		}                lilBuffer.clear();                socketChannel.read(lilBuffer2);                lilBuffer2.flip();                processes = lilBuffer2.getInt();                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("Num of processes ==>" + processes);		}                lilBuffer2.clear();              }              else if (read.equals("arg-")) {                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("arg-");		}                int length = lilBuffer.getInt();                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("argu len -->"+length);		}                lilBuffer.clear();		for(int j=0 ; j<length ; j++) {                  lilBuffer2.position(0); lilBuffer2.limit(4); 			                  socketChannel.read(lilBuffer2);		  lilBuffer2.flip();                  int argLen = lilBuffer2.getInt();                  buffer.limit(argLen);                  socketChannel.read(buffer);                  byte[] t = new byte[argLen];                  buffer.flip();                  buffer.get(t,0,argLen);		  jvmArgs.add(new String(t)); 		  buffer.clear(); 		  lilBuffer2.clear();		}                 		//for loop to create a new array ...                buffer.clear();		              }              else if (read.equals("dev-")) {                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("dev-");		}                int length = lilBuffer.getInt();                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("dev-Length -->" + length);		}                lilBuffer.clear();                buffer.limit(length);                socketChannel.read(buffer);                byte[] byteArray = new byte[length];                buffer.flip();                buffer.get(byteArray, 0, length);                deviceName = new String(byteArray);                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("Device Name :<" + deviceName + ">");		}                buffer.clear();              }	                    else if (read.equals("ldr-")) {                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("ldr-");		}                int length = lilBuffer.getInt();                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("ldr-Length -->" + length);		}                lilBuffer.clear();                buffer.limit(length);                socketChannel.read(buffer);                byte[] byteArray = new byte[length];                buffer.flip();                buffer.get(byteArray, 0, length);                loader = new String(byteArray);                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("ldr:<"+loader+">");		}                buffer.clear();              }              else if (read.equals("wdr-")) {                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("wdr-");		}                int length = lilBuffer.getInt();                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("wdr-Length -->" + length);		}                lilBuffer.clear();                buffer.limit(length);                socketChannel.read(buffer);                byte[] byteArray = new byte[length];                buffer.flip();                buffer.get(byteArray, 0, length);                wdir = new String(byteArray);                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("wdir :<"+wdir+">");		}                buffer.clear();              }              else if (read.equals("*GO*")) {                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("GO");		}                lilBuffer.clear();                startExecution ();              }              else if (read.equals("kill")) {                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("processing kill event");		}                MPJProcessPrintStream.stop();                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("Stopping the output");		}                try {                  if(DEBUG && logger.isDebugEnabled()) {                     logger.debug ("peerChannel is closed or what ?" +                                peerChannel.isOpen());		  }                  if (peerChannel.isOpen()) {                    if(DEBUG && logger.isDebugEnabled()) {                       logger.debug ("Closing it ...");		    }                    peerChannel.close();                  }                }                catch (Exception e) {}                  if(DEBUG && logger.isDebugEnabled()) {                     logger.debug ("Killling the process");		  }                try {                  synchronized (MPJDaemon.this) {                    if (processVector != null) {                      synchronized (processVector) {                        for (int i = 0; i < processVector.length; i++) {                          processVector[i].destroy();                        }                        kill_signal = true;                      }                    }                  }                }                catch (Exception e) {} //no matter what happens, we cant let this thread//die, coz otherwise, the daemon will die as well..//maybe you wanne stop the output handler threads as well.                if(DEBUG && logger.isDebugEnabled()) {                   logger.debug ("Killed it");		}                buffer.clear();                lilBuffer.clear();              }            } //end if key.isReadable()            else if (key.isWritable()) {              if(DEBUG && logger.isDebugEnabled()) {                 logger.debug(                    "In, WRITABLE, so changing the interestOps to READ_ONLY");	      }              key.interestOps(SelectionKey.OP_READ);            }          } //end while iterator        } //end while      }      catch (Exception ioe1) {        if(DEBUG && logger.isDebugEnabled()) {           logger.debug("Exception in selector thread " + ioe1.getMessage());	}        ioe1.printStackTrace();        //System.exit(0);      }    } //end run()  }; //end selectorThread which is an inner class   Runnable outputHandler = new Runnable() {    public void run() {      Process p = null;      synchronized (processVector) {        p = processVector[pos];      }      outputHandlerSem.release() ;       String line = "";      InputStream outp = p.getInputStream();      BufferedReader reader = new BufferedReader(new InputStreamReader(outp));             if(DEBUG && logger.isDebugEnabled()) {         logger.debug( "outputting ...");      }      try {        do {          if (!line.equals("")) {            line.trim();              synchronized (this) {              System.out.println(line);              //if(DEBUG && logger.isDebugEnabled()) {               //  logger.debug(line);	      //}            }           }        }  while ( (line = reader.readLine()) != null);         // && !kill_signal);       }      catch (Exception e) {        if(DEBUG && logger.isDebugEnabled()) {           logger.debug ("outputHandler =>" + e.getMessage());	}        e.printStackTrace();      }     } //end run.  }; //end outputHandler.  public static void main(String args[]) {    try {      MPJDaemon dae = new MPJDaemon(args);    }    catch (Exception e) {      e.printStackTrace();    }  }            //"-Xloggc:" + hostName + ".gc",            //"-XX:+PrintGCDetails",            //"-XX:+PrintGCTimeStamps",            //"-XX:+PrintGCApplicationConcurrentTime",            //"-XX:+PrintGCApplicationStoppedTime",            //"-Xnoclassgc",            //"-XX:MinHeapFreeRatio=5",            //"-XX:MaxHeapFreeRatio=5",            //"-Xms512M", "-Xmx512M",            //"-DSIZE=1000", "-DITERATIONS=100",            //"-Xdebug",            //"-Xrunjdwp:transport=dt_socket,address=11000,server=y,suspend=n",}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -