diff src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java @ 112:918dc3ee1c79

send composed data.
author oc
date Fri, 23 May 2014 21:48:50 +0900
parents a7988d3c0266
children bce2ef0a2e79
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java	Fri May 23 20:24:43 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java	Fri May 23 21:48:50 2014 +0900
@@ -1,5 +1,8 @@
 package jp.ac.u_ryukyu.treevnc;
 
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
 import com.glavsoft.exceptions.TransportException;
 import com.glavsoft.rfb.client.ClientToServerMessage;
 import com.glavsoft.transport.Writer;
@@ -16,25 +19,28 @@
 	 * length - U8 array - text
 	 */
 	public class ScreenChangeRequest implements ClientToServerMessage {
-		private final byte [] bytes;
+		private final String bytes;
 
-		public ScreenChangeRequest(byte[] bytes) {
-			this.bytes = bytes;
-			System.out.println("recieve change screen server request :" + bytes);
+		public ScreenChangeRequest(String adr) {
+			this.bytes = adr;
+			System.out.println("Client send change screen server request :" + adr);
 		}
 
 		@Override
 		public void send(Writer writer) throws TransportException {
-			writer.write(SERVER_CHANGE_REQUEST);
-			writer.writeByte(0); 
-			writer.writeInt16(0); // padding
-			writer.write(bytes.length);
-			writer.write(bytes); // TODO: [dime] convert 'text' String to byte arrya using right charset
+			ByteBuffer out = ByteBuffer.allocate(bytes.length()+16);
+			out.order(ByteOrder.BIG_ENDIAN);
+			out.put(SERVER_CHANGE_REQUEST);
+			out.put((byte)0); 
+			out.putShort((byte)0); // padding
+			out.putInt(bytes.length());
+			out.put(bytes.getBytes());
+			writer.write(out.array(), 0, out.position());
 			writer.flush();
-		}
+			}
 
 		@Override
 		public String toString() {
-			return "ClientCutTextMessage: [length: " + bytes.length +", text: ...]";
+			return "Screen change request: [length: " + bytes.length() +", text: ...]" + new String (bytes);
 		}
 	}
\ No newline at end of file