You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2015/07/06 01:45:04 UTC
[03/38] qpid-proton git commit: PROTON-881: Write an Echo example and
get it working
PROTON-881: Write an Echo example and get it working
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/739005e7
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/739005e7
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/739005e7
Branch: refs/heads/master
Commit: 739005e7ca49b0e85873406ea4a6b9392252a1fe
Parents: e018701
Author: Adrian Preston <pr...@uk.ibm.com>
Authored: Fri Apr 17 15:34:53 2015 +0100
Committer: Adrian Preston <pr...@uk.ibm.com>
Committed: Wed May 6 23:23:24 2015 +0100
----------------------------------------------------------------------
.../qpid/proton/example/reactor/Echo.java | 73 ++++++++++++++++++++
.../proton/reactor/impl/SelectableImpl.java | 5 +-
2 files changed, 77 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/739005e7/examples/java/reactor/src/main/java/org/apache/qpid/proton/example/reactor/Echo.java
----------------------------------------------------------------------
diff --git a/examples/java/reactor/src/main/java/org/apache/qpid/proton/example/reactor/Echo.java b/examples/java/reactor/src/main/java/org/apache/qpid/proton/example/reactor/Echo.java
new file mode 100644
index 0000000..3913e17
--- /dev/null
+++ b/examples/java/reactor/src/main/java/org/apache/qpid/proton/example/reactor/Echo.java
@@ -0,0 +1,73 @@
+/*
+ *
+ * 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.qpid.proton.example.reactor;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.channels.Pipe.SourceChannel;
+
+import org.apache.qpid.proton.Proton;
+import org.apache.qpid.proton.engine.BaseHandler;
+import org.apache.qpid.proton.engine.Event;
+import org.apache.qpid.proton.reactor.Reactor;
+import org.apache.qpid.proton.reactor.Selectable;
+
+public class Echo extends BaseHandler {
+
+ @Override
+ public void onSelectableInit(Event event) {
+ Selectable selectable = event.getSelectable();
+ Reactor reactor = event.getReactor();
+ selectable.setReading(true);
+ reactor.update(selectable);
+ }
+
+ @Override
+ public void onSelectableReadable(Event event) {
+ Selectable selectable = event.getSelectable();
+ SourceChannel channel = (SourceChannel)selectable.getChannel();
+ ByteBuffer buffer = ByteBuffer.allocate(1024);
+ try {
+ while(true) {
+ int amount = channel.read(buffer);
+ if (amount < 0) selectable.release();
+ if (amount <= 0) break;
+ System.out.write(buffer.array(), 0, buffer.position());
+ buffer.clear();
+ }
+ } catch(IOException ioException) {
+ ioException.printStackTrace();
+ selectable.release();
+ }
+ }
+
+ public static void main(String[] args) throws IOException {
+
+ Reactor reactor = Proton.reactor(new Echo());
+
+ SourceChannel inChannel = EchoInputStreamWrapper.wrap(System.in);
+ Selectable selectable = reactor.selectable();
+ selectable.setChannel(inChannel);
+
+ reactor.run();
+ }
+}
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/739005e7/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/SelectableImpl.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/SelectableImpl.java b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/SelectableImpl.java
index cf3839d..7d911a5 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/SelectableImpl.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/SelectableImpl.java
@@ -259,9 +259,12 @@ public class SelectableImpl implements Selectable {
}
// TODO: all this gets stuffed into records in the C code...
- private BaseHandler _handler = new BaseHandler();
+ private BaseHandler _handler;
@Override
public void add(Handler handler) {
+ if (_handler == null) {
+ _handler = new BaseHandler();
+ }
_handler.add(handler);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org