You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by mw...@apache.org on 2009/11/18 03:30:58 UTC

svn commit: r881646 - in /mina/sandbox/mwebb/mina/src/main/java/org/apache/mina/spdy/client: ./ SpdyTestClient.java

Author: mwebb
Date: Wed Nov 18 02:30:58 2009
New Revision: 881646

URL: http://svn.apache.org/viewvc?rev=881646&view=rev
Log:
Simple Test client for the SPDY protocol.  Not for production use.

Added:
    mina/sandbox/mwebb/mina/src/main/java/org/apache/mina/spdy/client/
    mina/sandbox/mwebb/mina/src/main/java/org/apache/mina/spdy/client/SpdyTestClient.java

Added: mina/sandbox/mwebb/mina/src/main/java/org/apache/mina/spdy/client/SpdyTestClient.java
URL: http://svn.apache.org/viewvc/mina/sandbox/mwebb/mina/src/main/java/org/apache/mina/spdy/client/SpdyTestClient.java?rev=881646&view=auto
==============================================================================
--- mina/sandbox/mwebb/mina/src/main/java/org/apache/mina/spdy/client/SpdyTestClient.java (added)
+++ mina/sandbox/mwebb/mina/src/main/java/org/apache/mina/spdy/client/SpdyTestClient.java Wed Nov 18 02:30:58 2009
@@ -0,0 +1,72 @@
+package org.apache.mina.spdy.client;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.net.InetSocketAddress;
+import java.nio.ByteBuffer;
+
+import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.mina.core.future.ConnectFuture;
+import org.apache.mina.core.future.IoFutureListener;
+import org.apache.mina.core.session.IoSession;
+import org.apache.mina.spdy.SpdyServer;
+import org.apache.mina.spdy.messages.control.HelloControlFrame;
+import org.apache.mina.spdy.messages.control.NoopControlFrame;
+import org.apache.mina.spdy.messages.data.SpdyDataFrame;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class SpdyTestClient {
+
+	private static final Logger log = LoggerFactory.getLogger(SpdyTestClient.class);
+	
+	public SpdyTestClient( int port ){
+		
+		NioSocketConnector connector = new NioSocketConnector();
+		
+		connector.setHandler( new SpdyClientHandler() );
+		
+		ConnectFuture connFuture = connector.connect( new InetSocketAddress(port));
+		connFuture.addListener( new IoFutureListener<ConnectFuture>(){
+			public void operationComplete(ConnectFuture future) {
+				log.info("Connected");
+				
+				IoSession session = future.getSession();
+				IoBuffer data = IoBuffer.allocate(0);
+				NoopControlFrame noop = new NoopControlFrame(1, (byte)0, 0, data);
+				session.write(noop.frameToIoBuffer());
+				
+				IoBuffer helloBuffer = IoBuffer.allocate(20);
+				helloBuffer.putShort((short)0);
+				helloBuffer.putShort((short)2);
+				helloBuffer.putInt(HelloControlFrame.HELLO_BANDWIDTH_TO_YOU_ID);
+				helloBuffer.putInt(100);
+				helloBuffer.putInt(HelloControlFrame.HELLO_BANDWIDTH_FROM_YOU_ID);
+				helloBuffer.putInt(200);
+				helloBuffer.flip();
+				HelloControlFrame hello = new HelloControlFrame(1, (byte)0, 20, helloBuffer);
+				session.write(hello.frameToIoBuffer());
+				
+				try{
+					File file = new File("porsche.jpg");
+					FileInputStream fin = new FileInputStream(file);
+					ByteBuffer fileData = ByteBuffer.allocate((int)file.length());
+					fin.getChannel().read(fileData);
+					IoBuffer fileBuffer = IoBuffer.wrap(fileData);
+					
+					SpdyDataFrame dataFrame = new SpdyDataFrame(12345, (byte)0, (int)file.length(), fileBuffer );
+					session.write(dataFrame.frameToIoBuffer() );
+				}catch(Exception e){
+					e.printStackTrace();
+				}
+			}
+		});
+	}
+	
+	
+	public static void main(String[] args) {
+
+		new SpdyTestClient( SpdyServer.PORT );
+	}
+}