summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client/ConnectionSettings.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-04-29 20:15:18 +0000
committerGordon Sim <gsim@apache.org>2008-04-29 20:15:18 +0000
commitacc0dee435e1fa22e3b1e7cdfecf6913bf88988e (patch)
tree729f7a03543acf23380e68897f8788a3e6b45e2e /cpp/src/qpid/client/ConnectionSettings.cpp
parenta19ce3b1863f80c1232ec2690cd920325a39d71a (diff)
downloadqpid-python-acc0dee435e1fa22e3b1e7cdfecf6913bf88988e.tar.gz
QPID-974: allow the size of the queue of outgoing frames to be restricted
QPID-544: tidy up configuration (ensuring desired settings are used correctly, allowing tcp socket options to be set etc) git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@652083 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client/ConnectionSettings.cpp')
-rw-r--r--cpp/src/qpid/client/ConnectionSettings.cpp81
1 files changed, 81 insertions, 0 deletions
diff --git a/cpp/src/qpid/client/ConnectionSettings.cpp b/cpp/src/qpid/client/ConnectionSettings.cpp
new file mode 100644
index 0000000000..ea2729c2dd
--- /dev/null
+++ b/cpp/src/qpid/client/ConnectionSettings.cpp
@@ -0,0 +1,81 @@
+/*
+ *
+ * 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 "ConnectionSettings.h"
+
+#include "qpid/sys/posix/check.h"
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+
+namespace qpid {
+namespace client {
+
+ConnectionSettings::ConnectionSettings() :
+ Options("Connection Settings"),
+ host("localhost"),
+ port(TcpAddress::DEFAULT_PORT),
+ clientid("cpp"),
+ username("guest"),
+ password("guest"),
+ mechanism("PLAIN"),
+ locale("en_US"),
+ heartbeat(0),
+ maxChannels(32767),
+ maxFrameSize(65535),
+ bounds(2),
+ tcpNoDelay(false)
+{
+ addOptions()
+ ("broker,b", optValue(host, "HOST"), "Broker host to connect to")
+ ("port,p", optValue(port, "PORT"), "Broker port to connect to")
+ ("virtualhost,v", optValue(virtualhost, "VHOST"), "virtual host")
+ ("clientname,n", optValue(clientid, "ID"), "unique client identifier")
+ ("username", optValue(username, "USER"), "user name for broker log in.")
+ ("password", optValue(password, "PASSWORD"), "password for broker log in.")
+ ("mechanism", optValue(mechanism, "MECH"), "SASL mechanism to use when authenticating.")
+ ("locale", optValue(locale, "LOCALE"), "locale to use.")
+ ("max-channels", optValue(maxChannels, "N"), "the maximum number of channels the client requires.")
+ ("max-frame-size", optValue(maxFrameSize, "N"), "the maximum frame size to request.")
+ ("bounds-multiplier", optValue(bounds, "N"),
+ "restricts the total size of outgoing frames queued up for writing (as a multiple of the max frame size).");
+ add(log);
+}
+
+ConnectionSettings::~ConnectionSettings() {}
+
+void ConnectionSettings::parse(int argc, char** argv)
+{
+ qpid::Options::parse(argc, argv);
+ qpid::log::Logger::instance().configure(log, argv[0]);
+}
+
+
+void ConnectionSettings::configurePosixTcpSocket(int fd) const
+{
+ if (tcpNoDelay) {
+ int flag = 1;
+ int result = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(flag));
+ QPID_POSIX_CHECK(result);
+ QPID_LOG(debug, "Set TCP_NODELAY");
+ }
+}
+
+}} // namespace qpid::client