You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2013/03/27 17:40:54 UTC
[2/6] git commit: Added a BIO UDP client
Added a BIO UDP client
Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/6ac2897a
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/6ac2897a
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/6ac2897a
Branch: refs/heads/trunk
Commit: 6ac2897a97fb16902f0031a39907c7641c287c68
Parents: 51c9fa3
Author: Emmanuel Lécharny <el...@apache.org>
Authored: Wed Mar 27 17:34:59 2013 +0100
Committer: Emmanuel Lécharny <el...@apache.org>
Committed: Wed Mar 27 17:34:59 2013 +0100
----------------------------------------------------------------------
.../mina/core/nio/udp/BioUdpBenchmarkClient.java | 80 +++++++++++++++
1 files changed, 80 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina/blob/6ac2897a/benchmarks/src/test/java/org/apache/mina/core/nio/udp/BioUdpBenchmarkClient.java
----------------------------------------------------------------------
diff --git a/benchmarks/src/test/java/org/apache/mina/core/nio/udp/BioUdpBenchmarkClient.java b/benchmarks/src/test/java/org/apache/mina/core/nio/udp/BioUdpBenchmarkClient.java
new file mode 100644
index 0000000..4bf3cfa
--- /dev/null
+++ b/benchmarks/src/test/java/org/apache/mina/core/nio/udp/BioUdpBenchmarkClient.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.mina.core.nio.udp;
+
+import java.io.IOException;
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+import java.util.concurrent.CountDownLatch;
+
+import org.apache.mina.core.BenchmarkClient;
+
+/**
+ * A client that uses a BIO datagram to communicate with the server
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class BioUdpBenchmarkClient implements BenchmarkClient {
+ // The UDP client
+ private DatagramSocket sender;
+
+ /**
+ * {@inheritDoc}
+ */
+ public void start(int port, final CountDownLatch counter, final byte[] data) throws IOException {
+ InetAddress serverAddress = InetAddress.getLocalHost();
+ byte[] buffer = new byte[65507];
+ sender = new DatagramSocket(port + 1);
+
+ DatagramPacket pduSent = new DatagramPacket(data, data.length, serverAddress, port);
+ DatagramPacket pduReceived = new DatagramPacket(buffer, data.length);
+ sender.send(pduSent);
+
+ boolean done = false;
+
+ while (!done) {
+ try {
+ sender.receive(pduReceived);
+
+ for (int i = 0; i < pduReceived.getLength(); ++i) {
+ counter.countDown();
+
+ if (counter.getCount() > 0) {
+ sender.send(pduSent);
+ break;
+ } else {
+ done = true;
+ }
+ }
+ } catch (IOException ioe) {
+ // Nothing to do
+ }
+ }
+
+ sender.close();
+ }
+
+ /**
+ * {@inheritedDoc}
+ */
+ public void stop() throws IOException {
+ }
+}