svn commit: r1630745 [1/2] - in /qpid/branches/QPID-6125-ProtocolRefactoring/java: bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/ broker-plugins/amqp-0-8-protocol/src/main/java/org/ap

2014-10-10 Thread rgodfrey
Author: rgodfrey
Date: Fri Oct 10 09:54:36 2014
New Revision: 1630745

URL: http://svn.apache.org/r1630745
Log:
More refactoring

Modified:

qpid/branches/QPID-6125-ProtocolRefactoring/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolHandler.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolSession.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/codec/AMQDecoder.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockDecoder.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/AccessRequestBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/AccessRequestOkBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicAckBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicCancelBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicCancelOkBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicConsumeBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicConsumeOkBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicDeliverBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicGetBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicGetEmptyBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicGetOkBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicPublishBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicQosBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicRecoverBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicRecoverSyncBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicRejectBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/BasicReturnBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ChannelAlertBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ChannelCloseBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ChannelFlowBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ChannelFlowOkBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ChannelOpenBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ChannelOpenOkBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionCloseBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionOpenBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionOpenOkBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionRedirectBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionSecureBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionSecureOkBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionStartBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionStartOkBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionTuneBody.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionTuneOkBody.java


svn commit: r1630745 [2/2] - in /qpid/branches/QPID-6125-ProtocolRefactoring/java: bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/ broker-plugins/amqp-0-8-protocol/src/main/java/org/ap

2014-10-10 Thread rgodfrey
Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionTuneOkBody.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionTuneOkBody.java?rev=1630745r1=1630744r2=1630745view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionTuneOkBody.java
 (original)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ConnectionTuneOkBody.java
 Fri Oct 10 09:54:36 2014
@@ -119,12 +119,12 @@ public class ConnectionTuneOkBody extend
 return buf.toString();
 }
 
-public static T T process(final MarkableDataInput buffer, final 
MethodProcessorT dispatcher) throws IOException
+public static void process(final MarkableDataInput buffer, final 
MethodProcessor dispatcher) throws IOException
 {
 
 int channelMax = buffer.readUnsignedShort();
 long frameMax = EncodingUtils.readUnsignedInteger(buffer);
 int heartbeat = buffer.readUnsignedShort();
-return dispatcher.connectionTuneOk(channelMax, frameMax, heartbeat);
+dispatcher.receiveConnectionTuneOk(channelMax, frameMax, heartbeat);
 }
 }

Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ContentBody.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ContentBody.java?rev=1630745r1=1630744r2=1630745view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ContentBody.java
 (original)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ContentBody.java
 Fri Oct 10 09:54:36 2014
@@ -92,14 +92,14 @@ public class ContentBody implements AMQB
 return _payload;
 }
 
-public static T T process(final int channel,
+public static void process(final int channel,
   final MarkableDataInput in,
-  final MethodProcessorT methodProcessor, 
final long bodySize)
+  final MethodProcessor methodProcessor, final 
long bodySize)
 throws IOException
 {
 byte[] payload = new byte[(int)bodySize];
 in.readFully(payload);
-return methodProcessor.messageContent(channel, payload);
+methodProcessor.receiveMessageContent(channel, payload);
 }
 
 private static class BufferContentBody implements AMQBody

Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderBody.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderBody.java?rev=1630745r1=1630744r2=1630745view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderBody.java
 (original)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderBody.java
 Fri Oct 10 09:54:36 2014
@@ -155,9 +155,9 @@ public class ContentHeaderBody implement
 _bodySize = bodySize;
 }
 
-public static T T process(final int channelId,
+public static void process(final int channelId,
 final MarkableDataInput buffer,
-final MethodProcessorT methodProcessor, 
final long size)
+final MethodProcessor methodProcessor, final 
long size)
 throws IOException, AMQFrameDecodingException
 {
 
@@ -175,6 +175,6 @@ public class ContentHeaderBody implement
 properties = new BasicContentHeaderProperties();
 properties.populatePropertiesFromBuffer(buffer, propertyFlags, 
(int)(size-14));
 
-return methodProcessor.messageHeader(channelId, properties, bodySize);
+methodProcessor.receiveMessageHeader(channelId, properties, bodySize);
 }
 }

Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ExchangeBoundBody.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ExchangeBoundBody.java?rev=1630745r1=1630744r2=1630745view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/common/src/main/java/org/apache/qpid/framing/ExchangeBoundBody.java
 (original)
+++ 

svn commit: r1630749 [2/6] - in /qpid/branches/QPID-6125-ProtocolRefactoring/java: ./ bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/ bdbstore/src/main/java/org/apache/qpid/ser

2014-10-10 Thread rgodfrey
Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/JsonSystemConfigImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/JsonSystemConfigImpl.java?rev=1630749r1=1630748r2=1630749view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/JsonSystemConfigImpl.java
 (original)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/JsonSystemConfigImpl.java
 Fri Oct 10 09:59:55 2014
@@ -38,9 +38,10 @@ public class JsonSystemConfigImpl extend
 public JsonSystemConfigImpl(final TaskExecutor taskExecutor,
 final EventLogger eventLogger,
 final LogRecorder logRecorder,
-final BrokerOptions brokerOptions)
+final BrokerOptions brokerOptions,
+final BrokerShutdownProvider 
brokerShutdownProvider)
 {
-super(taskExecutor, eventLogger, logRecorder, brokerOptions);
+super(taskExecutor, eventLogger, logRecorder, brokerOptions, 
brokerShutdownProvider);
 }
 
 public String getStorePath()

Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java?rev=1630749r1=1630748r2=1630749view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java
 (original)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemConfig.java
 Fri Oct 10 09:59:55 2014
@@ -37,4 +37,6 @@ public interface SystemConfigX extends 
 LogRecorder getLogRecorder();
 
 DurableConfigurationStore getConfigurationStore();
+
+BrokerShutdownProvider getBrokerShutdownProvider();
 }

Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1630749r1=1630748r2=1630749view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
 (original)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
 Fri Oct 10 09:59:55 2014
@@ -943,6 +943,28 @@ public class BrokerAdapter extends Abstr
 _eventLogger = eventLogger;
 }
 
+@Override
+protected void onExceptionInOpen(RuntimeException e)
+{
+SystemConfig systemConfig = getParent(SystemConfig.class);
+if (systemConfig != null)
+{
+BrokerShutdownProvider shutdownProvider = 
systemConfig.getBrokerShutdownProvider();
+if (shutdownProvider != null)
+{
+shutdownProvider.shutdown();
+}
+else
+{
+throw new IllegalStateException(Shutdown provider is not 
found in system config);
+}
+}
+else
+{
+throw new IllegalStateException(SystemConfig is not found among 
broker parents);
+}
+}
+
 public void registerMessageDelivered(long messageSize)
 {
 _messagesDelivered.registerEvent(1L);

Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java?rev=1630749r1=1630748r2=1630749view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
 (original)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
 Fri Oct 10 09:59:55 2014
@@ -114,22 +114,27 @@ public class FileBasedGroupProviderImpl
 throw new IllegalArgumentException(Cannot change the path);
 }
 }
+
+@Override
 protected void 

svn commit: r1630749 [5/6] - in /qpid/branches/QPID-6125-ProtocolRefactoring/java: ./ bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/ bdbstore/src/main/java/org/apache/qpid/ser

2014-10-10 Thread rgodfrey
Propchange: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ServerMethodDispatcherImpl.java
--
svn:eol-style = native

Added: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ServerMethodProcessor.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ServerMethodProcessor.java?rev=1630749view=auto
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ServerMethodProcessor.java
 (added)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ServerMethodProcessor.java
 Fri Oct 10 09:59:55 2014
@@ -0,0 +1,957 @@
+/*
+ *
+ * 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.server.protocol.v0_8;
+
+import java.security.PrivilegedAction;
+
+import javax.security.auth.Subject;
+import javax.security.sasl.SaslException;
+import javax.security.sasl.SaslServer;
+
+import org.apache.log4j.Logger;
+
+import org.apache.qpid.framing.*;
+import org.apache.qpid.protocol.AMQConstant;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.security.SubjectCreator;
+import org.apache.qpid.server.security.auth.SubjectAuthenticationResult;
+
+public class ServerMethodProcessor implements MethodProcessor
+{
+private static final Logger LOGGER = 
Logger.getLogger(ServerMethodProcessor.class);
+
+
+private static interface ChannelAction
+{
+void onChannel(ChannelMethodProcessor channel);
+}
+
+private ProtocolVersion _protocolVersion;
+private ServerMethodDispatcherImpl _dispatcher;
+private AMQProtocolEngine _connection;
+
+public ServerMethodProcessor(final ProtocolVersion protocolVersion)
+{
+_protocolVersion = protocolVersion;
+}
+
+
+private void processChannelMethod(int channelId, final ChannelAction 
action)
+{
+final AMQChannel channel = _connection.getChannel(channelId);
+if (channel == null)
+{
+// TODO throw body.getChannelNotFoundException(channelId, 
_connection.getMethodRegistry());
+}
+else
+{
+Subject.doAs(channel.getSubject(), new PrivilegedActionVoid()
+{
+@Override
+public Void run()
+{
+action.onChannel(channel.getMethodProcessor());
+return null;
+}
+});
+}
+
+}
+
+@Override
+public void receiveConnectionStart(final short versionMajor,
+   final short versionMinor,
+   final FieldTable serverProperties,
+   final byte[] mechanisms,
+   final byte[] locales)
+{
+if (LOGGER.isDebugEnabled())
+{
+AMQFrame frame = new AMQFrame(0,
+  new ConnectionStartBody(versionMajor,
+  versionMinor,
+  
serverProperties,
+  mechanisms,
+  locales));
+}
+_connection.closeConnection(AMQConstant.COMMAND_INVALID, Unexpected 
method received:  ConnectionStart, 0,
+ConnectionStartBody.CLASS_ID, 
ConnectionStartBody.METHOD_ID);
+
+}
+
+@Override
+public void receiveConnectionStartOk(final FieldTable clientProperties,
+ final AMQShortString mechanism,
+

svn commit: r1630749 [1/6] - in /qpid/branches/QPID-6125-ProtocolRefactoring/java: ./ bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/ bdbstore/src/main/java/org/apache/qpid/ser

2014-10-10 Thread rgodfrey
Author: rgodfrey
Date: Fri Oct 10 09:59:55 2014
New Revision: 1630749

URL: http://svn.apache.org/r1630749
Log:
Merge from trunk

Added:

qpid/branches/QPID-6125-ProtocolRefactoring/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhost/
  - copied from r1630746, 
qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhost/

qpid/branches/QPID-6125-ProtocolRefactoring/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeTest.java
  - copied unchanged from r1630746, 
qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeTest.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerShutdownProvider.java
  - copied unchanged from r1630746, 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerShutdownProvider.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/main/java/org/apache/qpid/server/util/PortUtil.java
  - copied unchanged from r1630746, 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/util/PortUtil.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/binding/
  - copied from r1630746, 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/binding/

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImplTest.java
  - copied unchanged from r1630746, 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImplTest.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/model/port/
  - copied from r1630746, 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/port/

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestConfiguredObject.java
  - copied unchanged from r1630746, 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodel/TestConfiguredObject.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/TestLdapDirectoryContext.java
  - copied unchanged from r1630746, 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/TestLdapDirectoryContext.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/AbstractVirtualHostTest.java
  - copied unchanged from r1630746, 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/AbstractVirtualHostTest.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImplTest.java
  - copied unchanged from r1630746, 
qpid/trunk/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImplTest.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ChannelMethodProcessor.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ServerMethodProcessor.java
   (with props)

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/management-http/src/main/java/resources/editQueue.html
  - copied unchanged from r1630746, 
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/editQueue.html

qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editQueue.js
  - copied unchanged from r1630746, 
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editQueue.js
Modified:
qpid/branches/QPID-6125-ProtocolRefactoring/java/   (props changed)

qpid/branches/QPID-6125-ProtocolRefactoring/java/bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/BDBHAMessageStoreManagerMBeanProvider.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBSystemConfigImpl.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java

qpid/branches/QPID-6125-ProtocolRefactoring/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java


svn commit: r1630749 [3/6] - in /qpid/branches/QPID-6125-ProtocolRefactoring/java: ./ bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/ bdbstore/src/main/java/org/apache/qpid/ser

2014-10-10 Thread rgodfrey
Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java?rev=1630749r1=1630748r2=1630749view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java
 (original)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java
 Fri Oct 10 09:59:55 2014
@@ -90,31 +90,28 @@ public class PrincipalDatabaseAuthentica
 
 private void setupMocks() throws Exception
 {
-_principalDatabase = mock(PrincipalDatabase.class);
-
-
when(_principalDatabase.getMechanisms()).thenReturn(Collections.singletonList(MOCK_MECH_NAME));
-when(_principalDatabase.createSaslServer(MOCK_MECH_NAME, LOCALHOST, 
null)).thenReturn(new MySaslServer(false, true));
+setUpPrincipalDatabase();
 
 setupManager(false);
 
 _manager.initialise();
 }
 
+private void setUpPrincipalDatabase() throws SaslException
+{
+_principalDatabase = mock(PrincipalDatabase.class);
+
+
when(_principalDatabase.getMechanisms()).thenReturn(Collections.singletonList(MOCK_MECH_NAME));
+when(_principalDatabase.createSaslServer(MOCK_MECH_NAME, LOCALHOST, 
null)).thenReturn(new MySaslServer(false, true));
+}
+
 private void setupManager(final boolean recovering)
 {
 MapString,Object attrs = new HashMapString, Object();
 attrs.put(ConfiguredObject.ID, UUID.randomUUID());
 attrs.put(ConfiguredObject.NAME, getTestName());
 attrs.put(path, _passwordFileLocation);
-_manager = new PrincipalDatabaseAuthenticationManager(attrs, 
BrokerTestHelper.createBrokerMock())
-{
-@Override
-protected PrincipalDatabase createDatabase()
-{
-return _principalDatabase;
-}
-
-};
+_manager = getPrincipalDatabaseAuthenticationManager(attrs);
 if(recovering)
 {
 _manager.open();
@@ -273,6 +270,41 @@ public class PrincipalDatabaseAuthentica
 assertFalse(Password file was not deleted, new 
File(_passwordFileLocation).exists());
 }
 
+public void testCreateForInvalidPath() throws Exception
+{
+setUpPrincipalDatabase();
+
+MapString,Object attrs = new HashMap();
+attrs.put(ConfiguredObject.ID, UUID.randomUUID());
+attrs.put(ConfiguredObject.NAME, getTestName());
+String path = TMP_FOLDER + File.separator + getTestName() + 
System.nanoTime() + File.separator + users;
+attrs.put(path, path);
+
+_manager = getPrincipalDatabaseAuthenticationManager(attrs);
+try
+{
+_manager.create();
+fail(Creation with invalid path should have failed);
+}
+catch(IllegalConfigurationException e)
+{
+assertEquals(Unexpected exception message: + e.getMessage(), 
String.format(Cannot create password file at '%s', path), e.getMessage());
+}
+}
+
+PrincipalDatabaseAuthenticationManager 
getPrincipalDatabaseAuthenticationManager(final MapString, Object attrs)
+{
+return new PrincipalDatabaseAuthenticationManager(attrs, 
BrokerTestHelper.createBrokerMock())
+{
+@Override
+protected PrincipalDatabase createDatabase()
+{
+return _principalDatabase;
+}
+
+};
+}
+
 private void deletePasswordFileIfExists()
 {
 File passwordFile = new File(_passwordFileLocation);

Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactoryTest.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactoryTest.java?rev=1630749r1=1630748r2=1630749view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactoryTest.java
 (original)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactoryTest.java
 Fri Oct 10 09:59:55 2014
@@ -57,40 +57,15 @@ public class 

svn commit: r1630749 [4/6] - in /qpid/branches/QPID-6125-ProtocolRefactoring/java: ./ bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/ bdbstore/src/main/java/org/apache/qpid/ser

2014-10-10 Thread rgodfrey
Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ServerMethodDispatcherImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ServerMethodDispatcherImpl.java?rev=1630749r1=1630748r2=1630749view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ServerMethodDispatcherImpl.java
 (original)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ServerMethodDispatcherImpl.java
 Fri Oct 10 09:59:55 2014
@@ -1,2237 +1,2266 @@
-/*
- *
- * 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.server.protocol.v0_8;
-
-import java.security.AccessControlException;
-import java.util.Collection;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.UUID;
-
-import javax.security.sasl.SaslException;
-import javax.security.sasl.SaslServer;
-
-import org.apache.log4j.Logger;
-
-import org.apache.qpid.AMQConnectionException;
-import org.apache.qpid.AMQException;
-import org.apache.qpid.exchange.ExchangeDefaults;
-import org.apache.qpid.framing.*;
-import org.apache.qpid.protocol.AMQConstant;
-import org.apache.qpid.server.consumer.ConsumerImpl;
-import org.apache.qpid.server.exchange.ExchangeImpl;
-import org.apache.qpid.server.filter.AMQInvalidArgumentException;
-import org.apache.qpid.server.flow.FlowCreditManager;
-import org.apache.qpid.server.flow.MessageOnlyCreditManager;
-import org.apache.qpid.server.message.InstanceProperties;
-import org.apache.qpid.server.message.MessageDestination;
-import org.apache.qpid.server.message.MessageInstance;
-import org.apache.qpid.server.message.MessageSource;
-import org.apache.qpid.server.message.ServerMessage;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.model.ExclusivityPolicy;
-import org.apache.qpid.server.model.LifetimePolicy;
-import org.apache.qpid.server.model.NoFactoryForTypeException;
-import org.apache.qpid.server.model.Queue;
-import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.UnknownConfiguredObjectException;
-import org.apache.qpid.server.model.port.AmqpPort;
-import org.apache.qpid.server.protocol.AMQSessionModel;
-import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.queue.QueueArgumentsConverter;
-import org.apache.qpid.server.security.SubjectCreator;
-import org.apache.qpid.server.security.auth.SubjectAuthenticationResult;
-import org.apache.qpid.server.virtualhost.ExchangeExistsException;
-import org.apache.qpid.server.virtualhost.ExchangeIsAlternateException;
-import org.apache.qpid.server.virtualhost.QueueExistsException;
-import org.apache.qpid.server.virtualhost.RequiredExchangeException;
-import org.apache.qpid.server.virtualhost.ReservedExchangeNameException;
-import org.apache.qpid.server.virtualhost.VirtualHostImpl;
-
-public class ServerMethodDispatcherImpl implements MethodDispatcher
-{
-private static final Logger _logger = 
Logger.getLogger(ServerMethodDispatcherImpl.class);
-
-private final AMQProtocolSession? _connection;
-
-
-public static MethodDispatcher 
createMethodDispatcher(AMQProtocolSession? connection)
-{
-return new ServerMethodDispatcherImpl(connection);
-}
-
-
-public ServerMethodDispatcherImpl(AMQProtocolSession? connection)
-{
-_connection = connection;
-}
-
-
-protected final AMQProtocolSession? getConnection()
-{
-return _connection;
-}
-
-public boolean dispatchAccessRequest(AccessRequestBody body, int 
channelId) throws AMQException
-{
-final AMQChannel channel = _connection.getChannel(channelId);
-if (channel == null)
-{
-throw body.getChannelNotFoundException(channelId, 
_connection.getMethodRegistry());
-}
-
-

svn commit: r1630749 [6/6] - in /qpid/branches/QPID-6125-ProtocolRefactoring/java: ./ bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/ bdbstore/src/main/java/org/apache/qpid/ser

2014-10-10 Thread rgodfrey
Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1050-VaryingNumberOfProducerSessionsSingleConnection.chartdef
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1050-VaryingNumberOfProducerSessionsSingleConnection.chartdef?rev=1630749r1=1630748r2=1630749view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1050-VaryingNumberOfProducerSessionsSingleConnection.chartdef
 (original)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1050-VaryingNumberOfProducerSessionsSingleConnection.chartdef
 Fri Oct 10 09:59:55 2014
@@ -20,7 +20,7 @@
 chartType=XYLINE
 chartTitle=Varying number of producer sessions on single connection
 chartSubtitle=Persistent messages (1024b)
-chartDescription=1-80P transacted on single connection, 20C transacted on 
separate connections, persistent, message payload 1KB.
+chartDescription=1-80P transacted on single connection, 20C transacted on 
separate connections, persistent, message payload 1KB, single queue.
 
 xAxisTitle=Number of producer sessions
 yAxisTitle=Throughput (KB/s)

Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1300-QueueConsumersWithNonOverlappingSelectors-Transient.chartdef
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1300-QueueConsumersWithNonOverlappingSelectors-Transient.chartdef?rev=1630749r1=1630748r2=1630749view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1300-QueueConsumersWithNonOverlappingSelectors-Transient.chartdef
 (original)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1300-QueueConsumersWithNonOverlappingSelectors-Transient.chartdef
 Fri Oct 10 09:59:55 2014
@@ -22,7 +22,7 @@ chartTitle=Impact of non-overlapping sel
 chartSubtitle=Transient 1KB messages
 xAxisTitle=Consumers
 yAxisTitle=Throughput (messages/s)
-chartDescription=Impact of non-overlapping selectors on queue consumers with 
transient messages, auto-ack, message payload of 1024 bytes, 1 producer, 
varying  number of consumers from 1 to 32.
+chartDescription=Impact of non-overlapping selectors on queue consumers with 
transient messages, auto-ack, message payload of 1024 bytes, 1 producer, 
varying  number of consumers from 1 to 32, single queue.
 
 series.1.statement=SELECT totalNumberOfConsumers, throughputMessagesPerS FROM 
QueueConsumersWithNonOverlappingSelectors WHERE participantName = 'All' and 
testName like '%non overlapping - NON_PERSISTENT%'
 series.1.legend=Current

Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1301-QueueConsumersWithNonOverlappingSelectors-Persistent.chartdef
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1301-QueueConsumersWithNonOverlappingSelectors-Persistent.chartdef?rev=1630749r1=1630748r2=1630749view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1301-QueueConsumersWithNonOverlappingSelectors-Persistent.chartdef
 (original)
+++ 
qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1301-QueueConsumersWithNonOverlappingSelectors-Persistent.chartdef
 Fri Oct 10 09:59:55 2014
@@ -22,7 +22,7 @@ chartTitle=Impact of non-overlapping sel
 chartSubtitle=Persistent 1KB messages
 xAxisTitle=Consumers
 yAxisTitle=Throughput (messages/s)
-chartDescription=Impact of non-overlapping selectors on queue consumers with 
persistent messages, auto-ack, message payload of 1024 bytes, 1 producer, 
varying number of consumers from 1 to 32..
+chartDescription=Impact of non-overlapping selectors on queue consumers with 
persistent messages, auto-ack, message payload of 1024 bytes, 1 producer, 
varying number of consumers from 1 to 32, single queue.
 
 
 series.1.statement=SELECT totalNumberOfConsumers, throughputMessagesPerS FROM 
QueueConsumersWithNonOverlappingSelectors WHERE participantName = 'All' and 
testName like '%non overlapping - PERSISTENT'

Modified: 
qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1302-QueueConsumersWithOverlappingSelectors-Transient.chartdef
URL: 
http://svn.apache.org/viewvc/qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1302-QueueConsumersWithOverlappingSelectors-Transient.chartdef?rev=1630749r1=1630748r2=1630749view=diff
==
--- 
qpid/branches/QPID-6125-ProtocolRefactoring/java/perftests/etc/chartdefs/1302-QueueConsumersWithOverlappingSelectors-Transient.chartdef
 (original)
+++ 

svn commit: r1630757 - /qpid/proton/branches/examples/tutorial/

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 10:48:20 2014
New Revision: 1630757

URL: http://svn.apache.org/r1630757
Log:
rename sender()/receiver() as create_sender()/create_receiver()

Modified:
qpid/proton/branches/examples/tutorial/client.py
qpid/proton/branches/examples/tutorial/client_http.py
qpid/proton/branches/examples/tutorial/db_recv.py
qpid/proton/branches/examples/tutorial/db_send.py
qpid/proton/branches/examples/tutorial/helloworld.py
qpid/proton/branches/examples/tutorial/helloworld_alt.py
qpid/proton/branches/examples/tutorial/helloworld_blocking.py
qpid/proton/branches/examples/tutorial/helloworld_direct.py
qpid/proton/branches/examples/tutorial/helloworld_direct_alt.py
qpid/proton/branches/examples/tutorial/helloworld_direct_tornado.py
qpid/proton/branches/examples/tutorial/helloworld_simple.py
qpid/proton/branches/examples/tutorial/helloworld_simplistic.py
qpid/proton/branches/examples/tutorial/helloworld_tornado.py
qpid/proton/branches/examples/tutorial/proton_events.py
qpid/proton/branches/examples/tutorial/proton_server.py
qpid/proton/branches/examples/tutorial/server.py
qpid/proton/branches/examples/tutorial/simple_recv.py
qpid/proton/branches/examples/tutorial/simple_send.py
qpid/proton/branches/examples/tutorial/sync_client.py

Modified: qpid/proton/branches/examples/tutorial/client.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/tutorial/client.py?rev=1630757r1=1630756r2=1630757view=diff
==
--- qpid/proton/branches/examples/tutorial/client.py (original)
+++ qpid/proton/branches/examples/tutorial/client.py Fri Oct 10 10:48:20 2014
@@ -25,8 +25,8 @@ class Client(IncomingMessageHandler):
 def __init__(self, eventloop, host, address, requests):
 self.eventloop = eventloop
 self.conn = eventloop.connect(host)
-self.sender = self.conn.sender(address)
-self.receiver = self.conn.receiver(None, dynamic=True, handler=self)
+self.sender = self.conn.create_sender(address)
+self.receiver = self.conn.create_receiver(None, dynamic=True, 
handler=self)
 self.requests = requests
 
 def next_request(self):

Modified: qpid/proton/branches/examples/tutorial/client_http.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/tutorial/client_http.py?rev=1630757r1=1630756r2=1630757view=diff
==
--- qpid/proton/branches/examples/tutorial/client_http.py (original)
+++ qpid/proton/branches/examples/tutorial/client_http.py Fri Oct 10 10:48:20 
2014
@@ -36,8 +36,8 @@ class ExampleHandler(tornado.web.Request
 @tornado.web.asynchronous
 def post(self):
 self.conn = self.loop.connect(localhost:5672)
-self.sender = self.conn.sender(examples)
-self.conn.receiver(None, dynamic=True, handler=self)
+self.sender = self.conn.create_sender(examples)
+self.conn.create_receiver(None, dynamic=True, handler=self)
 
 def on_link_open(self, event):
 req = Message(reply_to=event.link.remote_source.address, 
body=self.get_body_argument(message))

Modified: qpid/proton/branches/examples/tutorial/db_recv.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/tutorial/db_recv.py?rev=1630757r1=1630756r2=1630757view=diff
==
--- qpid/proton/branches/examples/tutorial/db_recv.py (original)
+++ qpid/proton/branches/examples/tutorial/db_recv.py Fri Oct 10 10:48:20 2014
@@ -31,7 +31,7 @@ class Recv(BaseHandler):
 # TODO: load last tag from db
 self.last_id = None
 self.conn = self.eventloop.connect(self.host, handler=self)
-self.conn.receiver(self.address)
+self.conn.create_receiver(self.address)
 
 def auto_accept(self): return False
 

Modified: qpid/proton/branches/examples/tutorial/db_send.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/tutorial/db_send.py?rev=1630757r1=1630756r2=1630757view=diff
==
--- qpid/proton/branches/examples/tutorial/db_send.py (original)
+++ qpid/proton/branches/examples/tutorial/db_send.py Fri Oct 10 10:48:20 2014
@@ -34,7 +34,7 @@ class Send(BaseHandler):
 self.records = Queue.Queue(maxsize=50)
 self.db = Db(src_db, self.eventloop.get_event_trigger())
 self.conn = self.eventloop.connect(self.host, handler=self)
-self.sender = self.conn.sender(self.address)
+self.sender = self.conn.create_sender(self.address)
 
 def on_records_loaded(self, event):
 if self.records.empty() and event.subject == self.sent:

Modified: qpid/proton/branches/examples/tutorial/helloworld.py
URL: 

[3/4] git commit: Make new facades have an empty data section, as the copy being sent always does. Add additional tests around copy.

2014-10-10 Thread robbie
Make new facades have an empty data section, as the copy being sent always 
does. Add additional tests around copy.


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/27b9b283
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/27b9b283
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/27b9b283

Branch: refs/heads/master
Commit: 27b9b283f63af6534ae2df03b1ae920434112bdc
Parents: c4690c4
Author: Robert Gemmell rob...@apache.org
Authored: Fri Oct 10 11:44:57 2014 +0100
Committer: Robert Gemmell rob...@apache.org
Committed: Fri Oct 10 11:46:01 2014 +0100

--
 .../amqp/message/AmqpJmsBytesMessageFacade.java |  9 ++-
 .../message/AmqpJmsBytesMessageFacadeTest.java  | 58 +---
 2 files changed, 58 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/27b9b283/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
--
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
index 553a044..1fe5e26 100644
--- 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
+++ 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
@@ -62,6 +62,7 @@ public class AmqpJmsBytesMessageFacade extends 
AmqpJmsMessageFacade implements J
 super(connection);
 setContentType(OCTET_STREAM_CONTENT_TYPE);
 setMessageAnnotation(JMS_MSG_TYPE, JMS_BYTES_MESSAGE);
+getAmqpMessage().setBody(EMPTY_BODY);
 }
 
 /**
@@ -84,7 +85,7 @@ public class AmqpJmsBytesMessageFacade extends 
AmqpJmsMessageFacade implements J
 copyInto(copy);
 
 Binary payload = getBinaryFromBody();
-if (payload != null  payload.getLength()  0) {
+if (payload.getLength()  0) {
 byte[] result = new byte[payload.getLength()];
 System.arraycopy(payload.getArray(), payload.getArrayOffset(), 
result, 0, payload.getLength());
 copy.message.setBody(new Data(new Binary(result)));
@@ -182,6 +183,12 @@ public class AmqpJmsBytesMessageFacade extends 
AmqpJmsMessageFacade implements J
 return getBinaryFromBody().getLength();
 }
 
+/**
+ * Get the underlying Binary object from the body, or
+ * {@link EMPTY_BINARY} if there is none. Never returns null.
+ *
+ * @return the body binary, or empty substitute if there is none
+ */
 private Binary getBinaryFromBody() {
 Section body = getAmqpMessage().getBody();
 Binary result = EMPTY_BINARY;

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/27b9b283/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java
--
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java
index 6bcf777..6199917 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java
@@ -22,6 +22,7 @@ import static 
org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport.getSy
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -85,15 +86,11 @@ public class AmqpJmsBytesMessageFacadeTest extends 
AmqpJmsMessageTypesTestCase {
 }
 
 @Test
-public void testNewMessageHasContentTypeButNoBodySection() throws 
Exception {
-// TODO: this test assumes we can omit the body section. If we decide 
otherwise
-// it should instead check for e.g. a data section containing 0 length 
binary
+public void testNewMessageHasContentType() throws Exception {
 AmqpJmsBytesMessageFacade amqpBytesMessageFacade = 
createNewBytesMessageFacade();
 Message protonMessage = amqpBytesMessageFacade.getAmqpMessage();
 
 assertNotNull(protonMessage);
-assertNull(protonMessage.getBody());
-
 String contentType = protonMessage.getContentType();
 assertNotNull(content type should be set, contentType);
 assertEquals(application/octet-stream, 

[1/4] git commit: remove testonly setBody method, update tests accordingly

2014-10-10 Thread robbie
Repository: qpid-jms
Updated Branches:
  refs/heads/master e85c74b46 - a6d04de00


remove testonly setBody method, update tests accordingly


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/1794cbbf
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/1794cbbf
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/1794cbbf

Branch: refs/heads/master
Commit: 1794cbbf2d767b8ca30ca6f0374b0032f92f7cf5
Parents: e85c74b
Author: Robert Gemmell rob...@apache.org
Authored: Fri Oct 10 10:43:02 2014 +0100
Committer: Robert Gemmell rob...@apache.org
Committed: Fri Oct 10 10:43:02 2014 +0100

--
 .../message/facade/JmsBytesMessageFacade.java   |  13 --
 .../amqp/message/AmqpJmsBytesMessageFacade.java |  15 ---
 .../qpid/jms/message/JmsBytesMessageTest.java   |  21 +--
 .../defaults/JmsDefaultBytesMessageFacade.java  |  16 +--
 .../message/AmqpJmsBytesMessageFacadeTest.java  | 127 +++
 5 files changed, 60 insertions(+), 132 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/1794cbbf/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsBytesMessageFacade.java
--
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsBytesMessageFacade.java
 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsBytesMessageFacade.java
index b5ee153..ecb59c1 100644
--- 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsBytesMessageFacade.java
+++ 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsBytesMessageFacade.java
@@ -86,17 +86,4 @@ public interface JmsBytesMessageFacade extends 
JmsMessageFacade {
  * @return the number of bytes contained in the body of the message.
  */
 int getBodyLength();
-
-/**
- * Sets the contents of the message from the given byte[] the given bytes 
are
- * copied into the body of the message.  Any previous message body content 
is
- * discarded.
- *
- * @param content
- *the new bytes to store in this message.
- *
- * @throws JMSException if an error occurs accessing the message body.
- */
-void setBody(byte[] content) throws JMSException;
-
 }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/1794cbbf/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
--
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
index 4207439..9438413 100644
--- 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
+++ 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
@@ -129,21 +129,6 @@ public class AmqpJmsBytesMessageFacade extends 
AmqpJmsMessageFacade implements J
 }
 
 @Override
-public void setBody(byte[] content) throws JMSException {
-if (bytesIn != null || bytesOut != null) {
-throw new JMSException(Body cannot be read until message is 
reset());
-}
-
-Data body = EMPTY_DATA;
-if (content != null) {
-byte[] copy = Arrays.copyOf(content, content.length);
-body = new Data(new Binary(copy, 0, copy.length));
-}
-
-getAmqpMessage().setBody(body);
-}
-
-@Override
 public InputStream getInputStream() throws JMSException {
 if (bytesOut != null) {
 throw new IllegalStateException(Body is being written to, cannot 
perform a read.);

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/1794cbbf/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java
--
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java
index e672ee3..4420832 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java
@@ -82,8 +82,7 @@ public class JmsBytesMessageTest {
 @Test
 public void testReadBytesUsingReceivedMessageWithBodyReturnsBytes() throws 
Exception {
 byte[] content = myBytesData.getBytes();
-JmsDefaultBytesMessageFacade facade = new 
JmsDefaultBytesMessageFacade();
-facade.setBody(content);
+JmsDefaultBytesMessageFacade facade = new 

[2/4] git commit: rename for clarity

2014-10-10 Thread robbie
rename for clarity


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/c4690c48
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/c4690c48
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/c4690c48

Branch: refs/heads/master
Commit: c4690c486fc99e8a204d17420e61cb38a583178e
Parents: 1794cbb
Author: Robert Gemmell rob...@apache.org
Authored: Fri Oct 10 11:18:45 2014 +0100
Committer: Robert Gemmell rob...@apache.org
Committed: Fri Oct 10 11:18:45 2014 +0100

--
 .../amqp/message/AmqpJmsBytesMessageFacade.java| 13 ++---
 1 file changed, 6 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/c4690c48/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
--
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
index 9438413..553a044 100644
--- 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
+++ 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java
@@ -27,7 +27,6 @@ import io.netty.buffer.Unpooled;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.util.Arrays;
 
 import javax.jms.IllegalStateException;
 import javax.jms.JMSException;
@@ -47,8 +46,8 @@ import org.apache.qpid.proton.message.Message;
  */
 public class AmqpJmsBytesMessageFacade extends AmqpJmsMessageFacade implements 
JmsBytesMessageFacade {
 
-private static final Binary EMPTY_BODY = new Binary(new byte[0]);
-private static final Data EMPTY_DATA = new Data(EMPTY_BODY);
+private static final Binary EMPTY_BINARY = new Binary(new byte[0]);
+private static final Data EMPTY_BODY = new Data(EMPTY_BINARY);
 
 private transient ByteBufInputStream bytesIn;
 private transient ByteBufOutputStream bytesOut;
@@ -90,7 +89,7 @@ public class AmqpJmsBytesMessageFacade extends 
AmqpJmsMessageFacade implements J
 System.arraycopy(payload.getArray(), payload.getArrayOffset(), 
result, 0, payload.getLength());
 copy.message.setBody(new Data(new Binary(result)));
 } else {
-copy.message.setBody(EMPTY_DATA);
+copy.message.setBody(EMPTY_BODY);
 }
 
 return copy;
@@ -125,7 +124,7 @@ public class AmqpJmsBytesMessageFacade extends 
AmqpJmsMessageFacade implements J
 bytesOut = null;
 }
 
-message.setBody(EMPTY_DATA);
+message.setBody(EMPTY_BODY);
 }
 
 @Override
@@ -152,7 +151,7 @@ public class AmqpJmsBytesMessageFacade extends 
AmqpJmsMessageFacade implements J
 
 if (bytesOut == null) {
 bytesOut = new ByteBufOutputStream(Unpooled.buffer());
-message.setBody(EMPTY_DATA);
+message.setBody(EMPTY_BODY);
 }
 
 return bytesOut;
@@ -185,7 +184,7 @@ public class AmqpJmsBytesMessageFacade extends 
AmqpJmsMessageFacade implements J
 
 private Binary getBinaryFromBody() {
 Section body = getAmqpMessage().getBody();
-Binary result = EMPTY_BODY;
+Binary result = EMPTY_BINARY;
 
 if (body == null) {
 return result;


-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



[4/4] git commit: test input/output stream state checking

2014-10-10 Thread robbie
test input/output stream state checking


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/a6d04de0
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/a6d04de0
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/a6d04de0

Branch: refs/heads/master
Commit: a6d04de00ea4643d52050170ee001c9272269a1b
Parents: 27b9b28
Author: Robert Gemmell rob...@apache.org
Authored: Fri Oct 10 11:55:18 2014 +0100
Committer: Robert Gemmell rob...@apache.org
Committed: Fri Oct 10 11:55:18 2014 +0100

--
 .../message/AmqpJmsBytesMessageFacadeTest.java  | 27 +++-
 1 file changed, 26 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/a6d04de0/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java
--
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java
index 6199917..b07ba29 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java
@@ -21,7 +21,6 @@ import static 
org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport.JMS_M
 import static 
org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport.getSymbol;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
@@ -219,6 +218,32 @@ public class AmqpJmsBytesMessageFacadeTest extends 
AmqpJmsMessageTypesTestCase {
 assertDataBodyAsExpected(amqpBytesMessageFacade.getAmqpMessage(), 0);
 }
 
+@Test
+public void testGetInputStreamThrowsJMSISEWhenFacadeBeingWrittenTo() 
throws Exception {
+AmqpJmsBytesMessageFacade amqpBytesMessageFacade = 
createNewBytesMessageFacade();
+
+amqpBytesMessageFacade.getOutputStream();
+try {
+amqpBytesMessageFacade.getInputStream();
+fail(expected exception not thrown);
+} catch (javax.jms.IllegalStateException ise) {
+// expected
+}
+}
+
+@Test
+public void testGetOutputStreamThrowsJMSISEWhenFacadeBeingReadFrom() 
throws Exception {
+AmqpJmsBytesMessageFacade amqpBytesMessageFacade = 
createNewBytesMessageFacade();
+
+amqpBytesMessageFacade.getInputStream();
+try {
+amqpBytesMessageFacade.getOutputStream();
+fail(expected exception not thrown);
+} catch (javax.jms.IllegalStateException ise) {
+// expected
+}
+}
+
 // -- test handling of received messages 
-//
 
 @Test


-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630766 - in /qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl: MessageConsumerImpl.java SessionImpl.java

2014-10-10 Thread rgodfrey
Author: rgodfrey
Date: Fri Oct 10 11:43:50 2014
New Revision: 1630766

URL: http://svn.apache.org/r1630766
Log:
QPID-6141 : Fix recover() for onMessage client-ack sessions

Modified:

qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java

qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java

Modified: 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java?rev=1630766r1=1630765r2=1630766view=diff
==
--- 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java
 Fri Oct 10 11:43:50 2014
@@ -300,6 +300,12 @@ public class MessageConsumerImpl impleme
 }
 }
 
+Message receiveRecoveredMessage()
+{
+return _replaymessages.isEmpty() ? null :  _replaymessages.remove(0);
+
+}
+
 Message receive0(final long timeout)
 {
 

Modified: 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java?rev=1630766r1=1630765r2=1630766view=diff
==
--- 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java
 Fri Oct 10 11:43:50 2014
@@ -922,7 +922,15 @@ public class SessionImpl implements Sess
 else
 {
 consumer = _messageConsumerList.remove(0);
-msg = consumer.receive0(0L);
+msg = consumer.receiveRecoveredMessage();
+if(msg == null)
+{
+msg = consumer.receive0(0L);
+}
+else
+{
+recoveredMessage = true;
+}
 }
 
 MessageListener listener = consumer._messageListener;



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



[1/2] git commit: simplify setting the encoding method and ensure it is a no-op if the method is unchanged

2014-10-10 Thread robbie
Repository: qpid-jms
Updated Branches:
  refs/heads/master a6d04de00 - 5c46a63c3


simplify setting the encoding method and ensure it is a no-op if the method is 
unchanged


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/8aa3d4d9
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/8aa3d4d9
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/8aa3d4d9

Branch: refs/heads/master
Commit: 8aa3d4d9824069a1e904a70268793126caffb4bc
Parents: a6d04de
Author: Robert Gemmell rob...@apache.org
Authored: Fri Oct 10 12:36:15 2014 +0100
Committer: Robert Gemmell rob...@apache.org
Committed: Fri Oct 10 12:36:15 2014 +0100

--
 .../message/AmqpJmsObjectMessageFacade.java | 25 ++--
 .../amqp/message/AmqpObjectTypeDelegate.java|  1 +
 .../message/AmqpSerializedObjectDelegate.java   |  5 
 .../amqp/message/AmqpTypedObjectDelegate.java   |  5 
 4 files changed, 24 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8aa3d4d9/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacade.java
--
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacade.java
 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacade.java
index 894ff3a..4c18f7e 100644
--- 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacade.java
+++ 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacade.java
@@ -126,22 +126,23 @@ public class AmqpJmsObjectMessageFacade extends 
AmqpJmsMessageFacade implements
 }
 
 void setUseAmqpTypedEncoding(boolean useAmqpTypedEncoding) throws 
JMSException {
-if (useAmqpTypedEncoding  delegate instanceof 
AmqpSerializedObjectDelegate) {
-AmqpTypedObjectDelegate newDelegate = new 
AmqpTypedObjectDelegate(message);
+if (useAmqpTypedEncoding != delegate.isAmqpTypeEncoded()) {
 try {
-newDelegate.setObject(delegate.getObject());
-} catch (ClassNotFoundException | IOException e) {
-throw JmsExceptionSupport.create(e);
-}
-delegate = newDelegate;
-} else if (delegate instanceof AmqpTypedObjectDelegate) {
-AmqpSerializedObjectDelegate newDelegate = new 
AmqpSerializedObjectDelegate(message);
-try {
-newDelegate.setObject(delegate.getObject());
+Serializable existingObject = delegate.getObject();
+
+AmqpObjectTypeDelegate newDelegate = null;
+if (useAmqpTypedEncoding) {
+newDelegate = new AmqpTypedObjectDelegate(message);
+} else {
+newDelegate = new AmqpSerializedObjectDelegate(message);
+}
+
+newDelegate.setObject(existingObject);
+
+delegate = newDelegate;
 } catch (ClassNotFoundException | IOException e) {
 throw JmsExceptionSupport.create(e);
 }
-delegate = newDelegate;
 }
 }
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8aa3d4d9/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpObjectTypeDelegate.java
--
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpObjectTypeDelegate.java
 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpObjectTypeDelegate.java
index cec37f0..fb74e68 100644
--- 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpObjectTypeDelegate.java
+++ 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpObjectTypeDelegate.java
@@ -53,4 +53,5 @@ public interface AmqpObjectTypeDelegate {
  */
 void onSend();
 
+boolean isAmqpTypeEncoded();
 }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8aa3d4d9/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpSerializedObjectDelegate.java
--
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpSerializedObjectDelegate.java
 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpSerializedObjectDelegate.java
index d22d23a..647286e 100644
--- 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpSerializedObjectDelegate.java
+++ 

[2/2] git commit: start on unit tests for AmqpJmsObjectMessageFacade

2014-10-10 Thread robbie
start on unit tests for AmqpJmsObjectMessageFacade


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/5c46a63c
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/5c46a63c
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/5c46a63c

Branch: refs/heads/master
Commit: 5c46a63c38f8404fcb0dc5607baf690b0edacae1
Parents: 8aa3d4d
Author: Robert Gemmell rob...@apache.org
Authored: Fri Oct 10 12:54:15 2014 +0100
Committer: Robert Gemmell rob...@apache.org
Committed: Fri Oct 10 12:54:15 2014 +0100

--
 .../message/AmqpJmsMessageTypesTestCase.java|  8 ++
 .../message/AmqpJmsObjectMessageFacadeTest.java | 84 
 2 files changed, 92 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/5c46a63c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageTypesTestCase.java
--
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageTypesTestCase.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageTypesTestCase.java
index a39afcd..8ad585f 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageTypesTestCase.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageTypesTestCase.java
@@ -78,6 +78,14 @@ public class AmqpJmsMessageTypesTestCase extends 
QpidJmsTestCase {
 return new AmqpJmsStreamMessageFacade(amqpConsumer, message);
 }
 
+protected AmqpJmsObjectMessageFacade createNewObjectMessageFacade(boolean 
javaSerialized) {
+return new AmqpJmsObjectMessageFacade(createMockAmqpConnection(), 
javaSerialized);
+}
+
+protected AmqpJmsObjectMessageFacade 
createReceivedObjectMessageFacade(AmqpConsumer amqpConsumer, Message message) {
+return new AmqpJmsObjectMessageFacade(amqpConsumer, message);
+}
+
 protected AmqpConsumer createMockAmqpConsumer() {
 AmqpConsumer consumer = Mockito.mock(AmqpConsumer.class);
 
Mockito.when(consumer.getConnection()).thenReturn(createMockAmqpConnection());

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/5c46a63c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacadeTest.java
--
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacadeTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacadeTest.java
new file mode 100644
index 000..4b3e422
--- /dev/null
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacadeTest.java
@@ -0,0 +1,84 @@
+/**
+ * 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.jms.provider.amqp.message;
+
+import static 
org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport.JMS_MSG_TYPE;
+import static 
org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport.JMS_OBJECT_MESSAGE;
+import static 
org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport.getSymbol;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Map;
+
+import org.apache.qpid.proton.amqp.Symbol;
+import org.apache.qpid.proton.amqp.messaging.MessageAnnotations;
+import org.apache.qpid.proton.message.Message;
+import org.junit.Test;
+
+/**
+ * Tests for class AmqpJmsObjectMessageFacade
+ */
+public class AmqpJmsObjectMessageFacadeTest extends 
AmqpJmsMessageTypesTestCase {
+
+// -- Test initial state of newly created message 
-//
+
+@Test
+public void testNewMessageToSendContainsMessageTypeAnnotation() throws 
Exception {
+AmqpJmsObjectMessageFacade amqpObjectMessageFacade = 

svn commit: r1630776 - in /qpid/proton/branches/examples/proton-j/src/main: java/org/apache/qpid/proton/engine/ java/org/apache/qpid/proton/engine/impl/ resources/

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:36:44 2014
New Revision: 1630776

URL: http://svn.apache.org/r1630776
Log:
added simple trace API to proton-j

Modified:

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl.java

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py

Modified: 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java?rev=1630776r1=1630775r2=1630776view=diff
==
--- 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java
 (original)
+++ 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java
 Fri Oct 10 12:36:44 2014
@@ -73,6 +73,11 @@ public interface Transport extends Endpo
 }
 }
 
+public static final int TRACE_OFF = 0;
+public static final int TRACE_RAW = 1;
+public static final int TRACE_FRM = 2;
+public static final int TRACE_DRV = 4;
+
 public static final int DEFAULT_MAX_FRAME_SIZE = -1;
 
 /** the lower bound for the agreed maximum frame size (in bytes). */
@@ -80,6 +85,8 @@ public interface Transport extends Endpo
 public int SESSION_WINDOW = 16*1024;
 public int END_OF_STREAM = -1;
 
+public void trace(int levels);
+
 public void bind(Connection connection);
 public void unbind();
 

Modified: 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java?rev=1630776r1=1630775r2=1630776view=diff
==
--- 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java
 (original)
+++ 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java
 Fri Oct 10 12:36:44 2014
@@ -46,14 +46,14 @@ class FrameWriter
 private int _maxFrameSize;
 private byte _frameType;
 final private RefProtocolTracer _protocolTracer;
-private Object _logCtx;
+private TransportImpl _transport;
 
 private int _frameStart = 0;
 private int _payloadStart;
 private int _performativeSize;
 
 FrameWriter(EncoderImpl encoder, int maxFrameSize, byte frameType,
-RefProtocolTracer protocolTracer, Object logCtx)
+RefProtocolTracer protocolTracer, TransportImpl transport)
 {
 _encoder = encoder;
 _bbuf = ByteBuffer.allocate(1024);
@@ -62,7 +62,7 @@ class FrameWriter
 _maxFrameSize = maxFrameSize;
 _frameType = frameType;
 _protocolTracer = protocolTracer;
-_logCtx = logCtx;
+_transport = transport;
 }
 
 void setMaxFrameSize(int maxFrameSize)
@@ -155,7 +155,7 @@ class FrameWriter
 // code, further refactor will fix this
 if (_frameType == AMQP_FRAME_TYPE) {
 TransportFrame frame = new TransportFrame(channel, (FrameBody) 
frameBody, Binary.create(originalPayload));
-TransportImpl.log(_logCtx, TransportImpl.OUTGOING, frame);
+_transport.log(TransportImpl.OUTGOING, frame);
 
 ProtocolTracer tracer = _protocolTracer.get();
 if(tracer != null)

Modified: 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl.java?rev=1630776r1=1630775r2=1630776view=diff
==
--- 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl.java
 (original)
+++ 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SaslImpl.java
 Fri Oct 10 12:36:44 2014
@@ -54,6 +54,8 @@ public class SaslImpl implements Sasl, S
 private final DecoderImpl _decoder = new DecoderImpl();
 private final EncoderImpl _encoder = new EncoderImpl(_decoder);
 
+private final TransportImpl _transport;
+
 private boolean _tail_closed = false;
 private final ByteBuffer _inputBuffer;
 private boolean _head_closed = false;
@@ -87,14 +89,15 @@ public class SaslImpl implements Sasl, S
  * returned by {@link 

svn commit: r1630775 - /qpid/proton/branches/examples/proton-c/bindings/python/proton.py

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:36:31 2014
New Revision: 1630775

URL: http://svn.apache.org/r1630775
Log:
added missing TRACE_OFF level

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630775r1=1630774r2=1630775view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:36:31 2014
@@ -2962,6 +2962,7 @@ class TransportException(ProtonException
 
 class Transport(object):
 
+  TRACE_OFF = PN_TRACE_OFF
   TRACE_DRV = PN_TRACE_DRV
   TRACE_FRM = PN_TRACE_FRM
   TRACE_RAW = PN_TRACE_RAW



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630778 - in /qpid/proton/branches/examples/proton-c/src: ssl/openssl.c transport/transport.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:36:59 2014
New Revision: 1630778

URL: http://svn.apache.org/r1630778
Log:
PROTON-611: Don't allocate frame_max bytes immediately, grow by factors of 2 
until
you get to the max - else a large frame size can blow away 4Gb of memory!

Modified:
qpid/proton/branches/examples/proton-c/src/ssl/openssl.c
qpid/proton/branches/examples/proton-c/src/transport/transport.c

Modified: qpid/proton/branches/examples/proton-c/src/ssl/openssl.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/ssl/openssl.c?rev=1630778r1=1630777r2=1630778view=diff
==
--- qpid/proton/branches/examples/proton-c/src/ssl/openssl.c (original)
+++ qpid/proton/branches/examples/proton-c/src/ssl/openssl.c Fri Oct 10 
12:36:59 2014
@@ -908,14 +908,13 @@ static ssize_t process_input_ssl( pn_io_
 if (!max_frame) max_frame = ssl-in_size * 2;  // no limit
 if (ssl-in_size  max_frame) {
   // no max frame limit - grow it.
-  char *newbuf = (char *)malloc( max_frame );
+  size_t newsize = pn_min(max_frame, ssl-in_size * 2);
+  char *newbuf = (char *)realloc( ssl-inbuf, newsize );
   if (newbuf) {
-ssl-in_size = max_frame;
-memmove( newbuf, ssl-inbuf, ssl-in_count );
-free( ssl-inbuf );
+ssl-in_size = newsize;
 ssl-inbuf = newbuf;
+work_pending = true;  // can we get more input?
   }
-  work_pending = true;  // can we get more input?
 } else {
   // can't gather any more input, but app needs more?
   // This is a bug - since SSL can buffer up to max-frame,

Modified: qpid/proton/branches/examples/proton-c/src/transport/transport.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/transport/transport.c?rev=1630778r1=1630777r2=1630778view=diff
==
--- qpid/proton/branches/examples/proton-c/src/transport/transport.c (original)
+++ qpid/proton/branches/examples/proton-c/src/transport/transport.c Fri Oct 10 
12:36:59 2014
@@ -1740,20 +1740,18 @@ static ssize_t transport_produce(pn_tran
   pn_io_layer_t *io_layer = transport-io_layers;
   ssize_t space = transport-output_size - transport-output_pending;
 
-  if (space == 0) { // can we expand the buffer?
+  if (space = 0) { // can we expand the buffer?
 int more = 0;
 if (!transport-remote_max_frame)   // no limit, so double it
   more = transport-output_size;
 else if (transport-remote_max_frame  transport-output_size)
-  more = transport-remote_max_frame - transport-output_size;
+  more = pn_min(transport-output_size, transport-remote_max_frame - 
transport-output_size);
 if (more) {
-  char *newbuf = (char *)malloc( transport-output_size + more );
+  char *newbuf = (char *)realloc( transport-output_buf, 
transport-output_size + more );
   if (newbuf) {
-memmove( newbuf, transport-output_buf, transport-output_pending );
-free( transport-output_buf );
 transport-output_buf = newbuf;
 transport-output_size += more;
-space = more;
+space += more;
   }
 }
   }
@@ -1955,22 +1953,20 @@ ssize_t pn_transport_capacity(pn_transpo
   //if (pn_error_code(transport-error)) return 
pn_error_code(transport-error);
 
   ssize_t capacity = transport-input_size - transport-input_pending;
-  if (!capacity) {
+  if ( capacity=0 ) {
 // can we expand the size of the input buffer?
 int more = 0;
 if (!transport-local_max_frame) {  // no limit (ha!)
   more = transport-input_size;
 } else if (transport-local_max_frame  transport-input_size) {
-  more = transport-local_max_frame - transport-input_size;
+  more = pn_min(transport-input_size, transport-local_max_frame - 
transport-input_size);
 }
 if (more) {
-  char *newbuf = (char *) malloc( transport-input_size + more );
+  char *newbuf = (char *) realloc( transport-input_buf, 
transport-input_size + more );
   if (newbuf) {
-memmove( newbuf, transport-input_buf, transport-input_pending );
-free( transport-input_buf );
 transport-input_buf = newbuf;
 transport-input_size += more;
-capacity = more;
+capacity += more;
   }
 }
   }



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630777 - /qpid/proton/branches/examples/CMakeLists.txt

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:36:53 2014
New Revision: 1630777

URL: http://svn.apache.org/r1630777
Log:
NO-JIRA: Set default build type to RelWithDebInfo.

Modified:
qpid/proton/branches/examples/CMakeLists.txt

Modified: qpid/proton/branches/examples/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/CMakeLists.txt?rev=1630777r1=1630776r2=1630777view=diff
==
--- qpid/proton/branches/examples/CMakeLists.txt (original)
+++ qpid/proton/branches/examples/CMakeLists.txt Fri Oct 10 12:36:53 2014
@@ -18,6 +18,14 @@
 #
 cmake_minimum_required (VERSION 2.6)
 
+# Set default build type. Must come before project() which sets default to 
+set (CMAKE_BUILD_TYPE RelWithDebInfo CACHE string
+  Build type: Debug, Release, RelWithDebInfo or MinSizeRel (default 
RelWithDebInfo))
+if (CMAKE_BUILD_TYPE MATCHES Deb)
+  set (has_debug_symbols  (has debug symbols))
+endif (CMAKE_BUILD_TYPE MATCHES Deb)
+message(Build type is \${CMAKE_BUILD_TYPE}\${has_debug_symbols})
+
 option(BUILD_WITH_CXX Compile Proton using C++ OFF)
 if (${CMAKE_GENERATOR} MATCHES ^Visual Studio)
   # No C99 capability, use C++



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630779 - in /qpid/proton/branches/examples/proton-c/src/dispatcher: dispatcher.c dispatcher.h

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:37:04 2014
New Revision: 1630779

URL: http://svn.apache.org/r1630779
Log:
NO-JIRA: Remove unused struct members

Modified:
qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.c
qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.h

Modified: qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.c?rev=1630779r1=1630778r2=1630779view=diff
==
--- qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.c 
(original)
+++ qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.c Fri Oct 
10 12:37:04 2014
@@ -75,9 +75,6 @@ pn_dispatcher_t *pn_dispatcher(uint8_t f
 (pn_env_bool(PN_TRACE_FRM) ? PN_TRACE_FRM : PN_TRACE_OFF) |
 (pn_env_bool(PN_TRACE_DRV) ? PN_TRACE_DRV : PN_TRACE_OFF);
 
-  disp-input = pn_buffer(1024);
-  disp-fragment = 0;
-
   disp-channel = 0;
   disp-args = pn_data(16);
   disp-payload = NULL;
@@ -101,7 +98,6 @@ pn_dispatcher_t *pn_dispatcher(uint8_t f
 void pn_dispatcher_free(pn_dispatcher_t *disp)
 {
   if (disp) {
-pn_buffer_free(disp-input);
 pn_data_free(disp-args);
 pn_data_free(disp-output_args);
 pn_buffer_free(disp-frame);

Modified: qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.h?rev=1630779r1=1630778r2=1630779view=diff
==
--- qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.h 
(original)
+++ qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.h Fri Oct 
10 12:37:04 2014
@@ -34,8 +34,6 @@ typedef struct pn_dispatcher_t pn_dispat
 typedef int (pn_action_t)(pn_dispatcher_t *disp);
 
 struct pn_dispatcher_t {
-  pn_buffer_t *input;
-  size_t fragment;
   pn_data_t *args;
   const char *payload;
   size_t size;



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630780 - in /qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine: Event.java impl/EventImpl.java

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:37:17 2014
New Revision: 1630780

URL: http://svn.apache.org/r1630780
Log:
PROTON-647: add method to copy an Event before use of the Collector pop() 
reclaims it to the pool

Applied patch from Clebert Suconic

Modified:

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java

Modified: 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java?rev=1630780r1=1630779r2=1630780view=diff
==
--- 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java
 (original)
+++ 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java
 Fri Oct 10 12:37:17 2014
@@ -91,4 +91,6 @@ public interface Event
 
 Transport getTransport();
 
+Event copy();
+
 }

Modified: 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java?rev=1630780r1=1630779r2=1630780view=diff
==
--- 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java
 (original)
+++ 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java
 Fri Oct 10 12:37:17 2014
@@ -138,6 +138,12 @@ class EventImpl implements Event
 return null;
 }
 }
+public Event copy()
+{
+   EventImpl newEvent = new EventImpl();
+   newEvent.init(type, context);
+   return newEvent;
+}
 
 @Override
 public String toString()



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630783 - in /qpid/proton/branches/examples: examples/messenger/perl/ proton-c/bindings/perl/lib/ proton-c/bindings/perl/lib/qpid/proton/

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:38:26 2014
New Revision: 1630783

URL: http://svn.apache.org/r1630783
Log:
PROTON-582: Perl Message can infer the type of the content provided.

The qpid::proton::Message-set_body() method can take either a single
argument (the body) or two arguments (the body and an explicit type).

Previous, if the second argument wasn't provided, the code assumed it
was a qpid::message::STRING type.

Now, the code will attempt to determine the type of the argument. It can
successfully infer a hash, array, int and string. It will default to a
string if it cannot otherwise determine the type.

Modified:
qpid/proton/branches/examples/examples/messenger/perl/recv.pl
qpid/proton/branches/examples/examples/messenger/perl/send.pl
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Data.pm

qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Message.pm
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid_proton.pm

Modified: qpid/proton/branches/examples/examples/messenger/perl/recv.pl
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/examples/messenger/perl/recv.pl?rev=1630783r1=1630782r2=1630783view=diff
==
--- qpid/proton/branches/examples/examples/messenger/perl/recv.pl (original)
+++ qpid/proton/branches/examples/examples/messenger/perl/recv.pl Fri Oct 10 
12:38:26 2014
@@ -51,21 +51,28 @@ for(;;)
 {
 $messenger-get($msg);
 
+print \n;
 print Address:  . $msg-get_address() . \n;
 print Subject:  . $msg-get_subject() . \n unless 
!defined($msg-get_subject());
 print Body:;
 
 my $body = $msg-get_body();
-my $body_type = reftype($body);
+my $body_type = $msg-get_body_type();
 
 if (!defined($body_type)) {
-print $body\n;
-} elsif ($body_type eq HASH) {
+print The body type wasn't defined!\n;
+} elsif ($body_type == qpid::proton::MAP) {
 print [HASH]\n;
 print Dumper(\%{$body}) . \n;
-} elsif ($body_type eq ARRAY) {
+} elsif ($body_type == qpid::proton::ARRAY) {
 print [ARRAY]\n;
 print Data::Dumper-Dump($body) . \n;
+} elsif ($body_type == qpid::proton::LIST) {
+print [LIST]\n;
+print Data::Dumper-Dump($body) . \n;
+} else {
+print [$body_type]\n;
+print $body\n;
 }
 
 print Properties:\n;

Modified: qpid/proton/branches/examples/examples/messenger/perl/send.pl
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/examples/messenger/perl/send.pl?rev=1630783r1=1630782r2=1630783view=diff
==
--- qpid/proton/branches/examples/examples/messenger/perl/send.pl (original)
+++ qpid/proton/branches/examples/examples/messenger/perl/send.pl Fri Oct 10 
12:38:26 2014
@@ -61,7 +61,7 @@ foreach (@messages)
 $msg-set_subject($subject);
 $msg-set_content($content);
 # try a few different body types
-my $body_type = int(rand(4));
+my $body_type = int(rand(6));
 $msg-set_property(sent,  . localtime(time));
 $msg-get_instructions-{fold} = yes;
 $msg-get_instructions-{spindle} = no;
@@ -71,12 +71,15 @@ foreach (@messages)
 
   SWITCH: {
   $body_type == 0  do { $msg-set_body(It is now  . localtime(time));};
-  $body_type == 1  do { $msg-set_body(rand(65536), 
qpid::proton::FLOAT); };
+  $body_type == 1  do { $msg-set_body(rand(65536)); };
   $body_type == 2  do { $msg-set_body(int(rand(2)), 
qpid::proton::BOOL); };
-  $body_type == 3  do { $msg-set_body({foo = bar}, 
qpid::proton::MAP); };
+  $body_type == 3  do { $msg-set_body({foo = bar}); };
+  $body_type == 4  do { $msg-set_body([4, [1, 2, 3.1, 3.4E-5], 8, 15, 
16, 23, 42]); };
+  $body_type == 5  do { $msg-set_body(int(rand(65535))); }
 }
 
 $messenger-put($msg);
+print Sent:  . $msg-get_body .  [CONTENT TYPE:  . $msg-get_body_type 
. ]\n;
 }
 
 $messenger-send();

Modified: 
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Data.pm
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Data.pm?rev=1630783r1=1630782r2=1630783view=diff
==
--- 
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Data.pm 
(original)
+++ 
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Data.pm 
Fri Oct 10 12:38:26 2014
@@ -1166,16 +1166,23 @@ sub put_list_helper {
 $self-put_list;
 $self-enter;
 
-foreach(@{$array}) {
-my $value = $_;
-my $valtype = ::reftype($value);
-
-if ($valtype eq ARRAY) {
-$self-put_list_helper($value);
-} elsif ($valtype eq HASH) {
+for my $value 

svn commit: r1630784 - in /qpid/proton/branches/examples: examples/messenger/perl/recv.pl proton-c/bindings/perl/lib/qpid/proton/Data.pm proton-c/bindings/perl/lib/qpid/proton/Message.pm

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:39:23 2014
New Revision: 1630784

URL: http://svn.apache.org/r1630784
Log:
PROTON-646: Fix when Perl sets a message body to be BOOL:False.

Had to work around how checking whether a body value was defined would
return false if it were defined but set to false.

Modified:
qpid/proton/branches/examples/examples/messenger/perl/recv.pl
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Data.pm

qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Message.pm

Modified: qpid/proton/branches/examples/examples/messenger/perl/recv.pl
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/examples/messenger/perl/recv.pl?rev=1630784r1=1630783r2=1630784view=diff
==
--- qpid/proton/branches/examples/examples/messenger/perl/recv.pl (original)
+++ qpid/proton/branches/examples/examples/messenger/perl/recv.pl Fri Oct 10 
12:39:23 2014
@@ -61,6 +61,9 @@ for(;;)
 
 if (!defined($body_type)) {
 print The body type wasn't defined!\n;
+} elsif ($body_type == qpid::proton::BOOL) {
+print [BOOL]\n;
+print  . ($body ? TRUE : FALSE) . \n;
 } elsif ($body_type == qpid::proton::MAP) {
 print [HASH]\n;
 print Dumper(\%{$body}) . \n;

Modified: 
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Data.pm
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Data.pm?rev=1630784r1=1630783r2=1630784view=diff
==
--- 
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Data.pm 
(original)
+++ 
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Data.pm 
Fri Oct 10 12:39:23 2014
@@ -321,9 +321,7 @@ Handles a boolean (Btrue/Bfalse) nod
 sub put_bool {
 my ($self) = @_;
 my $impl = $self-{_impl};
-my $value = $_[1];
-
-die bool must be defined if !defined($value);
+my $value = $_[1] || 0;
 
 cproton_perl::pn_data_put_bool($impl, $value);
 }

Modified: 
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Message.pm
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Message.pm?rev=1630784r1=1630783r2=1630784view=diff
==
--- 
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Message.pm 
(original)
+++ 
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Message.pm 
Fri Oct 10 12:39:23 2014
@@ -487,12 +487,12 @@ sub get_body_type {
 sub preencode() {
 my ($self) = @_;
 my $impl = $self-{_impl};
-
 my $my_body = $self-{_body};
 my $body_type = $self-{_body_type};
 my $body = new qpid::proton::Data(cproton_perl::pn_message_body($impl));
+
 $body-clear();
-$body_type-put($body, $my_body) if($my_body  $body_type);
+$body_type-put($body, $my_body) if(defined($my_body)  $body_type);
 
 my $my_props = $self-{_properties};
 my $props = new 
qpid::proton::Data(cproton_perl::pn_message_properties($impl));



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630786 - /qpid/proton/branches/examples/proton-c/src/proton-dump.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:40:58 2014
New Revision: 1630786

URL: http://svn.apache.org/r1630786
Log:
PROTON-650: use pn_compat utilities for cross platform builds

Modified:
qpid/proton/branches/examples/proton-c/src/proton-dump.c

Modified: qpid/proton/branches/examples/proton-c/src/proton-dump.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/proton-dump.c?rev=1630786r1=1630785r2=1630786view=diff
==
--- qpid/proton/branches/examples/proton-c/src/proton-dump.c (original)
+++ qpid/proton/branches/examples/proton-c/src/proton-dump.c Fri Oct 10 
12:40:58 2014
@@ -19,9 +19,9 @@
  *
  */
 
-#include libgen.h
+#include pncompat/misc_funcs.inc
+
 #include stdio.h
-#include unistd.h
 #include proton/buffer.h
 #include proton/codec.h
 #include proton/error.h
@@ -101,7 +101,7 @@ int dump(const char *file)
 }
 
 void usage(char* prog) {
-  printf(Usage: %s [FILE1] [FILEn] ...\n, basename(prog));
+  printf(Usage: %s [FILE1] [FILEn] ...\n, prog);
   printf(Displays the content of an AMQP dump file containing frame data.\n);
   printf(\n  [FILEn]  Dump file to be displayed.\n\n);
 }



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630788 - /qpid/proton/branches/examples/proton-c/src/engine/engine.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:41:25 2014
New Revision: 1630788

URL: http://svn.apache.org/r1630788
Log:
made pn_link_send gracefully handle NULL

Modified:
qpid/proton/branches/examples/proton-c/src/engine/engine.c

Modified: qpid/proton/branches/examples/proton-c/src/engine/engine.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/engine/engine.c?rev=1630788r1=1630787r2=1630788view=diff
==
--- qpid/proton/branches/examples/proton-c/src/engine/engine.c (original)
+++ qpid/proton/branches/examples/proton-c/src/engine/engine.c Fri Oct 10 
12:41:25 2014
@@ -1477,6 +1477,7 @@ ssize_t pn_link_send(pn_link_t *sender, 
 {
   pn_delivery_t *current = pn_link_current(sender);
   if (!current) return PN_EOS;
+  if (!bytes || !n) return 0;
   pn_buffer_append(current-bytes, bytes, n);
   sender-session-outgoing_bytes += n;
   pn_add_tpwork(current);



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630787 - in /qpid/proton/branches/examples: proton-c/src/engine/ proton-c/src/transport/ proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ proton-j/src/main/java/org/apache/qpid

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:41:20 2014
New Revision: 1630787

URL: http://svn.apache.org/r1630787
Log:
PROTON-641: fixed link cleanup on connection/session abort; made free not close 
automatically

Modified:
qpid/proton/branches/examples/proton-c/src/engine/engine.c
qpid/proton/branches/examples/proton-c/src/transport/transport.c

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EndpointImpl.java

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/messenger/impl/MessengerImpl.java
qpid/proton/branches/examples/tests/python/proton_tests/engine.py

Modified: qpid/proton/branches/examples/proton-c/src/engine/engine.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/engine/engine.c?rev=1630787r1=1630786r2=1630787view=diff
==
--- qpid/proton/branches/examples/proton-c/src/engine/engine.c (original)
+++ qpid/proton/branches/examples/proton-c/src/engine/engine.c Fri Oct 10 
12:41:20 2014
@@ -111,8 +111,6 @@ void pn_endpoint_tini(pn_endpoint_t *end
 void pn_connection_free(pn_connection_t *connection)
 {
   assert(!connection-endpoint.freed);
-  if (pn_connection_state(connection)  PN_LOCAL_ACTIVE)
-pn_connection_close(connection);
   // free those endpoints that haven't been freed by the application
   LL_REMOVE(connection, endpoint, connection-endpoint);
   while (connection-endpoint_head) {
@@ -226,8 +224,6 @@ void pn_session_free(pn_session_t *sessi
 pn_link_t *link = (pn_link_t *)pn_list_get(session-links, 0);
 pn_link_free(link);
   }
-  if (pn_session_state(session)  PN_LOCAL_ACTIVE)
-pn_session_close(session);
   pn_remove_session(session-connection, session);
   pn_endpoint_t *endpoint = (pn_endpoint_t *) session;
   LL_REMOVE(pn_ep_get_connection(endpoint), endpoint, endpoint);
@@ -282,8 +278,6 @@ void pn_terminus_free(pn_terminus_t *ter
 void pn_link_free(pn_link_t *link)
 {
   assert(!link-endpoint.freed);
-  if (pn_link_state(link)  PN_LOCAL_ACTIVE)
-pn_link_close(link);
   pn_remove_link(link-session, link);
   pn_endpoint_t *endpoint = (pn_endpoint_t *) link;
   LL_REMOVE(pn_ep_get_connection(endpoint), endpoint, endpoint);

Modified: qpid/proton/branches/examples/proton-c/src/transport/transport.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/transport/transport.c?rev=1630787r1=1630786r2=1630787view=diff
==
--- qpid/proton/branches/examples/proton-c/src/transport/transport.c (original)
+++ qpid/proton/branches/examples/proton-c/src/transport/transport.c Fri Oct 10 
12:41:20 2014
@@ -183,14 +183,20 @@ pn_session_t *pn_channel_state(pn_transp
   return (pn_session_t *) pn_hash_get(transport-remote_channels, channel);
 }
 
-static void pn_map_channel(pn_transport_t *transport, uint16_t channel, 
pn_session_t *session)
+static void pni_map_remote_channel(pn_session_t *session, uint16_t channel)
 {
+  pn_transport_t *transport = session-connection-transport;
   pn_hash_put(transport-remote_channels, channel, session);
   session-state.remote_channel = channel;
 }
 
-void pn_unmap_channel(pn_transport_t *transport, pn_session_t *ssn)
+void pni_transport_unbind_handles(pn_hash_t *handles);
+
+static void pni_unmap_remote_channel(pn_session_t *ssn)
 {
+  // XXX: should really update link state also
+  pni_transport_unbind_handles(ssn-state.remote_handles);
+  pn_transport_t *transport = ssn-connection-transport;
   uint16_t channel = ssn-state.remote_channel;
   ssn-state.remote_channel = -2;
   // note: may free the session:
@@ -331,18 +337,18 @@ pn_error_t *pn_transport_error(pn_transp
   return NULL;
 }
 
-static void pn_map_handle(pn_session_t *ssn, uint32_t handle, pn_link_t *link)
+static void pni_map_remote_handle(pn_link_t *link, uint32_t handle)
 {
   link-state.remote_handle = handle;
-  pn_hash_put(ssn-state.remote_handles, handle, link);
+  pn_hash_put(link-session-state.remote_handles, handle, link);
 }
 
-void pn_unmap_handle(pn_session_t *ssn, pn_link_t *link)
+static void pni_unmap_remote_handle(pn_link_t *link)
 {
-  uint32_t handle = link-state.remote_handle;
+  uintptr_t handle = link-state.remote_handle;
   link-state.remote_handle = -2;
   // may delete link:
-  pn_hash_del(ssn-state.remote_handles, handle);
+  pn_hash_del(link-session-state.remote_handles, handle);
 }
 
 pn_link_t *pn_handle_state(pn_session_t *ssn, uint32_t handle)
@@ -504,7 +510,7 @@ int pn_do_begin(pn_dispatcher_t *disp)
 ssn = pn_session(transport-connection);
   }
   ssn-state.incoming_transfer_count = next;
-  pn_map_channel(transport, disp-channel, ssn);
+  pni_map_remote_channel(ssn, disp-channel);
   PN_SET_REMOTE(ssn-endpoint.state, PN_REMOTE_ACTIVE);
   

svn commit: r1630792 - /qpid/proton/branches/examples/proton-c/CMakeLists.txt

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:41:49 2014
New Revision: 1630792

URL: http://svn.apache.org/r1630792
Log:
PROTON-657: Fix build to use detected include directory for OpenSSL

Modified:
qpid/proton/branches/examples/proton-c/CMakeLists.txt

Modified: qpid/proton/branches/examples/proton-c/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/CMakeLists.txt?rev=1630792r1=1630791r2=1630792view=diff
==
--- qpid/proton/branches/examples/proton-c/CMakeLists.txt (original)
+++ qpid/proton/branches/examples/proton-c/CMakeLists.txt Fri Oct 10 12:41:49 
2014
@@ -93,6 +93,7 @@ endif(PN_WINAPI)
 # Link in openssl if present
 if (SSL_IMPL STREQUAL openssl)
   set (pn_driver_ssl_impl src/ssl/openssl.c)
+  include_directories (${OPENSSL_INCLUDE_DIR})
   set (SSL_LIB ${OPENSSL_LIBRARIES})
 else (SSL_IMPL STREQUAL openssl)
   set (pn_driver_ssl_impl src/ssl/ssl_stub.c)



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630790 - in /qpid/proton/branches/examples/proton-c: ./ include/proton/ src/messenger/ src/posix/ src/windows/

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:41:36 2014
New Revision: 1630790

URL: http://svn.apache.org/r1630790
Log:
PROTON-640 Windows IO completion port implementation for pn_io and 
pn_selectable classes

Added:
qpid/proton/branches/examples/proton-c/src/windows/iocp.c
qpid/proton/branches/examples/proton-c/src/windows/iocp.h
qpid/proton/branches/examples/proton-c/src/windows/write_pipeline.c
Modified:
qpid/proton/branches/examples/proton-c/CMakeLists.txt
qpid/proton/branches/examples/proton-c/include/proton/io.h
qpid/proton/branches/examples/proton-c/include/proton/selector.h
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
qpid/proton/branches/examples/proton-c/src/posix/io.c
qpid/proton/branches/examples/proton-c/src/posix/selector.c
qpid/proton/branches/examples/proton-c/src/windows/io.c
qpid/proton/branches/examples/proton-c/src/windows/selector.c

Modified: qpid/proton/branches/examples/proton-c/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/CMakeLists.txt?rev=1630790r1=1630789r2=1630790view=diff
==
--- qpid/proton/branches/examples/proton-c/CMakeLists.txt (original)
+++ qpid/proton/branches/examples/proton-c/CMakeLists.txt Fri Oct 10 12:41:36 
2014
@@ -81,7 +81,7 @@ add_custom_command (
 
 # Select driver
 if(PN_WINAPI)
-  set (pn_io_impl src/windows/io.c)
+  set (pn_io_impl src/windows/io.c src/windows/iocp.c 
src/windows/write_pipeline.c)
   set (pn_selector_impl src/windows/selector.c)
   set (pn_driver_impl src/windows/driver.c)
 else(PN_WINAPI)

Modified: qpid/proton/branches/examples/proton-c/include/proton/io.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/io.h?rev=1630790r1=1630789r2=1630790view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/io.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/io.h Fri Oct 10 
12:41:36 2014
@@ -44,6 +44,7 @@ typedef int pn_socket_t;
 #endif
 
 typedef struct pn_io_t pn_io_t;
+typedef struct pn_selector_t pn_selector_t;
 
 PN_EXTERN pn_io_t *pn_io(void);
 PN_EXTERN void pn_io_free(pn_io_t *io);
@@ -58,6 +59,7 @@ PN_EXTERN int pn_pipe(pn_io_t *io, pn_so
 PN_EXTERN ssize_t pn_read(pn_io_t *io, pn_socket_t socket, void *buf, size_t 
size);
 PN_EXTERN ssize_t pn_write(pn_io_t *io, pn_socket_t socket, const void *buf, 
size_t size);
 PN_EXTERN bool pn_wouldblock(pn_io_t *io);
+PN_EXTERN pn_selector_t *pn_io_selector(pn_io_t *io);
 
 #ifdef __cplusplus
 }

Modified: qpid/proton/branches/examples/proton-c/include/proton/selector.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/selector.h?rev=1630790r1=1630789r2=1630790view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/selector.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/selector.h Fri Oct 10 
12:41:36 2014
@@ -34,9 +34,7 @@ extern C {
 #define PN_WRITABLE (2)
 #define PN_EXPIRED (4)
 
-typedef struct pn_selector_t pn_selector_t;
-
-PN_EXTERN pn_selector_t *pn_selector(void);
+pn_selector_t *pni_selector(void);
 PN_EXTERN void pn_selector_free(pn_selector_t *selector);
 PN_EXTERN void pn_selector_add(pn_selector_t *selector, pn_selectable_t 
*selectable);
 PN_EXTERN void pn_selector_update(pn_selector_t *selector, pn_selectable_t 
*selectable);

Modified: qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/messenger.c?rev=1630790r1=1630789r2=1630790view=diff
==
--- qpid/proton/branches/examples/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/branches/examples/proton-c/src/messenger/messenger.c Fri Oct 10 
12:41:36 2014
@@ -612,7 +612,7 @@ pn_messenger_t *pn_messenger(const char 
 pni_selectable_set_context(m-interruptor, m);
 m-listeners = pn_list(0, 0);
 m-connections = pn_list(0, 0);
-m-selector = pn_selector();
+m-selector = pn_io_selector(m-io);
 m-collector = pn_collector();
 m-credit_mode = LINK_CREDIT_EXPLICIT;
 m-credit_batch = 1024;

Modified: qpid/proton/branches/examples/proton-c/src/posix/io.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/posix/io.c?rev=1630790r1=1630789r2=1630790view=diff
==
--- qpid/proton/branches/examples/proton-c/src/posix/io.c (original)
+++ qpid/proton/branches/examples/proton-c/src/posix/io.c Fri Oct 10 12:41:36 
2014
@@ -21,6 +21,7 @@
 
 #include proton/io.h
 #include proton/object.h
+#include proton/selector.h
 
 #include ctype.h
 #include errno.h
@@ -43,6 +44,7 @@ 

svn commit: r1630794 - in /qpid/proton/branches/examples/proton-c: bindings/python/proton.py bindings/ruby/lib/qpid_proton.rb bindings/ruby/lib/qpid_proton/version.rb include/proton/cproton.i

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:41:59 2014
New Revision: 1630794

URL: http://svn.apache.org/r1630794
Log:
PROTON-651: added version constants for python, php, and ruby bindings

Added:

qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton/version.rb
  - copied, changed from r1630792, 
qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton.rb
Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton.rb
qpid/proton/branches/examples/proton-c/include/proton/cproton.i

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630794r1=1630793r2=1630794view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:41:59 2014
@@ -3641,6 +3641,8 @@ __all__ = [
Messenger,
MessengerException,
ProtonException,
+   PN_VERSION_MAJOR,
+   PN_VERSION_MINOR,
Receiver,
SASL,
Sender,

Modified: 
qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton.rb
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton.rb?rev=1630794r1=1630793r2=1630794view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton.rb 
(original)
+++ qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton.rb Fri 
Oct 10 12:41:59 2014
@@ -20,6 +20,7 @@
 require cproton
 require date
 
+require qpid_proton/version
 require qpid_proton/described
 require qpid_proton/mapping
 require qpid_proton/array

Copied: 
qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton/version.rb 
(from r1630792, 
qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton.rb)
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton/version.rb?p2=qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton/version.rbp1=qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton.rbr1=1630792r2=1630794rev=1630794view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton.rb 
(original)
+++ 
qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton/version.rb 
Fri Oct 10 12:41:59 2014
@@ -17,21 +17,13 @@
 # under the License.
 #
 
-require cproton
-require date
+module Qpid
 
-require qpid_proton/described
-require qpid_proton/mapping
-require qpid_proton/array
-require qpid_proton/hash
-require qpid_proton/exceptions
-require qpid_proton/exception_handling
-require qpid_proton/filters
-require qpid_proton/message_format
-require qpid_proton/data
-require qpid_proton/message
-require qpid_proton/subscription
-require qpid_proton/tracker_status
-require qpid_proton/tracker
-require qpid_proton/selectable
-require qpid_proton/messenger
+  module Proton
+
+PN_VERSION_MAJOR = Cproton::PN_VERSION_MAJOR
+PN_VERSION_MINOR = Cproton::PN_VERSION_MINOR
+
+  end
+
+end

Modified: qpid/proton/branches/examples/proton-c/include/proton/cproton.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/cproton.i?rev=1630794r1=1630793r2=1630794view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/cproton.i (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/cproton.i Fri Oct 10 
12:41:59 2014
@@ -31,6 +31,9 @@ typedef long long int int64_t;
 
 %include proton/import_export.h
 
+%ignore _PROTON_VERSION_H;
+%include proton/version.h
+
 /* We cannot safely just wrap pn_bytes_t but each language binding must have a 
typemap for it - presumably to a string type */
 %ignore pn_bytes_t;
 



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630795 - in /qpid/proton/branches/examples: proton-c/src/dispatcher/dispatcher.c proton-c/src/messenger/messenger.c tests/python/proton_tests/messenger.py

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:42:08 2014
New Revision: 1630795

URL: http://svn.apache.org/r1630795
Log:
PROTON-610: Messenger code doesn't send heartbeat frames

Modified:
qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.c
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
qpid/proton/branches/examples/tests/python/proton_tests/messenger.py

Modified: qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.c?rev=1630795r1=1630794r2=1630795view=diff
==
--- qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.c 
(original)
+++ qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.c Fri Oct 
10 12:42:08 2014
@@ -116,6 +116,10 @@ static void pn_do_trace(pn_dispatcher_t 
 pn_string_format(disp-scratch, %u %s , ch, dir == OUT ? - : -);
 pn_inspect(args, disp-scratch);
 
+if (pn_data_size(args)==0) {
+pn_string_addf(disp-scratch, (EMPTY FRAME));
+}
+
 if (size) {
   char buf[1024];
   int e = pn_quote_data(buf, 1024, payload, size);

Modified: qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/messenger.c?rev=1630795r1=1630794r2=1630795view=diff
==
--- qpid/proton/branches/examples/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/branches/examples/proton-c/src/messenger/messenger.c Fri Oct 10 
12:42:08 2014
@@ -31,6 +31,7 @@
 #include stdlib.h
 #include string.h
 #include stdio.h
+
 #include ../util.h
 #include ../platform.h
 #include ../platform_fmt.h
@@ -1275,8 +1276,37 @@ int pn_messenger_process_events(pn_messe
   return processed;
 }
 
+/**
+ * Function to invoke AMQP related timer events, such as a heartbeat to prevent
+ * remote_idle timeout events
+ */
+static void pni_messenger_tick(pn_messenger_t *messenger)
+{
+  for (size_t i = 0; i  pn_list_size(messenger-connections); i++) {
+pn_connection_t *connection =
+(pn_connection_t *)pn_list_get(messenger-connections, i);
+pn_transport_t *transport = pn_connection_transport(connection);
+if (transport) {
+  pn_transport_tick(transport, pn_i_now());
+
+  // if there is pending data, such as an empty heartbeat frame, call
+  // process events. This should kick off the chain of selectables for
+  // reading/writing.
+  ssize_t pending = pn_transport_pending(transport);
+  if (pending  0) {
+pn_connection_ctx_t *cctx =
+(pn_connection_ctx_t *)pn_connection_get_context(connection);
+pn_messenger_process_events(messenger);
+pn_messenger_flow(messenger);
+pni_conn_modified(pni_context(cctx-selectable));
+  }
+}
+  }
+}
+
 int pn_messenger_process(pn_messenger_t *messenger)
 {
+  bool doMessengerTick = true;
   pn_selectable_t *sel;
   int events;
   while ((sel = pn_selector_next(messenger-selector, events))) {
@@ -1285,12 +1315,17 @@ int pn_messenger_process(pn_messenger_t 
 }
 if (events  PN_WRITABLE) {
   pn_selectable_writable(sel);
+  doMessengerTick = false;
 }
 if (events  PN_EXPIRED) {
   pn_selectable_expired(sel);
 }
   }
-
+  // ensure timer events are processed. Cannot call this inside the while loop
+  // as the timer events are not seen by the selector
+  if (doMessengerTick) {
+pni_messenger_tick(messenger);
+  }
   if (messenger-interrupted) {
 messenger-interrupted = false;
 return PN_INTR;

Modified: qpid/proton/branches/examples/tests/python/proton_tests/messenger.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/tests/python/proton_tests/messenger.py?rev=1630795r1=1630794r2=1630795view=diff
==
--- qpid/proton/branches/examples/tests/python/proton_tests/messenger.py 
(original)
+++ qpid/proton/branches/examples/tests/python/proton_tests/messenger.py Fri 
Oct 10 12:42:08 2014
@@ -1027,3 +1027,59 @@ class SelectableMessengerTest(common.Tes
 
   def testSelectable4096(self):
 self.testSelectable(count=4096)
+
+
+class IdleTimeoutTest(common.Test):
+
+  def testIdleTimeout(self):
+
+Verify that a Messenger connection is kept alive using empty idle frames
+when a idle_timeout is advertised by the remote peer.
+
+if java in sys.platform:
+  raise Skipped()
+idle_timeout_secs = self.delay
+
+try:
+  idle_server = common.TestServerDrain(idle_timeout=idle_timeout_secs)
+  idle_server.timeout = self.timeout
+  idle_server.start()
+
+  idle_client = Messenger(idle_client)
+  idle_client.timeout = self.timeout
+  idle_client.start()
+
+  idle_client.subscribe(amqp://%s:%s/foo %
+ 

svn commit: r1630800 - /qpid/proton/branches/examples/pom.xml

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:42:59 2014
New Revision: 1630800

URL: http://svn.apache.org/r1630800
Log:
PROTON-664: add a profile to allow creating sources jars outwith the release 
build

Modified:
qpid/proton/branches/examples/pom.xml

Modified: qpid/proton/branches/examples/pom.xml
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/pom.xml?rev=1630800r1=1630799r2=1630800view=diff
==
--- qpid/proton/branches/examples/pom.xml (original)
+++ qpid/proton/branches/examples/pom.xml Fri Oct 10 12:42:59 2014
@@ -111,4 +111,27 @@
   ciManagement
 urlhttps://builds.apache.org/view/M-R/view/Qpid/job/Qpid-proton-j//url
   /ciManagement
+
+  profiles
+profile
+  idsources/id
+  build
+plugins
+  plugin
+groupIdorg.apache.maven.plugins/groupId
+artifactIdmaven-source-plugin/artifactId
+version2.2.1/version
+executions
+  execution
+idattach-sources/id
+goals
+  goaljar/goal
+/goals
+  /execution
+/executions
+  /plugin
+/plugins
+  /build
+/profile
+  /profiles
 /project



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630797 - /qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Constants.pm

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:42:31 2014
New Revision: 1630797

URL: http://svn.apache.org/r1630797
Log:
PROTON-651: Export Proton major/minor version number in Perl.

Modified:

qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Constants.pm

Modified: 
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Constants.pm
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Constants.pm?rev=1630797r1=1630796r2=1630797view=diff
==
--- 
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Constants.pm
 (original)
+++ 
qpid/proton/branches/examples/proton-c/bindings/perl/lib/qpid/proton/Constants.pm
 Fri Oct 10 12:42:31 2014
@@ -20,6 +20,9 @@
 package qpid::proton;
 
 use constant {
+VERSION_MAJOR = $cproton_perl::PN_VERSION_MAJOR,
+VERSION_MINOR = $cproton_perl::PN_VERSION_MINOR,
+
 NULL   = $cproton_perl::PN_NULL,
 BOOL   = qpid::proton::Mapping-new(
 bool,



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630803 - /qpid/proton/branches/examples/proton-c/bindings/python/proton.py

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:43:36 2014
New Revision: 1630803

URL: http://svn.apache.org/r1630803
Log:
NO-JIRA: Fix docstring for proton.Message.inferred property.

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630803r1=1630802r2=1630803view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:43:36 2014
@@ -866,7 +866,7 @@ class Message(object):
   def _set_inferred(self, value):
 self._check(pn_message_set_inferred(self._msg, bool(value)))
 
-  inferred = property(_is_inferred, _set_inferred,
+  inferred = property(_is_inferred, _set_inferred, doc=
 The inferred flag for a message indicates how the message content
 is encoded into AMQP sections. If inferred is true then binary and
 list values in the body of the message will be encoded as AMQP DATA



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630804 - /qpid/proton/branches/examples/.mailmap

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:43:46 2014
New Revision: 1630804

URL: http://svn.apache.org/r1630804
Log:
NO-JIRA: Add git .mailmap file to map multiple versions of author names

Added:
qpid/proton/branches/examples/.mailmap

Added: qpid/proton/branches/examples/.mailmap
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/.mailmap?rev=1630804view=auto
==
--- qpid/proton/branches/examples/.mailmap (added)
+++ qpid/proton/branches/examples/.mailmap Fri Oct 10 12:43:46 2014
@@ -0,0 +1,2 @@
+Clifford Jansen cliffjan...@apache.org
+Ken Giusti kgiu...@apache.org



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630802 - /qpid/proton/branches/examples/proton-c/src/windows/driver.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:43:24 2014
New Revision: 1630802

URL: http://svn.apache.org/r1630802
Log:
QPID-658 Windows driver.c with selectors and selectables

Modified:
qpid/proton/branches/examples/proton-c/src/windows/driver.c

Modified: qpid/proton/branches/examples/proton-c/src/windows/driver.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/driver.c?rev=1630802r1=1630801r2=1630802view=diff
==
--- qpid/proton/branches/examples/proton-c/src/windows/driver.c (original)
+++ qpid/proton/branches/examples/proton-c/src/windows/driver.c Fri Oct 10 
12:43:24 2014
@@ -19,59 +19,39 @@
  *
  */
 
-/*
- * Copy of posix poll-based driver with minimal changes to use
- * select().  TODO: fully native implementaton with I/O completion
- * ports.
- *
- * This implementation comments out the posix max_fds arg to select
- * which has no meaning on windows.  The number of fd_set slots are
- * configured at compile time via FD_SETSIZE, chosen large enough
- * for the limited scalability of select() at the expense of
- * 2*N*sizeof(unsigned int) bytes per driver instance.  select (and
- * associated macros like FD_ZERO) are otherwise unaffected
- * performance-wise by increasing FD_SETSIZE.
- */
-
-#define FD_SETSIZE 2048
-#ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x0501
-#endif
-#if _WIN32_WINNT  0x0501
-#error Proton requires Windows API support for XP or later.
-#endif
-#include winsock2.h
-#include Ws2tcpip.h
-#define PN_WINAPI
-
 #include assert.h
 #include stdio.h
 #include ctype.h
 #include sys/types.h
 #include fcntl.h
 
-#include ../platform.h
-#include proton/io.h
 #include proton/driver.h
 #include proton/driver_extras.h
 #include proton/error.h
+#include proton/io.h
 #include proton/sasl.h
 #include proton/ssl.h
 #include proton/util.h
+#include proton/object.h
+#include proton/selector.h
+#include proton/types.h
+#include ../selectable.h
 #include ../util.h
+#include ../platform.h
 #include ../ssl/ssl-internal.h
 
-#include proton/types.h
-
-/* Posix compatibility helpers */
-
-static int pn_socket_pair(SOCKET sv[2]);
-#define close(sock) closesocket(sock)
-static int pn_i_error_from_errno_wrap(pn_error_t *error, const char *msg) {
-  errno = WSAGetLastError();
-  return pn_i_error_from_errno(error, msg);
-}
-#define pn_i_error_from_errno(e,m) pn_i_error_from_errno_wrap(e,m)
+/*
+ * This driver provides limited thread safety for some operations on 
pn_connector_t objects.
+ *
+ * These calls are: pn_connector_process(), pn_connector_activate(), 
pn_connector_activated(),
+ * pn_connector_close(), and others that only touch the connection object, i.e.
+ * pn_connector_context().  These calls provide limited safety in that 
simultaneous calls are
+ * not allowed to the same pn_connector_t object.
+ *
+ * The application must call pn_driver_wakeup() and resume its wait loop logic 
if a call to
+ * pn_wait() may have overlapped with any of the above calls that could affect 
a pn_wait()
+ * outcome.
+ */
 
 /* Decls */
 
@@ -81,82 +61,137 @@ static int pn_i_error_from_errno_wrap(pn
 struct pn_driver_t {
   pn_error_t *error;
   pn_io_t *io;
+  pn_selector_t *selector;
   pn_listener_t *listener_head;
   pn_listener_t *listener_tail;
   pn_listener_t *listener_next;
   pn_connector_t *connector_head;
   pn_connector_t *connector_tail;
-  pn_connector_t *connector_next;
+  pn_listener_t *ready_listener_head;
+  pn_listener_t *ready_listener_tail;
+  pn_connector_t *ready_connector_head;
+  pn_connector_t *ready_connector_tail;
+  pn_selectable_t *ctrl_selectable;
   size_t listener_count;
   size_t connector_count;
-  size_t closed_count;
-  fd_set readfds;
-  fd_set writefds;
-  fd_set exceptfds;
-  // int max_fds;
-  bool overflow;
   pn_socket_t ctrl[2]; //pipe for updating selectable status
-
   pn_trace_t trace;
-  pn_timestamp_t wakeup;
 };
 
+typedef enum {LISTENER, CONNECTOR} sel_type_t;
+
 struct pn_listener_t {
+  sel_type_t type;
   pn_driver_t *driver;
   pn_listener_t *listener_next;
   pn_listener_t *listener_prev;
-  int idx;
+  pn_listener_t *ready_listener_next;
+  pn_listener_t *ready_listener_prev;
+  void *context;
+  pn_selectable_t *selectable;
   bool pending;
-  pn_socket_t fd;
   bool closed;
-  void *context;
 };
 
 #define PN_NAME_MAX (256)
 
 struct pn_connector_t {
+  sel_type_t type;
   pn_driver_t *driver;
   pn_connector_t *connector_next;
   pn_connector_t *connector_prev;
+  pn_connector_t *ready_connector_next;
+  pn_connector_t *ready_connector_prev;
   char name[PN_NAME_MAX];
+  pn_timestamp_t wakeup;
+  pn_timestamp_t posted_wakeup;
+  pn_connection_t *connection;
+  pn_transport_t *transport;
+  pn_sasl_t *sasl;
+  pn_listener_t *listener;
+  void *context;
+  pn_selectable_t *selectable;
   int idx;
+  int status;
+  int posted_status;
+  pn_trace_t trace;
   bool pending_tick;
   bool pending_read;
   bool pending_write;
-  pn_socket_t fd;
-  int 

svn commit: r1630806 - in /qpid/proton/branches/examples/proton-j/src: main/java/org/apache/qpid/proton/engine/impl/ test/java/org/apache/qpid/proton/systemtests/

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:44:55 2014
New Revision: 1630806

URL: http://svn.apache.org/r1630806
Log:
PROTON-685: iterate on a copy of the values to prevent CME after the child 
free() calls  modifies the map

Added:

qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/systemtests/EngineTestBase.java

qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/systemtests/FreeTest.java
Modified:

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SessionImpl.java

qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/systemtests/ProtonEngineExampleTest.java

Modified: 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SessionImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SessionImpl.java?rev=1630806r1=1630805r2=1630806view=diff
==
--- 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SessionImpl.java
 (original)
+++ 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/SessionImpl.java
 Fri Oct 10 12:44:55 2014
@@ -103,11 +103,14 @@ public class SessionImpl extends Endpoin
 _connection.removeSessionEndpoint(_node);
 _node = null;
 
-for(SenderImpl sender : _senders.values()) {
+ListSenderImpl senders = new 
ArrayListSenderImpl(_senders.values());
+for(SenderImpl sender : senders) {
 sender.free();
 }
 _senders.clear();
-for(ReceiverImpl receiver : _receivers.values()) {
+
+ListReceiverImpl receivers = new 
ArrayListReceiverImpl(_receivers.values());
+for(ReceiverImpl receiver : receivers) {
 receiver.free();
 }
 _receivers.clear();

Added: 
qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/systemtests/EngineTestBase.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/systemtests/EngineTestBase.java?rev=1630806view=auto
==
--- 
qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/systemtests/EngineTestBase.java
 (added)
+++ 
qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/systemtests/EngineTestBase.java
 Fri Oct 10 12:44:55 2014
@@ -0,0 +1,113 @@
+/*
+ * 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.systemtests;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertTrue;
+
+import java.nio.ByteBuffer;
+import java.util.logging.Logger;
+
+import org.apache.qpid.proton.amqp.messaging.Target;
+import org.apache.qpid.proton.engine.Endpoint;
+import org.apache.qpid.proton.engine.EndpointState;
+
+public abstract class EngineTestBase
+{
+private static final Logger LOGGER = 
Logger.getLogger(EngineTestBase.class.getName());
+
+private final TestLoggingHelper _testLoggingHelper = new 
TestLoggingHelper(LOGGER);
+private final ProtonContainer _client = new 
ProtonContainer(clientContainer);
+private final ProtonContainer _server = new 
ProtonContainer(serverContainer);
+
+protected TestLoggingHelper getTestLoggingHelper()
+{
+return _testLoggingHelper;
+}
+
+protected ProtonContainer getClient()
+{
+return _client;
+}
+
+protected ProtonContainer getServer()
+{
+return _server;
+}
+
+protected void assertClientHasNothingToOutput()
+{
+assertEquals(0, getClient().transport.getOutputBuffer().remaining());
+getClient().transport.outputConsumed();
+}
+
+protected void pumpServerToClient()
+{
+ByteBuffer serverBuffer = getServer().transport.getOutputBuffer();
+
+getTestLoggingHelper().prettyPrint(   + 
TestLoggingHelper.SERVER_PREFIX +  , serverBuffer);
+assertTrue(Server expected to produce some output, 

svn commit: r1630808 - /qpid/proton/branches/examples/.gitignore

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:45:35 2014
New Revision: 1630808

URL: http://svn.apache.org/r1630808
Log:
NO-JIRA: add ignore for Eclipse PyDev plugin project config

Modified:
qpid/proton/branches/examples/.gitignore

Modified: qpid/proton/branches/examples/.gitignore
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/.gitignore?rev=1630808r1=1630807r2=1630808view=diff
==
--- qpid/proton/branches/examples/.gitignore (original)
+++ qpid/proton/branches/examples/.gitignore Fri Oct 10 12:45:35 2014
@@ -23,6 +23,7 @@ target
 .settings
 .cproject
 eclipse-classes
+.pydevproject
 # End of Eclipse IDE files
 
 # The usual location for proton-c build files



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630807 - /qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java

2014-10-10 Thread macbean
Author: macbean
Date: Fri Oct 10 12:45:28 2014
New Revision: 1630807

URL: http://svn.apache.org/r1630807
Log:
QPID-6134: [Java Broker] added operational logging call to additional intruder 
detection logic

Modified:

qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java

Modified: 
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java?rev=1630807r1=1630806r2=1630807view=diff
==
--- 
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
 Fri Oct 10 12:45:28 2014
@@ -343,6 +343,7 @@ public class BDBHAVirtualHostNodeImpl ex
 String nodeAddress = node.getHostName() + : + node.getPort();
 if (!_permittedNodes.contains(nodeAddress))
 {
+getEventLogger().message(getGroupLogSubject(), 
HighAvailabilityMessages.INTRUDER_DETECTED(node.getName(), nodeAddress));
 shutdownOnIntruder(nodeAddress);
 throw new IllegalStateException(Intruder node detected:  
+ nodeAddress);
 }



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630809 - in /qpid/proton/branches/examples: proton-c/bindings/python/proton.py proton-c/bindings/ruby/lib/qpid_proton/version.rb proton-j/src/main/resources/cproton.py

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:46:30 2014
New Revision: 1630809

URL: http://svn.apache.org/r1630809
Log:
PROTON-651: remove the extraineous 'PN_' if under the proton namespace.

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py

qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton/version.rb
qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630809r1=1630808r2=1630809view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:46:30 2014
@@ -89,6 +89,8 @@ try:
 except NameError:
   bytes = str
 
+VERSION_MAJOR = PN_VERSION_MAJOR
+VERSION_MINOR = PN_VERSION_MINOR
 API_LANGUAGE = C
 IMPLEMENTATION_LANGUAGE = C
 
@@ -3641,8 +3643,8 @@ __all__ = [
Messenger,
MessengerException,
ProtonException,
-   PN_VERSION_MAJOR,
-   PN_VERSION_MINOR,
+   VERSION_MAJOR,
+   VERSION_MINOR,
Receiver,
SASL,
Sender,

Modified: 
qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton/version.rb
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton/version.rb?rev=1630809r1=1630808r2=1630809view=diff
==
--- 
qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton/version.rb 
(original)
+++ 
qpid/proton/branches/examples/proton-c/bindings/ruby/lib/qpid_proton/version.rb 
Fri Oct 10 12:46:30 2014
@@ -21,8 +21,8 @@ module Qpid
 
   module Proton
 
-PN_VERSION_MAJOR = Cproton::PN_VERSION_MAJOR
-PN_VERSION_MINOR = Cproton::PN_VERSION_MINOR
+VERSION_MAJOR = Cproton::PN_VERSION_MAJOR
+VERSION_MINOR = Cproton::PN_VERSION_MINOR
 
   end
 

Modified: qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py?rev=1630809r1=1630808r2=1630809view=diff
==
--- qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py 
(original)
+++ qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py Fri 
Oct 10 12:46:30 2014
@@ -23,6 +23,10 @@ exposed to python via swig. This allows 
 against both the C and Java protocol implementations.
 
 
+# @todo(kgiusti) dynamically set these via filters in the pom.xml file
+PN_VERSION_MAJOR = 0
+PN_VERSION_MINOR = 0
+
 from cerror import *
 from ccodec import *
 from cengine import *



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630810 - in /qpid/proton/branches/examples/proton-c: CMakeLists.txt include/proton/event.h src/engine/engine.c src/engine/event.c src/engine/event.h src/events/ src/events/event.c src/tr

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:47:29 2014
New Revision: 1630810

URL: http://svn.apache.org/r1630810
Log:
moved event code into its own directory; made pn_collector_put public

Added:
qpid/proton/branches/examples/proton-c/src/events/
qpid/proton/branches/examples/proton-c/src/events/event.c
  - copied, changed from r1630809, 
qpid/proton/branches/examples/proton-c/src/engine/event.c
Removed:
qpid/proton/branches/examples/proton-c/src/engine/event.c
qpid/proton/branches/examples/proton-c/src/engine/event.h
Modified:
qpid/proton/branches/examples/proton-c/CMakeLists.txt
qpid/proton/branches/examples/proton-c/include/proton/event.h
qpid/proton/branches/examples/proton-c/src/engine/engine.c
qpid/proton/branches/examples/proton-c/src/transport/transport.c

Modified: qpid/proton/branches/examples/proton-c/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/CMakeLists.txt?rev=1630810r1=1630809r2=1630810view=diff
==
--- qpid/proton/branches/examples/proton-c/CMakeLists.txt (original)
+++ qpid/proton/branches/examples/proton-c/CMakeLists.txt Fri Oct 10 12:47:29 
2014
@@ -280,7 +280,7 @@ set (qpid-proton-core
 
   src/dispatcher/dispatcher.c
   src/engine/engine.c
-  src/engine/event.c
+  src/events/event.c
   src/transport/transport.c
   src/message/message.c
   src/sasl/sasl.c

Modified: qpid/proton/branches/examples/proton-c/include/proton/event.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/event.h?rev=1630810r1=1630809r2=1630810view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/event.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/event.h Fri Oct 10 
12:47:29 2014
@@ -257,6 +257,25 @@ PN_EXTERN pn_collector_t *pn_collector(v
 PN_EXTERN void pn_collector_free(pn_collector_t *collector);
 
 /**
+ * Place a new event on a collector.
+ *
+ * This operation will create a new event of the given type and
+ * context and return a pointer to the newly created event. In some
+ * cases an event of the given type and context can be elided. When
+ * this happens, this operation will return a NULL pointer.
+ *
+ * @param[in] collector a collector object
+ * @param[in] type the event type
+ * @param[in] context the event context
+ *
+ * @return a pointer to the newly created event or NULL if the event
+ * was elided
+ */
+
+pn_event_t *pn_collector_put(pn_collector_t *collector, pn_event_type_t type,
+ void *context);
+
+/**
  * Access the head event contained by a collector.
  *
  * This operation will continue to return the same event until it is

Modified: qpid/proton/branches/examples/proton-c/src/engine/engine.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/engine/engine.c?rev=1630810r1=1630809r2=1630810view=diff
==
--- qpid/proton/branches/examples/proton-c/src/engine/engine.c (original)
+++ qpid/proton/branches/examples/proton-c/src/engine/engine.c Fri Oct 10 
12:47:29 2014
@@ -33,7 +33,6 @@
 #include ../platform.h
 #include ../platform_fmt.h
 #include ../transport/transport.h
-#include ../engine/event.h
 
 // endpoints
 
@@ -332,8 +331,6 @@ void pn_endpoint_tini(pn_endpoint_t *end
   pn_condition_tini(endpoint-condition);
 }
 
-#include event.h
-
 static bool pni_post_final(pn_endpoint_t *endpoint, pn_event_type_t type)
 {
   pn_connection_t *conn = pn_ep_get_connection(endpoint);
@@ -1754,3 +1751,77 @@ int pn_condition_redirect_port(pn_condit
   pn_data_rewind(data);
   return port;
 }
+
+pn_connection_t *pn_event_connection(pn_event_t *event)
+{
+  pn_session_t *ssn;
+  pn_transport_t *transport;
+
+  switch (pn_event_category(event)) {
+  case PN_EVENT_CATEGORY_CONNECTION:
+return (pn_connection_t *) pn_event_context(event);
+  case PN_EVENT_CATEGORY_TRANSPORT:
+transport = pn_event_transport(event);
+if (transport)
+  return transport-connection;
+return NULL;
+  default:
+ssn = pn_event_session(event);
+if (ssn)
+ return pn_session_connection(ssn);
+  }
+  return NULL;
+}
+
+pn_session_t *pn_event_session(pn_event_t *event)
+{
+  pn_link_t *link;
+  switch (pn_event_category(event)) {
+  case PN_EVENT_CATEGORY_SESSION:
+return (pn_session_t *) pn_event_context(event);
+  default:
+link = pn_event_link(event);
+if (link)
+  return pn_link_session(link);
+  }
+  return NULL;
+}
+
+pn_link_t *pn_event_link(pn_event_t *event)
+{
+  pn_delivery_t *dlv;
+  switch (pn_event_category(event)) {
+  case PN_EVENT_CATEGORY_LINK:
+return (pn_link_t *) pn_event_context(event);
+  default:
+dlv = pn_event_delivery(event);
+if (dlv)
+  return pn_delivery_link(dlv);
+  }
+  return NULL;
+}
+
+pn_delivery_t 

svn commit: r1630811 - in /qpid/proton/branches/examples/proton-c: include/proton/cproton.i include/proton/object.h src/messenger/messenger.c src/object/object.c src/tests/object.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:48:35 2014
New Revision: 1630811

URL: http://svn.apache.org/r1630811
Log:
revised class system to be more extensible

Modified:
qpid/proton/branches/examples/proton-c/include/proton/cproton.i
qpid/proton/branches/examples/proton-c/include/proton/object.h
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
qpid/proton/branches/examples/proton-c/src/object/object.c
qpid/proton/branches/examples/proton-c/src/tests/object.c

Modified: qpid/proton/branches/examples/proton-c/include/proton/cproton.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/cproton.i?rev=1630811r1=1630810r2=1630811view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/cproton.i (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/cproton.i Fri Oct 10 
12:48:35 2014
@@ -53,6 +53,8 @@ typedef long long int int64_t;
 %include proton/types.h
 %ignore pn_string_vformat;
 %ignore pn_string_vaddf;
+%immutable PN_OBJECT;
+%immutable PN_VOID;
 %include proton/object.h
 
 %ignore pn_error_format;

Modified: qpid/proton/branches/examples/proton-c/include/proton/object.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/object.h?rev=1630811r1=1630810r2=1630811view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/object.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/object.h Fri Oct 10 
12:48:35 2014
@@ -35,31 +35,82 @@ extern C {
 typedef uintptr_t pn_handle_t;
 typedef intptr_t pn_shandle_t;
 
+typedef struct pn_class_t pn_class_t;
+typedef struct pn_string_t pn_string_t;
 typedef struct pn_list_t pn_list_t;
 typedef struct pn_map_t pn_map_t;
 typedef struct pn_hash_t pn_hash_t;
-typedef struct pn_string_t pn_string_t;
 typedef void *(*pn_iterator_next_t)(void *state);
 typedef struct pn_iterator_t pn_iterator_t;
 
-typedef struct {
+struct pn_class_t {
   const char *name;
+  void *(*newinst)(const pn_class_t *, size_t);
   void (*initialize)(void *);
+  void (*incref)(void *);
+  void (*decref)(void *);
+  int (*refcount)(void *);
   void (*finalize)(void *);
+  void (*free)(void *);
+  const pn_class_t *(*reify)(void *);
   uintptr_t (*hashcode)(void *);
   intptr_t (*compare)(void *, void *);
   int (*inspect)(void *, pn_string_t *);
-} pn_class_t;
+};
+
+extern const pn_class_t *PN_OBJECT;
+extern const pn_class_t *PN_VOID;
 
 #define PN_CLASS(PREFIX) {  \
 #PREFIX,\
+pn_object_new,  \
+PREFIX ## _initialize,  \
+pn_object_incref,   \
+pn_object_decref,   \
+pn_object_refcount, \
+PREFIX ## _finalize,\
+pn_object_free, \
+pn_object_reify,\
+PREFIX ## _hashcode,\
+PREFIX ## _compare, \
+PREFIX ## _inspect  \
+}
+
+#define PN_METACLASS(PREFIX) {  \
+#PREFIX,\
+PREFIX ## _new, \
 PREFIX ## _initialize,  \
+PREFIX ## _incref,  \
+PREFIX ## _decref,  \
+PREFIX ## _refcount,\
 PREFIX ## _finalize,\
+PREFIX ## _free,\
+PREFIX ## _reify,   \
 PREFIX ## _hashcode,\
 PREFIX ## _compare, \
 PREFIX ## _inspect  \
 }
 
+PN_EXTERN void *pn_class_new(const pn_class_t *clazz, size_t size);
+PN_EXTERN void *pn_class_incref(const pn_class_t *clazz, void *object);
+PN_EXTERN void pn_class_decref(const pn_class_t *clazz, void *object);
+PN_EXTERN void pn_class_free(const pn_class_t *clazz, void *object);
+PN_EXTERN int pn_class_refcount(const pn_class_t *clazz, void *object);
+PN_EXTERN const pn_class_t *pn_class_reify(const pn_class_t *clazz, void 
*object);
+PN_EXTERN uintptr_t pn_class_hashcode(const pn_class_t *clazz, void *object);
+PN_EXTERN intptr_t pn_class_compare(const pn_class_t *clazz, void *a, void *b);
+PN_EXTERN bool pn_class_equals(const pn_class_t *clazz, void *a, void *b);
+
+PN_EXTERN void *pn_object_new(const pn_class_t *clazz, size_t size);
+PN_EXTERN const pn_class_t *pn_object_reify(void *object);
+PN_EXTERN void pn_object_incref(void *object);
+PN_EXTERN int pn_object_refcount(void *object);
+PN_EXTERN void pn_object_decref(void *object);
+PN_EXTERN void pn_object_free(void *object);
+PN_EXTERN uintptr_t pn_object_hashcode(void *object);

svn commit: r1630813 - in /qpid/proton/branches/examples/proton-c: include/proton/ src/ src/codec/ src/engine/ src/events/ src/message/ src/messenger/ src/object/ src/posix/ src/tests/ src/transport/

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:50:03 2014
New Revision: 1630813

URL: http://svn.apache.org/r1630813
Log:
made list and map take classes

Modified:
qpid/proton/branches/examples/proton-c/include/proton/object.h
qpid/proton/branches/examples/proton-c/src/codec/codec.c
qpid/proton/branches/examples/proton-c/src/codec/decoder.c
qpid/proton/branches/examples/proton-c/src/codec/encoder.c
qpid/proton/branches/examples/proton-c/src/engine/engine.c
qpid/proton/branches/examples/proton-c/src/events/event.c
qpid/proton/branches/examples/proton-c/src/message/message.c
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
qpid/proton/branches/examples/proton-c/src/messenger/store.c
qpid/proton/branches/examples/proton-c/src/messenger/subscription.c
qpid/proton/branches/examples/proton-c/src/messenger/transform.c
qpid/proton/branches/examples/proton-c/src/object/object.c
qpid/proton/branches/examples/proton-c/src/posix/driver.c
qpid/proton/branches/examples/proton-c/src/posix/io.c
qpid/proton/branches/examples/proton-c/src/posix/selector.c
qpid/proton/branches/examples/proton-c/src/selectable.c
qpid/proton/branches/examples/proton-c/src/tests/object.c
qpid/proton/branches/examples/proton-c/src/transport/transport.c

Modified: qpid/proton/branches/examples/proton-c/include/proton/object.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/object.h?rev=1630813r1=1630812r2=1630813view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/object.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/object.h Fri Oct 10 
12:50:03 2014
@@ -43,6 +43,9 @@ typedef struct pn_hash_t pn_hash_t;
 typedef void *(*pn_iterator_next_t)(void *state);
 typedef struct pn_iterator_t pn_iterator_t;
 
+// XXX: if we factor refcounting stuff into a separate dimension then
+// we could have a weakref class instead of having the options stuff
+
 struct pn_class_t {
   const char *name;
   void *(*newinst)(const pn_class_t *, size_t);
@@ -93,13 +96,14 @@ extern const pn_class_t *PN_VOID;
 
 PN_EXTERN void *pn_class_new(const pn_class_t *clazz, size_t size);
 PN_EXTERN void *pn_class_incref(const pn_class_t *clazz, void *object);
-PN_EXTERN void pn_class_decref(const pn_class_t *clazz, void *object);
-PN_EXTERN void pn_class_free(const pn_class_t *clazz, void *object);
 PN_EXTERN int pn_class_refcount(const pn_class_t *clazz, void *object);
+PN_EXTERN int pn_class_decref(const pn_class_t *clazz, void *object);
+PN_EXTERN void pn_class_free(const pn_class_t *clazz, void *object);
 PN_EXTERN const pn_class_t *pn_class_reify(const pn_class_t *clazz, void 
*object);
 PN_EXTERN uintptr_t pn_class_hashcode(const pn_class_t *clazz, void *object);
 PN_EXTERN intptr_t pn_class_compare(const pn_class_t *clazz, void *a, void *b);
 PN_EXTERN bool pn_class_equals(const pn_class_t *clazz, void *a, void *b);
+PN_EXTERN int pn_class_inspect(const pn_class_t *clazz, void *object, 
pn_string_t *dst);
 
 PN_EXTERN void *pn_object_new(const pn_class_t *clazz, size_t size);
 PN_EXTERN const pn_class_t *pn_object_reify(void *object);
@@ -107,19 +111,10 @@ PN_EXTERN void pn_object_incref(void *ob
 PN_EXTERN int pn_object_refcount(void *object);
 PN_EXTERN void pn_object_decref(void *object);
 PN_EXTERN void pn_object_free(void *object);
-PN_EXTERN uintptr_t pn_object_hashcode(void *object);
-PN_EXTERN intptr_t pn_object_compare(void *a, void *b);
-PN_EXTERN int pn_object_inspect(void *object, pn_string_t *dst);
-
-PN_EXTERN void *pn_new(size_t size, const pn_class_t* clazz);
-PN_EXTERN void *pn_new2(size_t size, const pn_class_t* clazz, void *from);
-PN_EXTERN void pn_initialize(void *object, const pn_class_t *clazz);
+
 PN_EXTERN void *pn_incref(void *object);
-PN_EXTERN void *pn_incref2(void *object, void *from);
-PN_EXTERN void pn_decref(void *object);
-PN_EXTERN void pn_decref2(void *object, void *from);
+PN_EXTERN int pn_decref(void *object);
 PN_EXTERN int pn_refcount(void *object);
-PN_EXTERN void pn_finalize(void *object);
 PN_EXTERN void pn_free(void *object);
 PN_EXTERN const pn_class_t *pn_class(void* object);
 PN_EXTERN uintptr_t pn_hashcode(void *object);
@@ -129,7 +124,7 @@ PN_EXTERN int pn_inspect(void *object, p
 
 #define PN_REFCOUNT (0x1)
 
-PN_EXTERN pn_list_t *pn_list(size_t capacity, int options);
+PN_EXTERN pn_list_t *pn_list(const pn_class_t *clazz, size_t capacity, int 
options);
 PN_EXTERN size_t pn_list_size(pn_list_t *list);
 PN_EXTERN void *pn_list_get(pn_list_t *list, int index);
 PN_EXTERN void pn_list_set(pn_list_t *list, int index, void *value);
@@ -143,7 +138,8 @@ PN_EXTERN void pn_list_iterator(pn_list_
 #define PN_REFCOUNT_KEY (0x2)
 #define PN_REFCOUNT_VALUE (0x4)
 
-PN_EXTERN pn_map_t *pn_map(size_t capacity, float load_factor, int options);
+PN_EXTERN pn_map_t *pn_map(const pn_class_t *key, const pn_class_t 

svn commit: r1630817 - in /qpid/proton/branches/examples: proton-c/bindings/python/ proton-c/include/proton/ proton-c/src/engine/ proton-c/src/events/ proton-c/src/object/ proton-c/src/transport/ prot

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:51:19 2014
New Revision: 1630817

URL: http://svn.apache.org/r1630817
Log:
made pn_collector_put public and modified collector to work with regular void * 
pointers as well as pn_object pointers

Added:
qpid/proton/branches/examples/proton-j/src/main/resources/cobject.py
  - copied, changed from r1630816, 
qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py
Modified:
qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/proton-c/include/proton/cproton.i
qpid/proton/branches/examples/proton-c/include/proton/event.h
qpid/proton/branches/examples/proton-c/include/proton/object.h
qpid/proton/branches/examples/proton-c/src/engine/engine.c
qpid/proton/branches/examples/proton-c/src/events/event.c
qpid/proton/branches/examples/proton-c/src/object/object.c
qpid/proton/branches/examples/proton-c/src/transport/transport.c

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java
qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py
qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py
qpid/proton/branches/examples/tests/python/proton_tests/engine.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/cproton.i?rev=1630817r1=1630816r2=1630817view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/cproton.i (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/cproton.i Fri Oct 10 
12:51:19 2014
@@ -375,5 +375,23 @@ bool pn_ssl_get_protocol_name(pn_ssl_t *
 int pn_ssl_get_peer_hostname(pn_ssl_t *ssl, char *OUTPUT, size_t *OUTPUT_SIZE);
 %ignore pn_ssl_get_peer_hostname;
 
+%inline %{
+  void *pn_py2void(PyObject *object) {
+return object;
+  }
+
+  PyObject *pn_void2py(void *object) {
+if (object) {
+  Py_INCREF(object);
+  return object;
+} else {
+  Py_RETURN_NONE;
+}
+  }
+
+  PyObject *pn_cast_pn_void(void *object) {
+return pn_void2py(object);
+  }
+%}
 
 %include proton/cproton.i

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630817r1=1630816r2=1630817view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:51:19 2014
@@ -3324,29 +3324,32 @@ class SSLSessionDetails(object):
 return self._session_id
 
 
+wrappers = {
+  pn_void: lambda x: pn_void2py(x),
+  pn_connection: lambda x: 
Connection._wrap_connection(pn_cast_pn_connection(x)),
+  pn_session: lambda x: Session._wrap_session(pn_cast_pn_session(x)),
+  pn_link: lambda x: Link._wrap_link(pn_cast_pn_link(x)),
+  pn_delivery: lambda x: Delivery._wrap_delivery(pn_cast_pn_delivery(x)),
+  pn_transport: lambda x: Transport(pn_cast_pn_transport(x))
+}
+
 class Collector:
 
   def __init__(self):
 self._impl = pn_collector()
 self._contexts = set()
 
+  def put(self, obj, etype):
+pn_collector_put(self._impl, PN_VOID, pn_py2void(obj), etype)
+
   def peek(self):
 event = pn_collector_peek(self._impl)
 if event is None:
   return None
 
-tpi = pn_event_transport(event)
-if tpi:
-  tp = Transport(tpi)
-else:
-  tp = None
-return Event(type=pn_event_type(event),
- category=pn_event_category(event),
- 
connection=Connection._wrap_connection(pn_event_connection(event)),
- session=Session._wrap_session(pn_event_session(event)),
- link=Link._wrap_link(pn_event_link(event)),
- delivery=Delivery._wrap_delivery(pn_event_delivery(event)),
- transport=tp)
+clazz = pn_class_name(pn_event_class(event))
+context = wrappers[clazz](pn_event_context(event))
+return Event(clazz, context, pn_event_type(event))
 
   def pop(self):
 ev = self.peek()
@@ -3390,34 +3393,19 @@ class Event:
   DELIVERY = PN_DELIVERY
   TRANSPORT = PN_TRANSPORT
 
-  def __init__(self, type, category,
-   connection, session, link, delivery, transport):
+  def __init__(self, clazz, context, type):
+self.clazz = clazz
+self.context = context
 self.type = type
-self.category = category
-self.connection = connection
-self.session = session
-self.link = link
-self.delivery = delivery
-self.transport = transport
 
   def _popped(self, collector):
-if self.type == Event.LINK_FINAL:
-  ctx = self.link
-elif self.type == Event.SESSION_FINAL:
- 

svn commit: r1630816 - in /qpid/proton/branches/examples/proton-c: include/proton/ src/engine/ src/messenger/ src/object/ src/posix/ src/tests/ src/transport/

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:51:03 2014
New Revision: 1630816

URL: http://svn.apache.org/r1630816
Log:
added PN_WEAKREF class and removed options

Modified:
qpid/proton/branches/examples/proton-c/include/proton/cproton.i
qpid/proton/branches/examples/proton-c/include/proton/object.h
qpid/proton/branches/examples/proton-c/src/engine/engine.c
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
qpid/proton/branches/examples/proton-c/src/messenger/store.c
qpid/proton/branches/examples/proton-c/src/messenger/transform.c
qpid/proton/branches/examples/proton-c/src/object/list.c
qpid/proton/branches/examples/proton-c/src/object/map.c
qpid/proton/branches/examples/proton-c/src/object/object.c
qpid/proton/branches/examples/proton-c/src/posix/selector.c
qpid/proton/branches/examples/proton-c/src/tests/object.c
qpid/proton/branches/examples/proton-c/src/transport/transport.c

Modified: qpid/proton/branches/examples/proton-c/include/proton/cproton.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/cproton.i?rev=1630816r1=1630815r2=1630816view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/cproton.i (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/cproton.i Fri Oct 10 
12:51:03 2014
@@ -55,6 +55,7 @@ typedef long long int int64_t;
 %ignore pn_string_vaddf;
 %immutable PN_OBJECT;
 %immutable PN_VOID;
+%immutable PN_WEAKREF;
 %include proton/object.h
 
 %ignore pn_error_format;

Modified: qpid/proton/branches/examples/proton-c/include/proton/object.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/object.h?rev=1630816r1=1630815r2=1630816view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/object.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/object.h Fri Oct 10 
12:51:03 2014
@@ -43,9 +43,6 @@ typedef struct pn_hash_t pn_hash_t;
 typedef void *(*pn_iterator_next_t)(void *state);
 typedef struct pn_iterator_t pn_iterator_t;
 
-// XXX: if we factor refcounting stuff into a separate dimension then
-// we could have a weakref class instead of having the options stuff
-
 struct pn_class_t {
   const char *name;
   void *(*newinst)(const pn_class_t *, size_t);
@@ -63,6 +60,7 @@ struct pn_class_t {
 
 extern const pn_class_t *PN_OBJECT;
 extern const pn_class_t *PN_VOID;
+extern const pn_class_t *PN_WEAKREF;
 
 #define PN_CLASS(PREFIX) {  \
 #PREFIX,\
@@ -124,7 +122,7 @@ PN_EXTERN int pn_inspect(void *object, p
 
 #define PN_REFCOUNT (0x1)
 
-PN_EXTERN pn_list_t *pn_list(const pn_class_t *clazz, size_t capacity, int 
options);
+PN_EXTERN pn_list_t *pn_list(const pn_class_t *clazz, size_t capacity);
 PN_EXTERN size_t pn_list_size(pn_list_t *list);
 PN_EXTERN void *pn_list_get(pn_list_t *list, int index);
 PN_EXTERN void pn_list_set(pn_list_t *list, int index, void *value);
@@ -139,7 +137,7 @@ PN_EXTERN void pn_list_iterator(pn_list_
 #define PN_REFCOUNT_VALUE (0x4)
 
 PN_EXTERN pn_map_t *pn_map(const pn_class_t *key, const pn_class_t *value,
-   size_t capacity, float load_factor, int options);
+   size_t capacity, float load_factor);
 PN_EXTERN size_t pn_map_size(pn_map_t *map);
 PN_EXTERN int pn_map_put(pn_map_t *map, void *key, void *value);
 PN_EXTERN void *pn_map_get(pn_map_t *map, void *key);
@@ -149,7 +147,7 @@ PN_EXTERN pn_handle_t pn_map_next(pn_map
 PN_EXTERN void *pn_map_key(pn_map_t *map, pn_handle_t entry);
 PN_EXTERN void *pn_map_value(pn_map_t *map, pn_handle_t entry);
 
-PN_EXTERN pn_hash_t *pn_hash(const pn_class_t *clazz, size_t capacity, float 
load_factor, int options);
+PN_EXTERN pn_hash_t *pn_hash(const pn_class_t *clazz, size_t capacity, float 
load_factor);
 PN_EXTERN size_t pn_hash_size(pn_hash_t *hash);
 PN_EXTERN int pn_hash_put(pn_hash_t *hash, uintptr_t key, void *value);
 PN_EXTERN void *pn_hash_get(pn_hash_t *hash, uintptr_t key);

Modified: qpid/proton/branches/examples/proton-c/src/engine/engine.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/engine/engine.c?rev=1630816r1=1630815r2=1630816view=diff
==
--- qpid/proton/branches/examples/proton-c/src/engine/engine.c (original)
+++ qpid/proton/branches/examples/proton-c/src/engine/engine.c Fri Oct 10 
12:51:03 2014
@@ -379,7 +379,7 @@ pn_connection_t *pn_connection()
   pn_endpoint_init(conn-endpoint, CONNECTION, conn);
   conn-transport_head = NULL;
   conn-transport_tail = NULL;
-  conn-sessions = pn_list(PN_OBJECT, 0, 0);
+  conn-sessions = pn_list(PN_WEAKREF, 0);
   conn-transport = NULL;
   conn-work_head = NULL;
   conn-work_tail = NULL;
@@ -723,7 +723,7 @@ 

svn commit: r1630818 - in /qpid/proton/branches/examples: proton-c/bindings/python/cproton.i proton-c/bindings/python/proton.py proton-j/src/main/resources/cobject.py

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:51:26 2014
New Revision: 1630818

URL: http://svn.apache.org/r1630818
Log:
centralized void/PyObject conversion

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/proton-j/src/main/resources/cobject.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/cproton.i?rev=1630818r1=1630817r2=1630818view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/cproton.i (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/cproton.i Fri Oct 10 
12:51:26 2014
@@ -184,154 +184,6 @@ ssize_t pn_transport_push(pn_transport_t
 %}
 %ignore pn_message_data;
 
-%rename(pn_listener_set_context) wrap_pn_listener_set_context;
-%inline {
-  void wrap_pn_listener_set_context(pn_listener_t *l, PyObject *context) {
-// don't incref context: we 'borrow' the reference - prevents
-// reference loops.  Should be safe as the Python object must
-// outlive the C object.
-pn_listener_set_context(l, context);
-  }
-}
-%ignore pn_listener_set_context;
-
-%rename(pn_listener_context) wrap_pn_listener_context;
-%inline {
-  PyObject *wrap_pn_listener_context(pn_listener_t *l) {
-PyObject *result = (PyObject *) pn_listener_context(l);
-// incref the returned context, as the caller expects this
-if (result) {
-  Py_INCREF(result);
-  return result;
-} else {
-  Py_RETURN_NONE;
-}
-  }
-}
-%ignore pn_listener_context;
-
-%rename(pn_connector_set_context) wrap_pn_connector_set_context;
-%inline {
-  void wrap_pn_connector_set_context(pn_connector_t *c, PyObject *context) {
-// don't incref context: we 'borrow' the reference - prevents
-// reference loops.  Should be safe as the Python object must
-// outlive the C object.
-pn_connector_set_context(c, context);
-  }
-}
-%ignore pn_connector_set_context;
-
-%rename(pn_connector_context) wrap_pn_connector_context;
-%inline {
-  PyObject *wrap_pn_connector_context(pn_connector_t *c) {
-PyObject *result = (PyObject *) pn_connector_context(c);
-// incref the returned context, as the caller expects this
-if (result) {
-  Py_INCREF(result);
-  return result;
-} else {
-  Py_RETURN_NONE;
-}
-  }
-}
-%ignore pn_connector_context;
-
-%rename(pn_connection_get_context) wrap_pn_connection_get_context;
-%inline {
-  PyObject *wrap_pn_connection_get_context(pn_connection_t *c) {
-PyObject *result = (PyObject *) pn_connection_get_context(c);
-// incref the returned context, as the caller expects this
-if (result) {
-  Py_INCREF(result);
-  return result;
-} else {
-  Py_RETURN_NONE;
-}
-  }
-}
-%ignore pn_connection_get_context;
-
-%rename(pn_connection_set_context) wrap_pn_connection_set_context;
-%inline {
-  void wrap_pn_connection_set_context(pn_connection_t *c, PyObject *context) {
-// don't incref context: we 'borrow' the reference
-pn_connection_set_context(c, context);
-  }
-}
-%ignore pn_connection_set_context;
-
-%rename(pn_session_get_context) wrap_pn_session_get_context;
-%inline {
-  PyObject *wrap_pn_session_get_context(pn_session_t *s) {
-PyObject *result = (PyObject *) pn_session_get_context(s);
-// incref the returned context, as the caller expects this
-if (result) {
-  Py_INCREF(result);
-  return result;
-} else {
-  Py_RETURN_NONE;
-}
-  }
-}
-%ignore pn_session_get_context;
-
-%rename(pn_session_set_context) wrap_pn_session_set_context;
-%inline {
-  void wrap_pn_session_set_context(pn_session_t *s, PyObject *context) {
-// don't incref context: we 'borrow' the reference
-pn_session_set_context(s, context);
-  }
-}
-%ignore pn_session_set_context;
-
-%rename(pn_link_get_context) wrap_pn_link_get_context;
-%inline {
-  PyObject *wrap_pn_link_get_context(pn_link_t *l) {
-PyObject *result = (PyObject *) pn_link_get_context(l);
-// incref the returned context, as the caller expects this
-if (result) {
-  Py_INCREF(result);
-  return result;
-} else {
-  Py_RETURN_NONE;
-}
-  }
-}
-%ignore pn_link_get_context;
-
-%rename(pn_link_set_context) wrap_pn_link_set_context;
-%inline {
-  void wrap_pn_link_set_context(pn_link_t *l, PyObject *context) {
-// don't incref context: we 'borrow' the reference
-pn_link_set_context(l, context);
-  }
-}
-%ignore pn_link_set_context;
-
-%rename(pn_delivery_get_context) wrap_pn_delivery_get_context;
-%inline {
-  PyObject *wrap_pn_delivery_get_context(pn_delivery_t *d) {
-PyObject *result = (PyObject *) pn_delivery_get_context(d);
-// incref the returned context, as the caller expects this
-if (result) {
-  Py_INCREF(result);
-  return result;
-} 

svn commit: r1630820 - in /qpid/proton/branches/examples/proton-c: include/proton/ src/messenger/ src/object/ src/tests/

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:51:41 2014
New Revision: 1630820

URL: http://svn.apache.org/r1630820
Log:
added class ids

Added:
qpid/proton/branches/examples/proton-c/include/proton/cid.h
Modified:
qpid/proton/branches/examples/proton-c/include/proton/object.h
qpid/proton/branches/examples/proton-c/src/messenger/store.c
qpid/proton/branches/examples/proton-c/src/messenger/subscription.c
qpid/proton/branches/examples/proton-c/src/messenger/transform.c
qpid/proton/branches/examples/proton-c/src/object/iterator.c
qpid/proton/branches/examples/proton-c/src/object/map.c
qpid/proton/branches/examples/proton-c/src/object/object.c
qpid/proton/branches/examples/proton-c/src/tests/object.c

Added: qpid/proton/branches/examples/proton-c/include/proton/cid.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/cid.h?rev=1630820view=auto
==
--- qpid/proton/branches/examples/proton-c/include/proton/cid.h (added)
+++ qpid/proton/branches/examples/proton-c/include/proton/cid.h Fri Oct 10 
12:51:41 2014
@@ -0,0 +1,54 @@
+#ifndef PROTON_CID_H
+#define PROTON_CID_H 1
+/*
+ *
+ * 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.
+ *
+ */
+
+typedef enum {
+  CID_pn_object = 1,
+  CID_pn_void,
+  CID_pn_weakref,
+
+  CID_pn_string,
+  CID_pn_list,
+  CID_pn_map,
+  CID_pn_hash,
+
+  CID_pn_collector,
+  CID_pn_event,
+
+  CID_pn_encoder,
+  CID_pn_decoder,
+  CID_pn_data,
+
+  CID_pn_connection,
+  CID_pn_session,
+  CID_pn_link,
+  CID_pn_delivery,
+  CID_pn_transport,
+
+  CID_pn_message,
+
+  CID_pn_io,
+  CID_pn_selector,
+  CID_pn_selectable
+} pn_cid_t;
+
+#endif /* cid.h */

Modified: qpid/proton/branches/examples/proton-c/include/proton/object.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/object.h?rev=1630820r1=1630819r2=1630820view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/object.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/object.h Fri Oct 10 
12:51:41 2014
@@ -22,6 +22,7 @@
  *
  */
 
+#include proton/cid.h
 #include proton/types.h
 #include stdarg.h
 #include proton/type_compat.h
@@ -45,6 +46,7 @@ typedef struct pn_iterator_t pn_iterator
 
 struct pn_class_t {
   const char *name;
+  const pn_cid_t cid;
   void *(*newinst)(const pn_class_t *, size_t);
   void (*initialize)(void *);
   void (*incref)(void *);
@@ -64,6 +66,7 @@ PN_EXTERN extern const pn_class_t *PN_WE
 
 #define PN_CLASS(PREFIX) {  \
 #PREFIX,\
+CID_ ## PREFIX, \
 pn_object_new,  \
 PREFIX ## _initialize,  \
 pn_object_incref,   \
@@ -79,6 +82,7 @@ PN_EXTERN extern const pn_class_t *PN_WE
 
 #define PN_METACLASS(PREFIX) {  \
 #PREFIX,\
+CID_ ## PREFIX, \
 PREFIX ## _new, \
 PREFIX ## _initialize,  \
 PREFIX ## _incref,  \
@@ -92,6 +96,7 @@ PN_EXTERN extern const pn_class_t *PN_WE
 PREFIX ## _inspect  \
 }
 
+PN_EXTERN pn_cid_t pn_class_id(const pn_class_t *clazz);
 PN_EXTERN const char *pn_class_name(const pn_class_t *clazz);
 PN_EXTERN void *pn_class_new(const pn_class_t *clazz, size_t size);
 PN_EXTERN void *pn_class_incref(const pn_class_t *clazz, void *object);

Modified: qpid/proton/branches/examples/proton-c/src/messenger/store.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/store.c?rev=1630820r1=1630819r2=1630820view=diff
==
--- qpid/proton/branches/examples/proton-c/src/messenger/store.c (original)
+++ qpid/proton/branches/examples/proton-c/src/messenger/store.c Fri Oct 10 
12:51:41 2014
@@ -197,6 +197,7 @@ pni_stream_t *pni_stream_get(pni_store_t
   return pni_stream(store, address, false);
 }
 

svn commit: r1630819 - in /qpid/proton/branches/examples/proton-c: bindings/python/ include/proton/ src/object/ src/windows/

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:51:33 2014
New Revision: 1630819

URL: http://svn.apache.org/r1630819
Log:
PROTON-686, PROTON-???: Fix recent changes to compile on windows

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
qpid/proton/branches/examples/proton-c/include/proton/event.h
qpid/proton/branches/examples/proton-c/include/proton/object.h
qpid/proton/branches/examples/proton-c/src/object/string.c
qpid/proton/branches/examples/proton-c/src/windows/io.c
qpid/proton/branches/examples/proton-c/src/windows/iocp.c
qpid/proton/branches/examples/proton-c/src/windows/iocp.h
qpid/proton/branches/examples/proton-c/src/windows/selector.c
qpid/proton/branches/examples/proton-c/src/windows/write_pipeline.c

Modified: qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/cproton.i?rev=1630819r1=1630818r2=1630819view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/cproton.i (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/cproton.i Fri Oct 10 
12:51:33 2014
@@ -234,8 +234,9 @@ int pn_ssl_get_peer_hostname(pn_ssl_t *s
 
   PyObject *pn_void2py(void *object) {
 if (object) {
-  Py_INCREF(object);
-  return object;
+  PyObject* p = (PyObject*) object;
+  Py_INCREF(p);
+  return p;
 } else {
   Py_RETURN_NONE;
 }

Modified: qpid/proton/branches/examples/proton-c/include/proton/event.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/event.h?rev=1630819r1=1630818r2=1630819view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/event.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/event.h Fri Oct 10 
12:51:33 2014
@@ -272,9 +272,9 @@ PN_EXTERN void pn_collector_free(pn_coll
  * was elided
  */
 
-pn_event_t *pn_collector_put(pn_collector_t *collector,
- const pn_class_t *clazz, void *context,
- pn_event_type_t type);
+PN_EXTERN pn_event_t *pn_collector_put(pn_collector_t *collector,
+   const pn_class_t *clazz, void *context,
+   pn_event_type_t type);
 
 /**
  * Access the head event contained by a collector.

Modified: qpid/proton/branches/examples/proton-c/include/proton/object.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/object.h?rev=1630819r1=1630818r2=1630819view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/object.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/object.h Fri Oct 10 
12:51:33 2014
@@ -58,9 +58,9 @@ struct pn_class_t {
   int (*inspect)(void *, pn_string_t *);
 };
 
-extern const pn_class_t *PN_OBJECT;
-extern const pn_class_t *PN_VOID;
-extern const pn_class_t *PN_WEAKREF;
+PN_EXTERN extern const pn_class_t *PN_OBJECT;
+PN_EXTERN extern const pn_class_t *PN_VOID;
+PN_EXTERN extern const pn_class_t *PN_WEAKREF;
 
 #define PN_CLASS(PREFIX) {  \
 #PREFIX,\

Modified: qpid/proton/branches/examples/proton-c/src/object/string.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/object/string.c?rev=1630819r1=1630818r2=1630819view=diff
==
--- qpid/proton/branches/examples/proton-c/src/object/string.c (original)
+++ qpid/proton/branches/examples/proton-c/src/object/string.c Fri Oct 10 
12:51:33 2014
@@ -19,8 +19,11 @@
  *
  */
 
+#include platform.h
+
 #include proton/error.h
 #include proton/object.h
+
 #include stdio.h
 #include stdlib.h
 #include string.h

Modified: qpid/proton/branches/examples/proton-c/src/windows/io.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/io.c?rev=1630819r1=1630818r2=1630819view=diff
==
--- qpid/proton/branches/examples/proton-c/src/windows/io.c (original)
+++ qpid/proton/branches/examples/proton-c/src/windows/io.c Fri Oct 10 12:51:33 
2014
@@ -103,7 +103,7 @@ void pn_io_finalize(void *obj)
 pn_io_t *pn_io(void)
 {
   static const pn_class_t clazz = PN_CLASS(pn_io);
-  pn_io_t *io = (pn_io_t *) pn_new(sizeof(pn_io_t), clazz);
+  pn_io_t *io = (pn_io_t *) pn_class_new(clazz, sizeof(pn_io_t));
   return io;
 }
 

Modified: qpid/proton/branches/examples/proton-c/src/windows/iocp.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/iocp.c?rev=1630819r1=1630818r2=1630819view=diff

svn commit: r1630821 - in /qpid/proton/branches/examples/proton-c: bindings/python/proton.py include/proton/event.h src/engine/engine.c src/events/event.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:51:48 2014
New Revision: 1630821

URL: http://svn.apache.org/r1630821
Log:
removed event categories in favor of class ids

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/proton-c/include/proton/event.h
qpid/proton/branches/examples/proton-c/src/engine/engine.c
qpid/proton/branches/examples/proton-c/src/events/event.c

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630821r1=1630820r2=1630821view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:51:48 2014
@@ -3362,12 +3362,6 @@ class Collector:
 
 class Event:
 
-  CATEGORY_CONNECTION = PN_EVENT_CATEGORY_CONNECTION
-  CATEGORY_SESSION = PN_EVENT_CATEGORY_SESSION
-  CATEGORY_LINK = PN_EVENT_CATEGORY_LINK
-  CATEGORY_DELIVERY = PN_EVENT_CATEGORY_DELIVERY
-  CATEGORY_TRANSPORT = PN_EVENT_CATEGORY_TRANSPORT
-
   CONNECTION_INIT = PN_CONNECTION_INIT
   CONNECTION_OPEN = PN_CONNECTION_OPEN
   CONNECTION_CLOSE = PN_CONNECTION_CLOSE

Modified: qpid/proton/branches/examples/proton-c/include/proton/event.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/event.h?rev=1630821r1=1630820r2=1630821view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/event.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/event.h Fri Oct 10 
12:51:48 2014
@@ -77,19 +77,6 @@ extern C {
 typedef struct pn_event_t pn_event_t;
 
 /**
- * Related events are grouped into categories
- */
-typedef enum {
-PN_EVENT_CATEGORY_NONE   = 0,
-PN_EVENT_CATEGORY_CONNECTION = 0x0001,
-PN_EVENT_CATEGORY_SESSION = 0x0002,
-PN_EVENT_CATEGORY_LINK = 0x0003,
-PN_EVENT_CATEGORY_DELIVERY = 0x0004,
-PN_EVENT_CATEGORY_TRANSPORT = 0x0005,
-PN_EVENT_CATEGORY_COUNT = 6
-} pn_event_category_t;
-
-/**
  * An event type.
  */
 typedef enum {
@@ -104,130 +91,130 @@ typedef enum {
* will ever be issued for a connection. Events of this type point
* to the relevant connection.
*/
-  PN_CONNECTION_INIT = PN_EVENT_CATEGORY_CONNECTION + 1,
+  PN_CONNECTION_INIT = 1,
 
   /**
* The local connection endpoint has been closed. Events of this
* type point to the relevant connection.
*/
-  PN_CONNECTION_OPEN = PN_EVENT_CATEGORY_CONNECTION + 2,
+  PN_CONNECTION_OPEN = 2,
 
   /**
* The remote endpoint has opened the connection. Events of this
* type point to the relevant connection.
*/
-  PN_CONNECTION_REMOTE_OPEN = PN_EVENT_CATEGORY_CONNECTION + 3,
+  PN_CONNECTION_REMOTE_OPEN = 3,
 
   /**
* The local connection endpoint has been closed. Events of this
* type point to the relevant connection.
*/
-  PN_CONNECTION_CLOSE = PN_EVENT_CATEGORY_CONNECTION + 4,
+  PN_CONNECTION_CLOSE = 4,
 
   /**
*  The remote endpoint has closed the connection. Events of this
*  type point to the relevant connection.
*/
-  PN_CONNECTION_REMOTE_CLOSE = PN_EVENT_CATEGORY_CONNECTION + 5,
+  PN_CONNECTION_REMOTE_CLOSE = 5,
 
   /**
* The connection has been freed and any outstanding processing has
* been completed. This is the final event that will ever be issued
* for a connection.
*/
-  PN_CONNECTION_FINAL = PN_EVENT_CATEGORY_CONNECTION + 6,
+  PN_CONNECTION_FINAL = 6,
 
   /**
* The session has been created. This is the first event that will
* ever be issued for a session.
*/
-  PN_SESSION_INIT = PN_EVENT_CATEGORY_SESSION + 1,
+  PN_SESSION_INIT = 11,
 
   /**
* The local session endpoint has been opened. Events of this type
* point ot the relevant session.
*/
-  PN_SESSION_OPEN = PN_EVENT_CATEGORY_SESSION + 2,
+  PN_SESSION_OPEN = 12,
 
   /**
* The remote endpoint has opened the session. Events of this type
* point to the relevant session.
*/
-  PN_SESSION_REMOTE_OPEN = PN_EVENT_CATEGORY_SESSION + 3,
+  PN_SESSION_REMOTE_OPEN = 13,
 
   /**
* The local session endpoint has been closed. Events of this type
* point ot the relevant session.
*/
-  PN_SESSION_CLOSE = PN_EVENT_CATEGORY_SESSION + 4,
+  PN_SESSION_CLOSE = 14,
 
   /**
* The remote endpoint has closed the session. Events of this type
* point to the relevant session.
*/
-  PN_SESSION_REMOTE_CLOSE = PN_EVENT_CATEGORY_SESSION + 5,
+  PN_SESSION_REMOTE_CLOSE = 15,
 
   /**
* The session has been freed and any outstanding processing has
* been completed. This is the final event that will ever be issued
* for a session.
*/
-  PN_SESSION_FINAL = PN_EVENT_CATEGORY_SESSION + 6,
+  PN_SESSION_FINAL = 16,
 
   /**
* The link 

svn commit: r1630822 - in /qpid/proton/branches/examples: proton-c/bindings/python/ proton-c/include/proton/ proton-c/src/engine/ proton-c/src/events/ proton-c/src/messenger/ proton-c/src/ssl/ proton-

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:52:17 2014
New Revision: 1630822

URL: http://svn.apache.org/r1630822
Log:
Added events: PN_CONNECTION_BOUND/UNBOUND, PN_TRANSPORT_HEAD_CLOSED, 
PN_TRANSPORT_TAIL_CLOSED, PN_TRANSPORT_CLOSED, and PN_TRANSPORT_ERROR. This 
should address PROTON-656

Added:
qpid/proton/branches/examples/tests/python/proton_tests/scratch.py
Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/proton-c/include/proton/event.h
qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h
qpid/proton/branches/examples/proton-c/src/events/event.c
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
qpid/proton/branches/examples/proton-c/src/ssl/openssl.c
qpid/proton/branches/examples/proton-c/src/transport/transport.c

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py
qpid/proton/branches/examples/tests/python/proton_tests/engine.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630822r1=1630821r2=1630822view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:52:17 2014
@@ -3363,6 +3363,8 @@ class Collector:
 class Event:
 
   CONNECTION_INIT = PN_CONNECTION_INIT
+  CONNECTION_BOUND = PN_CONNECTION_BOUND
+  CONNECTION_UNBOUND = PN_CONNECTION_UNBOUND
   CONNECTION_OPEN = PN_CONNECTION_OPEN
   CONNECTION_CLOSE = PN_CONNECTION_CLOSE
   CONNECTION_REMOTE_OPEN = PN_CONNECTION_REMOTE_OPEN
@@ -3385,7 +3387,12 @@ class Event:
   LINK_FINAL = PN_LINK_FINAL
 
   DELIVERY = PN_DELIVERY
+
   TRANSPORT = PN_TRANSPORT
+  TRANSPORT_ERROR = PN_TRANSPORT_ERROR
+  TRANSPORT_HEAD_CLOSED = PN_TRANSPORT_HEAD_CLOSED
+  TRANSPORT_TAIL_CLOSED = PN_TRANSPORT_TAIL_CLOSED
+  TRANSPORT_CLOSED = PN_TRANSPORT_CLOSED
 
   def __init__(self, clazz, context, type):
 self.clazz = clazz

Modified: qpid/proton/branches/examples/proton-c/include/proton/event.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/event.h?rev=1630822r1=1630821r2=1630822view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/event.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/event.h Fri Oct 10 
12:52:17 2014
@@ -91,130 +91,148 @@ typedef enum {
* will ever be issued for a connection. Events of this type point
* to the relevant connection.
*/
-  PN_CONNECTION_INIT = 1,
+  PN_CONNECTION_INIT,
+
+  /**
+   * The connection has been bound to a transport.
+   */
+  PN_CONNECTION_BOUND,
+
+  /**
+   * The connection has been unbound from its transport.
+   */
+  PN_CONNECTION_UNBOUND,
 
   /**
* The local connection endpoint has been closed. Events of this
* type point to the relevant connection.
*/
-  PN_CONNECTION_OPEN = 2,
+  PN_CONNECTION_OPEN,
 
   /**
* The remote endpoint has opened the connection. Events of this
* type point to the relevant connection.
*/
-  PN_CONNECTION_REMOTE_OPEN = 3,
+  PN_CONNECTION_REMOTE_OPEN,
 
   /**
* The local connection endpoint has been closed. Events of this
* type point to the relevant connection.
*/
-  PN_CONNECTION_CLOSE = 4,
+  PN_CONNECTION_CLOSE,
 
   /**
*  The remote endpoint has closed the connection. Events of this
*  type point to the relevant connection.
*/
-  PN_CONNECTION_REMOTE_CLOSE = 5,
+  PN_CONNECTION_REMOTE_CLOSE,
 
   /**
* The connection has been freed and any outstanding processing has
* been completed. This is the final event that will ever be issued
* for a connection.
*/
-  PN_CONNECTION_FINAL = 6,
+  PN_CONNECTION_FINAL,
 
   /**
* The session has been created. This is the first event that will
* ever be issued for a session.
*/
-  PN_SESSION_INIT = 11,
+  PN_SESSION_INIT,
 
   /**
* The local session endpoint has been opened. Events of this type
* point ot the relevant session.
*/
-  PN_SESSION_OPEN = 12,
+  PN_SESSION_OPEN,
 
   /**
* The remote endpoint has opened the session. Events of this type
* point to the relevant session.
*/
-  PN_SESSION_REMOTE_OPEN = 13,
+  PN_SESSION_REMOTE_OPEN,
 
   /**
* The local session endpoint has been closed. Events of this type
* point ot the relevant session.
*/
-  PN_SESSION_CLOSE = 14,
+  PN_SESSION_CLOSE,
 
   

svn commit: r1630823 - /qpid/proton/branches/examples/CMakeLists.txt

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:52:33 2014
New Revision: 1630823

URL: http://svn.apache.org/r1630823
Log:
removed sysinstall warning

Modified:
qpid/proton/branches/examples/CMakeLists.txt

Modified: qpid/proton/branches/examples/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/CMakeLists.txt?rev=1630823r1=1630822r2=1630823view=diff
==
--- qpid/proton/branches/examples/CMakeLists.txt (original)
+++ qpid/proton/branches/examples/CMakeLists.txt Fri Oct 10 12:52:33 2014
@@ -85,12 +85,7 @@ mark_as_advanced (INCLUDE_INSTALL_DIR LI
 # system specified locations.
 set (BINDINGS_DIR ${LIB_INSTALL_DIR}/proton/bindings)
 
-set (SYSINSTALL_BINDINGS *UNSPECIFIED* CACHE BOOL If SYSINSTALL_BINDINGS is 
OFF then proton bindings will be installed underneath ${BINDINGS_DIR} and each 
user will need to modify their interpreter configuration to load the 
appropriate binding. If SYSINSTALL_BINDINGS is ON, then each language 
interpreter will be queried for the appropriate directory and proton bindings 
will be installed and available system wide with no additional per user 
configuration.)
-
-if (SYSINSTALL_BINDINGS STREQUAL *UNSPECIFIED*)
-  message(WARNING SYSINSTALL_BINDINGS is unspecified, defaulting it to OFF. 
Please note that the default install behaviour of proton has changed. Proton 
bindings by default will now be installed under ${BINDINGS_DIR} and will no 
longer be found by system interpreters. This means that every user will be 
required to manually configure their interpreters to locate the proton 
bindings. If you wish proton bindings to be installed into the interpreter 
specified locations as was the default in prior releases, please specify 
-DSYSINSTALL_BINDINGS=ON)
-  set (SYSINSTALL_BINDINGS OFF)
-endif ()
+set (SYSINSTALL_BINDINGS OFF CACHE BOOL If SYSINSTALL_BINDINGS is OFF then 
proton bindings will be installed underneath ${BINDINGS_DIR} and each user will 
need to modify their interpreter configuration to load the appropriate binding. 
If SYSINSTALL_BINDINGS is ON, then each language interpreter will be queried 
for the appropriate directory and proton bindings will be installed and 
available system wide with no additional per user configuration.)
 
 set (BINDING_LANGS PERL PHP PYTHON RUBY)
 



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630824 - in /qpid/proton/branches/examples/proton-c: bindings/python/cproton.i bindings/python/proton.py include/proton/object.h src/object/object.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:53:38 2014
New Revision: 1630824

URL: http://svn.apache.org/r1630824
Log:
fixed refcounting bug for posting python objects to a collector

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/proton-c/include/proton/object.h
qpid/proton/branches/examples/proton-c/src/object/object.c

Modified: qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/cproton.i?rev=1630824r1=1630823r2=1630824view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/cproton.i (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/cproton.i Fri Oct 10 
12:53:38 2014
@@ -227,7 +227,38 @@ bool pn_ssl_get_protocol_name(pn_ssl_t *
 int pn_ssl_get_peer_hostname(pn_ssl_t *ssl, char *OUTPUT, size_t *OUTPUT_SIZE);
 %ignore pn_ssl_get_peer_hostname;
 
+%immutable PN_PYREF;
 %inline %{
+  PN_EXTERN extern const pn_class_t *PN_PYREF;
+
+  #define CID_pn_pyref CID_pn_void
+  #define pn_pyref_new NULL
+  #define pn_pyref_initialize NULL
+  #define pn_pyref_finalize NULL
+  #define pn_pyref_free NULL
+  #define pn_pyref_hashcode pn_void_hashcode
+  #define pn_pyref_compare pn_void_compare
+  #define pn_pyref_inspect pn_void_inspect
+
+  static void pn_pyref_incref(void *object) {
+Py_XINCREF(object);
+  }
+
+  static void pn_pyref_decref(void *object) {
+Py_XDECREF(object);
+  }
+
+  static int pn_pyref_refcount(void *object) {
+return 1;
+  }
+
+  static const pn_class_t *pn_pyref_reify(void *object) {
+return PN_PYREF;
+  }
+
+  PN_EXTERN const pn_class_t PNI_PYREF = PN_METACLASS(pn_pyref);
+  PN_EXTERN const pn_class_t *PN_PYREF = PNI_PYREF;
+
   void *pn_py2void(PyObject *object) {
 return object;
   }

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630824r1=1630823r2=1630824view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:53:38 2014
@@ -3326,6 +3326,7 @@ class SSLSessionDetails(object):
 
 wrappers = {
   pn_void: lambda x: pn_void2py(x),
+  pn_pyref: lambda x: pn_void2py(x),
   pn_connection: lambda x: 
Connection._wrap_connection(pn_cast_pn_connection(x)),
   pn_session: lambda x: Session._wrap_session(pn_cast_pn_session(x)),
   pn_link: lambda x: Link._wrap_link(pn_cast_pn_link(x)),
@@ -3340,7 +3341,7 @@ class Collector:
 self._contexts = set()
 
   def put(self, obj, etype):
-pn_collector_put(self._impl, PN_VOID, pn_py2void(obj), etype)
+pn_collector_put(self._impl, PN_PYREF, pn_py2void(obj), etype)
 
   def peek(self):
 event = pn_collector_peek(self._impl)

Modified: qpid/proton/branches/examples/proton-c/include/proton/object.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/object.h?rev=1630824r1=1630823r2=1630824view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/object.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/object.h Fri Oct 10 
12:53:38 2014
@@ -109,6 +109,10 @@ PN_EXTERN intptr_t pn_class_compare(cons
 PN_EXTERN bool pn_class_equals(const pn_class_t *clazz, void *a, void *b);
 PN_EXTERN int pn_class_inspect(const pn_class_t *clazz, void *object, 
pn_string_t *dst);
 
+PN_EXTERN uintptr_t pn_void_hashcode(void *object);
+PN_EXTERN intptr_t pn_void_compare(void *a, void *b);
+PN_EXTERN int pn_void_inspect(void *object, pn_string_t *dst);
+
 PN_EXTERN void *pn_object_new(const pn_class_t *clazz, size_t size);
 PN_EXTERN const pn_class_t *pn_object_reify(void *object);
 PN_EXTERN void pn_object_incref(void *object);

Modified: qpid/proton/branches/examples/proton-c/src/object/object.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/object/object.c?rev=1630824r1=1630823r2=1630824view=diff
==
--- qpid/proton/branches/examples/proton-c/src/object/object.c (original)
+++ qpid/proton/branches/examples/proton-c/src/object/object.c Fri Oct 10 
12:53:38 2014
@@ -40,9 +40,9 @@ static int pn_void_refcount(void *object
 #define pn_void_finalize NULL
 static void pn_void_free(void *object) { free(object); }
 static const pn_class_t *pn_void_reify(void *object) { return PN_VOID; }
-static uintptr_t pn_void_hashcode(void *object) { return (uintptr_t) object; }
-static intptr_t pn_void_compare(void *a, void *b) { return (intptr_t) b - 

svn commit: r1630826 - in /qpid/proton/branches/examples/proton-c/src/windows: iocp.c selector.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:53:55 2014
New Revision: 1630826

URL: http://svn.apache.org/r1630826
Log:
QPID-690: object/list/hash changes affecting Windows components

Modified:
qpid/proton/branches/examples/proton-c/src/windows/iocp.c
qpid/proton/branches/examples/proton-c/src/windows/selector.c

Modified: qpid/proton/branches/examples/proton-c/src/windows/iocp.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/iocp.c?rev=1630826r1=1630825r2=1630826view=diff
==
--- qpid/proton/branches/examples/proton-c/src/windows/iocp.c (original)
+++ qpid/proton/branches/examples/proton-c/src/windows/iocp.c Fri Oct 10 
12:53:55 2014
@@ -191,7 +191,7 @@ struct pni_acceptor_t {
 static void pni_acceptor_initialize(void *object)
 {
   pni_acceptor_t *acceptor = (pni_acceptor_t *) object;
-  acceptor-accepts = pn_list(PN_OBJECT, IOCP_MAX_ACCEPTS);
+  acceptor-accepts = pn_list(PN_VOID, IOCP_MAX_ACCEPTS);
 }
 
 static void pni_acceptor_finalize(void *object)
@@ -199,7 +199,7 @@ static void pni_acceptor_finalize(void *
   pni_acceptor_t *acceptor = (pni_acceptor_t *) object;
   size_t len = pn_list_size(acceptor-accepts);
   for (size_t i = 0; i  len; i++)
-pn_free(pn_list_get(acceptor-accepts, i));
+free(pn_list_get(acceptor-accepts, i));
   pn_free(acceptor-accepts);
 }
 
@@ -221,7 +221,7 @@ static void begin_accept(pni_acceptor_t 
 {
   if (acceptor-listen_sock-closing) {
 if (result) {
-  pn_free(result);
+  free(result);
   acceptor-accept_queue_size--;
 }
 if (acceptor-accept_queue_size == 0)
@@ -272,7 +272,7 @@ static void complete_accept(accept_resul
   if (ld-read_closed) {
 if (!result-new_sock-closing)
   pni_iocp_begin_close(result-new_sock);
-pn_free(result);// discard
+free(result);// discard
 reap_check(ld);
   } else {
 result-base.status = status;
@@ -985,7 +985,7 @@ static void drain_zombie_completions(ioc
 static pn_list_t *iocp_map_close_all(iocp_t *iocp)
 {
   // Zombify stragglers, i.e. no pn_close() from the application.
-  pn_list_t *externals = pn_list(0, PN_REFCOUNT);
+  pn_list_t *externals = pn_list(PN_OBJECT, 0);
   for (pn_handle_t entry = pn_hash_head(iocp-iocpdesc_map); entry;
entry = pn_hash_next(iocp-iocpdesc_map, entry)) {
 iocpdesc_t *iocpd = (iocpdesc_t *) pn_hash_value(iocp-iocpdesc_map, 
entry);
@@ -1103,8 +1103,8 @@ void pni_iocp_initialize(void *obj)
   pni_shared_pool_create(iocp);
   iocp-completion_port = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 
0, 0);
   assert(iocp-completion_port != NULL);
-  iocp-iocpdesc_map = pn_hash(0, 0.75, PN_REFCOUNT);
-  iocp-zombie_list = pn_list(0, PN_REFCOUNT);
+  iocp-iocpdesc_map = pn_hash(PN_OBJECT, 0, 0.75);
+  iocp-zombie_list = pn_list(PN_OBJECT, 0);
   iocp-iocp_trace = pn_env_bool(PN_TRACE_DRV);
   iocp-selector = NULL;
 }

Modified: qpid/proton/branches/examples/proton-c/src/windows/selector.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/selector.c?rev=1630826r1=1630825r2=1630826view=diff
==
--- qpid/proton/branches/examples/proton-c/src/windows/selector.c (original)
+++ qpid/proton/branches/examples/proton-c/src/windows/selector.c Fri Oct 10 
12:53:55 2014
@@ -65,8 +65,8 @@ void pn_selector_initialize(void *obj)
   selector-iocp = NULL;
   selector-deadlines = NULL;
   selector-capacity = 0;
-  selector-selectables = pn_list(0, 0);
-  selector-iocp_descriptors = pn_list(0, PN_REFCOUNT);
+  selector-selectables = pn_list(PN_WEAKREF, 0);
+  selector-iocp_descriptors = pn_list(PN_OBJECT, 0);
   selector-deadline = 0;
   selector-current = 0;
   selector-current_triggered = NULL;



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630825 - in /qpid/proton/branches/examples/proton-c: bindings/python/cproton.i src/windows/iocp.c src/windows/write_pipeline.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:53:51 2014
New Revision: 1630825

URL: http://svn.apache.org/r1630825
Log:
PROTON-???: Make previous changes compile under Windows

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
qpid/proton/branches/examples/proton-c/src/windows/iocp.c
qpid/proton/branches/examples/proton-c/src/windows/write_pipeline.c

Modified: qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/cproton.i?rev=1630825r1=1630824r2=1630825view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/cproton.i (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/cproton.i Fri Oct 10 
12:53:51 2014
@@ -229,7 +229,7 @@ int pn_ssl_get_peer_hostname(pn_ssl_t *s
 
 %immutable PN_PYREF;
 %inline %{
-  PN_EXTERN extern const pn_class_t *PN_PYREF;
+  extern const pn_class_t *PN_PYREF;
 
   #define CID_pn_pyref CID_pn_void
   #define pn_pyref_new NULL
@@ -256,8 +256,8 @@ int pn_ssl_get_peer_hostname(pn_ssl_t *s
 return PN_PYREF;
   }
 
-  PN_EXTERN const pn_class_t PNI_PYREF = PN_METACLASS(pn_pyref);
-  PN_EXTERN const pn_class_t *PN_PYREF = PNI_PYREF;
+  const pn_class_t PNI_PYREF = PN_METACLASS(pn_pyref);
+  const pn_class_t *PN_PYREF = PNI_PYREF;
 
   void *pn_py2void(PyObject *object) {
 return object;

Modified: qpid/proton/branches/examples/proton-c/src/windows/iocp.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/iocp.c?rev=1630825r1=1630824r2=1630825view=diff
==
--- qpid/proton/branches/examples/proton-c/src/windows/iocp.c (original)
+++ qpid/proton/branches/examples/proton-c/src/windows/iocp.c Fri Oct 10 
12:53:51 2014
@@ -30,7 +30,7 @@
 #include Ws2tcpip.h
 #define PN_WINAPI
 
-#include ../platform.h
+#include platform.h
 #include proton/object.h
 #include proton/io.h
 #include proton/selector.h
@@ -205,6 +205,7 @@ static void pni_acceptor_finalize(void *
 
 static pni_acceptor_t *pni_acceptor(iocpdesc_t *iocpd)
 {
+  static const pn_cid_t CID_pni_acceptor = CID_pn_void;
   static const pn_class_t clazz = PN_CLASS(pni_acceptor);
   pni_acceptor_t *acceptor = (pni_acceptor_t *) pn_class_new(clazz, 
sizeof(pni_acceptor_t));
   acceptor-listen_sock = iocpd;
@@ -363,6 +364,7 @@ static void connect_result_finalize(void
 }
 
 static connect_result_t *connect_result(iocpdesc_t *iocpd, struct addrinfo 
*addr) {
+  static const pn_cid_t CID_connect_result = CID_pn_void;
   static const pn_class_t clazz = PN_CLASS(connect_result);
   connect_result_t *result = (connect_result_t *) pn_class_new(clazz, 
sizeof(connect_result_t));
   if (result) {
@@ -729,6 +731,7 @@ static uintptr_t pni_iocpdesc_hashcode(v
 // Reference counted in the iocpdesc map, zombie_list, selector.
 static iocpdesc_t *pni_iocpdesc(pn_socket_t s)
 {
+  static const pn_cid_t CID_pni_iocpdesc = CID_pn_void;
   static pn_class_t clazz = PN_CLASS(pni_iocpdesc);
   assert (s != INVALID_SOCKET);
   iocpdesc_t *iocpd = (iocpdesc_t *) pn_class_new(clazz, sizeof(iocpdesc_t));
@@ -1131,6 +1134,7 @@ void pni_iocp_finalize(void *obj)
 
 iocp_t *pni_iocp()
 {
+  static const pn_cid_t CID_pni_iocp = CID_pn_void;
   static const pn_class_t clazz = PN_CLASS(pni_iocp);
   iocp_t *iocp = (iocp_t *) pn_class_new(clazz, sizeof(iocp_t));
   return iocp;

Modified: qpid/proton/branches/examples/proton-c/src/windows/write_pipeline.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/write_pipeline.c?rev=1630825r1=1630824r2=1630825view=diff
==
--- qpid/proton/branches/examples/proton-c/src/windows/write_pipeline.c 
(original)
+++ qpid/proton/branches/examples/proton-c/src/windows/write_pipeline.c Fri Oct 
10 12:53:51 2014
@@ -168,6 +168,7 @@ static void write_pipeline_finalize(void
 
 write_pipeline_t *pni_write_pipeline(iocpdesc_t *iocpd)
 {
+  static const pn_cid_t CID_write_pipeline = CID_pn_void;
   static const pn_class_t clazz = PN_CLASS(write_pipeline);
   write_pipeline_t *pipeline = (write_pipeline_t *) pn_class_new(clazz, 
sizeof(write_pipeline_t));
   pipeline-iocpd = iocpd;



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630829 - in /qpid/proton/branches/examples/proton-c: include/proton/messenger.h src/messenger/messenger.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:54:13 2014
New Revision: 1630829

URL: http://svn.apache.org/r1630829
Log:
PROTON-670: applied patch from dominic for link accessors

Modified:
qpid/proton/branches/examples/proton-c/include/proton/messenger.h
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c

Modified: qpid/proton/branches/examples/proton-c/include/proton/messenger.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/messenger.h?rev=1630829r1=1630828r2=1630829view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/messenger.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/messenger.h Fri Oct 
10 12:54:13 2014
@@ -752,6 +752,16 @@ PN_EXTERN int pn_messenger_accept(pn_mes
 PN_EXTERN int pn_messenger_reject(pn_messenger_t *messenger, pn_tracker_t 
tracker, int flags);
 
 /**
+ * Get  link for the message referenced by the given tracker.
+ *
+ * @param[in] messenger a messenger object
+ * @param[in] tracker a tracker object
+ * @return a pn_link_t or NULL if the link could not be determined.
+ */
+PN_EXTERN pn_link_t *pn_messenger_tracker_link(pn_messenger_t *messenger,
+   pn_tracker_t tracker);
+
+/**
  * Get the number of messages in the outgoing message queue of a
  * messenger.
  *

Modified: qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/messenger.c?rev=1630829r1=1630828r2=1630829view=diff
==
--- qpid/proton/branches/examples/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/branches/examples/proton-c/src/messenger/messenger.c Fri Oct 10 
12:54:13 2014
@@ -2188,6 +2188,20 @@ int pn_messenger_reject(pn_messenger_t *
   PN_STATUS_REJECTED, flags, false, false);
 }
 
+PN_EXTERN pn_link_t *pn_messenger_tracker_link(pn_messenger_t *messenger,
+   pn_tracker_t tracker)
+{
+  pni_store_t *store = pn_tracker_store(messenger, tracker);
+  pni_entry_t *e = pni_store_entry(store, pn_tracker_sequence(tracker));
+  if (e) {
+pn_delivery_t *d = pni_entry_get_delivery(e);
+if (d) {
+  return pn_delivery_link(d);
+}
+  }
+  return NULL;
+}
+
 int pn_messenger_queued(pn_messenger_t *messenger, bool sender)
 {
   if (!messenger) return 0;



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630827 - /qpid/proton/branches/examples/proton-c/bindings/python/cproton.i

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:54:02 2014
New Revision: 1630827

URL: http://svn.apache.org/r1630827
Log:
PROTON-???: Fix the new python extension code to work with earlier pythons

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/cproton.i

Modified: qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/cproton.i?rev=1630827r1=1630826r2=1630827view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/cproton.i (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/cproton.i Fri Oct 10 
12:54:02 2014
@@ -241,11 +241,13 @@ int pn_ssl_get_peer_hostname(pn_ssl_t *s
   #define pn_pyref_inspect pn_void_inspect
 
   static void pn_pyref_incref(void *object) {
-Py_XINCREF(object);
+PyObject* p = (PyObject*) object;
+Py_XINCREF(p);
   }
 
   static void pn_pyref_decref(void *object) {
-Py_XDECREF(object);
+PyObject* p = (PyObject*) object;
+Py_XDECREF(p);
   }
 
   static int pn_pyref_refcount(void *object) {



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630830 - in /qpid/proton/branches/examples/proton-c: include/proton/messenger.h src/messenger/messenger.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:54:19 2014
New Revision: 1630830

URL: http://svn.apache.org/r1630830
Log:
PROTON-671: patch for settlement modes from dominic

Modified:
qpid/proton/branches/examples/proton-c/include/proton/messenger.h
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c

Modified: qpid/proton/branches/examples/proton-c/include/proton/messenger.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/messenger.h?rev=1630830r1=1630829r2=1630830view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/messenger.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/messenger.h Fri Oct 
10 12:54:19 2014
@@ -25,6 +25,9 @@
 #include proton/import_export.h
 #include proton/message.h
 #include proton/selectable.h
+#include proton/condition.h
+#include proton/terminus.h
+#include proton/link.h
 
 #ifdef __cplusplus
 extern C {
@@ -932,6 +935,24 @@ PN_EXTERN int pn_messenger_set_flags(pn_
  */
 PN_EXTERN int pn_messenger_get_flags(pn_messenger_t *messenger);
 
+/**
+ * Set the local sender settle mode for the underlying link.
+ *
+ * @param[in] messenger the messenger
+ * @param[in] mode the sender settle mode
+ */
+PN_EXTERN int pn_messenger_set_snd_settle_mode(pn_messenger_t *messenger,
+   const pn_snd_settle_mode_t 
mode);
+
+/**
+ * Set the local receiver settle mode for the underlying link.
+ *
+ * @param[in] messenger the messenger
+ * @param[in] mode the receiver settle mode
+ */
+PN_EXTERN int pn_messenger_set_rcv_settle_mode(pn_messenger_t *messenger,
+   const pn_rcv_settle_mode_t 
mode);
+
 #ifdef __cplusplus
 }
 #endif

Modified: qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/messenger.c?rev=1630830r1=1630829r2=1630830view=diff
==
--- qpid/proton/branches/examples/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/branches/examples/proton-c/src/messenger/messenger.c Fri Oct 10 
12:54:19 2014
@@ -101,6 +101,8 @@ struct pn_messenger_t {
   int draining;  // # links in drain state
   int connection_error;
   int flags;
+  pn_snd_settle_mode_t snd_settle_mode;
+  pn_rcv_settle_mode_t rcv_settle_mode;
   bool blocking;
   bool passive;
   bool interrupted;
@@ -645,6 +647,8 @@ pn_messenger_t *pn_messenger(const char 
 m-domain = pn_string(NULL);
 m-connection_error = 0;
 m-flags = 0;
+m-snd_settle_mode = PN_SND_SETTLED;
+m-rcv_settle_mode = PN_RCV_FIRST;
   }
 
   return m;
@@ -1681,9 +1685,9 @@ pn_link_t *pn_messenger_link(pn_messenge
 
   if ((sender  pn_messenger_get_outgoing_window(messenger)) ||
   (!sender  pn_messenger_get_incoming_window(messenger))) {
-// use explicit settlement via dispositions (not pre-settled)
-pn_link_set_snd_settle_mode( link, PN_SND_UNSETTLED );
-pn_link_set_rcv_settle_mode( link, PN_RCV_SECOND );
+// use required settlement (defaults to sending pre-settled messages)
+pn_link_set_snd_settle_mode(link, messenger-snd_settle_mode);
+pn_link_set_rcv_settle_mode(link, messenger-rcv_settle_mode);
   }
   // XXX
   if (pn_streq(name, #)) {
@@ -2263,3 +2267,21 @@ PN_EXTERN int pn_messenger_get_flags(pn_
 {
   return messenger ? messenger-flags : 0;
 }
+
+int pn_messenger_set_snd_settle_mode(pn_messenger_t *messenger,
+ const pn_snd_settle_mode_t mode)
+{
+  if (!messenger)
+return PN_ARG_ERR;
+  messenger-snd_settle_mode = mode;
+  return 0;
+}
+
+int pn_messenger_set_rcv_settle_mode(pn_messenger_t *messenger,
+ const pn_rcv_settle_mode_t mode)
+{
+  if (!messenger)
+return PN_ARG_ERR;
+  messenger-rcv_settle_mode = mode;
+  return 0;
+}



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630828 - in /qpid/proton/branches/examples/proton-c: include/proton/messenger.h src/messenger/messenger.c src/messenger/transform.c src/messenger/transform.h

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:54:08 2014
New Revision: 1630828

URL: http://svn.apache.org/r1630828
Log:
PROTON-669: applied patch from dominic for fail fast checking of messenger 
routes

Modified:
qpid/proton/branches/examples/proton-c/include/proton/messenger.h
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
qpid/proton/branches/examples/proton-c/src/messenger/transform.c
qpid/proton/branches/examples/proton-c/src/messenger/transform.h

Modified: qpid/proton/branches/examples/proton-c/include/proton/messenger.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/messenger.h?rev=1630828r1=1630827r2=1630828view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/messenger.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/messenger.h Fri Oct 
10 12:54:08 2014
@@ -900,6 +900,28 @@ PN_EXTERN pn_timestamp_t pn_messenger_de
  * @}
  */
 
+#define PN_FLAGS_CHECK_ROUTES  
\
+  (0x1) /** Messenger flag to indicate that a call 
\
+to pn_messenger_start should check that
\
+any defined routes are valid */
+
+/** Sets control flags to enable additional function for the Messenger.
+ *
+ * @param[in] messenger the messenger
+ * @param[in] flags 0 or PN_FLAGS_CHECK_ROUTES
+ *
+ * @return an error code of zero if there is no error
+ */
+PN_EXTERN int pn_messenger_set_flags(pn_messenger_t *messenger,
+ const int flags);
+
+/** Gets the flags for a Messenger.
+ *
+ * @param[in] messenger the messenger
+ * @return The flags set for the messenger
+ */
+PN_EXTERN int pn_messenger_get_flags(pn_messenger_t *messenger);
+
 #ifdef __cplusplus
 }
 #endif

Modified: qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/messenger.c?rev=1630828r1=1630827r2=1630828view=diff
==
--- qpid/proton/branches/examples/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/branches/examples/proton-c/src/messenger/messenger.c Fri Oct 10 
12:54:08 2014
@@ -100,6 +100,7 @@ struct pn_messenger_t {
   int receivers; // # receiver links
   int draining;  // # links in drain state
   int connection_error;
+  int flags;
   bool blocking;
   bool passive;
   bool interrupted;
@@ -372,6 +373,10 @@ static pn_listener_ctx_t *pn_listener_ct
   pn_socket_t socket = pn_listen(messenger-io, host, port ? port : 
default_port(scheme));
   if (socket == PN_INVALID_SOCKET) {
 pn_error_copy(messenger-error, pn_io_error(messenger-io));
+pn_error_format(messenger-error, PN_ERR, CONNECTION ERROR (%s:%s): %s\n,
+messenger-address.host, messenger-address.port,
+pn_error_text(messenger-error));
+
 return NULL;
   }
 
@@ -639,6 +644,7 @@ pn_messenger_t *pn_messenger(const char 
 m-rewritten = pn_string(NULL);
 m-domain = pn_string(NULL);
 m-connection_error = 0;
+m-flags = 0;
   }
 
   return m;
@@ -1430,11 +1436,85 @@ int pn_messenger_sync(pn_messenger_t *me
   }
 }
 
+static void pni_parse(pn_address_t *address);
+pn_connection_t *pn_messenger_resolve(pn_messenger_t *messenger,
+  const char *address, char **name);
+int pn_messenger_work(pn_messenger_t *messenger, int timeout);
+
 int pn_messenger_start(pn_messenger_t *messenger)
 {
   if (!messenger) return PN_ARG_ERR;
-  // right now this is a noop
-  return 0;
+
+  int error = 0;
+
+  // When checking of routes is required we attempt to resolve each route
+  // with a substitution that has a defined scheme, address and port. If
+  // any of theses routes is invalid an appropriate error code will be
+  // returned. Currently no attempt is made to check the name part of the
+  // address, as the intent here is to fail fast if the addressed host
+  // is invalid or unavailable.
+  if (messenger-flags | PN_FLAGS_CHECK_ROUTES) {
+pn_list_t *substitutions = pn_list(PN_WEAKREF, 0);
+pn_transform_get_substitutions(messenger-routes, substitutions);
+for (size_t i = 0; i  pn_list_size(substitutions)  error == 0; i++) {
+  pn_string_t *substitution = (pn_string_t *)pn_list_get(substitutions, i);
+  if (substitution) {
+pn_address_t addr;
+addr.text = pn_string(NULL);
+error = pn_string_copy(addr.text, substitution);
+if (!error) {
+  pni_parse(addr);
+  if (addr.scheme  strlen(addr.scheme)  0 
+  !strstr(addr.scheme, $)  addr.host  strlen(addr.host)  0 

+  !strstr(addr.host, $)  addr.port  strlen(addr.port)  0 
+  !strstr(addr.port, $)) {
+pn_string_t *check_addr = 

svn commit: r1630832 - in /qpid/proton/branches/examples/proton-c: include/proton/messenger.h src/messenger/messenger.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:54:31 2014
New Revision: 1630832

URL: http://svn.apache.org/r1630832
Log:
PROTON-673: patch from dominic for messenger accessors for remote idle timeout

Modified:
qpid/proton/branches/examples/proton-c/include/proton/messenger.h
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c

Modified: qpid/proton/branches/examples/proton-c/include/proton/messenger.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/messenger.h?rev=1630832r1=1630831r2=1630832view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/messenger.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/messenger.h Fri Oct 
10 12:54:31 2014
@@ -963,6 +963,17 @@ PN_EXTERN int pn_messenger_set_rcv_settl
 PN_EXTERN void pn_messenger_set_tracer(pn_messenger_t *messenger,
pn_tracer_t tracer);
 
+/**
+ * Gets the remote idle timeout for the specified remote service address
+ *
+ * @param[in] messenger a messenger object
+ * @param[in] address of remote service whose idle timeout is required
+ * @return the timeout in milliseconds or -1 if an error occurs
+ */
+PN_EXTERN pn_millis_t
+pn_messenger_get_remote_idle_timeout(pn_messenger_t *messenger,
+ const char *address);
+
 #ifdef __cplusplus
 }
 #endif

Modified: qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/messenger.c?rev=1630832r1=1630831r2=1630832view=diff
==
--- qpid/proton/branches/examples/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/branches/examples/proton-c/src/messenger/messenger.c Fri Oct 10 
12:54:31 2014
@@ -2297,3 +2297,30 @@ void pn_messenger_set_tracer(pn_messenge
 
   messenger-tracer = tracer;
 }
+
+pn_millis_t pn_messenger_get_remote_idle_timeout(pn_messenger_t *messenger,
+ const char *address)
+{
+  if (!messenger)
+return PN_ARG_ERR;
+
+  pn_address_t addr;
+  addr.text = pn_string(address);
+  pni_parse(addr);
+
+  pn_millis_t timeout = -1;
+  for (size_t i = 0; i  pn_list_size(messenger-connections); i++) {
+pn_connection_t *connection =
+(pn_connection_t *)pn_list_get(messenger-connections, i);
+pn_connection_ctx_t *ctx =
+(pn_connection_ctx_t *)pn_connection_get_context(connection);
+if (pn_streq(addr.scheme, ctx-scheme)  pn_streq(addr.host, ctx-host) 
+pn_streq(addr.port, ctx-port)) {
+  pn_transport_t *transport = pn_connection_transport(connection);
+  if (transport)
+timeout = pn_transport_get_remote_idle_timeout(transport);
+  break;
+}
+  }
+  return timeout;
+}



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630833 - /qpid/proton/branches/examples/proton-c/src/transport/transport.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:54:35 2014
New Revision: 1630833

URL: http://svn.apache.org/r1630833
Log:
PROTON-688: reset transport state on unbind

Modified:
qpid/proton/branches/examples/proton-c/src/transport/transport.c

Modified: qpid/proton/branches/examples/proton-c/src/transport/transport.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/transport/transport.c?rev=1630833r1=1630832r2=1630833view=diff
==
--- qpid/proton/branches/examples/proton-c/src/transport/transport.c (original)
+++ qpid/proton/branches/examples/proton-c/src/transport/transport.c Fri Oct 10 
12:54:35 2014
@@ -191,12 +191,12 @@ static void pni_map_remote_channel(pn_se
   session-state.remote_channel = channel;
 }
 
-void pni_transport_unbind_handles(pn_hash_t *handles);
+void pni_transport_unbind_handles(pn_hash_t *handles, bool reset_state);
 
 static void pni_unmap_remote_channel(pn_session_t *ssn)
 {
   // XXX: should really update link state also
-  pni_transport_unbind_handles(ssn-state.remote_handles);
+  pni_transport_unbind_handles(ssn-state.remote_handles, false);
   pn_transport_t *transport = ssn-connection-transport;
   uint16_t channel = ssn-state.remote_channel;
   ssn-state.remote_channel = -2;
@@ -287,12 +287,14 @@ int pn_transport_bind(pn_transport_t *tr
   return 0;
 }
 
-void pni_transport_unbind_handles(pn_hash_t *handles)
+void pni_transport_unbind_handles(pn_hash_t *handles, bool reset_state)
 {
   for (pn_handle_t h = pn_hash_head(handles); h; h = pn_hash_next(handles, h)) 
{
 uintptr_t key = pn_hash_key(handles, h);
-pn_link_t *link = (pn_link_t *) pn_hash_value(handles, h);
-pn_link_unbound(link);
+if (reset_state) {
+  pn_link_t *link = (pn_link_t *) pn_hash_value(handles, h);
+  pn_link_unbound(link);
+}
 pn_hash_del(handles, key);
   }
 }
@@ -302,8 +304,8 @@ void pni_transport_unbind_channels(pn_ha
   for (pn_handle_t h = pn_hash_head(channels); h; h = pn_hash_next(channels, 
h)) {
 uintptr_t key = pn_hash_key(channels, h);
 pn_session_t *ssn = (pn_session_t *) pn_hash_value(channels, h);
-pni_transport_unbind_handles(ssn-state.local_handles);
-pni_transport_unbind_handles(ssn-state.remote_handles);
+pni_transport_unbind_handles(ssn-state.local_handles, true);
+pni_transport_unbind_handles(ssn-state.remote_handles, true);
 pn_session_unbound(ssn);
 pn_hash_del(channels, key);
   }
@@ -1665,7 +1667,7 @@ bool pn_pointful_buffering(pn_transport_
 
 static void pni_unmap_local_channel(pn_session_t *ssn) {
   // XXX: should really update link state also
-  pni_transport_unbind_handles(ssn-state.local_handles);
+  pni_transport_unbind_handles(ssn-state.local_handles, false);
   pn_transport_t *transport = ssn-connection-transport;
   pn_session_state_t *state = ssn-state;
   uintptr_t channel = state-local_channel;



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630831 - in /qpid/proton/branches/examples/proton-c: include/proton/messenger.h include/proton/transport.h src/messenger/messenger.c src/transport/transport.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:54:25 2014
New Revision: 1630831

URL: http://svn.apache.org/r1630831
Log:
PROTON-672: patch from dominic for setting the tracer from messenger, also 
includes accessor for getting the connection associated with a transport

Modified:
qpid/proton/branches/examples/proton-c/include/proton/messenger.h
qpid/proton/branches/examples/proton-c/include/proton/transport.h
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
qpid/proton/branches/examples/proton-c/src/transport/transport.c

Modified: qpid/proton/branches/examples/proton-c/include/proton/messenger.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/messenger.h?rev=1630831r1=1630830r2=1630831view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/messenger.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/messenger.h Fri Oct 
10 12:54:25 2014
@@ -28,6 +28,7 @@
 #include proton/condition.h
 #include proton/terminus.h
 #include proton/link.h
+#include proton/transport.h
 
 #ifdef __cplusplus
 extern C {
@@ -953,6 +954,15 @@ PN_EXTERN int pn_messenger_set_snd_settl
 PN_EXTERN int pn_messenger_set_rcv_settle_mode(pn_messenger_t *messenger,
const pn_rcv_settle_mode_t 
mode);
 
+/**
+ * Set the tracer associated with a messenger.
+ *
+ * @param[in] messenger a messenger object
+ * @param[in] tracer the tracer callback
+ */
+PN_EXTERN void pn_messenger_set_tracer(pn_messenger_t *messenger,
+   pn_tracer_t tracer);
+
 #ifdef __cplusplus
 }
 #endif

Modified: qpid/proton/branches/examples/proton-c/include/proton/transport.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/transport.h?rev=1630831r1=1630830r2=1630831view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/transport.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/transport.h Fri Oct 
10 12:54:25 2014
@@ -485,6 +485,14 @@ PN_EXTERN uint64_t pn_transport_get_fram
  */
 PN_EXTERN uint64_t pn_transport_get_frames_input(const pn_transport_t 
*transport);
 
+/** Access the AMQP Connection associated with the transport.
+ *
+ * @param[in] transport a transport object
+ * @return the connection context for the transport, or NULL if
+ * none
+ */
+PN_EXTERN pn_connection_t *pn_transport_connection(pn_transport_t *transport);
+
 #ifdef __cplusplus
 }
 #endif

Modified: qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/messenger.c?rev=1630831r1=1630830r2=1630831view=diff
==
--- qpid/proton/branches/examples/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/branches/examples/proton-c/src/messenger/messenger.c Fri Oct 10 
12:54:25 2014
@@ -103,6 +103,7 @@ struct pn_messenger_t {
   int flags;
   pn_snd_settle_mode_t snd_settle_mode;
   pn_rcv_settle_mode_t rcv_settle_mode;
+  pn_tracer_t tracer;
   bool blocking;
   bool passive;
   bool interrupted;
@@ -649,6 +650,7 @@ pn_messenger_t *pn_messenger(const char 
 m-flags = 0;
 m-snd_settle_mode = PN_SND_SETTLED;
 m-rcv_settle_mode = PN_RCV_FIRST;
+m-tracer = NULL;
   }
 
   return m;
@@ -906,6 +908,8 @@ static int pn_transport_config(pn_messen
 {
   pn_connection_ctx_t *ctx = (pn_connection_ctx_t *) 
pn_connection_get_context(connection);
   pn_transport_t *transport = pn_connection_transport(connection);
+  if (messenger-tracer)
+pn_transport_set_tracer(transport, messenger-tracer);
   if (ctx-scheme  !strcmp(ctx-scheme, amqps)) {
 pn_ssl_domain_t *d = pn_ssl_domain(PN_SSL_MODE_CLIENT);
 if (messenger-certificate  messenger-private_key) {
@@ -2285,3 +2289,11 @@ int pn_messenger_set_rcv_settle_mode(pn_
   messenger-rcv_settle_mode = mode;
   return 0;
 }
+
+void pn_messenger_set_tracer(pn_messenger_t *messenger, pn_tracer_t tracer)
+{
+  assert(messenger);
+  assert(tracer);
+
+  messenger-tracer = tracer;
+}

Modified: qpid/proton/branches/examples/proton-c/src/transport/transport.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/transport/transport.c?rev=1630831r1=1630830r2=1630831view=diff
==
--- qpid/proton/branches/examples/proton-c/src/transport/transport.c (original)
+++ qpid/proton/branches/examples/proton-c/src/transport/transport.c Fri Oct 10 
12:54:25 2014
@@ -2198,3 +2198,9 @@ bool pn_transport_closed(pn_transport_t 
   ssize_t pending = pn_transport_pending(transport);
   return capacity  0  pending  0;
 }
+
+pn_connection_t *pn_transport_connection(pn_transport_t *transport)
+{
+ 

svn commit: r1630834 - in /qpid/proton/branches/examples: proton-c/bindings/python/cproton.i proton-c/bindings/python/proton.py tests/python/proton_tests/__init__.py tests/python/proton_tests/url.py

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:54:43 2014
New Revision: 1630834

URL: http://svn.apache.org/r1630834
Log:
PROTON-693: Python Url class to wrap C function pni_parse_url

Also added unit tests.

Added:
qpid/proton/branches/examples/tests/python/proton_tests/url.py
Modified:
qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/tests/python/proton_tests/__init__.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/cproton.i?rev=1630834r1=1630833r2=1630834view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/cproton.i (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/cproton.i Fri Oct 10 
12:54:43 2014
@@ -280,4 +280,41 @@ int pn_ssl_get_peer_hostname(pn_ssl_t *s
   }
 %}
 
+
+/**
+   pni_parse_url(char* url, char **scheme, char **user, char **pass, char 
**host, char **port, char **path)
+   The following type maps convert this into a python function that taks a URL 
string argument
+   and returns a list of strings [scheme, user, pass, host, port, path]
+   This probably could be done more neatly.
+*/
+
+// Typemap to copy the url string as it will be modified by parse_url
+%typemap(in,noblock=1,fragment=SWIG_AsCharPtrAndSize) char *url (int res, 
char *t = 0, size_t n = 0, int alloc = 0) {
+  res = SWIG_AsCharPtrAndSize($input, t, n, alloc);
+  if (!SWIG_IsOK(res)) {
+%argument_fail(res, char *url, $symname, $argnum);
+  }
+  $1 = %new_array(n, $*1_ltype);
+  memcpy($1,t,sizeof(char)*n);
+  if (alloc == SWIG_NEWOBJ) %delete_array(t);
+  $1[n-1] = 0;
+}
+%typemap(freearg,match=in) char *url free($1);;
+%typemap(argout) char *url ;
+
+// Typemap for char** return strings. Don't free them.
+%typemap(in,numinputs=0) char **OUTSTR($*1_ltype temp = 0) $1 = temp;;
+%typemap(freearg,match=in) char **OUTSTR ;
+%typemap(argout,noblock=1,fragment=SWIG_FromCharPtr) char **OUTSTR {
+%append_output(SWIG_FromCharPtr(*$1));
+}
+
+// Typemap to initialize result as empty list
+%typemap(out) void $result = PyList_New(0);;
+
+
+%apply char** OUTSTR {char **scheme, char **user, char **pass, char **host, 
char **port, char **path};
+void pni_parse_url(char* url, char **scheme, char **user, char **pass, char 
**host, char **port, char **path);
+%ignore pni_parse_url;
+
 %include proton/cproton.i

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630834r1=1630833r2=1630834view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:54:43 2014
@@ -3654,3 +3654,117 @@ __all__ = [
timestamp,
ulong
]
+
+
+class Url(object):
+
+Simple URL parser/constructor, handles URLs of the form:
+
+  scheme://user:password@host:port/path
+
+All components can be None if not specifeid in the URL string.
+
+The port can be specified as a service name, e.g. 'amqp' in the
+URL string but Url.port always gives the integer value.
+
+@ivar scheme: Url scheme e.g. 'amqp' or 'amqps'
+@ivar user: Username
+@ivar password: Password
+@ivar host: Host name, ipv6 literal or ipv4 dotted quad.
+@ivar port: Integer port.
+@ivar host_port: Returns host:port
+
+
+AMQPS = amqps
+AMQP = amqp
+
+class Port(int):
+  An integer port number that can also have an associated service name 
string
+
+  def __new__(cls, value):
+port = super(Url.Port, cls).__new__(cls, cls.port_int(value))
+setattr(port, 'name', str(value))
+return port
+
+  def __eq__(self, x): return str(self) == x or int(self) == x
+  def __ne__(self, x): return not self == x
+  def __str__(self): return str(self.name)
+
+  @staticmethod
+  def port_int(value):
+Convert service, an integer or a service name, into an integer port 
number.
+try:
+  return int(value)
+except ValueError:
+  try:
+return socket.getservbyname(value)
+  except socket.error:
+raise ValueError(Not a valid port number or service name: '%s' % 
value)
+
+def __init__(self, url=None, **kwargs):
+
+@param url: String or Url instance to parse or copy.
+@param kwargs: URL fields: scheme, user, password, host, port, path.
+If specified, replaces corresponding component in url.
+
+
+fields = ['scheme', 'user', 'password', 'host', 'port', 'path']
+
+for f in fields: setattr(self, f, 

svn commit: r1630835 - in /qpid/proton/branches/examples/proton-c: include/proton/messenger.h src/messenger/messenger.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:54:48 2014
New Revision: 1630835

URL: http://svn.apache.org/r1630835
Log:
PROTON-674: patch from dominic for setting ttl on a subscription

Modified:
qpid/proton/branches/examples/proton-c/include/proton/messenger.h
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c

Modified: qpid/proton/branches/examples/proton-c/include/proton/messenger.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/messenger.h?rev=1630835r1=1630834r2=1630835view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/messenger.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/messenger.h Fri Oct 
10 12:54:48 2014
@@ -472,6 +472,20 @@ PN_EXTERN bool pn_messenger_stopped(pn_m
 PN_EXTERN pn_subscription_t *pn_messenger_subscribe(pn_messenger_t *messenger, 
const char *source);
 
 /**
+ * Subscribes a messenger to messages from the specified source with the given
+ * timeout for the subscription's lifetime.
+ *
+ * @param[in] messenger the messenger to subscribe
+ * @param[in] source
+ * @param[in] timeout the maximum time to keep the subscription alive once the
+ *link is closed.
+ * @return a subscription
+ */
+PN_EXTERN pn_subscription_t *
+pn_messenger_subscribe_ttl(pn_messenger_t *messenger, const char *source,
+   pn_seconds_t timeout);
+
+/**
  * Get a subscription's application context.
  *
  * See ::pn_subscription_set_context().

Modified: qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/messenger.c?rev=1630835r1=1630834r2=1630835view=diff
==
--- qpid/proton/branches/examples/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/branches/examples/proton-c/src/messenger/messenger.c Fri Oct 10 
12:54:48 2014
@@ -1656,7 +1656,8 @@ pn_connection_t *pn_messenger_resolve(pn
   return connection;
 }
 
-pn_link_t *pn_messenger_link(pn_messenger_t *messenger, const char *address, 
bool sender)
+pn_link_t *pn_messenger_link(pn_messenger_t *messenger, const char *address,
+ bool sender, pn_seconds_t timeout)
 {
   char *name = NULL;
   pn_connection_t *connection = pn_messenger_resolve(messenger, address, 
name);
@@ -1705,6 +1706,14 @@ pn_link_t *pn_messenger_link(pn_messenge
 pn_terminus_set_address(pn_link_source(link), name);
   }
   link_ctx_setup( messenger, connection, link );
+
+  if (timeout  0) {
+pn_terminus_set_expiry_policy(pn_link_target(link), PN_EXPIRE_WITH_LINK);
+pn_terminus_set_expiry_policy(pn_link_source(link), PN_EXPIRE_WITH_LINK);
+pn_terminus_set_timeout(pn_link_target(link), timeout);
+pn_terminus_set_timeout(pn_link_source(link), timeout);
+  }
+
   if (!sender) {
 pn_link_ctx_t *ctx = (pn_link_ctx_t *)pn_link_get_context(link);
 assert( ctx );
@@ -1715,18 +1724,27 @@ pn_link_t *pn_messenger_link(pn_messenge
   return link;
 }
 
-pn_link_t *pn_messenger_source(pn_messenger_t *messenger, const char *source)
+pn_link_t *pn_messenger_source(pn_messenger_t *messenger, const char *source,
+   pn_seconds_t timeout)
 {
-  return pn_messenger_link(messenger, source, false);
+  return pn_messenger_link(messenger, source, false, timeout);
 }
 
-pn_link_t *pn_messenger_target(pn_messenger_t *messenger, const char *target)
+pn_link_t *pn_messenger_target(pn_messenger_t *messenger, const char *target,
+   pn_seconds_t timeout)
 {
-  return pn_messenger_link(messenger, target, true);
+  return pn_messenger_link(messenger, target, true, timeout);
 }
 
 pn_subscription_t *pn_messenger_subscribe(pn_messenger_t *messenger, const 
char *source)
 {
+  return pn_messenger_subscribe_ttl(messenger, source, 0);
+}
+
+pn_subscription_t *pn_messenger_subscribe_ttl(pn_messenger_t *messenger,
+  const char *source,
+  pn_seconds_t timeout)
+{
   pni_route(messenger, source);
   if (pn_error_code(messenger-error)) return NULL;
 
@@ -1743,7 +1761,7 @@ pn_subscription_t *pn_messenger_subscrib
   return NULL;
 }
   } else {
-pn_link_t *src = pn_messenger_source(messenger, source);
+pn_link_t *src = pn_messenger_source(messenger, source, timeout);
 if (!src) return NULL;
 pn_link_ctx_t *ctx = (pn_link_ctx_t *) pn_link_get_context( src );
 return ctx ? ctx-subscription : NULL;
@@ -1916,7 +1934,7 @@ int pn_messenger_put(pn_messenger_t *mes
 } else {
   pni_restore(messenger, msg);
   pn_buffer_append(buf, encoded, size); // XXX
-  pn_link_t *sender = pn_messenger_target(messenger, address);
+  pn_link_t *sender = pn_messenger_target(messenger, address, 0);
   if (!sender) {
  

svn commit: r1630838 - in /qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms: AutoOutboundTransformer.java JMSMappingOutboundTransformer.java OutboundTransforme

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:55:10 2014
New Revision: 1630838

URL: http://svn.apache.org/r1630838
Log:
PROTON-694: split conversion and encoding during outbound transformation to 
allow calling separately

Applied patch from Clebert Suconic

Modified:

qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/AutoOutboundTransformer.java

qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java

qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/OutboundTransformer.java

Modified: 
qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/AutoOutboundTransformer.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/AutoOutboundTransformer.java?rev=1630838r1=1630837r2=1630838view=diff
==
--- 
qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/AutoOutboundTransformer.java
 (original)
+++ 
qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/AutoOutboundTransformer.java
 Fri Oct 10 12:55:10 2014
@@ -24,8 +24,11 @@ import javax.jms.Message;
 */
 public class AutoOutboundTransformer extends JMSMappingOutboundTransformer {
 
+private final JMSMappingOutboundTransformer transformer;
+
 public AutoOutboundTransformer(JMSVendor vendor) {
 super(vendor);
+transformer = new JMSMappingOutboundTransformer(vendor);
 }
 
 @Override
@@ -39,7 +42,7 @@ public class AutoOutboundTransformer ext
 return null;
 }
 } else {
-return JMSMappingOutboundTransformer.transform(this, msg);
+return transformer.transform(msg);
 }
 }
 

Modified: 
qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java?rev=1630838r1=1630837r2=1630838view=diff
==
--- 
qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java
 (original)
+++ 
qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java
 Fri Oct 10 12:55:10 2014
@@ -36,14 +36,10 @@ import java.util.Enumeration;
 import java.util.HashMap;
 
 /**
-* @author a href=http://hiramchirino.com;Hiram Chirino/a
-*/
+ * @author a href=http://hiramchirino.com;Hiram Chirino/a
+ */
 public class JMSMappingOutboundTransformer extends OutboundTransformer {
 
-String prefixDeliveryAnnotations = DA_;
-String prefixMessageAnnotations= MA_;
-String prefixFooter = FT_;
-
 public JMSMappingOutboundTransformer(JMSVendor vendor) {
 super(vendor);
 }
@@ -59,30 +55,37 @@ public class JMSMappingOutboundTransform
 } catch (MessageFormatException e) {
 return null;
 }
-return transform(this, msg);
-}
-
-static EncodedMessage transform(JMSMappingOutboundTransformer options, 
Message msg) throws JMSException, UnsupportedEncodingException {
-final JMSVendor vendor = options.vendor;
-
-final String messageFormatKey = options.prefixVendor + 
MESSAGE_FORMAT;
-final String nativeKey = options.prefixVendor + NATIVE;
-final String firstAcquirerKey = options.prefixVendor + FirstAcquirer;
-final String prefixDeliveryAnnotationsKey = options.prefixVendor + 
options.prefixDeliveryAnnotations;
-final String prefixMessageAnnotationsKey = options.prefixVendor + 
options.prefixMessageAnnotations;
-final String subjectKey =  options.prefixVendor +Subject;
-final String contentTypeKey = options.prefixVendor +ContentType;
-final String contentEncodingKey = options.prefixVendor 
+ContentEncoding;
-final String replyToGroupIDKey = options.prefixVendor 
+ReplyToGroupID;
-final String prefixFooterKey = options.prefixVendor + 
options.prefixFooter;
+ProtonJMessage amqp = convert(msg);
 
 long messageFormat;
 try {
-messageFormat = msg.getLongProperty(messageFormatKey);
+messageFormat = msg.getLongProperty(this.messageFormatKey);
 } catch (MessageFormatException e) {
 return null;
 }
 
+ByteBuffer buffer = ByteBuffer.wrap(new byte[1024 * 4]);
+final DroppingWritableBuffer overflow = new DroppingWritableBuffer();
+int c = amqp.encode(new CompositeWritableBuffer(
+new WritableBuffer.ByteBufferWrapper(buffer), overflow));
+if( 

svn commit: r1630840 - in /qpid/proton/branches/examples/proton-c: include/proton/messenger.h src/messenger/messenger.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:55:21 2014
New Revision: 1630840

URL: http://svn.apache.org/r1630840
Log:
PROTON-676: patch from dominic for setter for SSL peer authentication mode

Modified:
qpid/proton/branches/examples/proton-c/include/proton/messenger.h
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c

Modified: qpid/proton/branches/examples/proton-c/include/proton/messenger.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/messenger.h?rev=1630840r1=1630839r2=1630840view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/messenger.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/messenger.h Fri Oct 
10 12:55:21 2014
@@ -29,6 +29,7 @@
 #include proton/terminus.h
 #include proton/link.h
 #include proton/transport.h
+#include proton/ssl.h
 
 #ifdef __cplusplus
 extern C {
@@ -988,6 +989,19 @@ PN_EXTERN pn_millis_t
 pn_messenger_get_remote_idle_timeout(pn_messenger_t *messenger,
  const char *address);
 
+/**
+ * Sets the SSL peer authentiacation mode required when a trust
+ * certificate is used.
+ *
+ * @param[in] messenger a messenger object
+ * @param[in] mode the mode required (see pn_ssl_verify_mode_t
+ * enum for valid values)
+ * @return 0 if successful or -1 if an error occurs
+ */
+PN_EXTERN int
+pn_messenger_set_ssl_peer_authentication_mode(pn_messenger_t *messenger,
+  const pn_ssl_verify_mode_t mode);
+
 #ifdef __cplusplus
 }
 #endif

Modified: qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/messenger.c?rev=1630840r1=1630839r2=1630840view=diff
==
--- qpid/proton/branches/examples/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/branches/examples/proton-c/src/messenger/messenger.c Fri Oct 10 
12:55:21 2014
@@ -104,6 +104,7 @@ struct pn_messenger_t {
   pn_snd_settle_mode_t snd_settle_mode;
   pn_rcv_settle_mode_t rcv_settle_mode;
   pn_tracer_t tracer;
+  pn_ssl_verify_mode_t ssl_peer_authentication_mode;
   bool blocking;
   bool passive;
   bool interrupted;
@@ -651,6 +652,7 @@ pn_messenger_t *pn_messenger(const char 
 m-snd_settle_mode = PN_SND_SETTLED;
 m-rcv_settle_mode = PN_RCV_FIRST;
 m-tracer = NULL;
+m-ssl_peer_authentication_mode = PN_SSL_VERIFY_PEER_NAME;
   }
 
   return m;
@@ -927,7 +929,8 @@ static int pn_transport_config(pn_messen
 pn_error_report(CONNECTION, invalid certificate db);
 return err;
   }
-  err = pn_ssl_domain_set_peer_authentication(d, PN_SSL_VERIFY_PEER_NAME, 
NULL);
+  err = pn_ssl_domain_set_peer_authentication(
+  d, messenger-ssl_peer_authentication_mode, NULL);
   if (err) {
 pn_error_report(CONNECTION, error configuring ssl to verify peer);
   }
@@ -2342,3 +2345,13 @@ pn_millis_t pn_messenger_get_remote_idle
   }
   return timeout;
 }
+
+int
+pn_messenger_set_ssl_peer_authentication_mode(pn_messenger_t *messenger,
+  const pn_ssl_verify_mode_t mode)
+{
+  if (!messenger)
+return PN_ARG_ERR;
+  messenger-ssl_peer_authentication_mode = mode;
+  return 0;
+}



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630837 - /qpid/proton/branches/examples/proton-c/src/url.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:55:03 2014
New Revision: 1630837

URL: http://svn.apache.org/r1630837
Log:
PROTON-693: Fix for windows build

Modified:
qpid/proton/branches/examples/proton-c/src/url.c

Modified: qpid/proton/branches/examples/proton-c/src/url.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/url.c?rev=1630837r1=1630836r2=1630837view=diff
==
--- qpid/proton/branches/examples/proton-c/src/url.c (original)
+++ qpid/proton/branches/examples/proton-c/src/url.c Fri Oct 10 12:55:03 2014
@@ -19,8 +19,10 @@
  *
  */
 
-#include proton/url.h
-#include proton/util.h
+#include proton/url.h
+#include proton/util.h
+#include platform.h
+
 #include stdlib.h
 #include string.h
 #include stdio.h



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630841 - in /qpid/proton/branches/examples/proton-j/src: main/java/org/apache/qpid/proton/codec/EncoderImpl.java main/java/org/apache/qpid/proton/codec/StringType.java test/java/org/apac

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:55:29 2014
New Revision: 1630841

URL: http://svn.apache.org/r1630841
Log:
PROTON-576: update String UTF-8 encoding to handle high range unicode 
characters / surrogate pairs

Applied patch from Dominic Evans with modifications by Rob Godfrey

Added:

qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java
Modified:

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/StringType.java

Modified: 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java?rev=1630841r1=1630840r2=1630841view=diff
==
--- 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java
 (original)
+++ 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java
 Fri Oct 10 12:55:29 2014
@@ -21,7 +21,11 @@
 package org.apache.qpid.proton.codec;
 
 import java.nio.ByteBuffer;
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
 
 import org.apache.qpid.proton.amqp.Binary;
 import org.apache.qpid.proton.amqp.Decimal128;
@@ -770,31 +774,60 @@ public final class EncoderImpl implement
 void writeRaw(String string)
 {
 final int length = string.length();
-char c;
+int c;
 
 for (int i = 0; i  length; i++)
 {
 c = string.charAt(i);
-if ((c = 0x0001)  (c = 0x007F))
+if ((c  0xFF80) == 0)  /* U+..U+007F */
 {
 _buffer.put((byte) c);
-
 }
-else if (c  0x07FF)
+else if ((c  0xF800) == 0) /* U+0080..U+07FF */
 {
-_buffer.put((byte) (0xE0 | ((c  12)  0x0F)));
-_buffer.put((byte) (0x80 | ((c   6)  0x3F)));
-_buffer.put((byte) (0x80 | (c  0x3F)));
+_buffer.put((byte)(0xC0 | ((c  6)  0x1F)));
+_buffer.put((byte)(0x80 | (c  0x3F)));
 }
-else
+else if ((c  0xD800) != 0xD800) /* U+0800..U+ - excluding 
surrogate pairs */
 {
-_buffer.put((byte) (0xC0 | ((c   6)  0x1F)));
-_buffer.put((byte) (0x80 | (c  0x3F)));
+_buffer.put((byte)(0xE0 | ((c  12)  0x0F)));
+_buffer.put((byte)(0x80 | ((c  6)  0x3F)));
+_buffer.put((byte)(0x80 | (c  0x3F)));
 }
-}
+else
+{
+int low;
 
-}
+if(((c  0xDC00) == 0xDC00) || (++i == length) || ((low = 
string.charAt(i))  0xDC00) != 0xDC00)
+{
+throw new IllegalArgumentException(String contains 
invalid Unicode code points);
+}
 
+c = 0x01 + ((c  0x03FF)  10) + (low  0x03FF);
 
 
+if (c = 0x3) /* U+1..U+3 */
+{
+_buffer.put((byte) 0xF0);
+_buffer.put((byte)(0x90 | ((c  12)  0x2F)));
+_buffer.put((byte)(0x80 | ((c  6)  0x3F)));
+_buffer.put((byte)(0x80 | (c  0x3F)));
+}
+else if (c = 0xF) /* U+4..U+F */
+{
+_buffer.put((byte)(0xF0 | ((c  18)  0x03)));
+_buffer.put((byte)(0x80 | ((c  12)  0x3F)));
+_buffer.put((byte)(0x80 | ((c  6)  0x3F)));
+_buffer.put((byte)(0x80 | (c  0x3F)));
+}
+else  /* U+10..U+10 */
+{
+_buffer.put((byte)(0xF4));
+_buffer.put((byte)(0x80 | ((c  12)  0x3F)));
+_buffer.put((byte)(0x80 | ((c  6)  0x3F)));
+_buffer.put((byte)(0x80 | (c  0x3F)));
+}
+}
+}
+}
 }

Modified: 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/StringType.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/StringType.java?rev=1630841r1=1630840r2=1630841view=diff
==
--- 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/StringType.java
 (original)
+++ 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/StringType.java
 Fri Oct 10 12:55:29 2014
@@ -83,29 +83,22 @@ public class 

svn commit: r1630836 - in /qpid/proton/branches/examples: proton-c/ proton-c/bindings/perl/ proton-c/bindings/php/ proton-c/bindings/python/ proton-c/bindings/ruby/ proton-c/include/proton/ proton-c/s

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:54:58 2014
New Revision: 1630836

URL: http://svn.apache.org/r1630836
Log:
PROTON-693: Python Url class to wrap C function pni_parse_url

It was pointed out that pni_parse_url is an internal function and the interface
is not suitable for public API.

Rewrote the URL parser as a proper swigable C API pn_url_*. This gets rid of the
need for previous swig insanity and is cleaner all round.

Internally still uses the pni_parse_url parser, we can clean that up later.

Added:
qpid/proton/branches/examples/proton-c/include/proton/url.h
qpid/proton/branches/examples/proton-c/src/url.c
Modified:
qpid/proton/branches/examples/proton-c/CMakeLists.txt
qpid/proton/branches/examples/proton-c/bindings/perl/perl.i
qpid/proton/branches/examples/proton-c/bindings/php/php.i
qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/proton-c/bindings/ruby/ruby.i
qpid/proton/branches/examples/proton-c/include/proton/cproton.i
qpid/proton/branches/examples/tests/python/proton_tests/url.py

Modified: qpid/proton/branches/examples/proton-c/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/CMakeLists.txt?rev=1630836r1=1630835r2=1630836view=diff
==
--- qpid/proton/branches/examples/proton-c/CMakeLists.txt (original)
+++ qpid/proton/branches/examples/proton-c/CMakeLists.txt Fri Oct 10 12:54:58 
2014
@@ -270,6 +270,7 @@ set (qpid-proton-core
   src/object/iterator.c
 
   src/util.c
+  src/url.c
   src/error.c
   src/buffer.c
   src/parser.c

Modified: qpid/proton/branches/examples/proton-c/bindings/perl/perl.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/perl/perl.i?rev=1630836r1=1630835r2=1630836view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/perl/perl.i (original)
+++ qpid/proton/branches/examples/proton-c/bindings/perl/perl.i Fri Oct 10 
12:54:58 2014
@@ -8,6 +8,7 @@
 #include proton/messenger.h
 #include proton/ssl.h
 #include proton/driver_extras.h
+#include proton/url.h
 %}
 
 %include cstring.i

Modified: qpid/proton/branches/examples/proton-c/bindings/php/php.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/php/php.i?rev=1630836r1=1630835r2=1630836view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/php/php.i (original)
+++ qpid/proton/branches/examples/proton-c/bindings/php/php.i Fri Oct 10 
12:54:58 2014
@@ -29,6 +29,7 @@
 %header %{
 /* Include the headers needed by the code in this wrapper file */
 #include proton/types.h
+#include proton/url.h
 #include proton/message.h
 #include proton/driver.h
 #include proton/driver_extras.h

Modified: qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/cproton.i?rev=1630836r1=1630835r2=1630836view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/cproton.i (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/cproton.i Fri Oct 10 
12:54:58 2014
@@ -23,6 +23,7 @@
 #include winsock2.h
 #endif
 #include proton/engine.h
+#include proton/url.h
 #include proton/message.h
 #include proton/sasl.h
 #include proton/driver.h
@@ -280,41 +281,4 @@ int pn_ssl_get_peer_hostname(pn_ssl_t *s
   }
 %}
 
-
-/**
-   pni_parse_url(char* url, char **scheme, char **user, char **pass, char 
**host, char **port, char **path)
-   The following type maps convert this into a python function that taks a URL 
string argument
-   and returns a list of strings [scheme, user, pass, host, port, path]
-   This probably could be done more neatly.
-*/
-
-// Typemap to copy the url string as it will be modified by parse_url
-%typemap(in,noblock=1,fragment=SWIG_AsCharPtrAndSize) char *url (int res, 
char *t = 0, size_t n = 0, int alloc = 0) {
-  res = SWIG_AsCharPtrAndSize($input, t, n, alloc);
-  if (!SWIG_IsOK(res)) {
-%argument_fail(res, char *url, $symname, $argnum);
-  }
-  $1 = %new_array(n, $*1_ltype);
-  memcpy($1,t,sizeof(char)*n);
-  if (alloc == SWIG_NEWOBJ) %delete_array(t);
-  $1[n-1] = 0;
-}
-%typemap(freearg,match=in) char *url free($1);;
-%typemap(argout) char *url ;
-
-// Typemap for char** return strings. Don't free them.
-%typemap(in,numinputs=0) char **OUTSTR($*1_ltype temp = 0) $1 = temp;;
-%typemap(freearg,match=in) char **OUTSTR ;
-%typemap(argout,noblock=1,fragment=SWIG_FromCharPtr) char **OUTSTR {
-%append_output(SWIG_FromCharPtr(*$1));
-}
-
-// Typemap to initialize result as empty list
-%typemap(out) void $result = PyList_New(0);;
-
-
-%apply 

svn commit: r1630839 - /qpid/proton/branches/examples/proton-c/src/windows/io.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:55:15 2014
New Revision: 1630839

URL: http://svn.apache.org/r1630839
Log:
PROTON-684: Restrict IOCP enlistment to pn_selector_t usage scenarios in Windows

Modified:
qpid/proton/branches/examples/proton-c/src/windows/io.c

Modified: qpid/proton/branches/examples/proton-c/src/windows/io.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/io.c?rev=1630839r1=1630838r2=1630839view=diff
==
--- qpid/proton/branches/examples/proton-c/src/windows/io.c (original)
+++ qpid/proton/branches/examples/proton-c/src/windows/io.c Fri Oct 10 12:55:15 
2014
@@ -210,14 +210,16 @@ pn_socket_t pn_listen(pn_io_t *io, const
 return INVALID_SOCKET;
   }
 
-  iocpdesc_t *iocpd = pni_iocpdesc_create(io-iocp, sock, false);
-  if (!iocpd) {
-pn_i_error_from_errno(io-error, register);
-closesocket(sock);
-return INVALID_SOCKET;
+  if (io-iocp-selector) {
+iocpdesc_t *iocpd = pni_iocpdesc_create(io-iocp, sock, false);
+if (!iocpd) {
+  pn_i_error_from_errno(io-error, register);
+  closesocket(sock);
+  return INVALID_SOCKET;
+}
+pni_iocpdesc_start(iocpd);
   }
 
-  pni_iocpdesc_start(iocpd);
   return sock;
 }
 
@@ -242,7 +244,22 @@ pn_socket_t pn_connect(pn_io_t *io, cons
 
   ensure_unique(io, sock);
   pn_configure_sock(io, sock);
-  return pni_iocp_begin_connect(io-iocp, sock, addr, io-error);
+
+  if (io-iocp-selector) {
+return pni_iocp_begin_connect(io-iocp, sock, addr, io-error);
+  } else {
+if (connect(sock, addr-ai_addr, addr-ai_addrlen) != 0) {
+  if (WSAGetLastError() != WSAEWOULDBLOCK) {
+   pni_win32_error(io-error, connect, WSAGetLastError());
+   freeaddrinfo(addr);
+   closesocket(sock);
+   return INVALID_SOCKET;
+  }
+}
+
+freeaddrinfo(addr);
+return sock;
+  }
 }
 
 pn_socket_t pn_accept(pn_io_t *io, pn_socket_t listen_sock, char *name, size_t 
size)



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630842 - in /qpid/proton/branches/examples: proton-c/bindings/python/ proton-c/include/proton/ proton-c/src/ proton-j/src/main/java/org/apache/qpid/proton/messenger/impl/ proton-j/src/ma

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:55:41 2014
New Revision: 1630842

URL: http://svn.apache.org/r1630842
Log:
PROTON-693: Implement C-API wrappers in Java for jython, clean up Url 
implementation.

- Java implementation of fake C API for Jython SWIG wrappers based on 
messenger.impl.Address.
- Minor extensions to Address.java
- Minor change to Address.java to be consistent with C parser on one corner 
case:
  - is url(/foo) a host called /foo or an empty host and a path foo
  - fixed Java parser to agree with C - path foo
- Rename getters from url_* to url_get_*.
- Use pn_string_t formatting functions to build URL string.

Added:
qpid/proton/branches/examples/proton-j/src/main/resources/curl.py
Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/proton-c/include/proton/url.h
qpid/proton/branches/examples/proton-c/src/url.c

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/messenger/impl/Address.java
qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py

qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/messenger/impl/AddressTest.java

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630842r1=1630841r2=1630842view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:55:41 2014
@@ -31,6 +31,7 @@ The proton APIs consist of the following
 
 
 from cproton import *
+
 import weakref, re, socket
 try:
   import uuid
@@ -3718,7 +3719,7 @@ class Url(object):
 
   class PartDescriptor(object):
 def __init__(self, part):
-  self.getter = globals()[pn_url_%s % part]
+  self.getter = globals()[pn_url_get_%s % part]
   self.setter = globals()[pn_url_set_%s % part]
 def __get__(self, obj, type=None): return self.getter(obj._url)
 def __set__(self, obj, value): return self.setter(obj._url, str(value))
@@ -3729,20 +3730,24 @@ class Url(object):
   host = PartDescriptor('host')
   path = PartDescriptor('path')
 
-  @property
-  def port(self):
-portstr = pn_url_port(self._url)
+  def _get_port(self):
+portstr = pn_url_get_port(self._url)
 return portstr and Url.Port(portstr)
 
-  @port.setter
-  def port(self, value):
+  def _set_port(self, value):
 if value is None: pn_url_set_port(self._url, None)
 else: pn_url_set_port(self._url, str(Url.Port(value)))
 
+  port = property(_get_port, _set_port)
+
   def __str__(self): return pn_url_str(self._url)
 
   def __repr__(self): return Url(%r) % str(self)
 
+  def __del__(self):
+pn_url_free(self._url);
+self._url = None
+
   def defaults(self):
 
 Fill in missing values (scheme, host or port) with defaults

Modified: qpid/proton/branches/examples/proton-c/include/proton/url.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/url.h?rev=1630842r1=1630841r2=1630842view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/url.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/url.h Fri Oct 10 
12:55:41 2014
@@ -46,7 +46,12 @@ PN_EXTERN void pn_url_free(pn_url_t *url
 /** Clear the contents of the URL. */
 PN_EXTERN void pn_url_clear(pn_url_t *url);
 
-/** Return the string form of a URL. Owned by the pn_url_t.*/
+/**
+ * Return the string form of a URL.
+ *
+ *  The returned string is owned by the pn_url_t and will become invalid if it
+ *  is modified.
+ */
 PN_EXTERN const char *pn_url_str(pn_url_t *url);
 
 /**
@@ -56,12 +61,12 @@ PN_EXTERN const char *pn_url_str(pn_url_
  *
  *@{
  */
-PN_EXTERN const char *pn_url_scheme(pn_url_t *url);
-PN_EXTERN const char *pn_url_username(pn_url_t *url);
-PN_EXTERN const char *pn_url_password(pn_url_t *url);
-PN_EXTERN const char *pn_url_host(pn_url_t *url);
-PN_EXTERN const char *pn_url_port(pn_url_t *url);
-PN_EXTERN const char *pn_url_path(pn_url_t *url);
+PN_EXTERN const char *pn_url_get_scheme(pn_url_t *url);
+PN_EXTERN const char *pn_url_get_username(pn_url_t *url);
+PN_EXTERN const char *pn_url_get_password(pn_url_t *url);
+PN_EXTERN const char *pn_url_get_host(pn_url_t *url);
+PN_EXTERN const char *pn_url_get_port(pn_url_t *url);
+PN_EXTERN const char *pn_url_get_path(pn_url_t *url);
 ///@}
 
 /**

Modified: qpid/proton/branches/examples/proton-c/src/url.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/url.c?rev=1630842r1=1630841r2=1630842view=diff
==
--- qpid/proton/branches/examples/proton-c/src/url.c (original)
+++ 

svn commit: r1630844 - /qpid/proton/branches/examples/proton-c/bindings/python/proton.py

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:55:46 2014
New Revision: 1630844

URL: http://svn.apache.org/r1630844
Log:
PROTON-687: clear reference to C object when delivery is released.

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630844r1=1630843r2=1630844view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:55:46 2014
@@ -2898,12 +2898,14 @@ class Delivery(object):
 self.link._deliveries.add(self)
 
   def __del__(self):
-pn_delivery_set_context(self._dlv, pn_py2void(None))
+self._release()
 
   def _release(self):
 Release the underlying C Engine resource.
 if self._dlv:
+  pn_delivery_set_context(self._dlv, pn_py2void(None))
   pn_delivery_settle(self._dlv)
+  self._dlv = None
 
   @property
   def tag(self):



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630847 - in /qpid/proton/branches/examples/proton-c: include/proton/messenger.h src/messenger/messenger.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:56:10 2014
New Revision: 1630847

URL: http://svn.apache.org/r1630847
Log:
PROTON-680: link and delivery accessors (patch from dominic)

Modified:
qpid/proton/branches/examples/proton-c/include/proton/messenger.h
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c

Modified: qpid/proton/branches/examples/proton-c/include/proton/messenger.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/messenger.h?rev=1630847r1=1630846r2=1630847view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/messenger.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/messenger.h Fri Oct 
10 12:56:10 2014
@@ -487,6 +487,18 @@ pn_messenger_subscribe_ttl(pn_messenger_
pn_seconds_t timeout);
 
 /**
+ * Get a link based on link name and whether the link is a sender or receiver
+ *
+ * @param[in] messenger the messenger to get the link from
+ * @param[in] address the link address that identifies the link to receive
+ * @param[in] sender true if the link is a sender, false if the link is a
+ *receiver
+ * @return a link, or NULL if no link matches the address / sender parameters
+ */
+PN_EXTERN pn_link_t *pn_messenger_get_link(pn_messenger_t *messenger,
+   const char *address, bool sender);
+
+/**
  * Get a subscription's application context.
  *
  * See ::pn_subscription_set_context().
@@ -538,6 +550,20 @@ PN_EXTERN int pn_messenger_put(pn_messen
 PN_EXTERN pn_status_t pn_messenger_status(pn_messenger_t *messenger, 
pn_tracker_t tracker);
 
 /**
+ * Get delivery information about a delivery.
+ *
+ * Returns the delivery information associated with the supplied tracker.
+ * This may return NULL if the tracker has fallen outside the
+ * incoming/outgoing tracking windows of the messenger.
+ *
+ * @param[in] messenger the messenger
+ * @param[in] tracker the tracker identifying the delivery
+ * @return a pn_delivery_t representing the delivery.
+ */
+PN_EXTERN pn_delivery_t *pn_messenger_delivery(pn_messenger_t *messenger,
+   pn_tracker_t tracker);
+
+/**
  * Check if the delivery associated with a given tracker is still
  * waiting to be sent.
  *

Modified: qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/messenger.c?rev=1630847r1=1630846r2=1630847view=diff
==
--- qpid/proton/branches/examples/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/branches/examples/proton-c/src/messenger/messenger.c Fri Oct 10 
12:56:10 2014
@@ -1669,13 +1669,12 @@ pn_connection_t *pn_messenger_resolve(pn
   return connection;
 }
 
-pn_link_t *pn_messenger_link(pn_messenger_t *messenger, const char *address,
- bool sender, pn_seconds_t timeout)
+PN_EXTERN pn_link_t *pn_messenger_get_link(pn_messenger_t *messenger,
+   const char *address, bool sender)
 {
   char *name = NULL;
   pn_connection_t *connection = pn_messenger_resolve(messenger, address, 
name);
   if (!connection) return NULL;
-  pn_connection_ctx_t *cctx = (pn_connection_ctx_t *) 
pn_connection_get_context(connection);
 
   pn_link_t *link = pn_link_head(connection, PN_LOCAL_ACTIVE);
   while (link) {
@@ -1688,6 +1687,22 @@ pn_link_t *pn_messenger_link(pn_messenge
 }
 link = pn_link_next(link, PN_LOCAL_ACTIVE);
   }
+  return NULL;
+}
+
+pn_link_t *pn_messenger_link(pn_messenger_t *messenger, const char *address,
+ bool sender, pn_seconds_t timeout)
+{
+  char *name = NULL;
+  pn_connection_t *connection = pn_messenger_resolve(messenger, address, 
name);
+  if (!connection)
+return NULL;
+  pn_connection_ctx_t *cctx =
+  (pn_connection_ctx_t *)pn_connection_get_context(connection);
+
+  pn_link_t *link = pn_messenger_get_link(messenger, address, sender);
+  if (link)
+return link;
 
   pn_session_t *ssn = pn_session(connection);
   pn_session_open(ssn);
@@ -1992,6 +2007,18 @@ pn_status_t pn_messenger_status(pn_messe
   }
 }
 
+pn_delivery_t *pn_messenger_delivery(pn_messenger_t *messenger,
+ pn_tracker_t tracker)
+{
+  pni_store_t *store = pn_tracker_store(messenger, tracker);
+  pni_entry_t *e = pni_store_entry(store, pn_tracker_sequence(tracker));
+  if (e) {
+return pni_entry_get_delivery(e);
+  } else {
+return NULL;
+  }
+}
+
 bool pn_messenger_buffered(pn_messenger_t *messenger, pn_tracker_t tracker)
 {
   pni_store_t *store = pn_tracker_store(messenger, tracker);



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional 

svn commit: r1630848 - in /qpid/proton/branches/examples/proton-c: include/proton/cid.h src/url.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:56:16 2014
New Revision: 1630848

URL: http://svn.apache.org/r1630848
Log:
 PROTON-693: Make pn_url_t a proper pn_class object, hashable  comparable.

Modified:
qpid/proton/branches/examples/proton-c/include/proton/cid.h
qpid/proton/branches/examples/proton-c/src/url.c

Modified: qpid/proton/branches/examples/proton-c/include/proton/cid.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/cid.h?rev=1630848r1=1630847r2=1630848view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/cid.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/cid.h Fri Oct 10 
12:56:16 2014
@@ -48,7 +48,9 @@ typedef enum {
 
   CID_pn_io,
   CID_pn_selector,
-  CID_pn_selectable
+  CID_pn_selectable,
+
+  CID_pn_url
 } pn_cid_t;
 
 #endif /* cid.h */

Modified: qpid/proton/branches/examples/proton-c/src/url.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/url.c?rev=1630848r1=1630847r2=1630848view=diff
==
--- qpid/proton/branches/examples/proton-c/src/url.c (original)
+++ qpid/proton/branches/examples/proton-c/src/url.c Fri Oct 10 12:56:16 2014
@@ -45,10 +45,52 @@ struct pn_url_t {
 pn_string_t *str;
 };
 
+/** Internal use only, returns the pn_string_t. Public function is 
pn_url_str() */
+static pn_string_t *pn_url_string(pn_url_t* url)
+{
+pn_url_str(url);   /* Make sure str is up to date */
+return url-str;
+}
+
+static void pn_url_finalize(void *object)
+{
+pn_url_t *url = (pn_url_t *) object;
+pn_url_clear(url);
+pn_free(url-str);
+}
+
+static uintptr_t pn_url_hashcode(void *object)
+{
+pn_url_t *url = (pn_url_t *) object;
+return pn_hashcode(pn_url_string(url));
+}
+
+static intptr_t pn_url_compare(void *oa, void *ob)
+{
+pn_url_t *a = (pn_url_t *) oa;
+pn_url_t *b = (pn_url_t *) ob;
+return pn_compare(pn_url_string(a), pn_url_string(b));
+}
+
+
+static int pn_url_inspect(void *obj, pn_string_t *dst)
+{
+pn_url_t *url = (pn_url_t *) obj;
+int err = 0;
+err = pn_string_addf(dst, Url(); if (err) return err;
+err = pn_inspect(pn_url_string(url), dst); if (err) return err;
+return pn_string_addf(dst, ));
+}
+
+#define pn_url_initialize NULL
+
+
 PN_EXTERN pn_url_t *pn_url() {
-pn_url_t *url = (pn_url_t*)malloc(sizeof(pn_url_t));
-if (url) memset(url, 0, sizeof(*url));
-url-str = pn_string();
+static const pn_class_t clazz = PN_CLASS(pn_url);
+pn_url_t *url = (pn_url_t*) pn_class_new(clazz, sizeof(pn_url_t));
+if (!url) return NULL;
+memset(url, 0, sizeof(*url));
+url-str = pn_string(NULL);
 return url;
 }
 
@@ -75,11 +117,7 @@ PN_EXTERN pn_url_t *pn_url_parse(const c
 }
 
 /** Free a URL */
-PN_EXTERN void pn_url_free(pn_url_t *url) {
-pn_url_clear(url);
-pn_free(url-str);
-free(url);
-}
+PN_EXTERN void pn_url_free(pn_url_t *url) { pn_free(url); }
 
 /** Clear the contents of the URL. */
 PN_EXTERN void pn_url_clear(pn_url_t *url) {
@@ -96,17 +134,19 @@ static inline int len(const char *str) {
 
 /** Return the string form of a URL. */
 PN_EXTERN const char *pn_url_str(pn_url_t *url) {
-pn_string_set(url-str, );
-if (url-scheme) pn_string_addf(url-str, %s://, url-scheme);
-if (url-username) pn_string_addf(url-str, %s, url-username);
-if (url-password) pn_string_addf(url-str, :%s, url-password);
-if (url-username || url-password) pn_string_addf(url-str, @);
-if (url-host) {
-if (strchr(url-host, ':')) pn_string_addf(url-str, [%s], 
url-host);
-else pn_string_addf(url-str, %s, url-host);
+if (pn_string_get(url-str) == NULL) {
+pn_string_set(url-str, );
+if (url-scheme) pn_string_addf(url-str, %s://, url-scheme);
+if (url-username) pn_string_addf(url-str, %s, url-username);
+if (url-password) pn_string_addf(url-str, :%s, url-password);
+if (url-username || url-password) pn_string_addf(url-str, @);
+if (url-host) {
+if (strchr(url-host, ':')) pn_string_addf(url-str, [%s], 
url-host);
+else pn_string_addf(url-str, %s, url-host);
+}
+if (url-port) pn_string_addf(url-str, :%s, url-port);
+if (url-path) pn_string_addf(url-str, /%s, url-path);
 }
-if (url-port) pn_string_addf(url-str, :%s, url-port);
-if (url-path) pn_string_addf(url-str, /%s, url-path);
 return pn_string_get(url-str);
 }
 
@@ -117,7 +157,7 @@ PN_EXTERN const char *pn_url_get_host(pn
 PN_EXTERN const char *pn_url_get_port(pn_url_t *url) { return url-port; }
 PN_EXTERN const char *pn_url_get_path(pn_url_t *url) { return url-path; }
 
-#define SET(part) free(url-part); url-part = copy(part)
+#define SET(part) free(url-part); url-part = copy(part); 
pn_string_clear(url-str)
 PN_EXTERN void 

svn commit: r1630845 - in /qpid/proton/branches/examples: proton-c/bindings/python/ proton-c/include/proton/ proton-c/src/engine/ proton-c/src/events/ proton-c/src/messenger/ proton-c/src/transport/ p

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:55:59 2014
New Revision: 1630845

URL: http://svn.apache.org/r1630845
Log:
PROTON-677: added support for detach

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/proton-c/include/proton/event.h
qpid/proton/branches/examples/proton-c/include/proton/link.h
qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h
qpid/proton/branches/examples/proton-c/src/engine/engine.c
qpid/proton/branches/examples/proton-c/src/events/event.c
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
qpid/proton/branches/examples/proton-c/src/transport/transport.c

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Link.java

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/LinkImpl.java

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py
qpid/proton/branches/examples/tests/python/proton_tests/engine.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630845r1=1630844r2=1630845view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:55:59 2014
@@ -2648,6 +2648,9 @@ class Link(Endpoint):
   def drained(self):
 return pn_link_drained(self._link)
 
+  def detach(self):
+return pn_link_detach(self._link)
+
 class Terminus(object):
 
   UNSPECIFIED = PN_UNSPECIFIED
@@ -3385,8 +3388,10 @@ class Event:
   LINK_INIT = PN_LINK_INIT
   LINK_OPEN = PN_LINK_OPEN
   LINK_CLOSE = PN_LINK_CLOSE
+  LINK_DETACH = PN_LINK_DETACH
   LINK_REMOTE_OPEN = PN_LINK_REMOTE_OPEN
   LINK_REMOTE_CLOSE = PN_LINK_REMOTE_CLOSE
+  LINK_REMOTE_DETACH = PN_LINK_REMOTE_DETACH
   LINK_FLOW = PN_LINK_FLOW
   LINK_FINAL = PN_LINK_FINAL
 

Modified: qpid/proton/branches/examples/proton-c/include/proton/event.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/event.h?rev=1630845r1=1630844r2=1630845view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/event.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/event.h Fri Oct 10 
12:55:59 2014
@@ -202,6 +202,18 @@ typedef enum {
   PN_LINK_REMOTE_CLOSE,
 
   /**
+   * The local link endpoint has been detached. Events of this type
+   * point to the relevant link.
+   */
+  PN_LINK_DETACH,
+
+  /**
+   * The remote endpoint has detached the link. Events of this type
+   * point to the relevant link.
+   */
+  PN_LINK_REMOTE_DETACH,
+
+  /**
* The flow control state for a link has changed. Events of this
* type point to the relevant link.
*/

Modified: qpid/proton/branches/examples/proton-c/include/proton/link.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/link.h?rev=1630845r1=1630844r2=1630845view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/link.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/link.h Fri Oct 10 
12:55:59 2014
@@ -249,6 +249,13 @@ PN_EXTERN void pn_link_open(pn_link_t *l
 PN_EXTERN void pn_link_close(pn_link_t *link);
 
 /**
+ * Detach a link.
+ *
+ * @param[in] link a link object
+ */
+PN_EXTERN void pn_link_detach(pn_link_t *link);
+
+/**
  * Access the locally defined source definition for a link.
  *
  * The pointer returned by this operation is valid until the link

Modified: qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h?rev=1630845r1=1630844r2=1630845view=diff
==
--- qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h 
(original)
+++ qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h Fri Oct 
10 12:55:59 2014
@@ -252,6 +252,7 @@ struct pn_link_t {
   uint8_t remote_rcv_settle_mode;
   bool drain_flag_mode; // receiver only
   bool drain;
+  bool detached;
 };
 
 struct pn_disposition_t {

Modified: qpid/proton/branches/examples/proton-c/src/engine/engine.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/engine/engine.c?rev=1630845r1=1630844r2=1630845view=diff
==
--- 

svn commit: r1630851 - /qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:56:43 2014
New Revision: 1630851

URL: http://svn.apache.org/r1630851
Log:
PROTON-576: update test to make it compile on Java 6

Modified:

qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java

Modified: 
qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java?rev=1630851r1=1630850r2=1630851view=diff
==
--- 
qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java
 (original)
+++ 
qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java
 Fri Oct 10 12:56:43 2014
@@ -24,7 +24,7 @@ import static org.junit.Assert.assertEqu
 
 import java.lang.Character.UnicodeBlock;
 import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
+import java.nio.charset.Charset;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -37,6 +37,8 @@ import org.apache.qpid.proton.amqp.messa
  */
 public class StringTypeTest
 {
+private static final Charset CHARSET_UTF8 = Charset.forName(UTF-8);
+
 /**
  * Loop over all the chars in a given {@link UnicodeBlock} and return a
  * {@link Set String} containing all the possible values as their
@@ -62,8 +64,12 @@ public class StringTypeTest
 }
 else if (charCount == 2)
 {
-sb.append(Character.highSurrogate(codePoint));
-sb.append(Character.lowSurrogate(codePoint));
+//TODO: use Character.highSurrogate(codePoint) and 
Character.lowSurrogate(codePoint) when Java 7 is baseline
+char highSurrogate = (char) ((codePoint  10) + 
('\uD800' - (0x01  10)));
+char lowSurrogate =  (char) ((codePoint  0x3ff) + 
'\uDC00');
+
+sb.append(highSurrogate);
+sb.append(lowSurrogate);
 }
 else
 {
@@ -86,7 +92,7 @@ public class StringTypeTest
 {
 for (final String input : generateTestData())
 {
-assertEquals(Incorrect string length calculated for string 
'+input+',input.getBytes(StandardCharsets.UTF_8).length, 
StringType.calculateUTF8Length(input));
+assertEquals(Incorrect string length calculated for string 
'+input+',input.getBytes(CHARSET_UTF8).length, 
StringType.calculateUTF8Length(input));
 }
 }
 
@@ -128,10 +134,12 @@ public class StringTypeTest
 addAll(getAllStringsFromUnicodeBlock(UnicodeBlock.GREEK));
 
addAll(getAllStringsFromUnicodeBlock(UnicodeBlock.LETTERLIKE_SYMBOLS));
 // blocks with surrogate pairs
-
addAll(getAllStringsFromUnicodeBlock(UnicodeBlock.MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS));
+//TODO: restore when Java 7 is baseline
+
//addAll(getAllStringsFromUnicodeBlock(UnicodeBlock.MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS));
 
addAll(getAllStringsFromUnicodeBlock(UnicodeBlock.MUSICAL_SYMBOLS));
-
addAll(getAllStringsFromUnicodeBlock(UnicodeBlock.EMOTICONS));
-
addAll(getAllStringsFromUnicodeBlock(UnicodeBlock.PLAYING_CARDS));
+//TODO: restore when Java 7 is baseline
+
//addAll(getAllStringsFromUnicodeBlock(UnicodeBlock.EMOTICONS));
+
//addAll(getAllStringsFromUnicodeBlock(UnicodeBlock.PLAYING_CARDS));
 
addAll(getAllStringsFromUnicodeBlock(UnicodeBlock.SUPPLEMENTARY_PRIVATE_USE_AREA_A));
 
addAll(getAllStringsFromUnicodeBlock(UnicodeBlock.SUPPLEMENTARY_PRIVATE_USE_AREA_B));
 }



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630850 - /qpid/proton/branches/examples/proton-c/include/proton/url.h

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:56:37 2014
New Revision: 1630850

URL: http://svn.apache.org/r1630850
Log:
PROTON-693: Export pn_url... symbols as C not C++

Modified:
qpid/proton/branches/examples/proton-c/include/proton/url.h

Modified: qpid/proton/branches/examples/proton-c/include/proton/url.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/url.h?rev=1630850r1=1630849r2=1630850view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/url.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/url.h Fri Oct 10 
12:56:37 2014
@@ -21,6 +21,11 @@
 
 #include proton/import_export.h
 
+#ifdef __cplusplus
+extern C {
+#endif
+
+
 /** @file
  * URL API for parsing URLs.
  *
@@ -85,4 +90,9 @@ PN_EXTERN void pn_url_set_path(pn_url_t 
 ///@}
 
 ///@}
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630854 - in /qpid/proton/branches/examples: proton-c/bindings/python/ proton-c/include/proton/ proton-c/src/engine/ proton-c/src/transport/ proton-j/src/main/java/org/apache/qpid/proton/

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:57:08 2014
New Revision: 1630854

URL: http://svn.apache.org/r1630854
Log:
PROTON-689: added a condition to the transport along with bindings to expose it

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/proton-c/include/proton/transport.h
qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h
qpid/proton/branches/examples/proton-c/src/transport/transport.c

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py
qpid/proton/branches/examples/tests/python/proton_tests/engine.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630854r1=1630853r2=1630854view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:57:08 2014
@@ -3136,6 +3136,10 @@ The idle timeout of the connection (floa
   self._ssl = SSL(self, domain, session_details)
 return self._ssl
 
+  @property
+  def condition(self):
+return cond2obj(pn_transport_condition(self._trans))
+
 class SASLException(TransportException):
   pass
 

Modified: qpid/proton/branches/examples/proton-c/include/proton/transport.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/transport.h?rev=1630854r1=1630853r2=1630854view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/transport.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/transport.h Fri Oct 
10 12:57:08 2014
@@ -24,6 +24,7 @@
 
 #include proton/import_export.h
 #include proton/type_compat.h
+#include proton/condition.h
 #include stddef.h
 #include sys/types.h
 
@@ -103,20 +104,18 @@ PN_EXTERN pn_transport_t *pn_transport(v
 PN_EXTERN void pn_transport_free(pn_transport_t *transport);
 
 /**
- * Get additional error information associated with the transport.
+ * Get additional information about the condition of the transport.
  *
- * Whenever a transport operation fails (i.e. returns an error code),
- * additional error details can be obtained using this function. The
- * error object that is returned may also be used to clear the error
- * condition.
+ * When a PN_TRANSPORT_ERROR event occurs, this operation can be used
+ * to access the details of the error condtion.
  *
  * The pointer returned by this operation is valid until the
  * transport object is freed.
  *
  * @param[in] transport the transport object
- * @return the transport's error object
+ * @return the transport's condition object
  */
-PN_EXTERN pn_error_t *pn_transport_error(pn_transport_t *transport);
+PN_EXTERN pn_condition_t *pn_transport_condition(pn_transport_t *transport);
 
 /**
  * Binds the transport to an AMQP connection.

Modified: qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h?rev=1630854r1=1630853r2=1630854view=diff
==
--- qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h 
(original)
+++ qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h Fri Oct 
10 12:57:08 2014
@@ -127,6 +127,7 @@ struct pn_transport_t {
   uint32_t   local_max_frame;
   uint32_t   remote_max_frame;
   pn_condition_t remote_condition;
+  pn_condition_t condition;
 
 #define PN_IO_SSL  0
 #define PN_IO_SASL 1

Modified: qpid/proton/branches/examples/proton-c/src/transport/transport.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/transport/transport.c?rev=1630854r1=1630853r2=1630854view=diff
==
--- qpid/proton/branches/examples/proton-c/src/transport/transport.c (original)
+++ qpid/proton/branches/examples/proton-c/src/transport/transport.c Fri Oct 10 
12:57:08 2014
@@ -163,6 +163,7 @@ static void pn_transport_initialize(void
   transport-remote_properties = pn_data(0);
   transport-disp_data = pn_data(0);
   pn_condition_init(transport-remote_condition);
+  pn_condition_init(transport-condition);
 
   transport-local_channels = pn_hash(PN_OBJECT, 0, 0.75);
   transport-remote_channels = pn_hash(PN_OBJECT, 0, 0.75);
@@ -256,6 +257,7 @@ static void pn_transport_finalize(void *
   pn_free(transport-remote_properties);
   pn_free(transport-disp_data);
   

svn commit: r1630858 - in /qpid/proton/branches/examples: proton-c/bindings/python/proton.py tests/python/proton_tests/url.py

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:57:33 2014
New Revision: 1630858

URL: http://svn.apache.org/r1630858
Log:
NO-JIRA: Fix URL test to not explode under jython.

Turns out the proton test harness blows up when run under jython if you import
socket in a test module. Works fine under real python. Go figure.

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/tests/python/proton_tests/url.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630858r1=1630857r2=1630858view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:57:33 2014
@@ -3694,7 +3694,8 @@ class Url(object):
 An integer port number that can be constructed from a service name 
string
 
 def __new__(cls, value):
-  port = super(Url.Port, cls).__new__(cls, cls.port_int(value))
+  @param value: integer port number or string service name.
+  port = super(Url.Port, cls).__new__(cls, cls._port_int(value))
   setattr(port, 'name', str(value))
   return port
 
@@ -3703,7 +3704,7 @@ class Url(object):
 def __str__(self): return str(self.name)
 
 @staticmethod
-def port_int(value):
+def _port_int(value):
   Convert service, an integer or a service name, into an integer port 
number.
   try:
 return int(value)

Modified: qpid/proton/branches/examples/tests/python/proton_tests/url.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/tests/python/proton_tests/url.py?rev=1630858r1=1630857r2=1630858view=diff
==
--- qpid/proton/branches/examples/tests/python/proton_tests/url.py (original)
+++ qpid/proton/branches/examples/tests/python/proton_tests/url.py Fri Oct 10 
12:57:33 2014
@@ -18,7 +18,7 @@
 #
 
 
-import common, socket
+import common
 from proton import Url
 
 class UrlTest(common.Test):
@@ -108,8 +108,9 @@ class UrlTest(common.Test):
 def testAmqps(self):
 Some old platforms don't recognize the amqps service name, this 
test is a no-op
 if that is the case otherwise verify we treat amqps correctly.
-try: socket.getservbyname('amqps') 
-except:
+try:
+Url.Port('amqps')
+except ValueError:
 print skipping: service 'amqps' not recognized on this platform
 return
 # Scheme defaults



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630852 - in /qpid/proton/branches/examples/proton-j/src: main/java/org/apache/qpid/proton/codec/EncoderImpl.java test/java/org/apache/qpid/proton/codec/StringTypeTest.java

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:56:52 2014
New Revision: 1630852

URL: http://svn.apache.org/r1630852
Log:
PROTON-576: updates to bring things into line with the patch on the JIRA, 
rather than a stale older version I actually applied (not having a good day :P)

Modified:

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java

qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java

Modified: 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java?rev=1630852r1=1630851r2=1630852view=diff
==
--- 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java
 (original)
+++ 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java
 Fri Oct 10 12:56:52 2014
@@ -805,29 +805,14 @@ public final class EncoderImpl implement
 
 c = 0x01 + ((c  0x03FF)  10) + (low  0x03FF);
 
-
-if (c = 0x3) /* U+1..U+3 */
-{
-_buffer.put((byte) 0xF0);
-_buffer.put((byte)(0x90 | ((c  12)  0x2F)));
-_buffer.put((byte)(0x80 | ((c  6)  0x3F)));
-_buffer.put((byte)(0x80 | (c  0x3F)));
-}
-else if (c = 0xF) /* U+4..U+F */
-{
-_buffer.put((byte)(0xF0 | ((c  18)  0x03)));
-_buffer.put((byte)(0x80 | ((c  12)  0x3F)));
-_buffer.put((byte)(0x80 | ((c  6)  0x3F)));
-_buffer.put((byte)(0x80 | (c  0x3F)));
-}
-else  /* U+10..U+10 */
-{
-_buffer.put((byte)(0xF4));
-_buffer.put((byte)(0x80 | ((c  12)  0x3F)));
-_buffer.put((byte)(0x80 | ((c  6)  0x3F)));
-_buffer.put((byte)(0x80 | (c  0x3F)));
-}
+_buffer.put((byte)(0xF0 | ((c  18)  0x07)));
+_buffer.put((byte)(0x80 | ((c  12)  0x3F)));
+_buffer.put((byte)(0x80 | ((c  6)  0x3F)));
+_buffer.put((byte)(0x80 | (c  0x3F)));
 }
 }
 }
+
+
+
 }

Modified: 
qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java?rev=1630852r1=1630851r2=1630852view=diff
==
--- 
qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java
 (original)
+++ 
qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java
 Fri Oct 10 12:56:52 2014
@@ -25,11 +25,11 @@ import static org.junit.Assert.assertEqu
 import java.lang.Character.UnicodeBlock;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
 import org.junit.Test;
-
 import org.apache.qpid.proton.amqp.messaging.AmqpValue;
 
 /**
@@ -40,20 +40,21 @@ public class StringTypeTest
 private static final Charset CHARSET_UTF8 = Charset.forName(UTF-8);
 
 /**
- * Loop over all the chars in a given {@link UnicodeBlock} and return a
+ * Loop over all the chars in given {@link UnicodeBlock}s and return a
  * {@link Set String} containing all the possible values as their
  * {@link String} values.
  *
- * @param block the {@link UnicodeBlock} to loop over
+ * @param blocks the {@link UnicodeBlock}s to loop over
  * @return a {@link Set String} containing all the possible values as
  * {@link String} values
  */
-private static SetString getAllStringsFromUnicodeBlock(final 
UnicodeBlock block)
+private static SetString getAllStringsFromUnicodeBlocks(final 
UnicodeBlock... blocks)
 {
+final SetUnicodeBlock blockSet = new 
HashSetUnicodeBlock(Arrays.asList(blocks));
 final SetString strings = new HashSetString();
 for (int codePoint = 0; codePoint = Character.MAX_CODE_POINT; 
codePoint++)
 {
-if (UnicodeBlock.of(codePoint) == block)
+if (blockSet.contains(UnicodeBlock.of(codePoint)))
 {
 final int charCount = Character.charCount(codePoint);
 final StringBuilder sb = new StringBuilder(
@@ -129,19 +130,18 @@ public class StringTypeTest
 
 {
 // non-surrogate pair blocks
-

svn commit: r1630849 - in /qpid/proton/branches/examples: examples/include/pncompat/ proton-c/bindings/php/ proton-c/include/proton/ proton-c/src/ proton-c/src/codec/ proton-c/src/dispatcher/ proton-c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:56:32 2014
New Revision: 1630849

URL: http://svn.apache.org/r1630849
Log:
PROTON-696: Rearrange the header files:
- Reduce transitive header inclusions
- Remove proton/util.h and move its contents to src/util.h. All
  the defined symbols were internal.
- Stop including with lines like #include ../blah.h as this
  isn't needed anymore.
(Fixes windows breakage from PROTON-676)

Removed:
qpid/proton/branches/examples/proton-c/include/proton/util.h
Modified:
qpid/proton/branches/examples/examples/include/pncompat/misc_funcs.inc
qpid/proton/branches/examples/proton-c/bindings/php/php.i
qpid/proton/branches/examples/proton-c/include/proton/connection.h
qpid/proton/branches/examples/proton-c/include/proton/driver.h
qpid/proton/branches/examples/proton-c/include/proton/sasl.h
qpid/proton/branches/examples/proton-c/include/proton/ssl.h
qpid/proton/branches/examples/proton-c/src/codec/codec.c
qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.c
qpid/proton/branches/examples/proton-c/src/dispatcher/dispatcher.h
qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h
qpid/proton/branches/examples/proton-c/src/engine/engine.c
qpid/proton/branches/examples/proton-c/src/message/message.c
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c
qpid/proton/branches/examples/proton-c/src/messenger/store.c
qpid/proton/branches/examples/proton-c/src/platform.c
qpid/proton/branches/examples/proton-c/src/posix/driver.c
qpid/proton/branches/examples/proton-c/src/posix/io.c
qpid/proton/branches/examples/proton-c/src/posix/selector.c
qpid/proton/branches/examples/proton-c/src/proton.c
qpid/proton/branches/examples/proton-c/src/sasl/sasl.c
qpid/proton/branches/examples/proton-c/src/ssl/openssl.c
qpid/proton/branches/examples/proton-c/src/ssl/ssl_stub.c
qpid/proton/branches/examples/proton-c/src/tests/parse-url.c
qpid/proton/branches/examples/proton-c/src/transport/transport.c
qpid/proton/branches/examples/proton-c/src/url.c
qpid/proton/branches/examples/proton-c/src/util.c
qpid/proton/branches/examples/proton-c/src/util.h
qpid/proton/branches/examples/proton-c/src/windows/driver.c

Modified: qpid/proton/branches/examples/examples/include/pncompat/misc_funcs.inc
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/examples/include/pncompat/misc_funcs.inc?rev=1630849r1=1630848r2=1630849view=diff
==
--- qpid/proton/branches/examples/examples/include/pncompat/misc_funcs.inc 
(original)
+++ qpid/proton/branches/examples/examples/include/pncompat/misc_funcs.inc Fri 
Oct 10 12:56:32 2014
@@ -55,13 +55,14 @@ pn_timestamp_t time_now(void)
   return t.QuadPart / 1 - 1164447360;
 }
 #else
-#include proton/util.h
 #include sys/time.h
 #include stddef.h
+#include stdio.h
+#include stdlib.h
 pn_timestamp_t time_now(void)
 {
   struct timeval now;
-  if (gettimeofday(now, NULL)) pn_fatal(gettimeofday failed\n);
+  if (gettimeofday(now, NULL)) {fprintf(stderr, gettimeofday failed\n); 
abort();}
   return ((pn_timestamp_t)now.tv_sec) * 1000 + (now.tv_usec / 1000);
 }
 #endif

Modified: qpid/proton/branches/examples/proton-c/bindings/php/php.i
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/php/php.i?rev=1630849r1=1630848r2=1630849view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/php/php.i (original)
+++ qpid/proton/branches/examples/proton-c/bindings/php/php.i Fri Oct 10 
12:56:32 2014
@@ -29,12 +29,16 @@
 %header %{
 /* Include the headers needed by the code in this wrapper file */
 #include proton/types.h
-#include proton/url.h
-#include proton/message.h
+#include proton/connection.h
+#include proton/condition.h
+#include proton/delivery.h
 #include proton/driver.h
 #include proton/driver_extras.h
+#include proton/event.h
+#include proton/message.h
 #include proton/messenger.h
-#include proton/ssl.h
+#include proton/session.h
+#include proton/url.h
 
 #define zend_error_noreturn zend_error
 %}

Modified: qpid/proton/branches/examples/proton-c/include/proton/connection.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/connection.h?rev=1630849r1=1630848r2=1630849view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/connection.h 
(original)
+++ qpid/proton/branches/examples/proton-c/include/proton/connection.h Fri Oct 
10 12:56:32 2014
@@ -23,7 +23,12 @@
  */
 
 #include proton/import_export.h
+#include proton/codec.h
+#include proton/condition.h
+#include proton/error.h
 #include proton/type_compat.h
+#include proton/types.h
+
 #include stddef.h
 #include sys/types.h
 

Modified: 

svn commit: r1630856 - /qpid/proton/branches/examples/tests/python/proton_tests/url.py

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:57:22 2014
New Revision: 1630856

URL: http://svn.apache.org/r1630856
Log:
NO-JIRA: Fix URL test to skip 'amqps' tests if 'amqps' is not recognized as a 
service name.

On some older Ubuntu with Java 6, 'amqps' is not recognized as a service name so
skip those tests in that case.

Modified:
qpid/proton/branches/examples/tests/python/proton_tests/url.py

Modified: qpid/proton/branches/examples/tests/python/proton_tests/url.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/tests/python/proton_tests/url.py?rev=1630856r1=1630855r2=1630856view=diff
==
--- qpid/proton/branches/examples/tests/python/proton_tests/url.py (original)
+++ qpid/proton/branches/examples/tests/python/proton_tests/url.py Fri Oct 10 
12:57:22 2014
@@ -18,7 +18,7 @@
 #
 
 
-import common
+import common, socket
 from proton import Url
 
 class UrlTest(common.Test):
@@ -44,12 +44,6 @@ class UrlTest(common.Test):
 self.assertEqual(str(url), me:secret@myhost/foobar)
 self.assertUrl(url, None, 'me', 'secret', 'myhost', None, 'foobar')
 
-# Scheme defaults
-self.assertEqual(str(Url(me:secret@myhost/foobar).defaults()),
- amqp://me:secret@myhost:amqp/foobar)
-# Correct port for amqps vs. amqps
-
self.assertEqual(str(Url(amqps://me:secret@myhost/foobar).defaults()),
- amqps://me:secret@myhost:amqps/foobar)
 self.assertEqual(str(Url(amqp://me:secret@myhost/foobar).defaults()),
  amqp://me:secret@myhost:amqp/foobar)
 
@@ -64,7 +58,6 @@ class UrlTest(common.Test):
 def testPort(self):
 self.assertPort(Url.Port('amqp'), 5672, 'amqp')
 self.assertPort(Url.Port(5672), 5672, '5672')
-self.assertPort(Url.Port('amqps'), 5671, 'amqps')
 self.assertPort(Url.Port(5671), 5671, '5671')
 self.assertEqual(Url.Port(5671)+1, 5672) # Treat as int
 self.assertEqual(str(Url.Port(5672)), '5672')
@@ -79,8 +72,6 @@ class UrlTest(common.Test):
 
 self.assertEqual(str(Url(host:amqp)), host:amqp)
 self.assertEqual(Url(host:amqp).port, 5672)
-self.assertEqual(str(Url(host:amqps)), host:amqps)
-self.assertEqual(Url(host:amqps).port, 5671)
 
 def testArgs(self):
 u = Url(amqp://u:p@host:amqp/path, scheme='foo', host='bar', 
port=1234, path='garden')
@@ -113,3 +104,21 @@ class UrlTest(common.Test):
 (':1234', 'amqp://0.0.0.0:1234'),
 ('/path', 'amqp://0.0.0.0:amqp/path')]:
 self.assertEqual(str(Url(s).defaults()), full)
+
+def testAmqps(self):
+Some old platforms don't recognize the amqps service name, this 
test is a no-op
+if that is the case otherwise verify we treat amqps correctly.
+try: socket.getservbyname('amqps') 
+except:
+print skipping: service 'amqps' not recognized on this platform
+return
+# Scheme defaults
+self.assertEqual(str(Url(me:secret@myhost/foobar).defaults()),
+ amqp://me:secret@myhost:amqp/foobar)
+# Correct port for amqps vs. amqps
+
self.assertEqual(str(Url(amqps://me:secret@myhost/foobar).defaults()),
+ amqps://me:secret@myhost:amqps/foobar)
+
+self.assertPort(Url.Port('amqps'), 5671, 'amqps')
+self.assertEqual(str(Url(host:amqps)), host:amqps)
+self.assertEqual(Url(host:amqps).port, 5671)



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630861 - /qpid/proton/branches/examples/proton-c/src/windows/schannel.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:57:51 2014
New Revision: 1630861

URL: http://svn.apache.org/r1630861
Log:
PROTON-581: part2, pick up minor changes since review board version

Modified:
qpid/proton/branches/examples/proton-c/src/windows/schannel.c

Modified: qpid/proton/branches/examples/proton-c/src/windows/schannel.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/schannel.c?rev=1630861r1=1630860r2=1630861view=diff
==
--- qpid/proton/branches/examples/proton-c/src/windows/schannel.c (original)
+++ qpid/proton/branches/examples/proton-c/src/windows/schannel.c Fri Oct 10 
12:57:51 2014
@@ -220,9 +220,9 @@ static int ssl_failed(pn_ssl_t *ssl, cha
 reason = buf;
   }
   ssl-ssl_closed = true;
-  ssl-app_input_closed = ssl-app_output_closed = PN_ERR;
-  ssl-transport-tail_closed = true;
+  ssl-app_input_closed = ssl-app_output_closed = PN_EOS;
   ssl-state = SSL_CLOSED;
+  pni_close_tail(ssl-transport);
   pn_do_error(ssl-transport, amqp:connection:framing-error, SSL Failure: 
%s, reason);
   return PN_EOS;
 }
@@ -1118,7 +1118,7 @@ static ssize_t process_input_ssl(pn_io_l
 static ssize_t process_output_ssl( pn_io_layer_t *io_layer, char *buffer, 
size_t max_len)
 {
   pn_ssl_t *ssl = (pn_ssl_t *)io_layer-context;
-  if (!ssl) return PN_ERR;
+  if (!ssl) return PN_EOS;
   ssl_log( ssl, process_output_ssl( max_len=%d )\n,max_len );
 
   ssize_t written = 0;
@@ -1129,7 +1129,7 @@ static ssize_t process_output_ssl( pn_io
 // output buffers eclusively for internal handshake use until negotiation 
complete
 client_handshake_init(ssl);
 if (ssl-state == SSL_CLOSED)
-  return PN_ERR;
+  return PN_EOS;
 ssl-state = NEGOTIATING;
   }
 



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630860 - in /qpid/proton/branches/examples/proton-c: CMakeLists.txt src/windows/schannel.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:57:45 2014
New Revision: 1630860

URL: http://svn.apache.org/r1630860
Log:
PROTON-581: SChannel client side TLS/SSL for Windows

Added:
qpid/proton/branches/examples/proton-c/src/windows/schannel.c
Modified:
qpid/proton/branches/examples/proton-c/CMakeLists.txt

Modified: qpid/proton/branches/examples/proton-c/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/CMakeLists.txt?rev=1630860r1=1630859r2=1630860view=diff
==
--- qpid/proton/branches/examples/proton-c/CMakeLists.txt (original)
+++ qpid/proton/branches/examples/proton-c/CMakeLists.txt Fri Oct 10 12:57:45 
2014
@@ -46,11 +46,17 @@ find_package(OpenSSL)
 
 find_package (PythonInterp REQUIRED)
 
-set(ssl_impl, none)
+if(PN_WINAPI)
+  set(ssl_impl schannel)
+  set(ssl_providers 'none','schannel','openssl')
+else(PN_WINAPI)
+  set(ssl_impl, none)
+  set(ssl_providers 'none','openssl')
+endif(PN_WINAPI)
 if (OPENSSL_FOUND)
   set(ssl_impl openssl)
-endif(OPENSSL_FOUND)
-set(SSL_IMPL ${ssl_impl} CACHE STRING Library to use for SSL/TLS support. 
Valid values: 'none','openssl')
+endif (OPENSSL_FOUND)
+set(SSL_IMPL ${ssl_impl} CACHE STRING Library to use for SSL/TLS support. 
Valid values: ${ssl_providers})
 mark_as_advanced (SSL_IMPL)
 
 configure_file (
@@ -96,7 +102,12 @@ if (SSL_IMPL STREQUAL openssl)
   include_directories (${OPENSSL_INCLUDE_DIR})
   set (SSL_LIB ${OPENSSL_LIBRARIES})
 else (SSL_IMPL STREQUAL openssl)
-  set (pn_driver_ssl_impl src/ssl/ssl_stub.c)
+  if (SSL_IMPL STREQUAL schannel)
+set (pn_driver_ssl_impl src/windows/schannel.c)
+set (SSL_LIB Crypt32.lib Secur32.lib)
+  else (SSL_IMPL STREQUAL schannel)
+set (pn_driver_ssl_impl src/ssl/ssl_stub.c)
+  endif (SSL_IMPL STREQUAL schannel)
 endif (SSL_IMPL STREQUAL openssl)
 
 # First check whether we get clock_gettime without any special library linked

Added: qpid/proton/branches/examples/proton-c/src/windows/schannel.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/schannel.c?rev=1630860view=auto
==
--- qpid/proton/branches/examples/proton-c/src/windows/schannel.c (added)
+++ qpid/proton/branches/examples/proton-c/src/windows/schannel.c Fri Oct 10 
12:57:45 2014
@@ -0,0 +1,1320 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+/*
+ * SChannel is designed to encrypt and decrypt data in place.  So a
+ * given buffer is expected to sometimes contain encrypted data,
+ * sometimes decrypted data, and occasionally both.  Outgoing buffers
+ * need to reserve space for the TLS header and trailer.  Read
+ * operations need to ignore the same headers and trailers from
+ * incoming buffers.  Outgoing is simple because we choose record
+ * boundaries.  Incoming is complicated by handling incomplete TLS
+ * records, and buffering contiguous data for the app layer that may
+ * span many records.  A lazy double buffering system is used for
+ * the latter.
+ */
+
+#include proton/ssl.h
+#include proton/engine.h
+#include engine/engine-internal.h
+#include platform.h
+#include util.h
+
+#include assert.h
+
+// security.h needs to see this to distinguish from kernel use.
+#include windows.h
+#define SECURITY_WIN32
+#include security.h
+#include Schnlsp.h
+#undef SECURITY_WIN32
+
+
+/** @file
+ * SSL/TLS support API.
+ *
+ * This file contains an SChannel-based implemention of the SSL/TLS API for 
Windows platforms.
+ */
+
+#define SSL_DATA_SIZE 16384
+#define SSL_BUF_SIZE (SSL_DATA_SIZE + 5 + 2048 + 32)
+
+typedef enum { UNKNOWN_CONNECTION, SSL_CONNECTION, CLEAR_CONNECTION } 
connection_mode_t;
+typedef struct pn_ssl_session_t pn_ssl_session_t;
+
+struct pn_ssl_domain_t {
+  int ref_count;
+  pn_ssl_mode_t mode;
+  bool has_ca_db;   // true when CA database configured
+  bool has_certificate; // true when certificate configured
+  char *keyfile_pw;
+
+  // settings used for all connections
+  pn_ssl_verify_mode_t verify_mode;
+  bool allow_unsecured;
+
+  // SChannel
+  HCERTSTORE cert_store;
+  PCCERT_CONTEXT cert_context;
+  SCHANNEL_CRED credential;

svn commit: r1630855 - in /qpid/proton/branches/examples/proton-j/src: main/java/org/apache/qpid/proton/amqp/Binary.java test/java/org/apache/qpid/proton/amqp/BinaryTest.java

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:57:17 2014
New Revision: 1630855

URL: http://svn.apache.org/r1630855
Log:
PROTON-698: return false if given object class differs, and shortcut equality 
of the object with itself

Added:

qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/amqp/BinaryTest.java
Modified:

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/amqp/Binary.java

Modified: 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/amqp/Binary.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/amqp/Binary.java?rev=1630855r1=1630854r2=1630855view=diff
==
--- 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/amqp/Binary.java
 (original)
+++ 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/amqp/Binary.java
 Fri Oct 10 12:57:17 2014
@@ -50,6 +50,7 @@ public final class Binary
 return ByteBuffer.wrap(_data, _offset, _length);
 }
 
+@Override
 public final int hashCode()
 {
 int hc = _hashCode;
@@ -64,13 +65,20 @@ public final class Binary
 return hc;
 }
 
+@Override
 public final boolean equals(Object o)
 {
-Binary buf = (Binary) o;
-if(o == null)
+if (this == o)
+{
+return true;
+}
+
+if (o == null || getClass() != o.getClass())
 {
 return false;
 }
+
+Binary buf = (Binary) o;
 final int size = _length;
 if (size != buf._length)
 {

Added: 
qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/amqp/BinaryTest.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/amqp/BinaryTest.java?rev=1630855view=auto
==
--- 
qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/amqp/BinaryTest.java
 (added)
+++ 
qpid/proton/branches/examples/proton-j/src/test/java/org/apache/qpid/proton/amqp/BinaryTest.java
 Fri Oct 10 12:57:17 2014
@@ -0,0 +1,108 @@
+/*
+ *
+ * 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.amqp;
+
+import static org.junit.Assert.*;
+
+import java.util.Arrays;
+
+import org.junit.Test;
+
+public class BinaryTest
+{
+
+@Test
+public void testNotEqualsWithDifferentTypeObject()
+{
+Binary bin = createSteppedValueBinary(10);
+
+assertFalse(Objects should not be equal with different type, 
bin.equals(not-a-Binary));
+}
+
+@Test
+public void testEqualsWithItself()
+{
+Binary bin = createSteppedValueBinary(10);
+
+assertTrue(Object should be equal to itself, bin.equals(bin));
+}
+
+@Test
+public void testEqualsWithDifferentBinaryOfSameLengthAndContent()
+{
+int length = 10;
+Binary bin1 = createSteppedValueBinary(length);
+Binary bin2 = createSteppedValueBinary(length);
+
+assertTrue(Objects should be equal, bin1.equals(bin2));
+assertTrue(Objects should be equal, bin2.equals(bin1));
+}
+
+@Test
+public void testEqualsWithDifferentLengthBinaryOfDifferentBytes()
+{
+int length1 = 10;
+Binary bin1 = createSteppedValueBinary(length1);
+Binary bin2 = createSteppedValueBinary(length1 + 1);
+
+assertFalse(Objects should not be equal, bin1.equals(bin2));
+assertFalse(Objects should not be equal, bin2.equals(bin1));
+}
+
+@Test
+public void testEqualsWithDifferentLengthBinaryOfSameByte()
+{
+Binary bin1 = createNewRepeatedValueBinary(10, (byte) 1);
+Binary bin2 = createNewRepeatedValueBinary(123, (byte) 1);
+
+assertFalse(Objects should not be equal, bin1.equals(bin2));
+assertFalse(Objects should not be equal, bin2.equals(bin1));
+}
+
+@Test
+public void testEqualsWithDifferentContentBinary()
+{
+int length = 10;
+Binary bin1 = 

svn commit: r1630853 - /qpid/proton/branches/examples/proton-c/src/message/message.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:56:57 2014
New Revision: 1630853

URL: http://svn.apache.org/r1630853
Log:
PROTON-661: applied patch from miguel

Modified:
qpid/proton/branches/examples/proton-c/src/message/message.c

Modified: qpid/proton/branches/examples/proton-c/src/message/message.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/message/message.c?rev=1630853r1=1630852r2=1630853view=diff
==
--- qpid/proton/branches/examples/proton-c/src/message/message.c (original)
+++ qpid/proton/branches/examples/proton-c/src/message/message.c Fri Oct 10 
12:56:57 2014
@@ -975,6 +975,7 @@ int pn_message_save_data(pn_message_t *m
   pn_data_error(msg-body));
   if (scanned) {
 if (bytes.size  *size) {
+  *size = bytes.size;
   return PN_OVERFLOW;
 } else {
   memcpy(data, bytes.start, bytes.size);
@@ -997,6 +998,7 @@ int pn_message_save_text(pn_message_t *m
   {
 pn_bytes_t str = pn_data_get_bytes(msg-body);
 if (str.size = *size) {
+  *size = str.size;
   return PN_OVERFLOW;
 } else {
   memcpy(data, str.start, str.size);



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630865 - /qpid/proton/branches/examples/proton-c/src/windows/iocp.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:58:12 2014
New Revision: 1630865

URL: http://svn.apache.org/r1630865
Log:
PROTON-701: drop error message and allow faster detection of network failure 
for large number of forced failures during ctest

Modified:
qpid/proton/branches/examples/proton-c/src/windows/iocp.c

Modified: qpid/proton/branches/examples/proton-c/src/windows/iocp.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/iocp.c?rev=1630865r1=1630864r2=1630865view=diff
==
--- qpid/proton/branches/examples/proton-c/src/windows/iocp.c (original)
+++ qpid/proton/branches/examples/proton-c/src/windows/iocp.c Fri Oct 10 
12:58:12 2014
@@ -964,8 +964,15 @@ static void drain_zombie_completions(ioc
 }
   }
 
+  unsigned shutdown_grace = 2000;
+  char *override = getenv(PN_SHUTDOWN_GRACE);
+  if (override) {
+int grace = atoi(override);
+if (grace  0  grace  6)
+  shutdown_grace = (unsigned) grace;
+  }
   pn_timestamp_t now = pn_i_now();
-  pn_timestamp_t deadline = now + 2000;
+  pn_timestamp_t deadline = now + shutdown_grace;
 
   while (pn_list_size(iocp-zombie_list)) {
 if (now = deadline)
@@ -977,7 +984,7 @@ static void drain_zombie_completions(ioc
 }
 now = pn_i_now();
   }
-  if (now = deadline  pn_list_size(iocp-zombie_list))
+  if (now = deadline  pn_list_size(iocp-zombie_list)  iocp-iocp_trace)
 // Should only happen if really slow TCP handshakes, i.e. total network 
failure
 iocp_log(network failure on Proton shutdown\n);
 }



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630866 - /qpid/proton/branches/examples/tools/cmake/Modules/FindPerlLibs.cmake

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:58:18 2014
New Revision: 1630866

URL: http://svn.apache.org/r1630866
Log:
PROTON-465: FindPerlLibs fails on Ubuntu 12

If the search for libperl.so fails using the standard search in CMake,
then this alternative tool kicks in and searchs other known locations
for the file.

Modified:
qpid/proton/branches/examples/tools/cmake/Modules/FindPerlLibs.cmake

Modified: qpid/proton/branches/examples/tools/cmake/Modules/FindPerlLibs.cmake
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/tools/cmake/Modules/FindPerlLibs.cmake?rev=1630866r1=1630865r2=1630866view=diff
==
--- qpid/proton/branches/examples/tools/cmake/Modules/FindPerlLibs.cmake 
(original)
+++ qpid/proton/branches/examples/tools/cmake/Modules/FindPerlLibs.cmake Fri 
Oct 10 12:58:18 2014
@@ -29,6 +29,25 @@ if(NOT PERLLIBS_FOUND)
 
   # if either the library path is not found not set at all
   # then do our own search
+  if ( NOT PERL_LIBRARY )
+EXECUTE_PROCESS( COMMAND ${PERL_EXECUTABLE} -V:libperl
+ OUTPUT_VARIABLE PERL_LIBRARY_OUTPUT
+ RESULT_VARIABLE PERL_LIBRARY_RESULT )
+
+IF ( NOT PERL_LIBRARY_RESULT )
+  string(REGEX REPLACE libperl='([^']+)'.* \\1 PERL_POSSIBLE_LIBRARIES 
${PERL_LIBRARY_OUTPUT})
+ENDIF ( NOT PERL_LIBRARY_RESULT )
+
+MESSAGE ( STATUS  Looking for ${PERL_POSSIBLE_LIBRARIES} )
+
+find_file(PERL_LIBRARY
+  NAMES ${PERL_POSSIBLE_LIBRARIES}
+  PATHS /usr/lib
+${PERL_ARCHLIB}/CORE
+  )
+
+  endif ( NOT PERL_LIBRARY )
+
   IF ( PERL_LIBRARY MATCHES .*-NOTFOUND OR NOT PERL_LIBRARY )
   EXECUTE_PROCESS ( COMMAND ${PERL_EXECUTABLE}
 -MConfig -e print \$Config{libperl}



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630864 - in /qpid/proton/branches/examples: proton-c/src/windows/schannel.c tests/python/proton_tests/common.py

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:58:07 2014
New Revision: 1630864

URL: http://svn.apache.org/r1630864
Log:
PROTON-701: alter test for isSSLPresent to check on server capability instead 
of client capability

Modified:
qpid/proton/branches/examples/proton-c/src/windows/schannel.c
qpid/proton/branches/examples/tests/python/proton_tests/common.py

Modified: qpid/proton/branches/examples/proton-c/src/windows/schannel.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/schannel.c?rev=1630864r1=1630863r2=1630864view=diff
==
--- qpid/proton/branches/examples/proton-c/src/windows/schannel.c (original)
+++ qpid/proton/branches/examples/proton-c/src/windows/schannel.c Fri Oct 10 
12:58:07 2014
@@ -255,6 +255,8 @@ static void ssl_session_free( pn_ssl_ses
 
 pn_ssl_domain_t *pn_ssl_domain( pn_ssl_mode_t mode )
 {
+  if (mode == PN_SSL_MODE_SERVER)
+return NULL;  // Temporary: not ready for ctest, hide from isSSLPresent()
   pn_ssl_domain_t *domain = (pn_ssl_domain_t *) calloc(1, 
sizeof(pn_ssl_domain_t));
   if (!domain) return NULL;
 
@@ -284,8 +286,9 @@ pn_ssl_domain_t *pn_ssl_domain( pn_ssl_m
 
 void pn_ssl_domain_free( pn_ssl_domain_t *domain )
 {
-  if (--domain-ref_count == 0) {
+  if (!domain) return;
 
+  if (--domain-ref_count == 0) {
 if (domain-cert_context)
   CertFreeCertificateContext(domain-cert_context);
 if (domain-cert_store)

Modified: qpid/proton/branches/examples/tests/python/proton_tests/common.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/tests/python/proton_tests/common.py?rev=1630864r1=1630863r2=1630864view=diff
==
--- qpid/proton/branches/examples/tests/python/proton_tests/common.py (original)
+++ qpid/proton/branches/examples/tests/python/proton_tests/common.py Fri Oct 
10 12:58:07 2014
@@ -82,7 +82,7 @@ def isSSLPresent():
  True if a suitable SSL library is available.
 
 try:
-xxx = SSLDomain(SSLDomain.MODE_CLIENT)
+xxx = SSLDomain(SSLDomain.MODE_SERVER)
 return True
 except SSLUnavailable, e:
 # SSL libraries not installed



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630862 - /qpid/proton/branches/examples/proton-c/include/proton/io.h

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:57:56 2014
New Revision: 1630862

URL: http://svn.apache.org/r1630862
Log:
PROTON-668: Document Proton-c IO restrictions for 0.8 release

Modified:
qpid/proton/branches/examples/proton-c/include/proton/io.h

Modified: qpid/proton/branches/examples/proton-c/include/proton/io.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/io.h?rev=1630862r1=1630861r2=1630862view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/io.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/io.h Fri Oct 10 
12:57:56 2014
@@ -31,6 +31,22 @@
 extern C {
 #endif
 
+/**
+ * A ::pn_socket_t provides an abstract handle to an IO stream.  The
+ * pipe version is uni-directional.  The network socket version is
+ * bi-directional.  Both are non-blocking.
+ *
+ * pn_socket_t handles from ::pn_pipe() may only be used with
+ * ::pn_read(), ::pn_write(), ::pn_close() and pn_selector_select().
+ *
+ * pn_socket_t handles from ::pn_listen(), ::pn_accept() and
+ * ::pn_connect() must perform further IO using Proton functions.
+ * Mixing Proton io.h functions with native IO functions on the same
+ * handles will result in undefined behavior.
+ *
+ * pn_socket_t handles may only be used with a single pn_io_t during
+ * their lifetime.
+ */
 #if defined(_WIN32)  ! defined(__CYGWIN__)
 #ifdef _WIN64
 typedef unsigned __int64 pn_socket_t;
@@ -43,7 +59,37 @@ typedef int pn_socket_t;
 #define PN_INVALID_SOCKET (-1)
 #endif
 
+/**
+ * A ::pn_io_t manages IO for a group of pn_socket_t handles.  A
+ * pn_io_t object may have zero or one pn_selector_t selectors
+ * associated with it (see ::pn_io_selector()).  If one is associated,
+ * all the pn_socket_t handles managed by a pn_io_t must use that
+ * pn_selector_t instance.
+ *
+ * The pn_io_t interface is single-threaded. All methods are intended
+ * to be used by one thread at a time, except that multiple threads
+ * may use:
+ *
+ *   ::pn_write()
+ *   ::pn_send()
+ *   ::pn_recv()
+ *   ::pn_close()
+ *   ::pn_selector_select()
+ *
+ * provided at most one thread is calling ::pn_selector_select() and
+ * the other threads are operating on separate pn_socket_t handles.
+ */
 typedef struct pn_io_t pn_io_t;
+
+/**
+ * A ::pn_selector_t provides a selection mechanism that allows
+ * efficient monitoring of a large number of Proton connections and
+ * listeners.
+ *
+ * External (non-Proton) sockets may also be monitored, either solely
+ * for event notification (read, write, and timer) or event
+ * notification and use with pn_io_t interfaces.
+ */
 typedef struct pn_selector_t pn_selector_t;
 
 PN_EXTERN pn_io_t *pn_io(void);



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630863 - /qpid/proton/branches/examples/tests/python/proton_tests/messenger.py

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:58:01 2014
New Revision: 1630863

URL: http://svn.apache.org/r1630863
Log:
PROTON-701: skip tests with python selector competing with IOCP selector

Modified:
qpid/proton/branches/examples/tests/python/proton_tests/messenger.py

Modified: qpid/proton/branches/examples/tests/python/proton_tests/messenger.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/tests/python/proton_tests/messenger.py?rev=1630863r1=1630862r2=1630863view=diff
==
--- qpid/proton/branches/examples/tests/python/proton_tests/messenger.py 
(original)
+++ qpid/proton/branches/examples/tests/python/proton_tests/messenger.py Fri 
Oct 10 12:58:01 2014
@@ -984,6 +984,11 @@ class Pump:
 class SelectableMessengerTest(common.Test):
 
   def testSelectable(self, count = 1):
+if os.name==nt:
+  # Conflict between native OS select() in Pump and IOCP based 
pn_selector_t
+  # makes this fail on Windows (see PROTON-668).
+  raise Skipped(Invalid test on Windows with IOCP.)
+
 mrcv = Messenger()
 mrcv.passive = True
 mrcv.subscribe(amqp://~0.0.0.0:1234)



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630867 - /qpid/proton/branches/examples/proton-c/src/windows/selector.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:58:23 2014
New Revision: 1630867

URL: http://svn.apache.org/r1630867
Log:
PROTON-702: mark interest in timer based on existence of deadline, not change 
in deadline

Modified:
qpid/proton/branches/examples/proton-c/src/windows/selector.c

Modified: qpid/proton/branches/examples/proton-c/src/windows/selector.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/selector.c?rev=1630867r1=1630866r2=1630867view=diff
==
--- qpid/proton/branches/examples/proton-c/src/windows/selector.c (original)
+++ qpid/proton/branches/examples/proton-c/src/windows/selector.c Fri Oct 10 
12:58:23 2014
@@ -162,6 +162,9 @@ void pn_selector_update(pn_selector_t *s
 if (pn_selectable_pending(selectable)  0) {
   interests |= PN_WRITABLE;
 }
+if (selector-deadlines[idx]) {
+  interests |= PN_EXPIRED;
+}
 interests_update(iocpd, interests);
 deadlines_update(iocpd, selector-deadlines[idx]);
   }
@@ -245,13 +248,13 @@ int pn_selector_select(pn_selector_t *se
 
   selector-current = 0;
   selector-awoken = now;
-  selector-current_triggered = selector-triggered_list_head;
   for (iocpdesc_t *iocpd = selector-deadlines_head; iocpd; iocpd = 
iocpd-deadlines_next) {
 if (iocpd-deadline = now)
   pni_events_update(iocpd, iocpd-events | PN_EXPIRED);
 else
   break;
   }
+  selector-current_triggered = selector-triggered_list_head;
   return pn_error_code(selector-error);
 }
 
@@ -332,18 +335,17 @@ static void deadlines_update(iocpdesc_t 
 {
   if (deadline == iocpd-deadline)
 return;
+
   iocpd-deadline = deadline;
   pn_selector_t *selector = iocpd-selector;
   if (!deadline) {
 deadlines_remove(selector, iocpd);
 pni_events_update(iocpd, iocpd-events  ~PN_EXPIRED);
-interests_update(iocpd, iocpd-interests  ~PN_EXPIRED);
   } else {
 if (iocpd-deadlines_prev || selector-deadlines_head == iocpd) {
   deadlines_remove(selector, iocpd);
   pni_events_update(iocpd, iocpd-events  ~PN_EXPIRED);
 }
-interests_update(iocpd, iocpd-interests | PN_EXPIRED);
 iocpdesc_t *dl_iocpd = LL_HEAD(selector, deadlines);
 while (dl_iocpd  dl_iocpd-deadline = deadline)
   dl_iocpd = dl_iocpd-deadlines_next;



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630868 - /qpid/proton/branches/examples/proton-c/bindings/python/proton.py

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:58:28 2014
New Revision: 1630868

URL: http://svn.apache.org/r1630868
Log:
added connection accessor to proton binding

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630868r1=1630867r2=1630868view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:58:28 2014
@@ -3140,6 +3140,10 @@ The idle timeout of the connection (floa
   def condition(self):
 return cond2obj(pn_transport_condition(self._trans))
 
+  @property
+  def connection(self):
+return Connection._wrap_connection(pn_transport_connection(self._trans))
+
 class SASLException(TransportException):
   pass
 



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630870 - in /qpid/proton/branches/examples/proton-c: include/proton/transport.h src/engine/engine-internal.h src/transport/transport.c

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:58:40 2014
New Revision: 1630870

URL: http://svn.apache.org/r1630870
Log:
add a backwords compatible pn_transport_error

Modified:
qpid/proton/branches/examples/proton-c/include/proton/transport.h
qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h
qpid/proton/branches/examples/proton-c/src/transport/transport.c

Modified: qpid/proton/branches/examples/proton-c/include/proton/transport.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/transport.h?rev=1630870r1=1630869r2=1630870view=diff
==
--- qpid/proton/branches/examples/proton-c/include/proton/transport.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/transport.h Fri Oct 
10 12:58:40 2014
@@ -118,6 +118,11 @@ PN_EXTERN void pn_transport_free(pn_tran
 PN_EXTERN pn_condition_t *pn_transport_condition(pn_transport_t *transport);
 
 /**
+ * @deprecated
+ */
+PN_EXTERN  pn_error_t *pn_transport_error(pn_transport_t *transport);
+
+/**
  * Binds the transport to an AMQP connection.
  *
  * @return an error code, or 0 on success

Modified: qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h?rev=1630870r1=1630869r2=1630870view=diff
==
--- qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h 
(original)
+++ qpid/proton/branches/examples/proton-c/src/engine/engine-internal.h Fri Oct 
10 12:58:40 2014
@@ -128,6 +128,7 @@ struct pn_transport_t {
   uint32_t   remote_max_frame;
   pn_condition_t remote_condition;
   pn_condition_t condition;
+  pn_error_t *error;
 
 #define PN_IO_SSL  0
 #define PN_IO_SASL 1

Modified: qpid/proton/branches/examples/proton-c/src/transport/transport.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/transport/transport.c?rev=1630870r1=1630869r2=1630870view=diff
==
--- qpid/proton/branches/examples/proton-c/src/transport/transport.c (original)
+++ qpid/proton/branches/examples/proton-c/src/transport/transport.c Fri Oct 10 
12:58:40 2014
@@ -164,6 +164,7 @@ static void pn_transport_initialize(void
   transport-disp_data = pn_data(0);
   pn_condition_init(transport-remote_condition);
   pn_condition_init(transport-condition);
+  transport-error = pn_error();
 
   transport-local_channels = pn_hash(PN_OBJECT, 0, 0.75);
   transport-remote_channels = pn_hash(PN_OBJECT, 0, 0.75);
@@ -258,6 +259,7 @@ static void pn_transport_finalize(void *
   pn_free(transport-disp_data);
   pn_condition_tini(transport-remote_condition);
   pn_condition_tini(transport-condition);
+  pn_error_free(transport-error);
   pn_free(transport-local_channels);
   pn_free(transport-remote_channels);
   if (transport-input_buf) free(transport-input_buf);
@@ -349,7 +351,15 @@ int pn_transport_unbind(pn_transport_t *
 
 pn_error_t *pn_transport_error(pn_transport_t *transport)
 {
-  return NULL;
+  assert(transport);
+  if (pn_condition_is_set(transport-condition)) {
+pn_error_format(transport-error, PN_ERR, %s: %s,
+pn_condition_get_name(transport-condition),
+pn_condition_get_description(transport-condition));
+  } else {
+pn_error_clear(transport-error);
+  }
+  return transport-error;
 }
 
 pn_condition_t *pn_transport_condition(pn_transport_t *transport)



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630872 - /qpid/proton/branches/examples/proton-c/src/messenger/messenger.c.orig

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:58:50 2014
New Revision: 1630872

URL: http://svn.apache.org/r1630872
Log:
PROTON-676: Removed file added in error

Removed:
qpid/proton/branches/examples/proton-c/src/messenger/messenger.c.orig


-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630873 - in /qpid/proton/branches/examples: proton-c/bindings/python/proton.py tests/python/proton_tests/url.py

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:58:56 2014
New Revision: 1630873

URL: http://svn.apache.org/r1630873
Log:
PROTON-693: If the system doesn't have port definitions for amqp/amqps
use the default values of 5672/5671.
- Not all systems have /etc/service (or similar) files that define
  these ports, but our tests use them and the defaults are these
  strings.

Modified:
qpid/proton/branches/examples/proton-c/bindings/python/proton.py
qpid/proton/branches/examples/tests/python/proton_tests/url.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630873r1=1630872r2=1630873view=diff
==
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 
12:58:56 2014
@@ -3716,7 +3716,11 @@ class Url(object):
 try:
   return socket.getservbyname(value)
 except socket.error:
-  raise ValueError(Not a valid port number or service name: '%s' % 
value)
+  # Not every system has amqp/amqps defined as a service
+  if value == Url.AMQPS:  return 5671
+  elif value == Url.AMQP: return 5672
+  else:
+raise ValueError(Not a valid port number or service name: '%s' % 
value)
 
   def __init__(self, url=None, **kwargs):
 

Modified: qpid/proton/branches/examples/tests/python/proton_tests/url.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/tests/python/proton_tests/url.py?rev=1630873r1=1630872r2=1630873view=diff
==
--- qpid/proton/branches/examples/tests/python/proton_tests/url.py (original)
+++ qpid/proton/branches/examples/tests/python/proton_tests/url.py Fri Oct 10 
12:58:56 2014
@@ -106,13 +106,6 @@ class UrlTest(common.Test):
 self.assertEqual(str(Url(s).defaults()), full)
 
 def testAmqps(self):
-Some old platforms don't recognize the amqps service name, this 
test is a no-op
-if that is the case otherwise verify we treat amqps correctly.
-try:
-Url.Port('amqps')
-except ValueError:
-print skipping: service 'amqps' not recognized on this platform
-return
 # Scheme defaults
 self.assertEqual(str(Url(me:secret@myhost/foobar).defaults()),
  amqp://me:secret@myhost:amqp/foobar)



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630875 - /qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:59:08 2014
New Revision: 1630875

URL: http://svn.apache.org/r1630875
Log:
NO-JIRA: add basic config toggle for the length of payload included in the 
frame trace logging, for cases where the hard coded value doesnt quite suit

Modified:

qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java

Modified: 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java?rev=1630875r1=1630874r2=1630875view=diff
==
--- 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
 (original)
+++ 
qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
 Fri Oct 10 12:59:08 2014
@@ -76,6 +76,7 @@ public class TransportImpl extends Endpo
 }
 
 private static final boolean FRM_ENABLED = getBooleanEnv(PN_TRACE_FRM);
+private static final int TRACE_FRAME_PAYLOAD_LENGTH = 
Integer.getInteger(proton.trace_frame_payload_length, 80);
 
 // trace levels
 private int _levels = (FRM_ENABLED ? this.TRACE_FRM : 0);
@@ -1452,8 +1453,8 @@ public class TransportImpl extends Endpo
 msg.append( ).append(event).append( ).append(frame.getBody());
 if (frame.getPayload() != null) {
 String payload = frame.getPayload().toString();
-if (payload.length()  80) {
-payload = payload.substring(0, 80) + ( + 
payload.length() + );
+if (payload.length()  TRACE_FRAME_PAYLOAD_LENGTH) {
+payload = payload.substring(0, TRACE_FRAME_PAYLOAD_LENGTH) 
+ ( + payload.length() + );
 }
 msg.append( \).append(payload).append(\);
 }



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630876 - /qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:59:15 2014
New Revision: 1630876

URL: http://svn.apache.org/r1630876
Log:
PROTON-704: subtract 1 when setting delivery-count header based on 
JMSXDeliveryCount during outbound JMS transformation

Modified:

qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java

Modified: 
qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java?rev=1630876r1=1630875r2=1630876view=diff
==
--- 
qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java
 (original)
+++ 
qpid/proton/branches/examples/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java
 Fri Oct 10 12:59:15 2014
@@ -166,7 +166,12 @@ public class JMSMappingOutboundTransform
 } else if( key.equals(firstAcquirerKey) ) {
 header.setFirstAcquirer(msg.getBooleanProperty(key));
 } else if( key.startsWith(JMSXDeliveryCount) ) {
-header.setDeliveryCount(new 
UnsignedInteger(msg.getIntProperty(key)));
+// The AMQP delivery-count field only includes prior failed 
delivery attempts,
+// whereas JMSXDeliveryCount includes the first/current 
delivery attempt.
+int amqpDeliveryCount = msg.getIntProperty(key) - 1;
+if( amqpDeliveryCount  0 ) {
+header.setDeliveryCount(new 
UnsignedInteger(amqpDeliveryCount));
+}
 } else if( key.startsWith(JMSXUserID) ) {
 String value = msg.getStringProperty(key);
 props.setUserId(new Binary(value.getBytes(UTF-8)));



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630874 - in /qpid/proton/branches/examples/proton-c/src: platform.h ssl/openssl.c util.c util.h

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:59:02 2014
New Revision: 1630874

URL: http://svn.apache.org/r1630874
Log:
PROTON-660: Fix openssl.c build on windows

Modified:
qpid/proton/branches/examples/proton-c/src/platform.h
qpid/proton/branches/examples/proton-c/src/ssl/openssl.c
qpid/proton/branches/examples/proton-c/src/util.c
qpid/proton/branches/examples/proton-c/src/util.h

Modified: qpid/proton/branches/examples/proton-c/src/platform.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/platform.h?rev=1630874r1=1630873r2=1630874view=diff
==
--- qpid/proton/branches/examples/proton-c/src/platform.h (original)
+++ qpid/proton/branches/examples/proton-c/src/platform.h Fri Oct 10 12:59:02 
2014
@@ -78,10 +78,20 @@ int64_t pn_i_atoll(const char* num);
  * Provide the expected C99 behavior for these functions.
  */
 #include stdio.h
+
 #define snprintf pn_i_snprintf
 #define vsnprintf pn_i_vsnprintf
+
 int pn_i_snprintf(char *buf, size_t count, const char *fmt, ...);
 int pn_i_vsnprintf(char *buf, size_t count, const char *fmt, va_list ap);
+
+#define strcasecmp(A,B) (!pni_eq_nocase(A,B))
+#define strncasecmp(A,B,C) (!pni_eq_n_nocase(A,B,C))
+
+#if !defined(S_ISDIR)
+# define S_ISDIR(X) ((X)  _S_IFDIR)
+#endif
+
 #endif
 
 #if defined _MSC_VER || defined _OPENVMS

Modified: qpid/proton/branches/examples/proton-c/src/ssl/openssl.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/ssl/openssl.c?rev=1630874r1=1630873r2=1630874view=diff
==
--- qpid/proton/branches/examples/proton-c/src/ssl/openssl.c (original)
+++ qpid/proton/branches/examples/proton-c/src/ssl/openssl.c Fri Oct 10 
12:59:02 2014
@@ -25,6 +25,22 @@
 #include platform.h
 #include util.h
 
+// openssl on windows expects the user to have already included
+// winsock.h
+
+#ifdef _MSC_VER
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501
+#endif
+#if _WIN32_WINNT  0x0501
+#error Proton requires Windows API support for XP or later.
+#endif
+#include winsock2.h
+#include mswsock.h
+#include Ws2tcpip.h
+#endif
+
+
 #include openssl/ssl.h
 #include openssl/dh.h
 #include openssl/err.h

Modified: qpid/proton/branches/examples/proton-c/src/util.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/util.c?rev=1630874r1=1630873r2=1630874view=diff
==
--- qpid/proton/branches/examples/proton-c/src/util.c (original)
+++ qpid/proton/branches/examples/proton-c/src/util.c Fri Oct 10 12:59:02 2014
@@ -213,7 +213,7 @@ void pni_fatal(const char *fmt, ...)
   va_end(ap);
 }
 
-static bool pn_i_eq_nocase(const char *a, const char *b)
+bool pni_eq_nocase(const char *a, const char *b)
 {
 while (*b) {
 if (tolower(*a++) != tolower(*b++))
@@ -222,11 +222,20 @@ static bool pn_i_eq_nocase(const char *a
 return !(*a);
 }
 
+bool pni_eq_n_nocase(const char *a, const char *b, int len)
+{
+  while (*b  len--  0 ) {
+if (tolower(*a++) != tolower(*b++))
+  return false;
+  }
+  return !(*a)  !(*b);
+}
+
 bool pn_env_bool(const char *name)
 {
   char *v = getenv(name);
-  return v  (pn_i_eq_nocase(v, true) || pn_i_eq_nocase(v, 1) ||
-   pn_i_eq_nocase(v, yes) || pn_i_eq_nocase(v, on));
+  return v  (pni_eq_nocase(v, true) || pni_eq_nocase(v, 1) ||
+   pni_eq_nocase(v, yes) || pni_eq_nocase(v, on));
 }
 
 char *pn_strdup(const char *src)

Modified: qpid/proton/branches/examples/proton-c/src/util.h
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/util.h?rev=1630874r1=1630873r2=1630874view=diff
==
--- qpid/proton/branches/examples/proton-c/src/util.h (original)
+++ qpid/proton/branches/examples/proton-c/src/util.h Fri Oct 10 12:59:02 2014
@@ -40,6 +40,8 @@ PN_EXTERN ssize_t pn_quote_data(char *ds
 int pn_quote(pn_string_t *dst, const char *src, size_t size);
 PN_EXTERN void pn_fprint_data(FILE *stream, const char *bytes, size_t size);
 PN_EXTERN void pn_print_data(const char *bytes, size_t size);
+bool pni_eq_nocase(const char *a, const char *b);
+bool pni_eq_n_nocase(const char *a, const char *b, int len);
 bool pn_env_bool(const char *name);
 pn_timestamp_t pn_timestamp_min(pn_timestamp_t a, pn_timestamp_t b);
 



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630879 - /qpid/proton/branches/examples/proton-c/CMakeLists.txt

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:59:29 2014
New Revision: 1630879

URL: http://svn.apache.org/r1630879
Log:
NO-JIRA: If we didn't build the python bindings then we can't run python tests

Modified:
qpid/proton/branches/examples/proton-c/CMakeLists.txt

Modified: qpid/proton/branches/examples/proton-c/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/CMakeLists.txt?rev=1630879r1=1630878r2=1630879view=diff
==
--- qpid/proton/branches/examples/proton-c/CMakeLists.txt (original)
+++ qpid/proton/branches/examples/proton-c/CMakeLists.txt Fri Oct 10 12:59:29 
2014
@@ -484,21 +484,23 @@ mark_as_advanced (VALGRIND_EXE)
 add_subdirectory(src/tests)
 
 # python test: tests/python/proton-test
-set (py_root ${pn_test_root}/python)
-set (py_src ${CMAKE_CURRENT_SOURCE_DIR}/bindings/python)
-set (py_bin ${CMAKE_CURRENT_BINARY_DIR}/bindings/python)
-set (py_bld ${CMAKE_CURRENT_BINARY_DIR}${bld_suffix}) # For windows
-set (app_path ${pn_test_bin}/tools/apps/c${bld_suffix})
-set (app_path ${app_path}:${pn_test_root}/tools/apps/python)
-set_path (py_path ${py_bin}:${py_bld}:${app_path}:$ENV{PATH})
-set_path (py_pythonpath 
${py_root}:${py_src}:${py_bin}:${py_bld}|$ENV{PYTHONPATH})
-if (CMAKE_SYSTEM_NAME STREQUAL Windows)
-  set_path (py_pythonpath ${py_bin}${bld_suffix}:${py_pythonpath})
-endif (CMAKE_SYSTEM_NAME STREQUAL Windows)
-add_test (python-test ${PYTHON_EXECUTABLE} ${env_py}
- PATH=${py_path} PYTHONPATH=${py_pythonpath} ${VALGRIND_ENV}
- ${PYTHON_EXECUTABLE} ${py_root}/proton-test)
-set_tests_properties(python-test PROPERTIES PASS_REGULAR_EXPRESSION Totals: 
.* 0 failed)
+if (BUILD_PYTHON)
+  set (py_root ${pn_test_root}/python)
+  set (py_src ${CMAKE_CURRENT_SOURCE_DIR}/bindings/python)
+  set (py_bin ${CMAKE_CURRENT_BINARY_DIR}/bindings/python)
+  set (py_bld ${CMAKE_CURRENT_BINARY_DIR}${bld_suffix}) # For windows
+  set (app_path ${pn_test_bin}/tools/apps/c${bld_suffix})
+  set (app_path ${app_path}:${pn_test_root}/tools/apps/python)
+  set_path (py_path ${py_bin}:${py_bld}:${app_path}:$ENV{PATH})
+  set_path (py_pythonpath 
${py_root}:${py_src}:${py_bin}:${py_bld}|$ENV{PYTHONPATH})
+  if (CMAKE_SYSTEM_NAME STREQUAL Windows)
+set_path (py_pythonpath ${py_bin}${bld_suffix}:${py_pythonpath})
+  endif (CMAKE_SYSTEM_NAME STREQUAL Windows)
+  add_test (python-test ${PYTHON_EXECUTABLE} ${env_py}
+PATH=${py_path} PYTHONPATH=${py_pythonpath} ${VALGRIND_ENV}
+${PYTHON_EXECUTABLE} ${py_root}/proton-test)
+  set_tests_properties(python-test PROPERTIES PASS_REGULAR_EXPRESSION Totals: 
.* 0 failed)
+endif (BUILD_PYTHON)
 
 find_program(RUBY_EXE ruby)
 if (RUBY_EXE)



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1630878 - /qpid/proton/branches/examples/proton-c/src/tests/CMakeLists.txt

2014-10-10 Thread gsim
Author: gsim
Date: Fri Oct 10 12:59:25 2014
New Revision: 1630878

URL: http://svn.apache.org/r1630878
Log:
PROTON-705: Work with older versions of CMake too

Modified:
qpid/proton/branches/examples/proton-c/src/tests/CMakeLists.txt

Modified: qpid/proton/branches/examples/proton-c/src/tests/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/tests/CMakeLists.txt?rev=1630878r1=1630877r2=1630878view=diff
==
--- qpid/proton/branches/examples/proton-c/src/tests/CMakeLists.txt (original)
+++ qpid/proton/branches/examples/proton-c/src/tests/CMakeLists.txt Fri Oct 10 
12:59:25 2014
@@ -31,7 +31,7 @@ macro (pn_add_c_test test file)
   if (CMAKE_SYSTEM_NAME STREQUAL Windows)
 get_target_property(QPID_PROTON_TARGET qpid-proton LOCATION_${bld_suffix})
 get_target_property(${test}_LOCATION ${test} LOCATION_${bld_suffix})
-get_filename_component(QPID_PROTON_TARGET_DIR ${QPID_PROTON_TARGET} 
DIRECTORY)
+get_filename_component(QPID_PROTON_TARGET_DIR ${QPID_PROTON_TARGET} PATH)
 add_test (${test} ${PYTHON_EXECUTABLE} ${env_py}
  PATH=${QPID_PROTON_TARGET_DIR}
  ${${test}_LOCATION})



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



  1   2   >