亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jgroups.java

?? 一個類似于openJMS分布在ObjectWeb之下的JMS消息中間件。
?? JAVA
字號:
/* * Copyright (C) 2004 - 2005 ScalAgent Distributed Technologies * Copyright (C) 2004 France Telecom R&D * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or any later version. *  * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. *  * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 * USA. * * Initial developer(s): ScalAgent Distributed Technologies * Contributor(s): */package fr.dyade.aaa.agent;import java.util.*;import java.io.*;import org.objectweb.util.monolog.api.BasicLevel;import org.objectweb.util.monolog.api.Logger;import org.jgroups.MembershipListener;import org.jgroups.MessageListener;import org.jgroups.Message;import org.jgroups.Channel;import org.jgroups.JChannel;import org.jgroups.Address;import org.jgroups.View;import org.jgroups.blocks.*;import org.jgroups.util.Util;import org.jgroups.ChannelException;import org.jgroups.ChannelClosedException;import org.jgroups.ChannelNotConnectedException;/** *  Implementation of JGroups in order to improve HA. */final class JGroups   implements MembershipListener, MessageListener {    static Logger logmon = null;  private int nbClusterExpected = 2;  boolean coordinator = false;  private Channel channel;  private Address myAddr = null;  private Address coordinatorAddr = null;  private String channelName = null;  HAEngine engine = null;  SimpleNetwork network = null; // AF: to replace with HANetwork  Object lock;  JGroups() throws Exception {    // Get the logging monitor from current server MonologLoggerFactory    logmon = Debug.getLogger(Debug.JGroups);    logmon.log(BasicLevel.DEBUG, "JGroups created.");    nbClusterExpected = AgentServer.getInteger("nbClusterExpected", nbClusterExpected).intValue();  }  void init(String name) throws Exception {    channelName = "HAJGroups." + name;    lock = new Object();    state = STARTING;    String addr = System.getProperty("JGroups.MCastAddr", "224.0.0.35");    String port = System.getProperty("JGroups.MCastPort", "25566");          String props = System.getProperty(      "JGroupsProps",      "UDP(mcast_addr=" + addr +       ";mcast_port=" + port + ";ip_ttl=32;" +      "mcast_send_buf_size=150000;mcast_recv_buf_size=80000):" +      "PING(timeout=2000;num_initial_members=3):" +      "MERGE2(min_interval=5000;max_interval=10000):" +      "FD_SOCK:" +      "VERIFY_SUSPECT(timeout=1500):" +      "pbcast.NAKACK(gc_lag=50;retransmit_timeout=300,600,1200,2400,4800):" +      "UNICAST(timeout=5000):" +      "pbcast.STABLE(desired_avg_gossip=20000):" +      "FRAG(frag_size=4096;down_thread=false;up_thread=false):" +      "pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;" +      "shun=false;print_local_addr=true)");    channel = new JChannel(props);    channel.connect(channelName);        new PullPushAdapter(channel,                         (MessageListener) this,                         (MembershipListener) this);    myAddr = channel.getLocalAddress();  }  void disconnect() {    channel.disconnect();  }    void connect() throws ChannelException, ChannelClosedException {    if (!channel.isConnected()) channel.connect(channelName);  }  void startConsAndServ() {    if (logmon.isLoggable(BasicLevel.DEBUG))      logmon.log(BasicLevel.DEBUG,"start service and comsumer");    // Use another thread to start services and network in order    // to avoid dead-lock during send.    Thread t = new Thread() {      public void run() {        try {          ServiceManager.start();        } catch (Exception exc) {          logmon.log(BasicLevel.WARN, "services start failed.", exc);        }        try {          AgentServer.startConsumers();        } catch (Throwable exc) {          logmon.log(BasicLevel.WARN, "consumer start failed.", exc);        }      }    };    t.setDaemon(true);    t.start();  }  void send(Serializable message) throws Exception {    if (logmon.isLoggable(BasicLevel.DEBUG))      logmon.log(BasicLevel.DEBUG,"JGroups send(" + message + ")");    byte[] buf = null;    try {      ByteArrayOutputStream bos = new ByteArrayOutputStream(256);      ObjectOutputStream oos = new ObjectOutputStream(bos);      oos.writeObject(message);      buf = bos.toByteArray();      oos.flush();    } catch(Exception e) {      logmon.log(BasicLevel.ERROR,"JGroups send message",e);      throw e;    }    if (buf == null) return;    Message msg = new Message(null, null, buf);    synchronized (lock) {      channel.send(msg);      lock.wait();    }  }    void sendTo(Address dst, Serializable obj) throws Exception {    if (logmon.isLoggable(BasicLevel.DEBUG))      logmon.log(BasicLevel.DEBUG,"JGroups sendTo(" + dst + "," + obj + ")");    channel.send(dst,myAddr,obj);  }  Address getCoordinatorAddr() {    return coordinatorAddr;  }  void setEngine(HAEngine engine) {    logmon.log(BasicLevel.DEBUG, "setEngine");    this.engine = engine;  }  void setNetWork(SimpleNetwork network) {    this.network = network;  }  boolean isCoordinator() {    return coordinator;  }  int state = NONE;  final static int NONE = -11;  final static int STARTING = 1;  final static int INITIALIZING = 2;  final static int RUNNING = 3;  /* ----- MessageListener interface ----- */  public void receive(Message msg) {    try {      Object obj = Util.objectFromByteBuffer(msg.getBuffer());      if (logmon.isLoggable(BasicLevel.DEBUG))        logmon.log(BasicLevel.DEBUG," receive obj = " + obj +                    "\nmsg.getSrc =" + msg.getSrc() +                    "\nmsg.getDest =" + msg.getDest() +                    "\nmyAddr = " + myAddr +                   "\ncoordinator = " + coordinator +                   "\nstate=" + state);            if (myAddr.equals(msg.getSrc())) {        if (logmon.isLoggable(BasicLevel.DEBUG))          logmon.log(BasicLevel.DEBUG,"jgroups, I am the sender.");        if ((obj instanceof fr.dyade.aaa.agent.Message) ||            (obj instanceof JGroupsAckMsg) ||            (obj instanceof HAStateReply)) {          synchronized (lock) {            lock.notify();          }        }        return;      }      if (obj instanceof HAStateRequest && coordinator) {        HAStateRequest req = (HAStateRequest) obj;        engine.requestor.add(req.getAddress());      } else if (obj instanceof HAStateReply) {        if (state != INITIALIZING) return;        HAStateReply reply = (HAStateReply) obj;        //  Services are already first initialized on master server, we        // have just to start them in startConsAndServ.        ServiceDesc services[] = ServiceManager.getServices();        if (services != null) {          for (int i = 0; i < services.length; i++)            services[i].initialized = true;        }        // Synchronizes network's logical clock        if (network != null)          network.setStamp(reply.getNetworkStamp());        // Sets engine's state (        engine.setState(reply);        state = RUNNING;      } else if (obj instanceof fr.dyade.aaa.agent.Message) {        if (state != RUNNING) return;        fr.dyade.aaa.agent.Message m = (fr.dyade.aaa.agent.Message) obj;        if ((network != null) &&            (m.from.getTo() != AgentServer.getServerId())) {          network.deliver(m);        } else {          engine.receiveFromJGroups(m);        }      } else if (obj instanceof JGroupsAckMsg && network != null) {        if (state != RUNNING) return;        network.ackMsg((JGroupsAckMsg) obj);      }    } catch(Exception exc) {      logmon.log(BasicLevel.ERROR,                 "JGroups part receive msg = " + msg, exc);    }  }  public byte[] getState() {    if (logmon.isLoggable(BasicLevel.DEBUG))      logmon.log(BasicLevel.DEBUG,"=== MessageListener getState");    return null;  }    public void setState(byte[] state) {    if (logmon.isLoggable(BasicLevel.DEBUG))      logmon.log(BasicLevel.DEBUG,"=== MessageListener setState");  }  /* ----------------- End of Interface MessageListener --------------- */  /* ------------ Interface MembershipListener ------------- */  public void viewAccepted(View view) {    if (logmon.isLoggable(BasicLevel.DEBUG))      logmon.log(BasicLevel.DEBUG,"==== viewAccepted: " + view);    // Eventually get new coordinator address    Vector mbrs = view.getMembers();    coordinatorAddr = (Address) mbrs.elementAt(0);    if (logmon.isLoggable(BasicLevel.DEBUG))      logmon.log(BasicLevel.DEBUG,                 "JGroups setView: " + coordinator + ", " + state);     if (coordinator) {      // Test that the server is always master.      if (! coordinatorAddr.equals(myAddr)) {        logmon.log(BasicLevel.FATAL, "Bad view for coordinator");        throw new RuntimeException("Bad view for coordinator");      }      return;    }    if ((state != RUNNING) && (! coordinatorAddr.equals(myAddr))) {      // Ask current state to the new coordinator.          try {              sendTo(coordinatorAddr,new HAStateRequest(myAddr));        state = INITIALIZING;      } catch (Exception exc) {        logmon.log(BasicLevel.ERROR,"JGroups sendTo()",exc);      }    }    if ((mbrs.size() >= nbClusterExpected) &&        coordinatorAddr.equals(myAddr)) {      // This server is the new master !      coordinator = true;      // Starts the service      startConsAndServ();      // If not already done set state to RUNNING (this can be      // happen for the 1st master).      state = RUNNING;    }    if (logmon.isLoggable(BasicLevel.DEBUG))      logmon.log(BasicLevel.DEBUG,                 "JGroups setView: " + coordinator + ", " + state);   }    public void suspect(Address suspected_mbr) {    if (logmon.isLoggable(BasicLevel.DEBUG))      logmon.log(BasicLevel.DEBUG,"==== suspect(): " + suspected_mbr);  }    public void block() {    if (logmon.isLoggable(BasicLevel.DEBUG))      logmon.log(BasicLevel.DEBUG,"==== block()");  }  /* -------------------- End of Interface MembershipListener ----------------- */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品无码永久免费888| 久久精品国产成人一区二区三区| 亚洲大型综合色站| 国产一区二区按摩在线观看| 日本福利一区二区| 中文文精品字幕一区二区| 日韩精品视频网| 97久久超碰国产精品| 久久久蜜桃精品| 琪琪久久久久日韩精品| 欧美亚洲一区二区在线观看| 国产精品嫩草影院com| 蜜桃视频一区二区三区| 欧洲一区二区三区在线| 国产精品传媒入口麻豆| 国产精品一二三四区| 91精品国产高清一区二区三区蜜臀 | 亚洲国产精品久久不卡毛片| 国产凹凸在线观看一区二区| 日韩免费视频一区| 日韩成人精品在线| 精品污污网站免费看| 一区二区三区中文免费| 一本一道久久a久久精品 | 夫妻av一区二区| 精品粉嫩aⅴ一区二区三区四区| 亚洲成av人影院| 在线看国产一区二区| 夜色激情一区二区| 欧美在线制服丝袜| 亚洲在线成人精品| 欧美三级日韩在线| 五月婷婷久久综合| 欧美伦理电影网| 日韩va欧美va亚洲va久久| 日韩一二三四区| 久久99国产精品免费网站| 精品成人a区在线观看| 国产一区二区在线观看视频| 国产亚洲欧美一级| 粉嫩欧美一区二区三区高清影视| 国产女主播视频一区二区| 大尺度一区二区| 综合激情成人伊人| 欧美色网站导航| 奇米777欧美一区二区| 久久九九99视频| 99久久99精品久久久久久| 亚洲综合久久av| 欧美一三区三区四区免费在线看 | 7777女厕盗摄久久久| 日本成人在线一区| 久久蜜臀中文字幕| 99国产精品久久久久| 亚洲国产aⅴ成人精品无吗| 欧美久久久久中文字幕| 黄色日韩三级电影| 国产精品成人免费精品自在线观看| 成人av资源站| 午夜av一区二区三区| 久久综合国产精品| 91丨九色丨蝌蚪丨老版| 男人的j进女人的j一区| 国产偷国产偷亚洲高清人白洁| 成人动漫一区二区三区| 午夜久久久久久电影| 国产亚洲欧美激情| 欧美日韩精品二区第二页| 久久国产精品第一页| 亚洲免费在线播放| 精品国产伦一区二区三区免费| 成人免费av在线| 三级欧美在线一区| 亚洲欧美自拍偷拍色图| 日韩欧美中文字幕制服| 91在线精品秘密一区二区| 久久精品久久久精品美女| 国产精品不卡一区| 欧美精品日韩一区| 91同城在线观看| 国产制服丝袜一区| 午夜欧美电影在线观看| 中文字幕亚洲电影| 欧美精品一区二区三| 欧美乱妇15p| 99re热视频精品| 国产一区欧美日韩| 青青草91视频| 午夜在线电影亚洲一区| 亚洲三级理论片| 久久久久久久久久久电影| 欧美日韩你懂的| 91麻豆免费观看| 国产成人av影院| 久久精品99国产精品日本| 亚洲成人动漫av| 一区二区三区中文字幕| 亚洲视频综合在线| 久久久精品综合| 2019国产精品| 欧美成人性战久久| 91麻豆精品国产91久久久更新时间 | 99精品在线观看视频| 国产寡妇亲子伦一区二区| 国内成人免费视频| 久久99国产精品免费网站| 日韩国产高清在线| 蜜臀va亚洲va欧美va天堂| 午夜欧美一区二区三区在线播放| 亚洲制服丝袜在线| 夜夜嗨av一区二区三区四季av| 一区二区三区四区精品在线视频| 中文字幕一区av| 亚洲欧洲日产国码二区| 日韩毛片精品高清免费| 亚洲免费观看高清完整版在线观看 | 欧美第一区第二区| 日韩一区二区免费在线观看| 欧美精品第1页| 欧美高清性hdvideosex| 香蕉成人啪国产精品视频综合网| 日本不卡在线视频| 天涯成人国产亚洲精品一区av| 亚洲国产欧美在线人成| 亚洲裸体xxx| 一区二区三区蜜桃| 亚洲综合久久av| 首页综合国产亚洲丝袜| 日本vs亚洲vs韩国一区三区二区 | 欧美亚洲国产一区在线观看网站| 在线观看三级视频欧美| 欧美日韩一区不卡| 91精品综合久久久久久| 精品福利在线导航| 欧美国产日韩亚洲一区| 亚洲女厕所小便bbb| 午夜伊人狠狠久久| 国内精品久久久久影院薰衣草 | 欧美三级视频在线观看 | 制服丝袜激情欧洲亚洲| 国产精品卡一卡二卡三| 日本va欧美va欧美va精品| 麻豆精品视频在线观看免费 | 喷白浆一区二区| 久久99这里只有精品| 国产91在线观看| 欧美性视频一区二区三区| 欧美videos中文字幕| 国产欧美精品一区二区色综合朱莉| 亚洲精品亚洲人成人网| 久久99久久精品| 色呦呦国产精品| 精品久久久久久久久久久院品网| 国产精品久久综合| 蜜臀久久久99精品久久久久久| 成人精品鲁一区一区二区| 91精品国产综合久久久久久久| 国产亚洲综合性久久久影院| 亚洲综合精品久久| 狠狠色丁香九九婷婷综合五月| 一本大道久久a久久综合| eeuss鲁片一区二区三区在线观看| av一区二区三区黑人| 91久久香蕉国产日韩欧美9色| 欧美精品 日韩| 国产精品三级久久久久三级| 水蜜桃久久夜色精品一区的特点| 懂色av一区二区在线播放| 欧美日韩一区二区电影| 国产精品欧美精品| 老司机精品视频导航| 91高清视频在线| 国产精品每日更新在线播放网址| 麻豆精品一区二区| 欧美伦理视频网站| 亚洲精品国久久99热| 成人动漫一区二区| 久久久99久久| 久久精品噜噜噜成人88aⅴ| 欧美日本视频在线| 亚洲国产精品影院| 9久草视频在线视频精品| 久久久久久**毛片大全| 免费人成在线不卡| 欧美久久久久久久久中文字幕| 亚洲猫色日本管| 色综合天天综合网天天狠天天| 99精品国产99久久久久久白柏| 91精品国产全国免费观看| 怡红院av一区二区三区| av不卡免费在线观看| 国产精品每日更新在线播放网址| 国产精品456露脸| 久久久国产一区二区三区四区小说| 天堂蜜桃一区二区三区| 3d成人h动漫网站入口| 日韩av在线发布| 日韩丝袜美女视频| 久久99国产精品成人| 欧美r级在线观看|