package ch.usi.da.paxos.lab; /* * Copyright (c) 2013 Università della Svizzera italiana (USI) * * This file is part of URingPaxos. * * URingPaxos is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * URingPaxos 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with URingPaxos. If not, see <http://www.gnu.org/licenses/>. */ import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import org.apache.log4j.Logger; import ch.usi.da.paxos.api.PaxosRole; import ch.usi.da.paxos.message.Message; import ch.usi.da.paxos.message.MessageType; import ch.usi.da.paxos.message.Value; import ch.usi.da.paxos.ring.NetworkManager; /** * Name: SCTPListener<br> * Description: <br> * * Creation date: Aug 15, 2012<br> * $Id$ * * @author Samuel Benz benz@geoid.ch */ public class TCPSenderTest implements Runnable { private final static Logger logger = Logger.getLogger(TCPSenderTest.class); private final Socket socket; /** * @throws IOException */ public TCPSenderTest(String ip) throws IOException{ socket = new Socket(ip, 2020); socket.setTcpNoDelay(true); } @Override public void run() { int send = 0; try { OutputStream out = socket.getOutputStream(); while(send < 500000){ Long t = System.nanoTime(); Message m = new Message(0,0,PaxosRole.Leader,MessageType.Value,0,0,new Value(t.toString(),new byte[8912])); byte[] b = Message.toWire(m); // out.write(intToByte(0x00)); // insert something useless (simulates an error) // out.write(intToByte(0x39)); // out.write(intToByte(0xf0)); // out.write(intToByte(0xab)); // out.write(intToByte(0x4c)); // out.write(intToByte(0x61)); // out.write(intToByte(0x88)); out.write(intToByte(NetworkManager.MAGIC_NUMBER)); // "umrp" magic header out.write(intToByte(b.length)); out.write(b); out.flush(); send++; } } catch (IOException e) { logger.error(e); } } /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException{ Thread t = new Thread(new TCPSenderTest(args[0])); t.setName("TCPSender"); t.start(); //Thread t2 = new Thread(new TCPSenderTest()); //t2.setName("TCPSender"); //t2.start(); } /** * @param value * @return a byte[] */ public static final byte[] intToByte(int value) { return new byte[] { (byte)(value >>> 24), (byte)(value >>> 16), (byte)(value >>> 8), (byte)value}; } }