Package com.sun.sgs.impl.sharedutil

Examples of com.sun.sgs.impl.sharedutil.MessageBuffer


        public void sendMessage(ByteBuffer message) throws IOException {
            assert state.get() == CONNECTED;
            byte[] messageCopy = new byte[message.remaining()];
            message.duplicate().get(messageCopy);
            sendQueue.add(new MessageBuffer(messageCopy));
        }
View Full Code Here


    client.wait(TIMEOUT);
      }
      assertTrue(listener.loggedIn);
      assertFalse(listener.reconnecting);
      assertFalse(listener.reconnected);
      MessageBuffer msg =
    new MessageBuffer(MessageBuffer.getSize("Relocate") + 4);
      msg.putString("Relocate").putInt(newPort);
      client.send(ByteBuffer.wrap(msg.getBuffer()).asReadOnlyBuffer());
      synchronized (client) {
    client.wait(TIMEOUT);
      }
      assertTrue(listener.reconnecting);
      assertTrue(listener.reconnected);
View Full Code Here

public class TestMessageBuffer extends TestCase {


    public void testConstructorNullArg() {
  try {
      new MessageBuffer(null);
      fail("Expected NullPointerException");
  } catch (NullPointerException e) {
      System.err.println(e);
  }
    }
View Full Code Here

  }
    }

    public void testPutByte() {
  int capacity = 10;
  MessageBuffer buf1 = new MessageBuffer(capacity);
  for (byte b = 0; b < capacity; b++) {
      buf1.putByte(b);
  }
  MessageBuffer buf2 = new MessageBuffer(buf1.getBuffer());
  for (byte b = 0; b < capacity; b++) {
      byte b2 = buf2.getByte();
      if (b != b2) {
    fail("Mismatched bytes; b:"+ b + ", b2:" + b2);
      }
  }
  System.err.println("bytes match");
View Full Code Here

  System.err.println("bytes match");
    }

    public void testPutByteRewind() {
  int capacity = 10;
  MessageBuffer buf1 = new MessageBuffer(capacity);
  for (byte b = 0; b < capacity; b++) {
      buf1.putByte(b);
  }
  buf1.rewind();
  for (byte b = 0; b < capacity; b++) {
      byte b2 = buf1.getByte();
      if (b != b2) {
    fail("Mismatched bytes; b:"+ b + ", b2:" + b2);
      }
  }
  System.err.println("bytes match");
View Full Code Here

  }
  System.err.println("bytes match");
    }

    public void testPutByteOverflow() {
  MessageBuffer buf = new MessageBuffer(1);
  buf.putByte(0x01);
  try {
      buf.putByte(0x02);
      fail("Expected IndexOutOfBoundsException");
  } catch (IndexOutOfBoundsException e) {
      System.err.println(e);
  }
    }
View Full Code Here

                // ignore
            }
            return;
        }

        MessageBuffer msg = new MessageBuffer(buffer);

        byte command = msg.getByte();
        if (command == SimpleSgsProtocol.LOGIN_REQUEST) {
            System.out.println("SimpleServer: Received LOGIN_REQUEST");

            byte version = msg.getByte();
            if (version != SimpleSgsProtocol.VERSION) {
                System.out.println(
      "SimpleServer: Version number mismatch: " + version
                        + " " + SimpleSgsProtocol.VERSION);
                return;
            }

            String username = msg.getString();
            String password = msg.getString();

            System.out.println("UserName: " + username + " Password: "
                    + password);

            MessageBuffer reply;
            if (password.equals("guest") || redirect) {

                byte[] reconnectKey = new byte[] {
                    0x1a, 0x1b, 0x1c, 0x1d, 0x30, 0x31, 0x32, 0x33
                };

                reply = new MessageBuffer(1 + reconnectKey.length);
                reply.putByte(SimpleSgsProtocol.LOGIN_SUCCESS).
          putBytes(reconnectKey);
            } else if (password.equals("redirect")) {

    redirect = true;
    reply = new MessageBuffer(1 + MessageBuffer.getSize(host) + 4);
    reply.putByte(SimpleSgsProtocol.LOGIN_REDIRECT).
          putString(host).
          putInt(port);
      } else {
                String reason = "Bad password";
                reply =
                    new MessageBuffer(1 + MessageBuffer.getSize(reason));

                reply.putByte(SimpleSgsProtocol.LOGIN_FAILURE).
                      putString(reason);
            }
            sendMessage(conn, reply.getBuffer());
        } else if (command == SimpleSgsProtocol.SESSION_MESSAGE) {
            String serverMessage = msg.getString();
            System.out.println(
    "SimpleServer: Received SESSION_MESSAGE: "
    + serverMessage);

            if (serverMessage.equals("Join Channel")) {
                startMessages(conn);
            } else if (serverMessage.equals("Leave Channel")) {
                stopMessages(conn);
            } else if (serverMessage.equals("Relocate")) {
    isRelocating = true;
    relocatePort = msg.getInt();
    suspendMessages(conn);
      } else {
    System.out.println("SimpleServer: Unknown server message: " +
           serverMessage);
      }
     
        } else if (command == SimpleSgsProtocol.LOGOUT_REQUEST) {
      System.out.println("SimpleServer: Received LOGOUT_REQUEST");
            MessageBuffer reply = new MessageBuffer(1);
            reply.putByte(SimpleSgsProtocol.LOGOUT_SUCCESS);
            sendMessage(conn, reply.getBuffer());


  } else if (command == SimpleSgsProtocol.SUSPEND_MESSAGES_COMPLETE) {
      System.out.println(
    "SimpleServer: Received SUSPEND_MESSAGES_COMPLETE");
      isSuspendComplete = true;
      if (isRelocating) {
    relocate(conn);
      }
     
        } else if (command == SimpleSgsProtocol.RELOCATE_REQUEST) {
      System.out.println("SimpleServer: Received RELOCATE_REQUEST");
            byte version = msg.getByte();
            if (version != SimpleSgsProtocol.VERSION) {
                System.out.println("Version number mismatch: " + version
                        + " " + SimpleSgsProtocol.VERSION);
                return;
            }
      byte[] relocateKey = msg.getBytes(msg.limit() - msg.position());
      if (!Arrays.equals(relocateKey, DEFAULT_RELOCATE_KEY)) {
    System.out.println("SimpleServer: Invalid relocateKey: " +
           HexDumper.toHexString(relocateKey));
    return;
      }
      byte[] reconnectKey = new byte[] {
    0x1a, 0x1b, 0x1c, 0x1d, 0x30, 0x31, 0x32, 0x33
      };
      isSuspended = false;
            MessageBuffer reply = new MessageBuffer(1 + reconnectKey.length);
      reply.putByte(SimpleSgsProtocol.RELOCATE_SUCCESS).
      putBytes(reconnectKey);
            sendMessage(conn, reply.getBuffer());
  }
    }
View Full Code Here

            private long seq = 0;
            public void run() {
                while (messageThreads.containsKey(conn)) {
                    String msg = "Message " + seq;
                    ++seq;
                    MessageBuffer reply = new MessageBuffer(3 + msg.length());
                    reply.putByte(SimpleSgsProtocol.SESSION_MESSAGE)
                         .putString(msg);
                    sendMessage(conn, reply.getBuffer());
                    try {
                        Thread.sleep((int) (Math.random() * 1000) + 50);
                    } catch (InterruptedException ie) {
                        ie.printStackTrace();
                    }
View Full Code Here

    private void suspendMessages(Connection conn) {
  isSuspended = true;
  System.out.println(
      "SimpleServer.suspendMessages: isSuspendComplete=false");
  isSuspendComplete = false;
  MessageBuffer reply  = new MessageBuffer(1);
  reply.putByte(SimpleSgsProtocol.SUSPEND_MESSAGES);
  sendMessage(conn, reply.getBuffer());
    }
View Full Code Here

  reply.putByte(SimpleSgsProtocol.SUSPEND_MESSAGES);
  sendMessage(conn, reply.getBuffer());
    }
   
    private void relocate(Connection conn) {
  MessageBuffer reply  =
      new MessageBuffer(1 + MessageBuffer.getSize(host) + 4 +
            DEFAULT_RELOCATE_KEY.length);
  reply.putByte(SimpleSgsProtocol.RELOCATE_NOTIFICATION).
        putString(host).
        putInt(relocatePort).
        putBytes(DEFAULT_RELOCATE_KEY);
  sendMessage(conn, reply.getBuffer());
    }
View Full Code Here

TOP

Related Classes of com.sun.sgs.impl.sharedutil.MessageBuffer

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.