From 054094d1d805e5812e7c7c3a534515f57ea1c606 Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Mon, 10 May 2010 20:33:19 +0000 Subject: QPID-2589 - Applied patch from Chuck Rolke. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@942892 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/bindings/qpid/dotnet/src/Connection.cpp | 115 ++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 cpp/bindings/qpid/dotnet/src/Connection.cpp (limited to 'cpp/bindings/qpid/dotnet/src/Connection.cpp') diff --git a/cpp/bindings/qpid/dotnet/src/Connection.cpp b/cpp/bindings/qpid/dotnet/src/Connection.cpp new file mode 100644 index 0000000000..58b93f6b24 --- /dev/null +++ b/cpp/bindings/qpid/dotnet/src/Connection.cpp @@ -0,0 +1,115 @@ +/* +* 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. +*/ + +#include +#include +#include +#include +#include + +#include "qpid/messaging/Connection.h" +#include "qpid/messaging/Session.h" + +#include "QpidMarshal.h" +#include "Connection.h" +#include "Session.h" + +namespace org { +namespace apache { +namespace qpid { +namespace messaging { + + /// + /// Connection is a managed wrapper for a qpid::messaging::Connection + /// + + // Public constructor + Connection::Connection(System::String ^ url) : + connectionp(new ::qpid::messaging::Connection(QpidMarshal::ToNative(url))) + { + } + + Connection::Connection(System::String ^ url, System::String ^ options) : + connectionp(new ::qpid::messaging::Connection(QpidMarshal::ToNative(url), + QpidMarshal::ToNative(options))) + { + } + + + // Destructor + Connection::~Connection() + { + Cleanup(); + } + + + // Finalizer + Connection::!Connection() + { + Cleanup(); + } + + + // Destroys kept object + // TODO: add lock + void Connection::Cleanup() + { + if (NULL != connectionp) + { + delete connectionp; + connectionp = NULL; + } + } + + Session ^ Connection::createSession() + { + return createSession(""); + } + + + Session ^ Connection::createSession(System::String ^ name) + { + // allocate native session + ::qpid::messaging::Session * sessionp = new ::qpid::messaging::Session; + + // create native session + *sessionp = connectionp->createSession(QpidMarshal::ToNative(name)); + + // create managed session + Session ^ newSession = gcnew Session(sessionp, this); + + return newSession; + } + + + void Connection::open() + { + connectionp->open(); + } + + bool Connection::isOpen() + { + return connectionp->isOpen(); + } + + void Connection::close() + { + connectionp->close(); + } +}}}} -- cgit v1.2.1