Re: [python-qpid] Blocking on dead sockets

2010-12-03 Thread Rafael Schloming

On 12/03/2010 01:34 PM, Andrew Stitcher wrote:

On Wed, 2010-12-01 at 15:18 +0300, Dmitry Konishchev wrote:

Hi! I use python-qpid and I have faced with a few bugs in it:

* If you open a few connections, and one of them breaks (for example,
   due to a network error), another connections can be locked for time, which is
   equal to network timeout of the broken connection. This happens due to
   working with sockets in blocking mode and due to using one Selector for all
   connections.
* All connections could become locked forever due to races between
   Driver and Selector objects. Driver object removes itself from the Selector
   non-atomically and a situation when Driver is alredy closed, but the Selector
   refers to it could happen. In this case select() call in the Selector raise
   an exeption due to self._transport.fileno() call on Driver where
   self._transport is None. The selector doesn't handle errors on select(), so
   the selector's thread will be stopped due to unhandled Exception.
* There is no checks on EINTR error on os.* calls.

As a temporary solution for me, I've written a patch, which fixes the errors:
https://github.com/KonishchevDmitry/qpid/commit/9090f7f32f5746d00de6fc378ac4b2f4fa75b856

It would be good if you'd include this patch to a new version of Qpid.


IANAL but I believe that before we could accept this patch into qpid
either:

* You need to sign a contributors agreement

OR (much easier)

* You open a ticket with our Jira bug tracker
https://issues.apache.org/jira and attach the patch there ticking the
"Grant License to ASF ..." box.

Sorry to make this more complicated than it might seem it should be.


Good point. I forgot about the legal red tape.

--Rafael

-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



[jira] Issue Comment Edited: (QPID-2968) Blocking on dead sockets

2010-12-03 Thread Dmitry Konishchev (JIRA)

[ 
https://issues.apache.org/jira/browse/QPID-2968?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12966678#action_12966678
 ] 

Dmitry Konishchev edited comment on QPID-2968 at 12/3/10 4:43 PM:
--

This patch fixes following bugs:

* If you open a few connections, and one of them breaks (for example,
  due to a network error), another connections can be locked for a time,
  which is equal to network timeout of the broken connection.
* All connections could become locked forever due to races between
  Driver and Selector objects.
* Added EINTR error handling.
* Added broker connection timeout which is equal to the connection
  heartbeat interval.

  was (Author: konishchev):
The following patch fixes the bugs.
  
> Blocking on dead sockets
> 
>
> Key: QPID-2968
> URL: https://issues.apache.org/jira/browse/QPID-2968
> Project: Qpid
>  Issue Type: Bug
>  Components: Python Client
>Affects Versions: Future, 0.9, 0.8, 0.7
> Environment: Does not matter
>Reporter: Dmitry Konishchev
> Fix For: Future, 0.9, 0.8, 0.7
>
> Attachments: patch
>
>
> * If you open a few connections, and one of them breaks (for example, 
>   due to a network error), another connections can be locked for time, which 
> is 
>   equal to network timeout of the broken connection. This happens due to 
>   working with sockets in blocking mode and due to using one Selector for all 
>   connections. 
> * All connections could become locked forever due to races between 
>   Driver and Selector objects. Driver object removes itself from the Selector 
>   non-atomically and a situation when Driver is alredy closed, but the 
> Selector 
>   refers to it could happen. In this case select() call in the Selector raise 
>   an exeption due to self._transport.fileno() call on Driver where 
>   self._transport is None. The selector doesn't handle errors on select(), so 
>   the selector's thread will be stopped due to unhandled Exception. 
> * There is no checks on EINTR error on os.* calls. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



[jira] Updated: (QPID-2968) Blocking on dead sockets

2010-12-03 Thread Dmitry Konishchev (JIRA)

 [ 
https://issues.apache.org/jira/browse/QPID-2968?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitry Konishchev updated QPID-2968:


Attachment: patch

The following patch fixes the bugs.

> Blocking on dead sockets
> 
>
> Key: QPID-2968
> URL: https://issues.apache.org/jira/browse/QPID-2968
> Project: Qpid
>  Issue Type: Bug
>  Components: Python Client
>Affects Versions: Future, 0.9, 0.8, 0.7
> Environment: Does not matter
>Reporter: Dmitry Konishchev
> Fix For: Future, 0.9, 0.8, 0.7
>
> Attachments: patch
>
>
> * If you open a few connections, and one of them breaks (for example, 
>   due to a network error), another connections can be locked for time, which 
> is 
>   equal to network timeout of the broken connection. This happens due to 
>   working with sockets in blocking mode and due to using one Selector for all 
>   connections. 
> * All connections could become locked forever due to races between 
>   Driver and Selector objects. Driver object removes itself from the Selector 
>   non-atomically and a situation when Driver is alredy closed, but the 
> Selector 
>   refers to it could happen. In this case select() call in the Selector raise 
>   an exeption due to self._transport.fileno() call on Driver where 
>   self._transport is None. The selector doesn't handle errors on select(), so 
>   the selector's thread will be stopped due to unhandled Exception. 
> * There is no checks on EINTR error on os.* calls. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



[jira] Created: (QPID-2968) Blocking on dead sockets

2010-12-03 Thread Dmitry Konishchev (JIRA)
Blocking on dead sockets


 Key: QPID-2968
 URL: https://issues.apache.org/jira/browse/QPID-2968
 Project: Qpid
  Issue Type: Bug
  Components: Python Client
Affects Versions: Future, 0.9, 0.8, 0.7
 Environment: Does not matter
Reporter: Dmitry Konishchev
 Fix For: Future, 0.9, 0.8, 0.7


* If you open a few connections, and one of them breaks (for example, 
  due to a network error), another connections can be locked for time, which is 
  equal to network timeout of the broken connection. This happens due to 
  working with sockets in blocking mode and due to using one Selector for all 
  connections. 
* All connections could become locked forever due to races between 
  Driver and Selector objects. Driver object removes itself from the Selector 
  non-atomically and a situation when Driver is alredy closed, but the Selector 
  refers to it could happen. In this case select() call in the Selector raise 
  an exeption due to self._transport.fileno() call on Driver where 
  self._transport is None. The selector doesn't handle errors on select(), so 
  the selector's thread will be stopped due to unhandled Exception. 
* There is no checks on EINTR error on os.* calls. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



[jira] Created: (QPID-2967) Windows broker fails to destroy connections if client exits abruptly

2010-12-03 Thread Chuck Rolke (JIRA)
Windows broker fails to destroy connections if client exits abruptly


 Key: QPID-2967
 URL: https://issues.apache.org/jira/browse/QPID-2967
 Project: Qpid
  Issue Type: Bug
Affects Versions: 0.8
 Environment: Windows 64- and 32-bit builds of cpp/qpidd
Reporter: Chuck Rolke


Start the broker with a small number of connections:
  qpidd --auth no --no-data-dir --max-connections 2

Run a 'server' program, one that never exits on its own, and kill it with ^C. 
After doing this for the max-number of connections the server will not accept 
any more connections. Internally to the broker the Connection objects are never 
destroyed.

If the broker's client exits normally then the connection is destroyed 
properly. You can run HelloWorld against the windows broker beyond the 
max-connections count with no problem.

I know that "the broker is not supported on Windows" but the same problem is 
there for clients when the  broker goes away abruptly.





-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



[jira] Assigned: (QPID-2902) LargeMessageTest fails on java.0.10 test profiles

2010-12-03 Thread Danushka Menikkumbura (JIRA)

 [ 
https://issues.apache.org/jira/browse/QPID-2902?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Danushka Menikkumbura reassigned QPID-2902:
---

Assignee: Danushka Menikkumbura

> LargeMessageTest fails on java.0.10 test profiles
> -
>
> Key: QPID-2902
> URL: https://issues.apache.org/jira/browse/QPID-2902
> Project: Qpid
>  Issue Type: Bug
>  Components: Java Broker, Java Client
>Reporter: Robbie Gemmell
>Assignee: Danushka Menikkumbura
>
> LargeMessageTest sporadically fails on the java.0.10 test profiles. It is 
> currently excluded.
> eg:
> FAILED
> Excpetion occured:java.nio.charset.MalformedInputException: Input length = 1
> junit.framework.AssertionFailedError: Excpetion 
> occured:java.nio.charset.MalformedInputException: Input length = 1
> at 
> org.apache.qpid.test.unit.basic.LargeMessageTest.checkLargeMessage(LargeMessageTest.java:159)
> at 
> org.apache.qpid.test.unit.basic.LargeMessageTest.test1024k(LargeMessageTest.java:133)
> at 
> org.apache.qpid.test.utils.QpidBrokerTestCase.runBare(QpidBrokerTestCase.java:232)
> at org.apache.qpid.test.utils.QpidTestCase.run(QpidTestCase.java:120)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



Re: [VOTE] Release RC3 as Qpid 0.8

2010-12-03 Thread Chuck Rolke
[X] Yes, release RC3 as Qpid 0.8
[ ] No, I have an issue which I'll discuss in a new thread.

-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org

-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



Re: [VOTE] Release RC3 as Qpid 0.8

2010-12-03 Thread Andrew Stitcher
[X] Yes, release RC3 as Qpid 0.8
[ ] No, I have an issue which I'll discuss in a new thread.

Andrew


-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



Re: [python-qpid] Blocking on dead sockets

2010-12-03 Thread Andrew Stitcher
On Wed, 2010-12-01 at 15:18 +0300, Dmitry Konishchev wrote:
> Hi! I use python-qpid and I have faced with a few bugs in it:
> 
> * If you open a few connections, and one of them breaks (for example,
>   due to a network error), another connections can be locked for time, which 
> is
>   equal to network timeout of the broken connection. This happens due to
>   working with sockets in blocking mode and due to using one Selector for all
>   connections.
> * All connections could become locked forever due to races between
>   Driver and Selector objects. Driver object removes itself from the Selector
>   non-atomically and a situation when Driver is alredy closed, but the 
> Selector
>   refers to it could happen. In this case select() call in the Selector raise
>   an exeption due to self._transport.fileno() call on Driver where
>   self._transport is None. The selector doesn't handle errors on select(), so
>   the selector's thread will be stopped due to unhandled Exception.
> * There is no checks on EINTR error on os.* calls.
> 
> As a temporary solution for me, I've written a patch, which fixes the errors:
> https://github.com/KonishchevDmitry/qpid/commit/9090f7f32f5746d00de6fc378ac4b2f4fa75b856
> 
> It would be good if you'd include this patch to a new version of Qpid.

IANAL but I believe that before we could accept this patch into qpid
either:

* You need to sign a contributors agreement

OR (much easier)

* You open a ticket with our Jira bug tracker
https://issues.apache.org/jira and attach the patch there ticking the
"Grant License to ASF ..." box.

Sorry to make this more complicated than it might seem it should be.

Andrew




-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



RE: Release notes for 0.8 announcement email ?

2010-12-03 Thread Robbie Gemmell
That I think I can squeeze into the email :)

Robbie

> -Original Message-
> From: Chuck Rolke [mailto:cro...@redhat.com]
> Sent: 03 December 2010 14:58
> To: dev@qpid.apache.org
> Subject: Re: Release notes for 0.8 announcement email ?
> 
> Right. I'll add the 'Whoa...' text to the .NET Binding chapter in
> doc/book/ProgrammingInApacheQpid.
> 
> For now, how about an executive summary of:
> 
> The .NET Binding for the C++ Qpid Messaging API is an intermediary
> program designed
> to make access to C++ Qpid Messaging methods simple and in a way
> familiar to the programmer.
> The .NET Binding creates and manipulates actual C++ Qpid Messaging API
> objects so that a .NET
> program will operate the same as if the program were written in native
> C++.
> 
> -Chuck
> 
> - "Robbie Gemmell"  wrote:
> 
> > From: "Robbie Gemmell" 
> > To: dev@qpid.apache.org
> > Sent: Thursday, December 2, 2010 7:41:18 PM GMT -05:00 US/Canada
> Eastern
> > Subject: RE: Release notes for 0.8 announcement email ?
> >
> > Whoaa slightly larger and more detailed response than I was
> > expecting :)
> >
> > Is this available in a file of some sort (e.g. from the repo)? If not
> > I would suggest it gets put in the docbook or on a wiki page so that
> > it can be linked to.
> >
> > Robbie
> >
> > > -Original Message-
> > > From: Chuck Rolke [mailto:cro...@redhat.com]
> > > Sent: 02 December 2010 22:50
> > > To: dev@qpid.apache.org
> > > Subject: Re: Release notes for 0.8 announcement email ?
> > >
> > > Hi Robbie,
> > >
> > > > * .Net Bindings for the C++ Qpid Messaging API.
> > >
> > > INTRODUCTION
> > >
> > > The ".NET Binding for the QPID Messaging API" is a set of libraries
> > for
> > > developing QPID Messaging applications under Windows .NET.
> > >
> > > Located in qpid/cpp/bindings/qpid/dotnet, the Visual Studio
> > solution
> > > org.apache.qpid.messaging.sln builds the binding on top of the
> > > qpid/cpp core libraries.
> > >
> > > .NET BINDING COMPONENT ARCHITECTURE
> > >
> > >   ++
> > >   | \dotnet_examples   |
> > >   | Managed C# |
> > >   +--+---+-+
> > >  |   |
> > >  V   |
> > > +---+|
> > > | Managed Callback  ||
> > > | org.apache.qpid.messaging.||
> > > | sessionreceiver.dll   ||
> > > +--++|
> > >| |
> > > managedV V
> > > (.NET) ++
> > > :::| .NET Messaging Binding Library
> > |
> > > unmanaged  | org.apache.qpid.messaging.dll  |
> > > (Native Win32/64)  +---++
> > >|
> > >|
> > >   ++   |
> > >   | \examples  |   |
> > >   | Unmanaged C++  |   |
> > >   ++---+   |
> > >|   |
> > >V   V
> > >   +--+
> > >   | QPID Messaging C++ Libraries |
> > >   | bin\qpid*.dll bin\qmf*.dll   |
> > >   ++--+--+
> > >|  |
> > >V  |
> > >   +-+ |
> > >   | Boost Libraries | |
> > >   +++ |
> > >|  |
> > >V  V
> > >   +-+
> > >   | MSVC Runtime Libraries  |
> > >   +-+
> > >
> > > This diagram illustrates the code and library components of the
> > binding
> > > and the hierarchical relationships between them.
> > >
> > > Working from the bottom up the components are:
> > >
> > > 1.MSVC Runtime Libraries
> > > Microsoft Visual C++ runtime libraries. These libraries provide
> > support
> > > for .NET Messaging and for any other C++ executable.
> > >
> > > 2.Boost Libraries
> > > Supporting libraries supplied by Boost.Org. (See http://boost.org/)
> > >
> > > 3.QPID Messaging C++ Libraries
> > > The QPID Messaging C++ core run time system.
> > >
> > > 4.Unmanaged C++ Example Source Programs
> > > Ordinary C++ programs that illustrate using qpid/cpp Messaging
> > directly
> > > in a native Windows environment.
> > >
> > > 5..NET Messaging Binding Library
> > > The .NET Messaging library provides interoprability between managed
> > > .NET
> > > programs and the unmanaged, native Messaging C++ run time system.
> > .NET
> > 

Java broker flow control implementation questions

2010-12-03 Thread Ken Giusti
Hi Rob,

I'm working on implementing producer flow control for the C++ broker, based on 
the 0_10 credit model.  Please see 
https://issues.apache.org/jira/browse/QPID-2935 for more detail.

Marnie indicated that you've implemented this for the Java broker, and has 
forwarded me a few links that describe the functionality.

I'd like the look and feel of the C++ implementation to be the same as the 
existing Java support, so I'm following the usage model as described in 
https://cwiki.apache.org/qpid/use-producer-flow-control.html.

Have you implemented this over the 0_10 protocol?  I'd like to leverage as much 
of the design and implementation as possible.

thanks,
 
-K

-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



Re: [VOTE] Release RC3 as Qpid 0.8

2010-12-03 Thread Gordon Sim

On 12/03/2010 04:14 PM, mick wrote:

On Wed, 2010-12-01 at 14:27 +, Robbie Gemmell wrote:


[ ] Yes, release RC3 as Qpid 0.8
[ ] No, I have an issue which I'll discuss in a new thread.




[X] Undecided


I downloaded and built qpid-0.8.tar on a cluster-enabled machine, and I
am seeing several cluster tests putting out many messages like this:

   Exception exceptions.TypeError: "poll() got an unexpected keyword
argument '_deadstate'" in>  ignored


The tests then succeed, but I wonder if the success is spurious?
Does anyone know how serious this is or is not?

Anybody want to try and sway my vote?  ( I am disappointingly easy to
bribe/threaten. )


I believe that is an issue with the test itself and the python version. 
It has been fixed on trunk[1] and is not in my view a blocker.


[1] http://svn.apache.org/viewvc?view=revision&revision=1034421

-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



[jira] Commented: (QPID-2935) Support "best effort" producer flow control within the AMQP 0.10 implementation.

2010-12-03 Thread Ken Giusti (JIRA)

[ 
https://issues.apache.org/jira/browse/QPID-2935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12966573#action_12966573
 ] 

Ken Giusti commented on QPID-2935:
--

Marnie - thanks for those links.  We'll want the C++ broker's implementation to 
have the same look and feel as the existing Java functionality.  I'll follow up 
with Rob with some questions.

Alan - extra work necessary for clustering - duly noted.  I'll be sure to 
develop some flow control tests against clustered brokers, and have you review 
them.

> Support "best effort" producer flow control within the AMQP 0.10 
> implementation.
> 
>
> Key: QPID-2935
> URL: https://issues.apache.org/jira/browse/QPID-2935
> Project: Qpid
>  Issue Type: New Feature
>  Components: C++ Broker, C++ Client
>Affects Versions: 0.9
> Environment: any
>Reporter: Ken Giusti
>Assignee: Ken Giusti
> Fix For: Future
>
> Attachments: QPID-2935.tgz
>
>
> To what extent, if any, could producer flow control be supported on the 
> existing (pre-1.0) protocol?
> In the current C++ broker/client implementation, when a queue on the broker 
> fills to the point where it cannot accept any more messages 
> (--default-queue-limit hit), the broker will forcibly disconnect any client 
> that attempts to route a message to that queue.   This is an abrupt failure - 
> the producing client is not privy to the queue's remaining capacity.  The 
> broker provides no feedback to the producing client, which could be used to 
> throttle the client's message production rate.
> The purpose of this JIRA is to explore the possible methods for implementing 
> producer throttling on the current 0.10 C++ codebase. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



Re: [VOTE] Release RC3 as Qpid 0.8

2010-12-03 Thread mick
On Wed, 2010-12-01 at 14:27 +, Robbie Gemmell wrote:
> 
> [ ] Yes, release RC3 as Qpid 0.8
> [ ] No, I have an issue which I'll discuss in a new thread.
> 
> 

[X] Undecided


I downloaded and built qpid-0.8.tar on a cluster-enabled machine, and I
am seeing several cluster tests putting out many messages like this:

  Exception exceptions.TypeError: "poll() got an unexpected keyword
argument '_deadstate'" in > ignored


The tests then succeed, but I wonder if the success is spurious?
Does anyone know how serious this is or is not?

Anybody want to try and sway my vote?  ( I am disappointingly easy to
bribe/threaten. )


- Mick .



-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



Re: [python-qpid] Blocking on dead sockets

2010-12-03 Thread Rafael Schloming

On 12/01/2010 07:18 AM, Dmitry Konishchev wrote:

Hi! I use python-qpid and I have faced with a few bugs in it:

* If you open a few connections, and one of them breaks (for example,
   due to a network error), another connections can be locked for time, which is
   equal to network timeout of the broken connection. This happens due to
   working with sockets in blocking mode and due to using one Selector for all
   connections.
* All connections could become locked forever due to races between
   Driver and Selector objects. Driver object removes itself from the Selector
   non-atomically and a situation when Driver is alredy closed, but the Selector
   refers to it could happen. In this case select() call in the Selector raise
   an exeption due to self._transport.fileno() call on Driver where
   self._transport is None. The selector doesn't handle errors on select(), so
   the selector's thread will be stopped due to unhandled Exception.
* There is no checks on EINTR error on os.* calls.

As a temporary solution for me, I've written a patch, which fixes the errors:
https://github.com/KonishchevDmitry/qpid/commit/9090f7f32f5746d00de6fc378ac4b2f4fa75b856

It would be good if you'd include this patch to a new version of Qpid.



Thanks, I'll have a look at this.

--Rafael


-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



Re: Release notes for 0.8 announcement email ?

2010-12-03 Thread Chuck Rolke
Right. I'll add the 'Whoa...' text to the .NET Binding chapter in 
doc/book/ProgrammingInApacheQpid.

For now, how about an executive summary of:

The .NET Binding for the C++ Qpid Messaging API is an intermediary program 
designed
to make access to C++ Qpid Messaging methods simple and in a way familiar to 
the programmer.
The .NET Binding creates and manipulates actual C++ Qpid Messaging API objects 
so that a .NET
program will operate the same as if the program were written in native C++. 

-Chuck

- "Robbie Gemmell"  wrote:

> From: "Robbie Gemmell" 
> To: dev@qpid.apache.org
> Sent: Thursday, December 2, 2010 7:41:18 PM GMT -05:00 US/Canada Eastern
> Subject: RE: Release notes for 0.8 announcement email ?
>
> Whoaa slightly larger and more detailed response than I was
> expecting :)
> 
> Is this available in a file of some sort (e.g. from the repo)? If not
> I would suggest it gets put in the docbook or on a wiki page so that
> it can be linked to.
> 
> Robbie
> 
> > -Original Message-
> > From: Chuck Rolke [mailto:cro...@redhat.com]
> > Sent: 02 December 2010 22:50
> > To: dev@qpid.apache.org
> > Subject: Re: Release notes for 0.8 announcement email ?
> > 
> > Hi Robbie,
> > 
> > > * .Net Bindings for the C++ Qpid Messaging API.
> > 
> > INTRODUCTION
> > 
> > The ".NET Binding for the QPID Messaging API" is a set of libraries
> for
> > developing QPID Messaging applications under Windows .NET.
> > 
> > Located in qpid/cpp/bindings/qpid/dotnet, the Visual Studio
> solution
> > org.apache.qpid.messaging.sln builds the binding on top of the
> > qpid/cpp core libraries.
> > 
> > .NET BINDING COMPONENT ARCHITECTURE
> > 
> >   ++
> >   | \dotnet_examples   |
> >   | Managed C# |
> >   +--+---+-+
> >  |   |
> >  V   |
> > +---+|
> > | Managed Callback  ||
> > | org.apache.qpid.messaging.||
> > | sessionreceiver.dll   ||
> > +--++|
> >| |
> > managedV V
> > (.NET) ++
> > :::| .NET Messaging Binding Library
> |
> > unmanaged  | org.apache.qpid.messaging.dll  |
> > (Native Win32/64)  +---++
> >|
> >|
> >   ++   |
> >   | \examples  |   |
> >   | Unmanaged C++  |   |
> >   ++---+   |
> >|   |
> >V   V
> >   +--+
> >   | QPID Messaging C++ Libraries |
> >   | bin\qpid*.dll bin\qmf*.dll   |
> >   ++--+--+
> >|  |
> >V  |
> >   +-+ |
> >   | Boost Libraries | |
> >   +++ |
> >|  |
> >V  V
> >   +-+
> >   | MSVC Runtime Libraries  |
> >   +-+
> > 
> > This diagram illustrates the code and library components of the
> binding
> > and the hierarchical relationships between them.
> > 
> > Working from the bottom up the components are:
> > 
> > 1.MSVC Runtime Libraries
> > Microsoft Visual C++ runtime libraries. These libraries provide
> support
> > for .NET Messaging and for any other C++ executable.
> > 
> > 2.Boost Libraries
> > Supporting libraries supplied by Boost.Org. (See http://boost.org/)
> > 
> > 3.QPID Messaging C++ Libraries
> > The QPID Messaging C++ core run time system.
> > 
> > 4.Unmanaged C++ Example Source Programs
> > Ordinary C++ programs that illustrate using qpid/cpp Messaging
> directly
> > in a native Windows environment.
> > 
> > 5..NET Messaging Binding Library
> > The .NET Messaging library provides interoprability between managed
> > .NET
> > programs and the unmanaged, native Messaging C++ run time system.
> .NET
> > programs
> > create a Reference to this library thereby exposing all of the
> native
> > C++
> > Messaging functionality to programs written in any .NET language.
> > 
> > 6..NET Messaging Managed Callback Library
> > An extension of the .NET Messaging Binding Library that provides
> > message
> > callbacks in a managed .NET environment. This component is written
> > purely in C#
> > 
> > 7.Managed C# .NET Example Source Programs
> > Various C# example programs that ill