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

📄 dispatcherjoin.java

📁 分布式计算平台P2HP-1的源代码;P2HP-1是基于P2P的高性能计算平台
💻 JAVA
字号:
package cn.edu.hust.cgcl.biogrid.dispatcher;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class DispatcherJoin
{
    public DispatcherJoin()
    {
    }

   private int r_mPort;//radamon monitor port
   private String r_mIpAddr;
    
   private int m_mPort;//加入端口
   private String m_mIpAddr;
   private String m_mId;
   private String dispatcherId;
   private DispatcherNode dn;

   private int s_mPort;//second monitor joinning port.
   private String s_mIpAddr;
   private String s_mId;
   //private String ipAddr;
   //private int dispatcherLoad;

   private static final int TIME_OUT = 30*1000;

   private Socket nodeSocket = null;

   private BufferedReader is;
   private PrintWriter os;

   public DispatcherJoin(String MonitorIpAddr, int MonitorPort,DispatcherNode dn)
   {
       this.dn=dn;
       r_mIpAddr=MonitorIpAddr;
       r_mPort=MonitorPort;
   }
   
   protected boolean join()
   {

    if (!joinInit(r_mIpAddr, r_mPort))
    { 
//    	ExceptionCode.exceptionCode=-2;
        System.out.println("Fail to connect to a random monitor !");
        return false;
    }
    else
    {
        if (!joinInMonitor(m_mIpAddr, m_mPort))
        {
        	ExceptionCode.exceptionCode=-3;
            System.out.println(
                "Fail to connect to a special master monitor !");
            return false;
        }
        else
        {
        dn.init(dispatcherId,m_mIpAddr,m_mId);
        return true;
        }
  }
   }

   public boolean joinInit(String MonitorIpAddr, int MonitorPort)
   {
       boolean flag=false;
       if (!initCommunication(MonitorIpAddr, MonitorPort))
       {
       	   ExceptionCode.exceptionCode=-2;
           return false;
       }
       try
       {
           os.println("dispatcher join");
           os.println(InetAddress.getLocalHost().getHostAddress());
           os.flush();
           m_mIpAddr = is.readLine();
           if(m_mIpAddr.equals("LAN"))
           	{
           	ExceptionCode.exceptionCode=-4;
           	try
	           {
	               nodeSocket.close();
	               is.close();
	               os.close();
	           }
	           catch (IOException e)
	           {
	               log(e);
	           }
           	return false;          	
           	}
           m_mPort = Integer.parseInt(is.readLine());
           os.println("dispatcher join finish");
           os.flush();
           flag=true;
       }
       catch (IOException e)
       {
           log(e);
       }
       finally
       {
           try
           {
               nodeSocket.close();
               is.close();
               os.close();
           }
           catch (IOException e)
           {
               log(e);
           }
       }
       if(!flag) ExceptionCode.exceptionCode=-1;
       return flag;

   }

   private boolean initCommunication(String ipAddr, int port)
   {
       try
       {
           this.nodeSocket = new Socket(ipAddr, port);
           nodeSocket.setSoTimeout(TIME_OUT);
           is = new BufferedReader(new InputStreamReader(nodeSocket.
               getInputStream()));
           os = new PrintWriter(nodeSocket.getOutputStream());
       }
       catch (Exception e)
       {
           nodeSocket = null;
           os = null;
           is = null;
           //iob=null;
           return false;
       }
       return true;
   }

   public boolean joinInMonitor(String MonitorIpAddr, int MonitorPort)
   {
       boolean flag=false;
       if (!initCommunication(MonitorIpAddr, MonitorPort))
       {
       	   ExceptionCode.exceptionCode=-2;
           return false;
       }
       try
       {
           os.println("dispatcher join in");
           os.flush();
           os.println(InetAddress.getLocalHost().getHostAddress());
           os.flush();
           os.println(dn.getDispatcherPort());
           os.flush();
           os.println(dn.getWorkerPort());
           os.flush();
           os.println(dn.getTaskPort());
           os.flush();
           this.dispatcherId=is.readLine();
           //System.out.println(dispatcherId);
           this.m_mId=is.readLine();
           if(is.readLine().equals("dispatcher join in finish"))
           {
               flag = true;
           }else{
           //....
           }
       }
       catch (IOException e)
       {
           log(e);
       }
       finally
       {
           try
           {
               nodeSocket.close();
               is.close();
               os.close();
           }
           catch (IOException e)
           {
               log(e);
           }
       }
       return flag;
   }


   private void log(Exception e)
   {
       e.printStackTrace();
   }


}

⌨️ 快捷键说明

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