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

📄 testreplication.java

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 JAVA
字号:
/*- * See the file LICENSE for redistribution information. * * Copyright (c) 1997-2002 *	Sleepycat Software.  All rights reserved. * * $Id: TestReplication.java,v 1.3 2002/01/23 14:29:51 bostic Exp $ *//* * Simple test of replication, merely to exercise the individual * methods in the API.  Rather than use TCP/IP, our transport * mechanism is just an ArrayList of byte arrays. * It's managed like a queue, and synchronization is via * the ArrayList object itself and java's wait/notify. * It's not terribly extensible, but it's fine for a small test. */package com.sleepycat.test;import com.sleepycat.db.*;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Vector;public class TestReplication extends Thread    implements DbRepTransport{    public static final String MASTER_ENVDIR = "./master";    public static final String CLIENT_ENVDIR = "./client";    private Vector queue = new Vector();    private DbEnv master_env;    private DbEnv client_env;    private static void mkdir(String name)        throws IOException    {        (new File(name)).mkdir();    }        // The client thread runs this    public void run()    {        try {            System.err.println("c10");            client_env = new DbEnv(0);            System.err.println("c11");            client_env.set_rep_transport(1, this);            System.err.println("c12");            client_env.open(CLIENT_ENVDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0);            System.err.println("c13");            Dbt myid = new Dbt("master01".getBytes());            System.err.println("c14");            client_env.rep_start(myid, Db.DB_REP_CLIENT);            System.err.println("c15");            DbEnv.RepProcessMessage processMsg = new DbEnv.RepProcessMessage();            processMsg.envid = 2;            System.err.println("c20");            boolean running = true;            Dbt control = new Dbt();            Dbt rec = new Dbt();            while (running) {                int msgtype = 0;                                System.err.println("c30");                synchronized (queue) {                    if (queue.size() == 0) {                        System.err.println("c40");                        sleepShort();                    }                    else {                        msgtype = ((Integer)queue.firstElement()).intValue();                        queue.removeElementAt(0);                        byte[] data;                        System.err.println("c50 " + msgtype);                                                switch (msgtype) {                            case -1:                                running = false;                                break;                            case 1:                                data = (byte[])queue.firstElement();                                queue.removeElementAt(0);                                control.set_data(data);                                control.set_size(data.length);                                break;                            case 2:                                control.set_data(null);                                control.set_size(0);                                break;                            case 3:                                data = (byte[])queue.firstElement();                                queue.removeElementAt(0);                                rec.set_data(data);                                rec.set_size(data.length);                                break;                            case 4:                                rec.set_data(null);                                rec.set_size(0);                                break;                        }                                            }                }                System.err.println("c60");                if (msgtype == 3 || msgtype == 4) {                    System.out.println("cLIENT: Got message");                    client_env.rep_process_message(control, rec,                                                   processMsg);                }            }            System.err.println("c70");            Db db = new Db(client_env, 0);            db.open(null, "x.db", null, Db.DB_BTREE, 0, 0);            Dbt data = new Dbt();            System.err.println("c80");            db.get(null, new Dbt("Hello".getBytes()), data, 0);            System.err.println("c90");            System.out.println("Hello " + new String(data.get_data(), data.get_offset(), data.get_size()));            System.err.println("c95");            client_env.close(0);        }        catch (Exception e) {            System.err.println("client exception: " + e);        }    }    // Implements DbTransport    public int send(DbEnv env, Dbt control, Dbt rec, int flags, int envid)        throws DbException    {        System.out.println("Send to " + envid);        if (envid == 1) {            System.err.println("Unexpected envid = " + envid);            return 0;        }                int nbytes = 0;                synchronized (queue) {            System.out.println("Sending message");            byte[] data = control.get_data();            if (data != null && data.length > 0) {                queue.addElement(new Integer(1));                nbytes += data.length;                byte[] newdata = new byte[data.length];                System.arraycopy(data, 0, newdata, 0, data.length);                queue.addElement(newdata);            }            else             {                queue.addElement(new Integer(2));            }                        data = rec.get_data();            if (data != null && data.length > 0) {                queue.addElement(new Integer(3));                nbytes += data.length;                byte[] newdata = new byte[data.length];                System.arraycopy(data, 0, newdata, 0, data.length);                queue.addElement(newdata);            }            else             {                queue.addElement(new Integer(4));            }            System.out.println("MASTER: sent message");        }        return 0;    }    public void sleepShort()    {        try {            sleep(100);        }        catch (InterruptedException ie)        {        }    }        public void send_terminator()    {        synchronized (queue) {            queue.addElement(new Integer(-1));        }    }        public void master()    {        try {            master_env = new DbEnv(0);            master_env.set_rep_transport(2, this);            master_env.open(MASTER_ENVDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0644);            System.err.println("10");            Dbt myid = new Dbt("client01".getBytes());            master_env.rep_start(myid, Db.DB_REP_MASTER);            System.err.println("10");            Db db = new Db(master_env, 0);            System.err.println("20");            db.open(null, "x.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);            System.err.println("30");            db.put(null, new Dbt("Hello".getBytes()),                   new Dbt("world".getBytes()), 0);            System.err.println("40");            //DbEnv.RepElectResult electionResult = new DbEnv.RepElectResult();            //master_env.rep_elect(2, 2, 3, 4, electionResult);            db.close(0);            System.err.println("50");            master_env.close(0);            send_terminator();        }        catch (Exception e) {            System.err.println("client exception: " + e);        }    }    public static void main(String[] args)    {        // The test should only take a few milliseconds.        // give it 10 seconds before bailing out.        TimelimitThread t = new TimelimitThread(1000*10);        t.start();        try {            mkdir(CLIENT_ENVDIR);            mkdir(MASTER_ENVDIR);            TestReplication rep = new TestReplication();            // Run the client as a seperate thread.            rep.start();            // Run the master.            rep.master();            // Wait for the master to finish.            rep.join();        }        catch (Exception e)        {            System.err.println("Exception: " + e);        }        t.finished();    }}class TimelimitThread extends Thread{    long nmillis;    boolean finished = false;        TimelimitThread(long nmillis)    {        this.nmillis = nmillis;    }    public void finished()    {        finished = true;    }        public void run()    {        long targetTime = System.currentTimeMillis() + nmillis;        long curTime;                while (!finished &&               ((curTime = System.currentTimeMillis()) < targetTime)) {            long diff = targetTime - curTime;            if (diff > 100)                diff = 100;            try {                sleep(diff);            }            catch (InterruptedException ie) {            }        }        System.err.println("");        System.exit(1);    }}

⌨️ 快捷键说明

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