diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 044c8702b..4b5a4ca5e 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -352,6 +352,9 @@ jobs: run: | sudo apt-get update sudo apt-get install -qy doxygen + - name: Set up output directory + run: | + mkdir -p docs/docs/apidocs - name: Build docs run: | doxygen Doxyfile diff --git a/docs/.idea/bmq-docs.iml b/docs/.idea/bmq-docs.iml deleted file mode 100644 index ff88395d5..000000000 --- a/docs/.idea/bmq-docs.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/.idea/modules.xml b/docs/.idea/modules.xml deleted file mode 100644 index a2e275122..000000000 --- a/docs/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/docs/.idea/vcs.xml b/docs/.idea/vcs.xml deleted file mode 100644 index 9661ac713..000000000 --- a/docs/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index a2d250a53..000000000 --- a/docs/404.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: default -title: 404 -permalink: /404 -nav_exclude: true -search_exclude: true ---- - -

Page not found

- -

The page you requested could not be found. Try using the navigation {% if site.search_enabled != false %}or search {% endif %}to find what you're looking for or go to this site's home page.

diff --git a/docs/Gemfile b/docs/Gemfile deleted file mode 100644 index c3bfb65c2..000000000 --- a/docs/Gemfile +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -source 'https://rubygems.org' - -# gem "rails" - -gem "jekyll", "~> 4.3.3" -gem "jekyll-seo-tag" -gem "jekyll-github-metadata" -gem "webrick" diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 224721297..000000000 --- a/docs/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# Overview - -Use [Just the Docs](https://github.com/just-the-docs/just-the-docs) for documentation - -## License - -In order to build the documentation, we use the [Just the -Docs](https://github.com/just-the-docs/just-the-docs) theme for Jekyll, which -is licensed under the [MIT license](../licenses/LICENSE-just-the-docs.txt). -Please see that file for the theme’s copyright and permission notices. - -# Setup for developing locally (Mac) - -## Requirements - -### Homebrew - -Install [Homebrew](https://brew.sh/). -``` -/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -``` - -### Ruby 3.1 - -Installed with Homebrew. https://mac.install.guide/ruby/13.html - -Check Ruby is installed correctly with -``` -ruby -v -``` - - -## Install dependencies - -Install the dependencies listed in the Gemfile using the command: -``` -bundle install -``` - -## Building locally - -``` -bundle exec jekyll build -``` - -OR - -Run the VSCode task 'Build' - -## Running locally - -``` -bundle exec jekyll serve --livereload -``` - -OR - -Run the VSCode task 'Serve' - -# Setup for developing locally (Windows) - -https://jekyllrb.com/docs/installation/windows/ - -# Setup for developing locally (Linux) - -This guide has been tested on Ubuntu 20.04 - -## Install dependencies - -Install prerequisites: -``` -sudo apt-get install build-essential zlib1g-dev -``` -Since there is only old version of Ruby (2.7) available in Ubuntu repos, we need to install RVM: - -* https://rvm.io - -Then install Ruby 3.1: -``` -rvm install 3.1.0 -``` -Install Jekyll and Bundler: -``` -gem install jekyll bundler -``` -## Building locally - -``` -bundle exec jekyll build -``` - -## Running locally - -``` -bundle exec jekyll serve --livereload -``` - -# Useful Resources - -* https://jekyllrb.com/docs/installation/macos/ diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index d5745d1d8..000000000 --- a/docs/_config.yml +++ /dev/null @@ -1,197 +0,0 @@ -# Welcome to Jekyll! -# -# This config file is meant for settings that affect your whole site, values -# which you are expected to set up once and rarely edit after that. If you find -# yourself editing these this file very often, consider using Jekyll's data files -# feature for the data you need to update frequently. -# -# For technical reasons, this file is *NOT* reloaded automatically when you use -# 'jekyll serve'. If you change this file, please restart the server process. - -# Site settings -# These are used to personalize your new site. If you look in the HTML files, -# you will see them accessed via {{ site.title }}, {{ site.github_repo }}, and so on. -# You can create any custom variable you would like, and they will be accessible -# in the templates via {{ site.myvariable }}. -title: BlazingMQ Documentation -description: BlazingMQ Documentation -baseurl: "/blazingmq" # the subpath of your site, e.g. /blog -url: "https://bloomberg.github.io" # the base hostname & protocol for your site, e.g. http://example.com -repository: bloomberg/blazingmq/docs # for github-metadata - -permalink: pretty - -exclude: - # from https://github.com/jekyll/jekyll/blob/master/lib/site_template/_config.yml: - - .sass-cache/ - - .jekyll-cache/ - - gemfiles/ - - Gemfile - - Gemfile.lock - - node_modules/ - - vendor/bundle/ - - vendor/cache/ - - vendor/gems/ - - vendor/ruby/ - # specific to the theme website: - - bin/ - - lib/ - - "*.gemspec" - - "*.gem" - - package.json - - package-lock.json - - Rakefile - - README.md - - docker-compose.yml - - Dockerfile - # theme test code - - fixtures/ - -# Jekyll ignores files whose name begins with an underscore by default, yet the -# Python SDK API documentation generated by Sphinx creates many of these. We -# have to explicitly include each such file here or it will not be copied into -# the GitHub Pages. -include: - - _static - - _modules - - _sources - - _sphinx_javascript_frameworks_compat.js - - _enums.html - - _messages.html - - _monitors.html - - _session.html - - _timeouts.html - -# Set a path/url to a logo that will be displayed instead of the title -logo: "/assets/images/Asset 2@3x.png" -favicon_ico: "favicon.ico" - -# Enable or disable the site search -# Supports true (default) or false -search_enabled: true -search: - # Split pages into sections that can be searched individually - # Supports 1 - 6, default: 2 - heading_level: 2 - # Maximum amount of previews per search result - # Default: 3 - previews: 2 - # Maximum amount of words to display before a matched word in the preview - # Default: 5 - preview_words_before: 3 - # Maximum amount of words to display after a matched word in the preview - # Default: 10 - preview_words_after: 3 - # Set the search token separator - # Default: /[\s\-/]+/ - # Example: enable support for hyphenated search words - tokenizer_separator: /[\s/]+/ - # Display the relative url in search results - # Supports true (default) or false - rel_url: true - # Enable or disable the search button that appears in the bottom right corner of every page - # Supports true or false (default) - button: false - -# For copy button on code -enable_copy_code_button: true - -# To disable support for mermaid diagrams (https://mermaid.js.org), -# comment out the `mermaid` and `version` keys below -# By default, consuming the theme as a gem leaves mermaid disabled; it is opt-in -mermaid: - # Version of mermaid library - # Pick an available version from https://cdn.jsdelivr.net/npm/mermaid/ - version: "9.1.6" - # Put any additional configuration, such as setting the theme, in _includes/mermaid_config.js - # See also docs/ui-components/code - # To load mermaid from a local file use the `path` key to specify the location of the library instead; e.g. - # path: "//assets/js/mermaid.min.js" - -# Enable or disable heading anchors -heading_anchors: true - -# Aux links for the upper right navigation -aux_links: - "GitHub": - - "https://github.com/bloomberg/blazingmq/tree/main/docs" - -# Makes Aux links open in a new tab. Default is false -aux_links_new_tab: true - -# Sort order for navigation links -# nav_sort: case_insensitive # default, equivalent to nil -nav_sort: case_sensitive # Capital letters sorted before lowercase - -# External navigation links -nav_external_links: - - title: Github - url: https://github.com/bloomberg/blazingmq - -# Footer content -# appears at the bottom of every page's main content - -# Back to top link -back_to_top: true -back_to_top_text: "Back to top" - -footer_content: "Copyright © 2023 Bloomberg" - -# Footer last edited timestamp -last_edit_timestamp: true # show or hide edit time - page must have `last_modified_date` defined in the frontmatter -last_edit_time_format: "%b %e %Y at %I:%M %p" # uses ruby's time format: https://ruby-doc.org/stdlib-2.7.0/libdoc/time/rdoc/Time.html - - - -# Footer "Edit this page on GitHub" link text -gh_edit_link: false # show or hide edit this page link -gh_edit_link_text: "Edit this page on GitHub" -gh_edit_repository: "https://github.com/just-the-docs/just-the-docs" # the github URL for your repo -gh_edit_branch: "main" # the branch that your docs is served from -# gh_edit_source: docs # the source that your files originate from -gh_edit_view_mode: "tree" # "tree" or "edit" if you want the user to jump into the editor immediately - -# Color scheme currently only supports "dark", "light"/nil (default), or a custom scheme that you define -color_scheme: light - -callouts_level: quiet # or loud -callouts: - highlight: - color: yellow - important: - title: Important - color: blue - new: - title: New - color: green - note: - title: Note - color: purple - warning: - title: Warning - color: red - -# Google Analytics Tracking (optional) -# Supports a CSV of tracking ID strings (eg. "UA-1234567-89,G-1AB234CDE5") -# Note: the main Just the Docs site does *not* use Google Analytics. -# ga_tracking: UA-2709176-10,G-5FG1HLH3XQ -# ga_tracking_anonymize_ip: true # Use GDPR compliant Google Analytics settings (true/nil by default) - -plugins: - - jekyll-seo-tag - - jekyll-github-metadata - -kramdown: - syntax_highlighter_opts: - block: - line_numbers: false - -compress_html: - clippings: all - comments: all - endings: all - startings: [] - blanklines: false - profile: false - # ignore: - # envs: all diff --git a/docs/_includes/animation.html b/docs/_includes/animation.html deleted file mode 100644 index b088482c8..000000000 --- a/docs/_includes/animation.html +++ /dev/null @@ -1,7 +0,0 @@ -
- -
\ No newline at end of file diff --git a/docs/_includes/components/aux_nav.html b/docs/_includes/components/aux_nav.html deleted file mode 100644 index b94cafda0..000000000 --- a/docs/_includes/components/aux_nav.html +++ /dev/null @@ -1,22 +0,0 @@ - diff --git a/docs/_includes/components/breadcrumbs.html b/docs/_includes/components/breadcrumbs.html deleted file mode 100644 index f1bc4885c..000000000 --- a/docs/_includes/components/breadcrumbs.html +++ /dev/null @@ -1,15 +0,0 @@ -{% unless page.url == "/" %} - {% if page.parent %} - - {% endif %} -{% endunless %} diff --git a/docs/_includes/components/children_nav.html b/docs/_includes/components/children_nav.html deleted file mode 100644 index e76f98d19..000000000 --- a/docs/_includes/components/children_nav.html +++ /dev/null @@ -1,9 +0,0 @@ -
-{% include toc_heading_custom.html %} - diff --git a/docs/_includes/components/description_text.html b/docs/_includes/components/description_text.html deleted file mode 100644 index 8ff773d5f..000000000 --- a/docs/_includes/components/description_text.html +++ /dev/null @@ -1,19 +0,0 @@ -
-

- BlazingMQ is a distributed message queueing platform with focus on - efficiency, reliability and a rich feature set for modern day - workflows. -

-

- Carefully architected and written in C++ from the ground up with no - runtime dependency on any external framework (e.g., Apache ZooKeeper), - BlazingMQ provides consistently low median and p99 latency. -

-

- With its unique multi-hop network topology, BlazingMQ can lead to - significant savings in network bandwidth and latency for high fan-out - workflows. -

-
-
diff --git a/docs/_includes/components/footer.html b/docs/_includes/components/footer.html deleted file mode 100644 index 01b2c235d..000000000 --- a/docs/_includes/components/footer.html +++ /dev/null @@ -1,34 +0,0 @@ -{% capture footer_custom %} - {%- include footer_custom.html -%} -{% endcapture %} -{% if footer_custom != "" or site.last_edit_timestamp or site.gh_edit_link %} -
- -{% endif %} diff --git a/docs/_includes/components/header.html b/docs/_includes/components/header.html deleted file mode 100644 index f9c3386b1..000000000 --- a/docs/_includes/components/header.html +++ /dev/null @@ -1,11 +0,0 @@ -
- {% if site.search_enabled != false %} - {% include components/search_header.html %} - {% else %} -
- {% endif %} - {% include header_custom.html %} - {% if site.aux_links %} - {% include components/aux_nav.html %} - {% endif %} -
diff --git a/docs/_includes/components/hero_banner.html b/docs/_includes/components/hero_banner.html deleted file mode 100644 index dd7f7ad60..000000000 --- a/docs/_includes/components/hero_banner.html +++ /dev/null @@ -1,3 +0,0 @@ -
- BlazingMQ intro -
diff --git a/docs/_includes/components/intro_text.html b/docs/_includes/components/intro_text.html deleted file mode 100644 index f05a6551c..000000000 --- a/docs/_includes/components/intro_text.html +++ /dev/null @@ -1,5 +0,0 @@ -
- A modern high-performance open source message queuing system -
diff --git a/docs/_includes/components/logo.html b/docs/_includes/components/logo.html deleted file mode 100644 index 067c80749..000000000 --- a/docs/_includes/components/logo.html +++ /dev/null @@ -1 +0,0 @@ -BlazingMQ logo \ No newline at end of file diff --git a/docs/_includes/components/mermaid.html b/docs/_includes/components/mermaid.html deleted file mode 100644 index d6923e090..000000000 --- a/docs/_includes/components/mermaid.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/docs/_includes/components/search_footer.html b/docs/_includes/components/search_footer.html deleted file mode 100644 index fb4fe51b4..000000000 --- a/docs/_includes/components/search_footer.html +++ /dev/null @@ -1,7 +0,0 @@ -{% if site.search.button %} - - - -{% endif %} - -
diff --git a/docs/_includes/components/search_header.html b/docs/_includes/components/search_header.html deleted file mode 100644 index 98425d5bd..000000000 --- a/docs/_includes/components/search_header.html +++ /dev/null @@ -1,9 +0,0 @@ -{% capture search_placeholder %}{% include search_placeholder_custom.html %}{% endcapture %} - - diff --git a/docs/_includes/components/sidebar.html b/docs/_includes/components/sidebar.html deleted file mode 100644 index a0d38eb6d..000000000 --- a/docs/_includes/components/sidebar.html +++ /dev/null @@ -1,69 +0,0 @@ - diff --git a/docs/_includes/css/callouts.scss.liquid b/docs/_includes/css/callouts.scss.liquid deleted file mode 100644 index e99600e51..000000000 --- a/docs/_includes/css/callouts.scss.liquid +++ /dev/null @@ -1,93 +0,0 @@ -{%- comment -%} - {% include css/callouts.scss.liquid color_scheme = string %} - produces SCSS for all the callouts in site.callouts. For the "dark" - color scheme, the levels of the text and background colors are reversed. -{%- endcomment -%} - -{%- assign callout_background_hue = "000" -%} -{%- assign callout_color_hue = "300" -%} -{%- if site.callouts_level == "loud" or include.color_scheme == "dark" and site.callouts_level != "quiet" -%} - {%- assign callout_background_hue = "300" -%} - {%- assign callout_color_hue = "000" -%} -{%- endif -%} - -div.opaque { - background-color: $body-background-color; -} - -{%- for callout in site.callouts %} - -{%- assign callout_opacity = callout[1].opacity | default: site.callouts_opacity | default: 0.2 -%} - -p.{{ callout[0] }}, blockquote.{{ callout[0] }} { - background: rgba(${{ callout[1].color }}-{{ callout_background_hue }}, {{ callout_opacity }}); - border-left: $border-radius solid ${{ callout[1].color }}-{{ callout_color_hue }}; - border-radius: $border-radius; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); - padding: .8rem; - {% if callout[1].title %} - &::before { - color: ${{ callout[1].color }}-{{ callout_color_hue }}; - content: "{{ callout[1].title }}"; - display: block; - font-weight: bold; - text-transform: uppercase; - font-size: .75em; - padding-bottom: .125rem; - } - {% endif %} - > .{{ callout[0] }}-title { - color: ${{ callout[1].color }}-{{ callout_color_hue }}; - display: block; - font-weight: bold; - text-transform: uppercase; - font-size: .75em; - padding-bottom: .125rem; - } -} - -p.{{ callout[0] }}-title, blockquote.{{ callout[0] }}-title { - background: rgba(${{ callout[1].color }}-{{ callout_background_hue }}, {{ callout_opacity }}); - border-left: $border-radius solid ${{ callout[1].color }}-{{ callout_color_hue }}; - border-radius: $border-radius; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); - padding: .8rem; - > p:first-child { - margin-top: 0; - margin-bottom: 0; - color: ${{ callout[1].color }}-{{ callout_color_hue }}; - display: block; - font-weight: bold; - text-transform: uppercase; - font-size: .75em; - padding-bottom: .125rem; - } -} - -blockquote.{{ callout[0] }} { - margin-left: 0; - margin-right: 0; - - > p:first-child { - margin-top: 0; - } - - > p:last-child { - margin-bottom: 0; - } -} - -blockquote.{{ callout[0] }}-title { - margin-left: 0; - margin-right: 0; - - > p:nth-child(2) { - margin-top: 0; - } - - > p:last-child { - margin-bottom: 0; - } -} - -{% endfor -%} diff --git a/docs/_includes/css/custom.scss.liquid b/docs/_includes/css/custom.scss.liquid deleted file mode 100644 index 2987200ce..000000000 --- a/docs/_includes/css/custom.scss.liquid +++ /dev/null @@ -1,140 +0,0 @@ -@import "./custom/custom"; - -body { - height: 100%; -} - -.custom-footer { - display: block; - - @include mq(md) { - display: none; - } -} - -.intro-text-container, -.release-container { - font-family: $body-font-family; -} - -.description-text-wrapper, -.section, -p, -.main-content { - font-family: $text-font-family; -} - -.site-logo { - max-width: 32px; - margin-right: 12px; - margin-left: 12px; -} - -.site-title { - padding: 0.5rem -} - -.animation-content { - padding: 2rem 1.5rem 0.5rem 1.5rem; -} - -.animation-title { - margin-bottom: 2rem; - @include mq(md) { - padding-left: 1rem; - } -} - -.logo-header img { - height: 40px; - margin: 10px; - margin-left: 15px; -} - -.main-banner img { - height: 6rem; -} - -.row-container { - border-bottom: 1px solid black; -} - -.main-banner { - padding: 7.5rem 0 0 2rem; - height: 23rem; -} - -.banner-line-1, -.banner-line-2 { - float: left; - width: 100%; - text-transform: uppercase; - color: white; -} - -.banner-line-1 { - font-size: 15pt; -} - -.banner-line-2 { - font-size: 25pt; -} - -.row-hero-banner { - background-image: linear-gradient(to right, $blazing-red, yellow); -} - -.section-intro-release { - height: 10rem; -} - -.section-intro, -.section-latest-release { - display: inline-block; - width: 100%; - height: 100%; -} - -.section-intro { - text-transform: uppercase; - padding: 1.5rem; - float: left; - font-size: inherit; - text-align: left; - font-weight: 500; - @include mq(sm) { - padding: 1.5rem; - font-size: 15pt; - } - @include mq(md) { - padding: 1.5rem; - font-size: 15pt; - } - @include mq(lg) { - padding: 2rem; - } -} - -.description-text-wrapper { - padding: 0.5rem 1.5rem; -} - -.iframe-wrapper { - overflow: hidden; - padding-top: 44%; - position: relative; -} - -.iframe-animation { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - height: 100%; - width: 100%; -} - -.content-wrapper { - padding: 1rem 1.5rem; -} \ No newline at end of file diff --git a/docs/_includes/css/just-the-docs.scss.liquid b/docs/_includes/css/just-the-docs.scss.liquid deleted file mode 100644 index a6c3cbf32..000000000 --- a/docs/_includes/css/just-the-docs.scss.liquid +++ /dev/null @@ -1,12 +0,0 @@ -{% if site.logo %} -$logo: "{{ site.logo | relative_url }}"; -{% endif %} -@import "./support/support"; -@import "./color_schemes/light"; -{% unless include.color_scheme == "light" %} -@import "./color_schemes/{{ include.color_scheme }}"; -{% endunless %} -@import "./custom/setup"; -@import "./modules"; -{% include css/callouts.scss.liquid color_scheme = include.color_scheme %} -{% include css/custom.scss.liquid %} diff --git a/docs/_includes/fix_linenos.html b/docs/_includes/fix_linenos.html deleted file mode 100644 index 6243fb093..000000000 --- a/docs/_includes/fix_linenos.html +++ /dev/null @@ -1,65 +0,0 @@ -{%- comment -%} -This file can be used to fix the HTML produced by Jekyll for highlighted -code with line numbers. - -It works with `{% highlight some_language linenos %}...{% endhighlight %}` -and with the Kramdown option to add line numbers to fenced code. - -The implementation was derived from the workaround provided by -Dmitry Hrabrov (DeXP) at -https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-188144901 - -EXPLANATION - -The HTML produced by Rouge highlighting with lie numbers is of the form -`code table`. Jekyll (<= 4.1.1) always wraps the highlighted HTML -with `pre`. This wrapping is not only unnecessary, but also transforms -the conforming HTML produced by Rouge to non-conforming HTML, which -results in HTML validation error reports. - -The fix removes the outer `pre` tags whenever they contain the pattern -``. - -Apart from avoiding HTML validation errors, the fix allows the use of -the [Jekyll layout for compressing HTML](http://jch.penibelst.de), -which relies on `pre` tags not being nested, according to -https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-172069842 - -USAGE - -(Any names can be used for `some_var` and `some_language`.) - -{% capture some_var %} -{% highlight some_language linenos %} -Some code -{% endhighlight %} -{% endcapture %} -{% include fix_linenos.html code=some_var %} - -For code fences: - -{% capture some_var %} -```some_language -Some code -``` -{% endcapture %} -{% assign some_var = some_var | markdownify %} -{% include fix_linenos.html code=some_var %} - -CAVEATS - -The above does not work when `Some code` happens to contain the matched string -`
`. - -The use of this file overwrites the variable `fix_linenos_code` with `nil`. - -{%- endcomment -%} - -{% assign fix_linenos_code = include.code %} -{% if fix_linenos_code contains '
' %} - {% assign fix_linenos_code = fix_linenos_code | replace: '
', '
' %}
-  {% assign fix_linenos_code = fix_linenos_code | replace: "
", "" %} -{% endif %} -{{ fix_linenos_code }} -{% assign fix_linenos_code = nil %} diff --git a/docs/_includes/footer_custom.html b/docs/_includes/footer_custom.html deleted file mode 100644 index 0b4cccd04..000000000 --- a/docs/_includes/footer_custom.html +++ /dev/null @@ -1,3 +0,0 @@ -{%- if site.footer_content -%} - -{%- endif -%} diff --git a/docs/_includes/head.html b/docs/_includes/head.html deleted file mode 100644 index 9f38d0f4b..000000000 --- a/docs/_includes/head.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - {% if site.ga_tracking != nil %} - {% assign ga_tracking_ids = site.ga_tracking | split: "," %} - - - {% endif %} - - {% if site.search_enabled != false %} - - {% endif %} - - {% if site.mermaid %} - {% if site.mermaid.path %} - - {% else %} - - {% endif %} - {% endif %} - - - - - - {% for file in site.static_files %} - {% if file.path == site.favicon_ico or file.path == '/favicon.ico' %} - {% assign favicon = true %} - {% endif %} - {% endfor %} - {% if favicon %} - - {% endif %} - - {% seo %} - - {% include head_custom.html %} - - diff --git a/docs/_includes/head_custom.html b/docs/_includes/head_custom.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/_includes/header_custom.html b/docs/_includes/header_custom.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/_includes/icons/code_copy.html b/docs/_includes/icons/code_copy.html deleted file mode 100644 index fb6421ff4..000000000 --- a/docs/_includes/icons/code_copy.html +++ /dev/null @@ -1,15 +0,0 @@ - - - Copy - - - - - - - Copied - - - - - diff --git a/docs/_includes/icons/document.html b/docs/_includes/icons/document.html deleted file mode 100644 index c09e8a5c8..000000000 --- a/docs/_includes/icons/document.html +++ /dev/null @@ -1,6 +0,0 @@ - - Document - - - - diff --git a/docs/_includes/icons/expand.html b/docs/_includes/icons/expand.html deleted file mode 100644 index 79921a560..000000000 --- a/docs/_includes/icons/expand.html +++ /dev/null @@ -1,6 +0,0 @@ - - Expand - - - - diff --git a/docs/_includes/icons/external_link.html b/docs/_includes/icons/external_link.html deleted file mode 100644 index 1592be661..000000000 --- a/docs/_includes/icons/external_link.html +++ /dev/null @@ -1,5 +0,0 @@ - - - (external link) - - diff --git a/docs/_includes/icons/icons.html b/docs/_includes/icons/icons.html deleted file mode 100644 index 007a495b0..000000000 --- a/docs/_includes/icons/icons.html +++ /dev/null @@ -1,13 +0,0 @@ - - {% include icons/link.html %} - {% include icons/menu.html %} - {% include icons/expand.html %} - {% include icons/external_link.html %} - {% if site.search_enabled != false %} - {% include icons/document.html %} - {% include icons/search.html %} - {% endif %} - {% if site.enable_copy_code_button != false %} - {% include icons/code_copy.html %} - {% endif %} - diff --git a/docs/_includes/icons/link.html b/docs/_includes/icons/link.html deleted file mode 100644 index de24be707..000000000 --- a/docs/_includes/icons/link.html +++ /dev/null @@ -1,6 +0,0 @@ - - Link - - - - diff --git a/docs/_includes/icons/menu.html b/docs/_includes/icons/menu.html deleted file mode 100644 index d2565758f..000000000 --- a/docs/_includes/icons/menu.html +++ /dev/null @@ -1,6 +0,0 @@ - - Menu - - - - diff --git a/docs/_includes/icons/search.html b/docs/_includes/icons/search.html deleted file mode 100644 index 8f72c6a2a..000000000 --- a/docs/_includes/icons/search.html +++ /dev/null @@ -1,6 +0,0 @@ - - Search - - - - diff --git a/docs/_includes/js/custom.js b/docs/_includes/js/custom.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/_includes/lunr/custom-data.json b/docs/_includes/lunr/custom-data.json deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/_includes/lunr/custom-index.js b/docs/_includes/lunr/custom-index.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/_includes/mermaid_config.js b/docs/_includes/mermaid_config.js deleted file mode 100644 index 0967ef424..000000000 --- a/docs/_includes/mermaid_config.js +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/docs/_includes/nav.html b/docs/_includes/nav.html deleted file mode 100644 index 0ba8406b1..000000000 --- a/docs/_includes/nav.html +++ /dev/null @@ -1,251 +0,0 @@ -{%- comment -%} - The `nav_order` values of pages affect the order in which they are shown in - the navigation panel and in the automatically generated tables of contents. - Sibling pages with the same `nav_order` value may be shown in any order. - Sibling pages with no `nav_order` value are shown after all pages that have - explicit `nav_order` values, ordered by their `title` values. - - The `nav_order` and `title` values can be numbers or strings. To avoid build - failures, we sort numbers and strings separately. We sort numbers by their - values, and strings lexicographically. The case-sensitivity of string sorting - is determined by the configuration setting of `nav_sort`. Pages with no `title` - value are excluded from the navigation. - - Note: Numbers used as `title` or `nav_order` values should not be in quotes, - unless you intend them to be lexicographically ordered. Numbers are written - without spaces or thousands-separators. Negative numbers are preceded by `-`. - Floats are written with the integral and fractional parts separated by `.`. - (Bounds on the magnitude and precision are presumably the same as in Liquid.) -{%- endcomment -%} - -{%- assign title_pages = include.pages - | where_exp: "item", "item.title != nil" -%} - -{%- comment -%} - A page with `nav_exclude: true` does not appear in the main navigation. - If it has a `parent`, it may appear in the parent's table of contents. - If it specifies `has_children: true`, it should appear in the breadcrumbs - of the child pages, but its order in relation to other pages is irrelevant. - Pages that never appear can be removed from the pages that need to be sorted. - This optimisation can be significant on a site with many pages. - - In Jekyll 4, the pages to be sorted can be filtered by: - - {%- assign title_pages = title_pages - | where_exp: "item", "item.nav_exclude != true or item.parent != nil" -%} - - That filter is not allowed in Jekyll 3. The following iterative code gives the - same effect, but it is activated only when it will filter more than 50% of the - pages. -{%- endcomment -%} - -{%- unless title_pages == empty -%} - {%- assign unsorted_pages = title_pages - | where_exp: "item", "item.parent == nil" - | where_exp: "item", "item.nav_exclude == true" -%} - {%- assign title_pages_size = title_pages.size -%} - {%- assign unsorted_pages_percent = unsorted_pages.size - | times: 100 | divided_by: title_pages_size -%} - {%- if unsorted_pages_percent > 50 -%} - {%- assign sorted_pages = "" | split: "" -%} - {%- for item in title_pages -%} - {%- if item.nav_exclude != true or item.parent -%} - {%- assign sorted_pages = sorted_pages | push: item -%} - {%- endif -%} - {%- endfor -%} - {%- assign title_pages = sorted_pages -%} - {%- endif -%} -{%- endunless -%} - -{%- assign nav_order_pages = title_pages - | where_exp: "item", "item.nav_order != nil" -%} -{%- assign title_order_pages = title_pages - | where_exp: "item", "item.nav_order == nil" -%} - -{%- comment -%} - Divide the arrays of `nav_order_pages` and `title_order_pages` according to - the type of value. - - The first character of the result of `jsonify` is `"` only for strings. - Grouping by a single character also ensures the number of groups is small. -{%- endcomment -%} - -{%- assign nav_number_pages = "" | split: "" -%} -{%- assign nav_string_pages = "" | split: "" -%} -{%- assign nav_order_groups = nav_order_pages - | group_by_exp: "item", "item.nav_order | jsonify | slice: 0" -%} -{%- for group in nav_order_groups -%} - {%- if group.name == '"' -%} - {%- assign nav_string_pages = group.items -%} - {%- else -%} - {%- assign nav_number_pages = nav_number_pages | concat: group.items -%} - {%- endif -%} -{%- endfor -%} - -{%- unless nav_number_pages == empty -%} - {%- assign nav_number_pages = nav_number_pages | sort: "nav_order" -%} -{%- endunless -%} - -{%- unless nav_string_pages == empty -%} - {%- if site.nav_sort == 'case_insensitive' -%} - {%- assign nav_string_pages = nav_string_pages | sort_natural: "nav_order" -%} - {%- else -%} - {%- assign nav_string_pages = nav_string_pages | sort: "nav_order" -%} - {%- endif -%} -{%- endunless -%} - -{%- assign title_number_pages = "" | split: "" -%} -{%- assign title_string_pages = "" | split: "" -%} -{%- assign title_order_groups = title_order_pages - | group_by_exp: "item", "item.title | jsonify | slice: 0" -%} -{%- for group in title_order_groups -%} - {%- if group.name == '"' -%} - {%- assign title_string_pages = group.items -%} - {%- else -%} - {%- assign title_number_pages = title_number_pages | concat: group.items -%} - {%- endif -%} -{%- endfor -%} - -{%- unless title_number_pages == empty -%} - {%- assign title_number_pages = title_number_pages | sort: "title" -%} -{%- endunless -%} - -{%- unless title_string_pages == empty -%} - {%- if site.nav_sort == 'case_insensitive' -%} - {%- assign title_string_pages = title_string_pages | sort_natural: "title" -%} - {%- else -%} - {%- assign title_string_pages = title_string_pages | sort: "title" -%} - {%- endif -%} -{%- endunless -%} - -{%- assign pages_list = nav_number_pages | concat: nav_string_pages - | concat: title_number_pages | concat: title_string_pages -%} - -{%- assign first_level_pages = pages_list - | where_exp: "item", "item.parent == nil" -%} -{%- assign second_level_pages = pages_list - | where_exp: "item", "item.parent != nil" - | where_exp: "item", "item.grand_parent == nil" -%} -{%- assign third_level_pages = pages_list - | where_exp: "item", "item.grand_parent != nil" -%} - -{%- comment -%} - The order of sibling pages in `pages_list` determines the order of display of - links to them in lists of navigation links and in auto-generated TOCs. - - Note that Liquid evaluates conditions from right to left (and it does not allow - the use of parentheses). Some conditions are not so easy to express clearly... - - For example, consider the following condition: - - C: page.collection = = include.key and - page.url = = node.url or - page.grand_parent = = node.title or - page.parent = = node.title and - page.grand_parent = = nil - - Here, `node` is a first-level page. The last part of the condition - -- namely: `page.parent = = node.title and page.grand_parent = = nil` -- - is evaluated first; it holds if and only if `page` is a child of `node`. - - The condition `page.grand_parent = = node.title or ...` holds when - `page` is a grandchild of node, OR `...` holds. - - The condition `page.url = = node.url or ...` holds when - `page` is `node`, OR `...` holds. - - The condition C: `page.collection = = include.key and ...` holds when we are - generating the nav links for a collection that includes `page`, AND `...` holds. -{%- endcomment -%} - - - -{%- comment -%} - `page.collection` is the name of the Jekyll collection that contains the page, - if any, and otherwise nil. Similarly for `include.key`. - - If the current page is in the collection (if any) whose navigation is currently - being generated, the following code sets `first_level_url` to the URL used in - the page's top-level breadcrumb (if any), and `second_level_url` to that used - in the page's second-level breadcrumb (if any). - - For pages with children, the code also sets `toc_list` to the list of child pages, - reversing the order if needed. -{%- endcomment -%} - -{%- if page.collection == include.key -%} - {%- for node in first_level_pages -%} - {%- if page.grand_parent == node.title or page.parent == node.title and page.grand_parent == nil -%} - {%- assign first_level_url = node.url | relative_url -%} - {%- endif -%} - {%- if node.has_children -%} - {%- assign children_list = second_level_pages | where: "parent", node.title -%} - {%- for child in children_list -%} - {%- if child.has_children -%} - {%- if page.url == child.url or page.parent == child.title and page.grand_parent == child.parent -%} - {%- assign second_level_url = child.url | relative_url -%} - {%- endif -%} - {%- endif -%} - {%- endfor -%} - {%- endif -%} - {%- endfor -%} - {%- if page.has_children == true and page.has_toc != false -%} - {%- assign toc_list = pages_list - | where: "parent", page.title - | where_exp: "item", "item.grand_parent == page.parent" -%} - {%- if page.child_nav_order == 'desc' or page.child_nav_order == 'reversed' -%} - {%- assign toc_list = toc_list | reverse -%} - {%- endif -%} - {%- endif -%} -{%- endif -%} diff --git a/docs/_includes/nav_footer_custom.html b/docs/_includes/nav_footer_custom.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/_includes/search_placeholder_custom.html b/docs/_includes/search_placeholder_custom.html deleted file mode 100644 index 54c053966..000000000 --- a/docs/_includes/search_placeholder_custom.html +++ /dev/null @@ -1 +0,0 @@ -Search the documentation diff --git a/docs/_includes/title.html b/docs/_includes/title.html deleted file mode 100644 index 7e6c31968..000000000 --- a/docs/_includes/title.html +++ /dev/null @@ -1,3 +0,0 @@ -
- BlazingMQ logo -
\ No newline at end of file diff --git a/docs/_includes/toc_heading_custom.html b/docs/_includes/toc_heading_custom.html deleted file mode 100644 index 82a77005b..000000000 --- a/docs/_includes/toc_heading_custom.html +++ /dev/null @@ -1 +0,0 @@ -

Table of contents

diff --git a/docs/_includes/vendor/anchor_headings.html b/docs/_includes/vendor/anchor_headings.html deleted file mode 100644 index 36b84708c..000000000 --- a/docs/_includes/vendor/anchor_headings.html +++ /dev/null @@ -1,172 +0,0 @@ -{% capture headingsWorkspace %} - {% comment %} - Copyright (c) 2018 Vladimir "allejo" Jimenez - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - {% endcomment %} - {% comment %} - Version 1.0.12 - https://github.com/allejo/jekyll-anchor-headings - - "Be the pull request you wish to see in the world." ~Ben Balter - - Usage: - {% include anchor_headings.html html=content anchorBody="#" %} - - Parameters: - * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll - - Optional Parameters: - * beforeHeading (bool) : false - Set to true if the anchor should be placed _before_ the heading's content - * headerAttrs (string) : '' - Any custom HTML attributes that will be added to the heading tag; you may NOT use `id`; - the `%heading%` and `%html_id%` placeholders are available - * anchorAttrs (string) : '' - Any custom HTML attributes that will be added to the `` tag; you may NOT use `href`, `class` or `title`; - the `%heading%` and `%html_id%` placeholders are available - * anchorBody (string) : '' - The content that will be placed inside the anchor; the `%heading%` placeholder is available - * anchorClass (string) : '' - The class(es) that will be used for each anchor. Separate multiple classes with a space - * anchorTitle (string) : '' - The `title` attribute that will be used for anchors - * h_min (int) : 1 - The minimum header level to build an anchor for; any header lower than this value will be ignored - * h_max (int) : 6 - The maximum header level to build an anchor for; any header greater than this value will be ignored - * bodyPrefix (string) : '' - Anything that should be inserted inside of the heading tag _before_ its anchor and content - * bodySuffix (string) : '' - Anything that should be inserted inside of the heading tag _after_ its anchor and content - * generateId (true) : false - Set to true if a header without id should generate an id to use. - - Output: - The original HTML with the addition of anchors inside of all of the h1-h6 headings. - {% endcomment %} - - {% assign minHeader = include.h_min | default: 1 %} - {% assign maxHeader = include.h_max | default: 6 %} - {% assign beforeHeading = include.beforeHeading %} - {% assign headerAttrs = include.headerAttrs %} - {% assign nodes = include.html | split: ' - {% if headerLevel == 0 %} - - {% assign firstChunk = node | split: '>' | first %} - - - {% unless firstChunk contains '<' %} - {% capture node %}{% endcapture %} - {% assign _workspace = node | split: _closingTag %} - {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %} - {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} - {% assign escaped_header = header | strip_html | strip %} - - {% assign _classWorkspace = _workspace[0] | split: 'class="' %} - {% assign _classWorkspace = _classWorkspace[1] | split: '"' %} - {% assign _html_class = _classWorkspace[0] %} - - {% if _html_class contains "no_anchor" %} - {% assign skip_anchor = true %} - {% else %} - {% assign skip_anchor = false %} - {% endif %} - - {% assign _idWorkspace = _workspace[0] | split: 'id="' %} - {% if _idWorkspace[1] %} - {% assign _idWorkspace = _idWorkspace[1] | split: '"' %} - {% assign html_id = _idWorkspace[0] %} - {% elsif include.generateId %} - - {% assign html_id = escaped_header | slugify %} - {% if html_id == "" %} - {% assign html_id = false %} - {% endif %} - {% capture headerAttrs %}{{ headerAttrs }} id="%html_id%"{% endcapture %} - {% endif %} - - - {% capture anchor %}{% endcapture %} - - {% if skip_anchor == false and html_id and headerLevel >= minHeader and headerLevel <= maxHeader %} - {% if headerAttrs %} - {% capture _hAttrToStrip %}{{ _hAttrToStrip | split: '>' | first }} {{ headerAttrs | replace: '%heading%', escaped_header | replace: '%html_id%', html_id }}>{% endcapture %} - {% endif %} - - {% capture anchor %}href="#{{ html_id }}"{% endcapture %} - - {% if include.anchorClass %} - {% capture anchor %}{{ anchor }} class="{{ include.anchorClass }}"{% endcapture %} - {% endif %} - - {% if include.anchorTitle %} - {% capture anchor %}{{ anchor }} title="{{ include.anchorTitle | replace: '%heading%', escaped_header }}"{% endcapture %} - {% endif %} - - {% if include.anchorAttrs %} - {% capture anchor %}{{ anchor }} {{ include.anchorAttrs | replace: '%heading%', escaped_header | replace: '%html_id%', html_id }}{% endcapture %} - {% endif %} - - {% capture anchor %}{{ include.anchorBody | replace: '%heading%', escaped_header | default: '' }}{% endcapture %} - - - {% if beforeHeading %} - {% capture anchor %}{{ anchor }} {% endcapture %} - {% else %} - {% capture anchor %} {{ anchor }}{% endcapture %} - {% endif %} - {% endif %} - - {% capture new_heading %} - - {% endcapture %} - - - {% assign chunkCount = _workspace | size %} - {% if chunkCount > 1 %} - {% capture new_heading %}{{ new_heading }}{{ _workspace | last }}{% endcapture %} - {% endif %} - - {% capture edited_headings %}{{ edited_headings }}{{ new_heading }}{% endcapture %} - {% endfor %} -{% endcapture %}{% assign headingsWorkspace = '' %}{{ edited_headings | strip }} diff --git a/docs/_layouts/about.html b/docs/_layouts/about.html deleted file mode 100644 index 5e7112684..000000000 --- a/docs/_layouts/about.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -layout: default ---- - -{{ content }} diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html deleted file mode 100644 index 3bc0e0ae0..000000000 --- a/docs/_layouts/default.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: table_wrappers ---- - - - - -{% include head.html %} - - Skip to main content - {% include icons/icons.html %} - {% include components/sidebar.html %} -
- {% include components/header.html %} -
- {% include components/breadcrumbs.html %} -
- {% if site.heading_anchors != false %} - {% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="" anchorClass="anchor-heading" anchorAttrs="aria-labelledby=\"%html_id%\"" %} - {% else %} - {{ content }} - {% endif %} - - {% if page.has_children == true and page.has_toc != false %} - {% include components/children_nav.html toc_list=toc_list %} - {% endif %} - - {% include components/footer.html %} - -
-
- {% if site.search_enabled != false %} - {% include components/search_footer.html %} - {% endif %} -
- - {% if site.mermaid %} - {% include components/mermaid.html %} - {% endif %} - - diff --git a/docs/_layouts/home.html b/docs/_layouts/home.html deleted file mode 100644 index c021cd435..000000000 --- a/docs/_layouts/home.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: table_wrappers ---- - - - - -{% include head.html %} - - Skip to main content - {% include icons/icons.html %} - {% include components/sidebar.html %} -
- {% include components/header.html %} -
-
-
-
{% include components/hero_banner.html %}
-
-
-
-
-
{% include components/intro_text.html %}
-
-
-
-
-
{% include components/description_text.html %}
-
-
-
- {% include components/breadcrumbs.html %} -
- {% if site.heading_anchors != false %} - {% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="" anchorClass="anchor-heading" anchorAttrs="aria-labelledby=\"%html_id%\"" %} - {% else %} - {{ content }} - {% endif %} - - {% if page.has_children == true and page.has_toc != false %} - {% include components/children_nav.html toc_list=toc_list %} - {% endif %} - - {% include components/footer.html %} - -
-
-
- - {% if site.search_enabled != false %} - {% include components/search_footer.html %} - {% endif %} -
- - {% if site.mermaid %} - {% include components/mermaid.html %} - {% endif %} - - diff --git a/docs/_layouts/minimal.html b/docs/_layouts/minimal.html deleted file mode 100644 index 0fb95115a..000000000 --- a/docs/_layouts/minimal.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: table_wrappers ---- - - - - -{% include head.html %} - - Skip to main content - {% include icons/icons.html %} - {% comment %} - This is a bandaid fix to properly render breadcrumbs; as of now, there is some variable leakage between the sidebar component (which computes parents, grandparents) and the breadcrumbs component. We plan to remove this in a future release to deduplicate code. - - For more context, see https://github.com/just-the-docs/just-the-docs/pull/1058#discussion_r1057014053 - {% endcomment %} - {% capture nav %} - {% assign pages_top_size = site.html_pages - | where_exp:"item", "item.title != nil" - | where_exp:"item", "item.parent == nil" - | where_exp:"item", "item.nav_exclude != true" - | size %} - {% if pages_top_size > 0 %} - {% include nav.html pages=site.html_pages key=nil %} - {% endif %} - {% if site.just_the_docs.collections %} - {% assign collections_size = site.just_the_docs.collections | size %} - {% for collection_entry in site.just_the_docs.collections %} - {% assign collection_key = collection_entry[0] %} - {% assign collection_value = collection_entry[1] %} - {% assign collection = site[collection_key] %} - {% if collection_value.nav_exclude != true %} - {% include nav.html pages=collection key=collection_key %} - {% endif %} - {% endfor %} - {% endif %} - {% endcapture %} -
- {% include components/breadcrumbs.html %} -
- {% if site.heading_anchors != false %} - {% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="" anchorClass="anchor-heading" anchorAttrs="aria-labelledby=\"%html_id%\"" %} - {% else %} - {{ content }} - {% endif %} - - {% if page.has_children == true and page.has_toc != false %} - {% include components/children_nav.html toc_list=toc_list %} - {% endif %} - - {% include components/footer.html %} - -
-
- - {% if site.mermaid %} - {% include components/mermaid.html %} - {% endif %} - - diff --git a/docs/_layouts/page.html b/docs/_layouts/page.html deleted file mode 100644 index 5e7112684..000000000 --- a/docs/_layouts/page.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -layout: default ---- - -{{ content }} diff --git a/docs/_layouts/post.html b/docs/_layouts/post.html deleted file mode 100644 index 5e7112684..000000000 --- a/docs/_layouts/post.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -layout: default ---- - -{{ content }} diff --git a/docs/_layouts/table_wrappers.html b/docs/_layouts/table_wrappers.html deleted file mode 100644 index 3f8f226a1..000000000 --- a/docs/_layouts/table_wrappers.html +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: vendor/compress ---- - -{% assign content_ = content | replace: '', '
' %} -{{ content_ }} diff --git a/docs/_layouts/vendor/compress.html b/docs/_layouts/vendor/compress.html deleted file mode 100644 index bb34487d2..000000000 --- a/docs/_layouts/vendor/compress.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -# Jekyll layout that compresses HTML -# v3.1.0 -# http://jch.penibelst.de/ -# © 2014–2015 Anatol Broder -# MIT License ---- - -{% capture _LINE_FEED %} -{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "" %}{% endif %}{% unless _pre_before contains "" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ;; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %}
Step Bytes
raw {{ content | size }}{% if _profile_endings %}
endings {{ _profile_endings }}{% endif %}{% if _profile_startings %}
startings {{ _profile_startings }}{% endif %}{% if _profile_comments %}
comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %}
collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %}
clippings {{ _profile_clippings }}{% endif %}
{% endif %}{% endif %} diff --git a/docs/_sass/base.scss b/docs/_sass/base.scss deleted file mode 100644 index 4882ed287..000000000 --- a/docs/_sass/base.scss +++ /dev/null @@ -1,114 +0,0 @@ -// Base element style overrides -// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id - -* { - box-sizing: border-box; -} - -::selection { - color: $white; - background: $grey-dk-300 !important; -} - -html { - @include fs-4; - - scroll-behavior: smooth; -} - -body { - font-family: $body-font-family; - font-size: inherit; - line-height: $body-line-height; - color: $body-text-color; - background-color: $body-background-color; - overflow-wrap: break-word; -} - -ol, -ul, -dl, -pre, -address, -blockquote, -table, -div, -hr, -form, -fieldset, -noscript .table-wrapper { - margin-top: 0; -} - -h1, -h2, -h3, -h4, -h5, -h6, -#toctitle { - margin-top: 0; - margin-bottom: 1em; - font-weight: 500; - line-height: $body-heading-line-height; - color: $body-heading-color; -} - -p { - margin-top: 1em; - margin-bottom: 1em; -} - -a { - color: $link-color; - text-decoration: none; -} - -a:not([class]) { - text-decoration: underline; - text-decoration-color: $border-color; - text-underline-offset: 2px; - - &:hover { - text-decoration-color: rgba($link-color, 0.45); - } -} - -code { - font-family: $mono-font-family; - font-size: 0.75em; - line-height: $body-line-height; -} - -figure, -pre { - margin: 0; -} - -li { - margin: 0.25em 0; -} - -img { - max-width: 100%; - height: auto; -} - -hr { - height: 1px; - padding: 0; - margin: $sp-6 0; - background-color: $border-color; - border: 0; -} - -// adds a GitHub-style sidebar to blockquotes -blockquote { - margin: 10px 0; - - // resets user-agent stylesheets for blockquotes - margin-block-start: 0; - margin-inline-start: 0; - padding-left: 15px; - border-left: 3px solid $border-color; -} diff --git a/docs/_sass/buttons.scss b/docs/_sass/buttons.scss deleted file mode 100644 index cd6177e8f..000000000 --- a/docs/_sass/buttons.scss +++ /dev/null @@ -1,113 +0,0 @@ -// Buttons and things that look like buttons -// stylelint-disable color-named - -.btn { - display: inline-block; - box-sizing: border-box; - padding: 0.3em 1em; - margin: 0; - font-family: inherit; - font-size: inherit; - font-weight: 500; - line-height: 1.5; - color: $link-color; - text-decoration: none; - vertical-align: baseline; - cursor: pointer; - background-color: $base-button-color; - border-width: 0; - border-radius: $border-radius; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); - appearance: none; - - &:focus { - text-decoration: none; - outline: none; - box-shadow: 0 0 0 3px rgba(blue, 0.25); - } - - &:focus:hover, - &.selected:focus { - box-shadow: 0 0 0 3px rgba(blue, 0.25); - } - - &:hover, - &.zeroclipboard-is-hover { - color: darken($link-color, 2%); - } - - &:hover, - &:active, - &.zeroclipboard-is-hover, - &.zeroclipboard-is-active { - text-decoration: none; - background-color: darken($base-button-color, 1%); - } - - &:active, - &.selected, - &.zeroclipboard-is-active { - background-color: darken($base-button-color, 3%); - background-image: none; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); - } - - &.selected:hover { - background-color: darken(#dcdcdc, 5%); - } - - &:disabled, - &.disabled { - &, - &:hover { - color: rgba(102, 102, 102, 0.5); - cursor: default; - background-color: rgba(229, 229, 229, 0.5); - background-image: none; - box-shadow: none; - } - } -} - -.btn-outline { - color: $link-color; - background: transparent; - box-shadow: inset 0 0 0 2px $grey-lt-300; - - &:hover, - &:active, - &.zeroclipboard-is-hover, - &.zeroclipboard-is-active { - color: darken($link-color, 4%); - text-decoration: none; - background-color: transparent; - box-shadow: inset 0 0 0 3px $grey-lt-300; - } - - &:focus { - text-decoration: none; - outline: none; - box-shadow: inset 0 0 0 2px $grey-dk-100, 0 0 0 3px rgba(blue, 0.25); - } - - &:focus:hover, - &.selected:focus { - box-shadow: inset 0 0 0 2px $grey-dk-100; - } -} - -.btn-primary { - @include btn-color($white, $btn-primary-color); -} - -.btn-purple { - @include btn-color($white, $purple-100); -} - -.btn-blue { - @include btn-color($white, $blue-000); -} - -.btn-green { - @include btn-color($white, $green-100); -} diff --git a/docs/_sass/code.scss b/docs/_sass/code.scss deleted file mode 100644 index d2a5ee15e..000000000 --- a/docs/_sass/code.scss +++ /dev/null @@ -1,246 +0,0 @@ -// Code and syntax highlighting -// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type, scss/comment-no-empty - -// {% raw %} - -// This instruction applies to all queues not within 'pre' or 'figure', avoiding 'code' generated by the highlight. -:not(pre, figure) { - & > code { - padding: 0.2em 0.15em; - font-weight: 400; - background-color: $code-background-color; - border: $border $border-color; - border-radius: $border-radius; - } -} - -// Avoid appearance of dark border around visited code links in Safari -a:visited code { - border-color: $border-color; -} - -// Content structure for highlighted code blocks using fences or Liquid -// -// ```[LANG]...```, no kramdown line_numbers: -// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code -// -// ```[LANG]...```, kramdown line_numbers = true: -// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code -// > div.table-wrapper > table.rouge-table > tbody > tr -// > td.rouge-gutter.gl > pre.lineno -// | td.rouge-code > pre -// -// {% highlight LANG %}...{% endhighlight %}: -// figure.highlight > pre > code.language-LANG -// -// {% highlight LANG linenos %}...{% endhighlight %}: -// figure.highlight > pre > code.language-LANG -// > div.table-wrapper > table.rouge-table > tbody > tr -// > td.gutter.gl > pre.lineno -// | td.code > pre -// -// ----...---- (AsciiDoc) -// div.listingblock > div.content > pre.rouge.highlight -// -// fix_linenos removes the outermost pre when it encloses table.rouge-table -// -// See docs/index-test.md for some tests. -// -// No kramdown line_numbers: fences and Liquid highlighting look the same. -// Kramdown line_numbers = true: fences have a wider gutter than with Liquid? - -// ```[LANG]...``` -// or in AsciiDoc: -// -// ---- -// ... -// ---- - -// the code may appear with 3 different types: -// container \ case: default case, code with line number, code with html rendering -// top level: div.highlighter-rouge, figure.highlight, figure.highlight -// second level: div.highlight, div.table-wrapper, pre.highlight -// third level: pre.highlight, td.code, absent -// last level: code, pre, code (optionality) -// highlighter level: span, span, span -// the spacing are only in the second level for case 1, 3 and in the third level for case 2 -// in AsciiDoc, there is a parent container that contains optionally a title and the content. - -// select top level container -div.highlighter-rouge, -div.listingblock > div.content, -figure.highlight { - margin-top: 0; - margin-bottom: $sp-3; - background-color: $code-background-color; - border-radius: $border-radius; - box-shadow: none; - -webkit-overflow-scrolling: touch; - position: relative; - padding: 0; - - // copy button (or other button) - // the button appear only when there is a hover on the code or focus on button - > button { - width: $sp-3; - opacity: 0; - position: absolute; - top: 0; - right: 0; - border: $sp-3 solid $code-background-color; - background-color: $code-background-color; - color: $body-text-color; - box-sizing: content-box; - - svg { - fill: $body-text-color; - } - - &:active { - text-decoration: none; - outline: none; - opacity: 1; - } - - &:focus { - opacity: 1; - } - } - - // the button can be seen by doing a simple hover in the code, there is no need to go over the location of the button - &:hover { - > button { - cursor: copy; - opacity: 1; - } - } -} - -// setting the spacing and scrollbar on the second level for the first case -// remove all space on the second and third level -// this is a mixin to accommodate for the slightly different structures generated via Markdown vs AsciiDoc -@mixin scroll-and-spacing($code-div, $pre-select) { - #{$code-div} { - overflow-x: auto; - padding: $sp-3; - margin: 0; - border: 0; - } - - #{$pre-select}, - code { - padding: 0; - margin: 0; - border: 0; - } -} - -// for Markdown -div.highlighter-rouge { - @include scroll-and-spacing("div.highlight", "pre.highlight"); -} - -// for AsciiDoc. we also need to fix the margins for its parent container. -div.listingblock { - @include scroll-and-spacing("div.content", "div.content > pre"); - - margin-top: 0; - margin-bottom: $sp-3; -} - -// {% highlight LANG %}...{% endhighlight %}, -// {% highlight LANG linenos %}...{% endhighlight %}: - -// setting the spacing and scrollbar on the second level for the thirt case -// the css rule are apply only to the last code enviroment -// setting the scroolbar -figure.highlight { - pre, - :not(pre) > code { - overflow-x: auto; - padding: $sp-3; - margin: 0; - border: 0; - } -} - -// ```[LANG]...```, kramdown line_numbers = true, -// {% highlight LANG linenos %}...{% endhighlight %}: - -// setting the spacing and scrollbar on the thirt level for the second case -.highlight .table-wrapper { - padding: $sp-3 0; - margin: 0; - border: 0; - box-shadow: none; - - td, - pre { - @include fs-2; - - min-width: 0; - padding: 0; - background-color: $code-background-color; - border: 0; - } - - td.gl { - width: 1em; - padding-right: $sp-3; - padding-left: $sp-3; - } - - pre { - margin: 0; - line-height: 2; - } -} - -// Code examples: html render of a code -.code-example, -.listingblock > .title { - padding: $sp-3; - margin-bottom: $sp-3; - overflow: auto; - border: 1px solid $border-color; - border-radius: $border-radius; - - + .highlighter-rouge, - + .sectionbody .listingblock, - + .content, - + figure.highlight { - position: relative; - margin-top: -$sp-4; - border-right: 1px solid $border-color; - border-bottom: 1px solid $border-color; - border-left: 1px solid $border-color; - border-top-left-radius: 0; - border-top-right-radius: 0; - } -} - -// Mermaid diagram code blocks should be left unstyled. -code.language-mermaid { - padding: 0; - background-color: inherit; - border: 0; -} - -// Override OneDarkJekyll Colors for Code Blocks -.highlight, -pre.highlight { - background: $code-background-color; // Code Background - // For Backwards Compatibility Before $code-linenumber-color was added - @if variable-exists(code-linenumber-color) { - color: $code-linenumber-color; // Code Line Numbers - } @else { - color: $body-text-color; // Code Line Numbers - } -} - -// Override OneDarkJekyll Colors for Code Blocks -.highlight pre { - background: $code-background-color; // Code Background -} - -// {% endraw %} diff --git a/docs/_sass/color_schemes/dark.scss b/docs/_sass/color_schemes/dark.scss deleted file mode 100644 index 36789b323..000000000 --- a/docs/_sass/color_schemes/dark.scss +++ /dev/null @@ -1,17 +0,0 @@ -$body-background-color: $grey-dk-300; -$body-heading-color: $grey-lt-000; -$body-text-color: $grey-lt-300; -$link-color: $blue-000; -$nav-child-link-color: $grey-dk-000; -$sidebar-color: white; -$base-button-color: $grey-dk-250; -$btn-primary-color: $blue-200; -$code-background-color: #31343f; // OneDarkJekyll default for syntax-one-dark-vivid -$code-linenumber-color: #dee2f7; // OneDarkJekyll .nf for syntax-one-dark-vivid -$feedback-color: darken($sidebar-color, 3%); -$table-background-color: $grey-dk-250; -$search-background-color: $grey-dk-250; -$search-result-preview-color: $grey-dk-000; -$border-color: black; - -@import "./vendor/OneDarkJekyll/syntax"; // this is the one-dark-vivid atom syntax theme diff --git a/docs/_sass/color_schemes/legacy_light.scss b/docs/_sass/color_schemes/legacy_light.scss deleted file mode 100644 index 5eaa1ac81..000000000 --- a/docs/_sass/color_schemes/legacy_light.scss +++ /dev/null @@ -1,208 +0,0 @@ -// Moved from _sass/code.scss - -.highlight .c { - color: #586e75; -} // comment // -.highlight .err { - color: #93a1a1; -} // error // -.highlight .g { - color: #93a1a1; -} // generic // -.highlight .k { - color: #859900; -} // keyword // -.highlight .l { - color: #93a1a1; -} // literal // -.highlight .n { - color: #93a1a1; -} // name // -.highlight .o { - color: #859900; -} // operator // -.highlight .x { - color: #cb4b16; -} // other // -.highlight .p { - color: #93a1a1; -} // punctuation // -.highlight .cm { - color: #586e75; -} // comment.multiline // -.highlight .cp { - color: #859900; -} // comment.preproc // -.highlight .c1 { - color: #586e75; -} // comment.single // -.highlight .cs { - color: #859900; -} // comment.special // -.highlight .gd { - color: #2aa198; -} // generic.deleted // -.highlight .ge { - font-style: italic; - color: #93a1a1; -} // generic.emph // -.highlight .gr { - color: #dc322f; -} // generic.error // -.highlight .gh { - color: #cb4b16; -} // generic.heading // -.highlight .gi { - color: #859900; -} // generic.inserted // -.highlight .go { - color: #93a1a1; -} // generic.output // -.highlight .gp { - color: #93a1a1; -} // generic.prompt // -.highlight .gs { - font-weight: bold; - color: #93a1a1; -} // generic.strong // -.highlight .gu { - color: #cb4b16; -} // generic.subheading // -.highlight .gt { - color: #93a1a1; -} // generic.traceback // -.highlight .kc { - color: #cb4b16; -} // keyword.constant // -.highlight .kd { - color: #268bd2; -} // keyword.declaration // -.highlight .kn { - color: #859900; -} // keyword.namespace // -.highlight .kp { - color: #859900; -} // keyword.pseudo // -.highlight .kr { - color: #268bd2; -} // keyword.reserved // -.highlight .kt { - color: #dc322f; -} // keyword.type // -.highlight .ld { - color: #93a1a1; -} // literal.date // -.highlight .m { - color: #2aa198; -} // literal.number // -.highlight .s { - color: #2aa198; -} // literal.string // -.highlight .na { - color: #555; -} // name.attribute // -.highlight .nb { - color: #b58900; -} // name.builtin // -.highlight .nc { - color: #268bd2; -} // name.class // -.highlight .no { - color: #cb4b16; -} // name.constant // -.highlight .nd { - color: #268bd2; -} // name.decorator // -.highlight .ni { - color: #cb4b16; -} // name.entity // -.highlight .ne { - color: #cb4b16; -} // name.exception // -.highlight .nf { - color: #268bd2; -} // name.function // -.highlight .nl { - color: #555; -} // name.label // -.highlight .nn { - color: #93a1a1; -} // name.namespace // -.highlight .nx { - color: #555; -} // name.other // -.highlight .py { - color: #93a1a1; -} // name.property // -.highlight .nt { - color: #268bd2; -} // name.tag // -.highlight .nv { - color: #268bd2; -} // name.variable // -.highlight .ow { - color: #859900; -} // operator.word // -.highlight .w { - color: #93a1a1; -} // text.whitespace // -.highlight .mf { - color: #2aa198; -} // literal.number.float // -.highlight .mh { - color: #2aa198; -} // literal.number.hex // -.highlight .mi { - color: #2aa198; -} // literal.number.integer // -.highlight .mo { - color: #2aa198; -} // literal.number.oct // -.highlight .sb { - color: #586e75; -} // literal.string.backtick // -.highlight .sc { - color: #2aa198; -} // literal.string.char // -.highlight .sd { - color: #93a1a1; -} // literal.string.doc // -.highlight .s2 { - color: #2aa198; -} // literal.string.double // -.highlight .se { - color: #cb4b16; -} // literal.string.escape // -.highlight .sh { - color: #93a1a1; -} // literal.string.heredoc // -.highlight .si { - color: #2aa198; -} // literal.string.interpol // -.highlight .sx { - color: #2aa198; -} // literal.string.other // -.highlight .sr { - color: #dc322f; -} // literal.string.regex // -.highlight .s1 { - color: #2aa198; -} // literal.string.single // -.highlight .ss { - color: #2aa198; -} // literal.string.symbol // -.highlight .bp { - color: #268bd2; -} // name.builtin.pseudo // -.highlight .vc { - color: #268bd2; -} // name.variable.class // -.highlight .vg { - color: #268bd2; -} // name.variable.global // -.highlight .vi { - color: #268bd2; -} // name.variable.instance // -.highlight .il { - color: #2aa198; -} // literal.number.integer.long // diff --git a/docs/_sass/color_schemes/light.scss b/docs/_sass/color_schemes/light.scss deleted file mode 100644 index 673b9e3b9..000000000 --- a/docs/_sass/color_schemes/light.scss +++ /dev/null @@ -1,15 +0,0 @@ -$body-background-color: $white !default; -$body-heading-color: $grey-dk-300 !default; -$body-text-color: $grey-dk-100 !default; -$link-color: $red-200 !default; -$nav-child-link-color: $grey-dk-100 !default; -$sidebar-color: white; -$base-button-color: #f7f7f7 !default; -$btn-primary-color: $purple-100 !default; -$code-background-color: $grey-lt-000 !default; -$feedback-color: darken($sidebar-color, 3%) !default; -$table-background-color: $white !default; -$search-background-color: $white !default; -$search-result-preview-color: $grey-dk-000 !default; - -@import "./vendor/OneLightJekyll/syntax"; diff --git a/docs/_sass/content.scss b/docs/_sass/content.scss deleted file mode 100644 index 219a0975e..000000000 --- a/docs/_sass/content.scss +++ /dev/null @@ -1,239 +0,0 @@ -@charset "UTF-8"; - -// Styles for rendered markdown in the .main-content container -// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity, selector-max-id - -.main-content { - line-height: $content-line-height; - - ol, - ul, - dl, - pre, - address, - blockquote, - .table-wrapper { - margin-top: 0.5em; - } - - a { - overflow: hidden; - text-overflow: ellipsis; - } - - ul, - ol { - padding-left: 1.5em; - } - - li { - .highlight { - margin-top: $sp-1; - } - } - - ol { - list-style-type: none; - counter-reset: step-counter; - - > li { - position: relative; - - &::before { - position: absolute; - top: 0.2em; - left: -1.6em; - color: $grey-dk-000; - content: counter(step-counter); - counter-increment: step-counter; - @include fs-3; - - @include mq(sm) { - top: 0.11em; - } - } - - ol { - counter-reset: sub-counter; - - > li { - &::before { - content: counter(sub-counter, lower-alpha); - counter-increment: sub-counter; - } - } - } - } - } - - ul { - list-style: none; - - > li { - &::before { - position: absolute; - margin-left: -1.4em; - color: $grey-dk-000; - content: "•"; - } - } - } - - .task-list-item { - &::before { - content: ""; - } - } - - .task-list-item-checkbox { - margin-right: 0.6em; - margin-left: -1.4em; - - // The same margin-left is used above for ul > li::before - } - - hr + * { - margin-top: 0; - } - - h1:first-of-type { - margin-top: 0.5em; - } - - dl { - display: grid; - grid-template: auto / 10em 1fr; - } - - dt, - dd { - margin: 0.25em 0; - } - - dt { - grid-column: 1; - font-weight: 500; - text-align: right; - - &::after { - content: ":"; - } - } - - dd { - grid-column: 2; - margin-bottom: 0; - margin-left: 1em; - - blockquote, - div, - dl, - dt, - h1, - h2, - h3, - h4, - h5, - h6, - li, - ol, - p, - pre, - table, - ul, - .table-wrapper { - &:first-child { - margin-top: 0; - } - } - } - - dd, - ol, - ul { - dl:first-child { - dt:first-child, - dd:nth-child(2) { - margin-top: 0; - } - } - } - - .anchor-heading { - position: absolute; - right: -$sp-4; - width: $sp-5; - height: 100%; - padding-right: $sp-1; - padding-left: $sp-1; - overflow: visible; - - @include mq(md) { - right: auto; - left: -$sp-5; - } - - svg { - display: inline-block; - width: 100%; - height: 100%; - color: $link-color; - visibility: hidden; - } - } - - .anchor-heading:hover, - .anchor-heading:focus, - h1:hover > .anchor-heading, - h2:hover > .anchor-heading, - h3:hover > .anchor-heading, - h4:hover > .anchor-heading, - h5:hover > .anchor-heading, - h6:hover > .anchor-heading { - svg { - visibility: visible; - } - } - - summary { - cursor: pointer; - } - - h1, - h2, - h3, - h4, - h5, - h6, - #toctitle { - position: relative; - margin-top: 1.5em; - margin-bottom: 0.25em; - - + table, - + .table-wrapper, - + .code-example, - + .highlighter-rouge, - + .sectionbody .listingblock { - margin-top: 1em; - } - - + p:not(.label) { - margin-top: 0; - } - } - - > h1:first-child, - > h2:first-child, - > h3:first-child, - > h4:first-child, - > h5:first-child, - > h6:first-child, - > .sect1:first-child > h2, - > .sect2:first-child > h3, - > .sect3:first-child > h4, - > .sect4:first-child > h5, - > .sect5:first-child > h6 { - margin-top: $sp-2; - } -} diff --git a/docs/_sass/custom/custom.scss b/docs/_sass/custom/custom.scss deleted file mode 100644 index ac8445a7e..000000000 --- a/docs/_sass/custom/custom.scss +++ /dev/null @@ -1 +0,0 @@ -// custom SCSS (or CSS) goes here diff --git a/docs/_sass/custom/setup.scss b/docs/_sass/custom/setup.scss deleted file mode 100644 index c3b0a9423..000000000 --- a/docs/_sass/custom/setup.scss +++ /dev/null @@ -1 +0,0 @@ -// custom setup code goes here diff --git a/docs/_sass/labels.scss b/docs/_sass/labels.scss deleted file mode 100644 index 85a7ba1e9..000000000 --- a/docs/_sass/labels.scss +++ /dev/null @@ -1,33 +0,0 @@ -// Labels (not the form kind) - -.label, -.label-blue { - display: inline-block; - padding: 0.16em 0.56em; - margin-right: $sp-2; - margin-left: $sp-2; - color: $white; - text-transform: uppercase; - vertical-align: middle; - background-color: $blue-100; - @include fs-2; - - border-radius: 12px; -} - -.label-green { - background-color: $green-200; -} - -.label-purple { - background-color: $purple-100; -} - -.label-red { - background-color: $red-200; -} - -.label-yellow { - color: $grey-dk-200; - background-color: $yellow-200; -} diff --git a/docs/_sass/layout.scss b/docs/_sass/layout.scss deleted file mode 100644 index ce7c6c6e4..000000000 --- a/docs/_sass/layout.scss +++ /dev/null @@ -1,263 +0,0 @@ -// The basic two column layout - -html { - height: 100%; -} - -.side-bar { - z-index: 0; - display: flex; - flex-wrap: wrap; - background-color: $sidebar-color; - - @include mq(md) { - flex-flow: column nowrap; - position: fixed; - width: $nav-width-md; - height: 100%; - align-items: flex-end; - } - - @include mq(lg) { - width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}); - min-width: $nav-width; - } -} - -.main { - min-height: 100%; - border-left: none; - @include mq(md) { - position: relative; - max-width: $content-width; - margin-left: $nav-width-md; - border-right: 1px solid black; - } - - @include mq(lg) { - // stylelint-disable function-name-case - // disable for Max(), we want to use the CSS max() function - margin-left: Max( - #{$nav-width}, - calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}) - ); - } -} - -.main-content-wrap { - @include container; - - padding-top: $gutter-spacing-sm; - padding-bottom: $gutter-spacing-sm; - - @include mq(md) { - padding-top: $gutter-spacing; - padding-bottom: $gutter-spacing; - } -} - -.main-header { - z-index: 0; - display: none; - background-color: $sidebar-color; - - @include mq(md) { - display: flex; - justify-content: space-between; - height: $header-height; - background-color: $body-background-color; - border-bottom: solid 1px black; - } - - &.nav-open { - display: block; - border-bottom: solid 1px black; - - @include mq(md) { - display: flex; - } - } -} - -.site-nav, -.site-header, -.site-footer { - width: 100%; - - @include mq(lg) { - width: $nav-width; - } -} - -.site-nav { - display: none; - border-left: none; - border-right: none; - text-transform: uppercase; - - &.nav-open { - display: block; - } - - @include mq(md) { - display: block; - padding-top: $sp-7; - padding-bottom: $gutter-spacing-sm; - overflow-y: auto; - flex: 1 1 auto; - } - - @include mq(md) { - border-right: $border black; - } - @include mq(lg) { - border-left: $border black; - border-right: $border black; - } -} - -.site-header { - display: flex; - min-height: $header-height; - border-bottom: $border black; - align-items: center; - - @include mq(md) { - height: $header-height; - max-height: $header-height; - border-right: $border black; - } - @include mq(lg) { - border-left: $border black; - } -} - -.site-title { - @include container; - text-transform: uppercase; - - flex-grow: 1; - display: flex; - height: 100%; - align-items: center; - padding-top: $sp-3; - padding-bottom: $sp-3; - color: $red-200; - @include fs-5; - - img { - max-width: 13rem; - } - - @include mq(md) { - padding-top: $sp-2; - padding-bottom: $sp-2; - - img { - max-width: 100%; - } - } -} - -@if variable-exists(logo) { - .site-logo { - width: 100%; - height: 100%; - background-image: url($logo); - background-repeat: no-repeat; - background-position: left center; - background-size: contain; - } -} - -.aux-button { - color: black; - .github-logo { - margin: 1rem 0.5rem; - height: 30px; - } -} - -.site-button { - display: flex; - height: 100%; - padding: $gutter-spacing-sm; - align-items: center; -} - -.site-button > svg { - @include mq(md) { - width: $sp-4; - height: $sp-4; - } - vertical-align: text-bottom; - padding-left: 0.25rem; -} - -@include mq(md) { - .site-header .site-button { - display: none; - } -} - -.site-title:hover { - background-image: linear-gradient( - -90deg, - rgba($feedback-color, 1) 0%, - rgba($feedback-color, 0.8) 80%, - rgba($feedback-color, 0) 100% - ); -} - -.site-button:hover { - background-image: linear-gradient( - -90deg, - rgba($feedback-color, 1) 0%, - rgba($feedback-color, 0.8) 100% - ); -} - -// stylelint-disable selector-max-type - -body { - position: relative; - overflow-y: scroll; - - @include mq(md) { - position: static; - padding-bottom: 0; - } -} - -// stylelint-enable selector-max-type - -.site-footer { - display: none; - @include container; - - position: absolute; - bottom: 0; - left: 0; - padding-top: $sp-4; - padding-bottom: $sp-4; - color: $grey-dk-000; - @include fs-2; - - border-right: $border black; - border-left: none; - - @include mq(md) { - display: block; - position: static; - justify-self: end; - } - @include mq(lg) { - border-left: $border black; - } -} - -.icon { - width: $sp-5; - height: $sp-5; - color: $link-color; -} diff --git a/docs/_sass/modules.scss b/docs/_sass/modules.scss deleted file mode 100644 index ee282e732..000000000 --- a/docs/_sass/modules.scss +++ /dev/null @@ -1,17 +0,0 @@ -// Import external dependencies -@import "./vendor/normalize.scss/normalize"; - -// Modules -@import "./base"; -@import "./layout"; -@import "./content"; -@import "./navigation"; -@import "./typography"; -@import "./labels"; -@import "./buttons"; -@import "./search"; -@import "./tables"; -@import "./code"; -@import "./utilities/utilities"; -@import "./print"; -@import "./skiptomain"; diff --git a/docs/_sass/navigation.scss b/docs/_sass/navigation.scss deleted file mode 100644 index 7a0559ad3..000000000 --- a/docs/_sass/navigation.scss +++ /dev/null @@ -1,235 +0,0 @@ -// Main nav, breadcrumb, etc... -// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity - -.nav-list { - padding: 0; - margin-top: 0; - margin-bottom: 0; - list-style: none; - - .nav-list-item { - @include fs-4; - - position: relative; - margin: 0; - - @include mq(md) { - @include fs-3; - } - - .nav-list-link { - display: block; - min-height: $nav-list-item-height-sm; - padding-top: $sp-1; - padding-bottom: $sp-1; - line-height: #{$nav-list-item-height-sm - 2 * $sp-1}; - @if $nav-list-expander-right { - padding-right: $nav-list-item-height-sm; - padding-left: $gutter-spacing-sm; - } @else { - padding-right: $gutter-spacing-sm; - padding-left: $nav-list-item-height-sm; - } - - &.active { - background-color: $blazing-red; - color: white; - } - - @include mq(md) { - min-height: $nav-list-item-height; - line-height: #{$nav-list-item-height - 2 * $sp-1}; - @if $nav-list-expander-right { - padding-right: $nav-list-item-height; - padding-left: $gutter-spacing; - } @else { - padding-right: $gutter-spacing; - padding-left: $nav-list-item-height; - } - } - - &.external > svg { - width: $sp-4; - height: $sp-4; - vertical-align: text-bottom; - } - - &.active { - text-decoration: none; - } - - } - - &:has(ul li.active).active { - & > .nav-list-link { - background-color: white; - color: $blazing-red; - } - & > .nav-list-expander { - color: $blazing-red; - } - } - - &:hover, - &.active { - & > .nav-list-link { - background-color: $blazing-red; - color: white; - } - & > .nav-list-expander { - color: white; - } - } - - .nav-list-expander { - position: absolute; - @if $nav-list-expander-right { - right: 0; - } - - width: $nav-list-item-height-sm; - height: $nav-list-item-height-sm; - padding: #{$nav-list-item-height-sm * 0.25}; - color: $link-color; - - @include mq(md) { - width: $nav-list-item-height; - height: $nav-list-item-height; - padding: #{$nav-list-item-height * 0.25}; - } - - @if $nav-list-expander-right { - svg { - transform: rotate(90deg); - } - } - } - - > .nav-list { - display: none; - padding-left: $sp-3; - list-style: none; - - .nav-list-item { - position: relative; - } - } - - &.active { - > .nav-list-expander svg { - @if $nav-list-expander-right { - transform: rotate(-90deg); - } @else { - transform: rotate(90deg); - } - } - - > .nav-list { - display: block; - } - } - } -} - -.nav-category { - padding: $sp-2 $gutter-spacing-sm; - text-align: start; - text-transform: uppercase; - border-bottom: $border $border-color; - @include fs-2; - - @include mq(md) { - padding: $sp-2 $gutter-spacing; - margin-top: $gutter-spacing-sm; - text-align: start; - - &:first-child { - margin-top: 0; - } - } -} - -.nav-list.nav-category-list { - > .nav-list-item { - margin: 0; - - > .nav-list { - padding: 0; - - > .nav-list-item { - > .nav-list-link { - color: $red-200; - } - - > .nav-list-expander { - color: $red-200; - } - } - } - } -} - -// Aux nav - -.aux-nav { - display: none; - - @include mq(md) { - display: block; - height: 100%; - overflow-x: auto; - @include fs-2; - - .aux-nav-list { - display: flex; - height: 100%; - padding: 0; - margin: 0; - list-style: none; - } - - .aux-nav-list-item { - display: inline-block; - height: 100%; - padding: 0; - margin: 0; - } - } -} - -// Breadcrumb nav - -.breadcrumb-nav { - @include mq(md) { - margin-top: -$sp-4; - } -} - -.breadcrumb-nav-list { - padding-left: 0; - margin-bottom: $sp-3; - list-style: none; -} - -.breadcrumb-nav-list-item { - display: table-cell; - @include fs-2; - - &::before { - display: none; - } - - &::after { - display: inline-block; - margin-right: $sp-2; - margin-left: $sp-2; - color: $grey-dk-000; - content: "/"; - } - - &:last-child { - &::after { - content: ""; - } - } -} diff --git a/docs/_sass/print.scss b/docs/_sass/print.scss deleted file mode 100644 index 5702f150b..000000000 --- a/docs/_sass/print.scss +++ /dev/null @@ -1,40 +0,0 @@ -// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type - -@media print { - .site-footer, - .site-button, - #edit-this-page, - #back-to-top, - .site-nav, - .main-header { - display: none !important; - } - - .side-bar { - width: 100%; - height: auto; - border-right: 0 !important; - } - - .site-header { - border-bottom: 1px solid $border-color; - } - - .site-title { - font-size: $root-font-size !important; - font-weight: 700 !important; - } - - .text-small { - font-size: 8pt !important; - } - - pre.highlight { - border: 1px solid $border-color; - } - - .main { - max-width: none; - margin-left: 0; - } -} diff --git a/docs/_sass/search.scss b/docs/_sass/search.scss deleted file mode 100644 index 6bb0f30df..000000000 --- a/docs/_sass/search.scss +++ /dev/null @@ -1,312 +0,0 @@ -// Search input and autocomplete - -.search { - position: relative; - z-index: 2; - flex-grow: 1; - height: $sp-10; - padding: $sp-2; - transition: padding linear #{$transition-duration * 0.5}; - - @include mq(md) { - position: relative !important; - width: auto !important; - height: 100% !important; - padding: 0; - transition: none; - } -} - -.search-input-wrap { - position: relative; - z-index: 1; - height: $sp-8; - overflow: hidden; - border-radius: $border-radius; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); - transition: height linear #{$transition-duration * 0.5}; - - @include mq(md) { - position: absolute; - width: 100%; - max-width: $search-results-width; - height: 100% !important; - border-radius: 0; - box-shadow: none; - transition: width ease $transition-duration; - } -} - -.search-input { - position: absolute; - text-transform: uppercase; - width: 100%; - height: 100%; - padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing-sm + $sp-5}; - font-size: 16px; - color: $body-text-color; - background-color: $search-background-color; - border-top: 0; - border-right: 0; - border-bottom: 0; - border-left: 0; - border-radius: 0; - - @include mq(md) { - padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing + $sp-5}; - font-size: 14px; - background-color: $body-background-color; - transition: padding-left linear #{$transition-duration * 0.5}; - } - - &:focus { - outline: 0; - - + .search-label .search-icon { - color: $link-color; - } - } -} - -.search-label { - position: absolute; - display: flex; - height: 100%; - padding-left: $gutter-spacing-sm; - - @include mq(md) { - padding-left: $gutter-spacing; - transition: padding-left linear #{$transition-duration * 0.5}; - } - - .search-icon { - width: #{$sp-4 * 1.2}; - height: #{$sp-4 * 1.2}; - align-self: center; - color: $grey-dk-000; - } -} - -.search-results { - position: absolute; - left: 0; - display: none; - width: 100%; - max-height: calc(100% - #{$sp-10}); - overflow-y: auto; - background-color: $search-background-color; - border-bottom-right-radius: $border-radius; - border-bottom-left-radius: $border-radius; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); - - @include mq(md) { - top: 100%; - width: $search-results-width; - max-height: calc(100vh - 200%) !important; - } -} - -.search-results-list { - padding-left: 0; - margin-bottom: $sp-1; - list-style: none; - @include fs-4; - - @include mq(md) { - @include fs-3; - } -} - -.search-results-list-item { - padding: 0; - margin: 0; -} - -.search-result { - display: block; - padding: $sp-1 $sp-3; - - &:hover, - &.active { - background-color: $feedback-color; - } -} - -.search-result-title { - display: block; - padding-top: $sp-2; - padding-bottom: $sp-2; - - @include mq(sm) { - display: inline-block; - width: 40%; - padding-right: $sp-2; - vertical-align: top; - } -} - -.search-result-doc { - display: flex; - align-items: center; - word-wrap: break-word; - - &.search-result-doc-parent { - opacity: 0.5; - @include fs-3; - - @include mq(md) { - @include fs-2; - } - } - - .search-result-icon { - width: $sp-4; - height: $sp-4; - margin-right: $sp-2; - color: $link-color; - flex-shrink: 0; - } - - .search-result-doc-title { - overflow: auto; - } -} - -.search-result-section { - margin-left: #{$sp-4 + $sp-2}; - word-wrap: break-word; -} - -.search-result-rel-url { - display: block; - margin-left: #{$sp-4 + $sp-2}; - overflow: hidden; - color: $search-result-preview-color; - text-overflow: ellipsis; - white-space: nowrap; - @include fs-1; -} - -.search-result-previews { - display: block; - padding-top: $sp-2; - padding-bottom: $sp-2; - padding-left: $sp-4; - margin-left: $sp-2; - color: $search-result-preview-color; - word-wrap: break-word; - border-left: $border; - border-left-color: $border-color; - @include fs-2; - - @include mq(sm) { - display: inline-block; - width: 60%; - padding-left: $sp-2; - margin-left: 0; - vertical-align: top; - } -} - -.search-result-preview + .search-result-preview { - margin-top: $sp-1; -} - -.search-result-highlight { - font-weight: bold; -} - -.search-no-result { - padding: $sp-2 $sp-3; - @include fs-3; -} - -.search-button { - position: fixed; - right: $sp-4; - bottom: $sp-4; - display: flex; - width: $sp-9; - height: $sp-9; - background-color: $search-background-color; - border: 1px solid rgba($link-color, 0.3); - border-radius: #{$sp-9 * 0.5}; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); - align-items: center; - justify-content: center; -} - -.search-overlay { - position: fixed; - top: 0; - left: 0; - z-index: 1; - width: 0; - height: 0; - background-color: rgba(0, 0, 0, 0.3); - opacity: 0; - transition: opacity ease $transition-duration, width 0s $transition-duration, - height 0s $transition-duration; -} - -.search-active { - .search { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - padding: 0; - } - - .search-input-wrap { - height: $sp-10; - border-radius: 0; - - @include mq(md) { - width: $search-results-width; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); - } - } - - .search-input { - background-color: $search-background-color; - - @include mq(md) { - padding-left: 2.3rem; - } - } - - .search-label { - @include mq(md) { - padding-left: 0.6rem; - } - } - - .search-results { - display: block; - } - - .search-overlay { - width: 100%; - height: 100%; - opacity: 1; - transition: opacity ease $transition-duration, width 0s, height 0s; - } - - @include mq(md) { - .main { - position: fixed; - right: 0; - left: 0; - } - } - - .main-header { - padding-top: $sp-10; - - @include mq(md) { - padding-top: 0; - } - } -} diff --git a/docs/_sass/skiptomain.scss b/docs/_sass/skiptomain.scss deleted file mode 100644 index 7c14f057d..000000000 --- a/docs/_sass/skiptomain.scss +++ /dev/null @@ -1,30 +0,0 @@ -// Skipnav -// Skip to main content - -a.skip-to-main { - left: -999px; - position: absolute; - top: auto; - width: 1px; - height: 1px; - overflow: hidden; - z-index: -999; -} - -a.skip-to-main:focus, -a.skip-to-main:active { - color: $link-color; - background-color: $body-background-color; - left: auto; - top: auto; - width: 30%; - height: auto; - overflow: auto; - margin: 10px 35%; - padding: 5px; - border-radius: 15px; - border: 4px solid $btn-primary-color; - text-align: center; - font-size: 1.2em; - z-index: 999; -} diff --git a/docs/_sass/support/_functions.scss b/docs/_sass/support/_functions.scss deleted file mode 100644 index 290709ab8..000000000 --- a/docs/_sass/support/_functions.scss +++ /dev/null @@ -1,9 +0,0 @@ -@function rem($size, $unit: "") { - $rem-size: $size / $root-font-size; - - @if $unit == false { - @return #{$rem-size}; - } @else { - @return #{$rem-size}rem; - } -} diff --git a/docs/_sass/support/_variables.scss b/docs/_sass/support/_variables.scss deleted file mode 100644 index 5ba5074a3..000000000 --- a/docs/_sass/support/_variables.scss +++ /dev/null @@ -1,129 +0,0 @@ -// Typography - -@font-face { - font-family: "Chakra Petch"; - src: url("../../assets/fonts/ChakraPetch-SemiBold.ttf") format("truetype") -} - -@font-face { - font-family: "Rubik Regular"; - src: url("../../assets/fonts/Rubik-Regular.ttf") format("truetype") -} - -$default-font-family: system-ui, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif !default; -$text-font-family: "Rubik Regular", $default-font-family; -$body-font-family: "Chakra Petch", $default-font-family; -$mono-font-family: "Chakra Petch", "SFMono-Regular", menlo, consolas, monospace !default; -$root-font-size: 16px !default; // Base font-size for rems -$body-line-height: 1.4 !default; -$content-line-height: 1.6 !default; -$body-heading-line-height: 1.25 !default; - -// Font size -// `-sm` suffix is the size at the small (and above) media query - -$font-size-1: 9px !default; -$font-size-1-sm: 10px !default; -$font-size-2: 11px !default; // h4 - uppercased!, h6 not uppercased, text-small -$font-size-3: 12px !default; // h5 -$font-size-4: 14px !default; -$font-size-5: 16px !default; // h3 -$font-size-6: 18px !default; // h2 -$font-size-7: 24px !default; -$font-size-8: 32px !default; // h1 -$font-size-9: 36px !default; -$font-size-10: 42px !default; -$font-size-10-sm: 48px !default; - -// Colors - -$white: #fff !default; -$grey-dk-000: #959396 !default; -$grey-dk-100: #5c5962 !default; -$grey-dk-200: #44434d !default; -$grey-dk-250: #302d36 !default; -$grey-dk-300: #27262b !default; -$grey-lt-000: #f5f6fa !default; -$grey-lt-100: #eeebee !default; -$grey-lt-200: #ecebed !default; -$grey-lt-300: #e6e1e8 !default; -$purple-000: #7253ed !default; -$purple-100: #5e41d0 !default; -$purple-200: #4e26af !default; -$purple-300: #381885 !default; -$blue-000: #2c84fa !default; -$blue-100: #2869e6 !default; -$blue-200: #264caf !default; -$blue-300: #183385 !default; -$green-000: #41d693 !default; -$green-100: #11b584 !default; -$green-200: #009c7b !default; -$green-300: #026e57 !default; -$yellow-000: #ffeb82 !default; -$yellow-100: #fadf50 !default; -$yellow-200: #f7d12e !default; -$yellow-300: #e7af06 !default; -$red-000: #f77e7e !default; -$red-100: #f96e65 !default; -$red-200: #e94c4c !default; -$red-300: #dd2e2e !default; -$blazing-red : #ea3329; - -// Spacing - -$spacing-unit: 1rem; // 1rem == 16px - -$spacers: ( - sp-0: 0, - sp-1: $spacing-unit * 0.25, - sp-2: $spacing-unit * 0.5, - sp-3: $spacing-unit * 0.75, - sp-4: $spacing-unit, - sp-5: $spacing-unit * 1.5, - sp-6: $spacing-unit * 2, - sp-7: $spacing-unit * 2.5, - sp-8: $spacing-unit * 3, - sp-9: $spacing-unit * 3.5, - sp-10: $spacing-unit * 4, -) !default; -$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px -$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px -$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px -$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px -$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px -$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px -$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px -$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px -$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px -$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px - -// Borders - -$border: 1px solid !default; -$border-radius: 4px !default; -$border-color: $grey-lt-100 !default; -$border-nav-color: $border-color; - -// Grid system - -$gutter-spacing: $sp-6 !default; -$gutter-spacing-sm: $sp-4 !default; -$nav-width: 264px !default; -$nav-width-md: 248px !default; -$nav-list-item-height: $sp-6 !default; -$nav-list-item-height-sm: $sp-8 !default; -$nav-list-expander-right: true; -$content-width: 800px !default; -$header-height: 60px !default; -$search-results-width: $content-width - $nav-width !default; -$transition-duration: 400ms; - -// Media queries in pixels - -$media-queries: ( - xs: 320px, - sm: 500px, - md: $content-width, - lg: $content-width + $nav-width, - xl: 1400px, -) !default; diff --git a/docs/_sass/support/mixins/_buttons.scss b/docs/_sass/support/mixins/_buttons.scss deleted file mode 100644 index e3e6c4fbc..000000000 --- a/docs/_sass/support/mixins/_buttons.scss +++ /dev/null @@ -1,27 +0,0 @@ -// Colored button - -@mixin btn-color($fg, $bg) { - color: $fg; - background-color: darken($bg, 2%); - background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%)); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); - - &:hover, - &.zeroclipboard-is-hover { - color: $fg; - background-color: darken($bg, 4%); - background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%))); - } - - &:active, - &.selected, - &.zeroclipboard-is-active { - background-color: darken($bg, 5%); - background-image: none; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); - } - - &.selected:hover { - background-color: darken($bg, 10%); - } -} diff --git a/docs/_sass/support/mixins/_layout.scss b/docs/_sass/support/mixins/_layout.scss deleted file mode 100644 index 428dec61b..000000000 --- a/docs/_sass/support/mixins/_layout.scss +++ /dev/null @@ -1,33 +0,0 @@ -// Media query - -// Media query mixin -// Usage: -// @include mq(md) { -// ..medium and up styles -// } -@mixin mq($name) { - // Retrieves the value from the key - $value: map-get($media-queries, $name); - - // If the key exists in the map - @if $value { - // Prints a media query based on the value - @media (min-width: rem($value)) { - @content; - } - } @else { - @warn "No value could be retrieved from `#{$media-query}`. Please make sure it is defined in `$media-queries` map."; - } -} - -// Responsive container - -@mixin container { - padding-right: $gutter-spacing-sm; - padding-left: $gutter-spacing-sm; - - @include mq(md) { - padding-right: $gutter-spacing; - padding-left: $gutter-spacing; - } -} diff --git a/docs/_sass/support/mixins/_typography.scss b/docs/_sass/support/mixins/_typography.scss deleted file mode 100644 index 5207fcd13..000000000 --- a/docs/_sass/support/mixins/_typography.scss +++ /dev/null @@ -1,84 +0,0 @@ -@mixin fs-1 { - font-size: $font-size-1 !important; - - @include mq(sm) { - font-size: $font-size-1-sm !important; - } -} - -@mixin fs-2 { - font-size: $font-size-2 !important; - - @include mq(sm) { - font-size: $font-size-3 !important; - } -} - -@mixin fs-3 { - font-size: $font-size-3 !important; - - @include mq(sm) { - font-size: $font-size-4 !important; - } -} - -@mixin fs-4 { - font-size: $font-size-4 !important; - - @include mq(sm) { - font-size: $font-size-5 !important; - } -} - -@mixin fs-5 { - font-size: $font-size-5 !important; - - @include mq(sm) { - font-size: $font-size-6 !important; - } -} - -@mixin fs-6 { - font-size: $font-size-6 !important; - - @include mq(sm) { - font-size: $font-size-7 !important; - line-height: $body-heading-line-height; - } -} - -@mixin fs-7 { - font-size: $font-size-7 !important; - line-height: $body-heading-line-height; - - @include mq(sm) { - font-size: $font-size-8 !important; - } -} - -@mixin fs-8 { - font-size: $font-size-8 !important; - line-height: $body-heading-line-height; - - @include mq(sm) { - font-size: $font-size-9 !important; - } -} - -@mixin fs-9 { - font-size: $font-size-9 !important; - line-height: $body-heading-line-height; - - @include mq(sm) { - font-size: $font-size-10 !important; - } -} - -@mixin fs-10 { - font-size: $font-size-10 !important; - line-height: $body-heading-line-height; - - @include mq(sm) { - font-size: $font-size-10-sm !important; - } -} diff --git a/docs/_sass/support/mixins/mixins.scss b/docs/_sass/support/mixins/mixins.scss deleted file mode 100644 index 0506fbf5f..000000000 --- a/docs/_sass/support/mixins/mixins.scss +++ /dev/null @@ -1,3 +0,0 @@ -@import "./layout"; -@import "./buttons"; -@import "./typography"; diff --git a/docs/_sass/support/support.scss b/docs/_sass/support/support.scss deleted file mode 100644 index 8131a3201..000000000 --- a/docs/_sass/support/support.scss +++ /dev/null @@ -1,3 +0,0 @@ -@import "./variables"; -@import "./functions"; -@import "./mixins/mixins"; diff --git a/docs/_sass/tables.scss b/docs/_sass/tables.scss deleted file mode 100644 index db8f9de77..000000000 --- a/docs/_sass/tables.scss +++ /dev/null @@ -1,54 +0,0 @@ -// Tables -// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type - -.table-wrapper { - display: block; - width: 100%; - max-width: 100%; - margin-bottom: $sp-5; - overflow-x: auto; - border-radius: $border-radius; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); -} - -table { - display: table; - min-width: 100%; - border-collapse: separate; -} - -th, -td { - @include fs-3; - - min-width: 120px; - padding: $sp-2 $sp-3; - background-color: $table-background-color; - border-bottom: $border rgba($border-color, 0.5); - border-left: $border $border-color; - - &:first-of-type { - border-left: 0; - } -} - -tbody { - tr { - &:last-of-type { - th, - td { - border-bottom: 0; - } - - td { - padding-bottom: $sp-3; - } - } - } -} - -thead { - th { - border-bottom: $border $border-color; - } -} diff --git a/docs/_sass/typography.scss b/docs/_sass/typography.scss deleted file mode 100644 index 441dcae95..000000000 --- a/docs/_sass/typography.scss +++ /dev/null @@ -1,63 +0,0 @@ -// Typography -// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id - -h1, -.text-alpha { - @include fs-8; - - font-weight: 300; -} - -h2, -.text-beta, -#toctitle { - @include fs-6; -} - -h3, -.text-gamma { - @include fs-5; -} - -h4, -.text-delta { - @include fs-2; - - font-weight: 400; - text-transform: uppercase; - letter-spacing: 0.1em; -} - -h4 code { - text-transform: none; -} - -h5, -.text-epsilon { - @include fs-3; -} - -h6, -.text-zeta { - @include fs-2; -} - -.text-small { - @include fs-2; -} - -.text-mono { - font-family: $mono-font-family !important; -} - -.text-left { - text-align: left !important; -} - -.text-center { - text-align: center !important; -} - -.text-right { - text-align: right !important; -} diff --git a/docs/_sass/utilities/_colors.scss b/docs/_sass/utilities/_colors.scss deleted file mode 100644 index 9025649c9..000000000 --- a/docs/_sass/utilities/_colors.scss +++ /dev/null @@ -1,237 +0,0 @@ -// Utility classes for colors - -// Text colors - -.text-grey-dk-000 { - color: $grey-dk-000 !important; -} - -.text-grey-dk-100 { - color: $grey-dk-100 !important; -} - -.text-grey-dk-200 { - color: $grey-dk-200 !important; -} - -.text-grey-dk-250 { - color: $grey-dk-250 !important; -} - -.text-grey-dk-300 { - color: $grey-dk-300 !important; -} - -.text-grey-lt-000 { - color: $grey-lt-000 !important; -} - -.text-grey-lt-100 { - color: $grey-lt-100 !important; -} - -.text-grey-lt-200 { - color: $grey-lt-200 !important; -} - -.text-grey-lt-300 { - color: $grey-lt-300 !important; -} - -.text-blue-000 { - color: $blue-000 !important; -} - -.text-blue-100 { - color: $blue-100 !important; -} - -.text-blue-200 { - color: $blue-200 !important; -} - -.text-blue-300 { - color: $blue-300 !important; -} - -.text-green-000 { - color: $green-000 !important; -} - -.text-green-100 { - color: $green-100 !important; -} - -.text-green-200 { - color: $green-200 !important; -} - -.text-green-300 { - color: $green-300 !important; -} - -.text-purple-000 { - color: $purple-000 !important; -} - -.text-purple-100 { - color: $purple-100 !important; -} - -.text-purple-200 { - color: $purple-200 !important; -} - -.text-purple-300 { - color: $purple-300 !important; -} - -.text-yellow-000 { - color: $yellow-000 !important; -} - -.text-yellow-100 { - color: $yellow-100 !important; -} - -.text-yellow-200 { - color: $yellow-200 !important; -} - -.text-yellow-300 { - color: $yellow-300 !important; -} - -.text-red-000 { - color: $red-000 !important; -} - -.text-red-100 { - color: $red-100 !important; -} - -.text-red-200 { - color: $red-200 !important; -} - -.text-red-300 { - color: $red-300 !important; -} - -// Background colors - -.bg-grey-dk-000 { - background-color: $grey-dk-000 !important; -} - -.bg-grey-dk-100 { - background-color: $grey-dk-100 !important; -} - -.bg-grey-dk-200 { - background-color: $grey-dk-200 !important; -} - -.bg-grey-dk-250 { - background-color: $grey-dk-250 !important; -} - -.bg-grey-dk-300 { - background-color: $grey-dk-300 !important; -} - -.bg-grey-lt-000 { - background-color: $grey-lt-000 !important; -} - -.bg-grey-lt-100 { - background-color: $grey-lt-100 !important; -} - -.bg-grey-lt-200 { - background-color: $grey-lt-200 !important; -} - -.bg-grey-lt-300 { - background-color: $grey-lt-300 !important; -} - -.bg-blue-000 { - background-color: $blue-000 !important; -} - -.bg-blue-100 { - background-color: $blue-100 !important; -} - -.bg-blue-200 { - background-color: $blue-200 !important; -} - -.bg-blue-300 { - background-color: $blue-300 !important; -} - -.bg-green-000 { - background-color: $green-000 !important; -} - -.bg-green-100 { - background-color: $green-100 !important; -} - -.bg-green-200 { - background-color: $green-200 !important; -} - -.bg-green-300 { - background-color: $green-300 !important; -} - -.bg-purple-000 { - background-color: $purple-000 !important; -} - -.bg-purple-100 { - background-color: $purple-100 !important; -} - -.bg-purple-200 { - background-color: $purple-200 !important; -} - -.bg-purple-300 { - background-color: $purple-300 !important; -} - -.bg-yellow-000 { - background-color: $yellow-000 !important; -} - -.bg-yellow-100 { - background-color: $yellow-100 !important; -} - -.bg-yellow-200 { - background-color: $yellow-200 !important; -} - -.bg-yellow-300 { - background-color: $yellow-300 !important; -} - -.bg-red-000 { - background-color: $red-000 !important; -} - -.bg-red-100 { - background-color: $red-100 !important; -} - -.bg-red-200 { - background-color: $red-200 !important; -} - -.bg-red-300 { - background-color: $red-300 !important; -} diff --git a/docs/_sass/utilities/_layout.scss b/docs/_sass/utilities/_layout.scss deleted file mode 100644 index 01a57c5e6..000000000 --- a/docs/_sass/utilities/_layout.scss +++ /dev/null @@ -1,101 +0,0 @@ -// Utility classes for layout - -// Display - -.d-block { - display: block !important; -} - -.d-flex { - display: flex !important; -} - -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-none { - display: none !important; -} - -@each $media-query in map-keys($media-queries) { - @for $i from 1 through length($spacers) { - @include mq($media-query) { - $size: #{map-get($spacers, sp-#{$i - 1})}; - $scale: #{$i - 1}; - - // .d-sm-block, .d-md-none, .d-lg-inline - .d-#{$media-query}-block { - display: block !important; - } - .d-#{$media-query}-flex { - display: flex !important; - } - .d-#{$media-query}-inline { - display: inline !important; - } - .d-#{$media-query}-inline-block { - display: inline-block !important; - } - .d-#{$media-query}-none { - display: none !important; - } - } - } -} - -// Horizontal alignment - -.float-left { - float: left !important; -} - -.float-right { - float: right !important; -} - -.flex-justify-start { - justify-content: flex-start !important; -} - -.flex-justify-end { - justify-content: flex-end !important; -} - -.flex-justify-between { - justify-content: space-between !important; -} - -.flex-justify-around { - justify-content: space-around !important; -} - -// Vertical alignment - -.v-align-baseline { - vertical-align: baseline !important; -} - -.v-align-bottom { - vertical-align: bottom !important; -} - -.v-align-middle { - vertical-align: middle !important; -} - -.v-align-text-bottom { - vertical-align: text-bottom !important; -} - -.v-align-text-top { - vertical-align: text-top !important; -} - -.v-align-top { - vertical-align: top !important; -} diff --git a/docs/_sass/utilities/_lists.scss b/docs/_sass/utilities/_lists.scss deleted file mode 100644 index 3adc42171..000000000 --- a/docs/_sass/utilities/_lists.scss +++ /dev/null @@ -1,15 +0,0 @@ -// Utility classes for lists - -// stylelint-disable selector-max-type - -.list-style-none { - padding: 0 !important; - margin: 0 !important; - list-style: none !important; - - li { - &::before { - display: none !important; - } - } -} diff --git a/docs/_sass/utilities/_spacing.scss b/docs/_sass/utilities/_spacing.scss deleted file mode 100644 index a81186132..000000000 --- a/docs/_sass/utilities/_spacing.scss +++ /dev/null @@ -1,162 +0,0 @@ -// Utility classes for margins and padding - -// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before - -// Margin spacer utilities - -.mx-auto { - margin-right: auto !important; - margin-left: auto !important; -} - -@for $i from 1 through length($spacers) { - $size: #{map-get($spacers, sp-#{$i - 1})}; - $scale: #{$i - 1}; - - // .m-0, .m-1, .m-2... - .m-#{$scale} { - margin: #{$size} !important; - } - .mt-#{$scale} { - margin-top: #{$size} !important; - } - .mr-#{$scale} { - margin-right: #{$size} !important; - } - .mb-#{$scale} { - margin-bottom: #{$size} !important; - } - .ml-#{$scale} { - margin-left: #{$size} !important; - } - - .mx-#{$scale} { - margin-right: #{$size} !important; - margin-left: #{$size} !important; - } - - .my-#{$scale} { - margin-top: #{$size} !important; - margin-bottom: #{$size} !important; - } - - .mxn-#{$scale} { - margin-right: -#{$size} !important; - margin-left: -#{$size} !important; - } - .mx-#{$scale}-auto { - margin-right: auto !important; - margin-left: auto !important; - } -} - -@each $media-query in map-keys($media-queries) { - @for $i from 1 through length($spacers) { - @include mq($media-query) { - $size: #{map-get($spacers, sp-#{$i - 1})}; - $scale: #{$i - 1}; - - // .m-sm-0, .m-md-1, .m-lg-2... - .m-#{$media-query}-#{$scale} { - margin: #{$size} !important; - } - .mt-#{$media-query}-#{$scale} { - margin-top: #{$size} !important; - } - .mr-#{$media-query}-#{$scale} { - margin-right: #{$size} !important; - } - .mb-#{$media-query}-#{$scale} { - margin-bottom: #{$size} !important; - } - .ml-#{$media-query}-#{$scale} { - margin-left: #{$size} !important; - } - - .mx-#{$media-query}-#{$scale} { - margin-right: #{$size} !important; - margin-left: #{$size} !important; - } - - .my-#{$media-query}-#{$scale} { - margin-top: #{$size} !important; - margin-bottom: #{$size} !important; - } - - .mxn-#{$media-query}-#{$scale} { - margin-right: -#{$size} !important; - margin-left: -#{$size} !important; - } - } - } -} - -// Padding spacer utilities - -@for $i from 1 through length($spacers) { - $size: #{map-get($spacers, sp-#{$i - 1})}; - $scale: #{$i - 1}; - - // .p-0, .p-1, .p-2... - .p-#{$scale} { - padding: #{$size} !important; - } - .pt-#{$scale} { - padding-top: #{$size} !important; - } - .pr-#{$scale} { - padding-right: #{$size} !important; - } - .pb-#{$scale} { - padding-bottom: #{$size} !important; - } - .pl-#{$scale} { - padding-left: #{$size} !important; - } - - .px-#{$scale} { - padding-right: #{$size} !important; - padding-left: #{$size} !important; - } - - .py-#{$scale} { - padding-top: #{$size} !important; - padding-bottom: #{$size} !important; - } -} - -@each $media-query in map-keys($media-queries) { - @include mq($media-query) { - @for $i from 1 through length($spacers) { - $size: #{map-get($spacers, sp-#{$i - 1})}; - $scale: #{$i - 1}; - - // .p-sm-0, .p-md-1, .p-lg-2... - .p-#{$media-query}-#{$scale} { - padding: #{$size} !important; - } - .pt-#{$media-query}-#{$scale} { - padding-top: #{$size} !important; - } - .pr-#{$media-query}-#{$scale} { - padding-right: #{$size} !important; - } - .pb-#{$media-query}-#{$scale} { - padding-bottom: #{$size} !important; - } - .pl-#{$media-query}-#{$scale} { - padding-left: #{$size} !important; - } - - .px-#{$media-query}-#{$scale} { - padding-right: #{$size} !important; - padding-left: #{$size} !important; - } - - .py-#{$media-query}-#{$scale} { - padding-top: #{$size} !important; - padding-bottom: #{$size} !important; - } - } - } -} diff --git a/docs/_sass/utilities/_typography.scss b/docs/_sass/utilities/_typography.scss deleted file mode 100644 index 33f1db9e6..000000000 --- a/docs/_sass/utilities/_typography.scss +++ /dev/null @@ -1,85 +0,0 @@ -// Utility classes for typography - -.fs-1 { - @include fs-1; -} - -.fs-2 { - @include fs-2; -} - -.fs-3 { - @include fs-3; -} - -.fs-4 { - @include fs-4; -} - -.fs-5 { - @include fs-5; -} - -.fs-6 { - @include fs-6; -} - -.fs-7 { - @include fs-7; -} - -.fs-8 { - @include fs-8; -} - -.fs-9 { - @include fs-9; -} - -.fs-10 { - @include fs-10; -} - -.fw-300 { - font-weight: 300 !important; -} - -.fw-400 { - font-weight: 400 !important; -} - -.fw-500 { - font-weight: 500 !important; -} - -.fw-700 { - font-weight: 700 !important; -} - -.lh-0 { - line-height: 0 !important; -} - -.lh-default { - line-height: $body-line-height; -} - -.lh-tight { - line-height: $body-heading-line-height; -} - -.ls-5 { - letter-spacing: 0.05em !important; -} - -.ls-10 { - letter-spacing: 0.1em !important; -} - -.ls-0 { - letter-spacing: 0 !important; -} - -.text-uppercase { - text-transform: uppercase !important; -} diff --git a/docs/_sass/utilities/utilities.scss b/docs/_sass/utilities/utilities.scss deleted file mode 100644 index 6c25bdfa7..000000000 --- a/docs/_sass/utilities/utilities.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import "./colors"; -@import "./layout"; -@import "./typography"; -@import "./lists"; -@import "./spacing"; diff --git a/docs/_sass/vendor/OneDarkJekyll/LICENSE b/docs/_sass/vendor/OneDarkJekyll/LICENSE deleted file mode 100644 index 01d0dfb24..000000000 --- a/docs/_sass/vendor/OneDarkJekyll/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2016 Mihály Gyöngyösi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/docs/_sass/vendor/OneDarkJekyll/syntax.scss b/docs/_sass/vendor/OneDarkJekyll/syntax.scss deleted file mode 100644 index 3888797e1..000000000 --- a/docs/_sass/vendor/OneDarkJekyll/syntax.scss +++ /dev/null @@ -1,202 +0,0 @@ -// Generated with OneDarkJekyll applied to Atom's One Dark Vivid theme - -.highlight, -pre.highlight { - background: #31343f; - color: #dee2f7; -} -.highlight pre { - background: #31343f; -} -.highlight .hll { - background: #31343f; -} -.highlight .c { - color: #63677e; - font-style: italic; -} -.highlight .err { - color: #960050; - background-color: #1e0010; -} -.highlight .k { - color: #e19ef5; -} -.highlight .l { - color: #a3eea0; -} -.highlight .n { - color: #dee2f7; -} -.highlight .o { - color: #dee2f7; -} -.highlight .p { - color: #dee2f7; -} -.highlight .cm { - color: #63677e; - font-style: italic; -} -.highlight .cp { - color: #63677e; - font-style: italic; -} -.highlight .c1 { - color: #63677e; - font-style: italic; -} -.highlight .cs { - color: #63677e; - font-style: italic; -} -.highlight .ge { - font-style: italic; -} -.highlight .gs { - font-weight: 700; -} -.highlight .kc { - color: #e19ef5; -} -.highlight .kd { - color: #e19ef5; -} -.highlight .kn { - color: #e19ef5; -} -.highlight .kp { - color: #e19ef5; -} -.highlight .kr { - color: #e19ef5; -} -.highlight .kt { - color: #e19ef5; -} -.highlight .ld { - color: #a3eea0; -} -.highlight .m { - color: #eddc96; -} -.highlight .s { - color: #a3eea0; -} -.highlight .na { - color: #eddc96; -} -.highlight .nb { - color: #fdce68; -} -.highlight .nc { - color: #fdce68; -} -.highlight .no { - color: #fdce68; -} -.highlight .nd { - color: #fdce68; -} -.highlight .ni { - color: #fdce68; -} -.highlight .ne { - color: #fdce68; -} -.highlight .nf { - color: #dee2f7; -} -.highlight .nl { - color: #fdce68; -} -.highlight .nn { - color: #dee2f7; -} -.highlight .nx { - color: #dee2f7; -} -.highlight .py { - color: #fdce68; -} -.highlight .nt { - color: #f9867b; -} -.highlight .nv { - color: #fdce68; -} -.highlight .ow { - font-weight: 700; -} -.highlight .w { - color: #f8f8f2; -} -.highlight .mf { - color: #eddc96; -} -.highlight .mh { - color: #eddc96; -} -.highlight .mi { - color: #eddc96; -} -.highlight .mo { - color: #eddc96; -} -.highlight .sb { - color: #a3eea0; -} -.highlight .sc { - color: #a3eea0; -} -.highlight .sd { - color: #a3eea0; -} -.highlight .s2 { - color: #a3eea0; -} -.highlight .se { - color: #a3eea0; -} -.highlight .sh { - color: #a3eea0; -} -.highlight .si { - color: #a3eea0; -} -.highlight .sx { - color: #a3eea0; -} -.highlight .sr { - color: #7be2f9; -} -.highlight .s1 { - color: #a3eea0; -} -.highlight .ss { - color: #7be2f9; -} -.highlight .bp { - color: #fdce68; -} -.highlight .vc { - color: #fdce68; -} -.highlight .vg { - color: #fdce68; -} -.highlight .vi { - color: #f9867b; -} -.highlight .il { - color: #eddc96; -} -.highlight .gu { - color: #75715e; -} -.highlight .gd { - color: #f92672; -} -.highlight .gi { - color: #a6e22e; -} diff --git a/docs/_sass/vendor/OneLightJekyll/LICENSE b/docs/_sass/vendor/OneLightJekyll/LICENSE deleted file mode 100644 index df5eca006..000000000 --- a/docs/_sass/vendor/OneLightJekyll/LICENSE +++ /dev/null @@ -1,65 +0,0 @@ -OneLightJekyll relies on two works: OneDarkJekyll, and Atom's One Light theme. This file contains the licensing for all the related software. - ---- - -OneLightJekyll (https://github.com/just-the-docs/OneLightJekyll/blob/main/LICENSE) - -MIT License - -Copyright (c) 2023 Matthew Wang - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - ---- - -OneDarkJekyll (https://github.com/mgyongyosi/OneDarkJekyll/blob/master/LICENSE) - -MIT License - -Copyright (c) 2016 Mihály Gyöngyösi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - ---- - -Atom One Light (https://github.com/atom/atom/blob/master/LICENSE.md) - -Copyright (c) 2011-2022 GitHub Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/docs/_sass/vendor/OneLightJekyll/syntax.scss b/docs/_sass/vendor/OneLightJekyll/syntax.scss deleted file mode 100644 index a38326a7d..000000000 --- a/docs/_sass/vendor/OneLightJekyll/syntax.scss +++ /dev/null @@ -1,211 +0,0 @@ -// Generated with OneLightJekyll applied to Atom's One Light theme - -.highlight, -pre.highlight { - background: #f9f9f9; - color: #383942; -} -.highlight pre { - background: #f9f9f9; -} -.highlight .hll { - background: #f9f9f9; -} -.highlight .c { - color: #9fa0a6; - font-style: italic; -} -.highlight .err { - color: #fff; - background-color: #e05151; -} -.highlight .k { - color: #a625a4; -} -.highlight .l { - color: #50a04f; -} -.highlight .n { - color: #383942; -} -.highlight .o { - color: #383942; -} -.highlight .p { - color: #383942; -} -.highlight .cm { - color: #9fa0a6; - font-style: italic; -} -.highlight .cp { - color: #9fa0a6; - font-style: italic; -} -.highlight .c1 { - color: #9fa0a6; - font-style: italic; -} -.highlight .cs { - color: #9fa0a6; - font-style: italic; -} -.highlight .ge { - font-style: italic; -} -.highlight .gs { - font-weight: 700; -} -.highlight .kc { - color: #a625a4; -} -.highlight .kd { - color: #a625a4; -} -.highlight .kn { - color: #a625a4; -} -.highlight .kp { - color: #a625a4; -} -.highlight .kr { - color: #a625a4; -} -.highlight .kt { - color: #a625a4; -} -.highlight .ld { - color: #50a04f; -} -.highlight .m { - color: #b66a00; -} -.highlight .s { - color: #50a04f; -} -.highlight .na { - color: #b66a00; -} -.highlight .nb { - color: #ca7601; -} -.highlight .nc { - color: #ca7601; -} -.highlight .no { - color: #ca7601; -} -.highlight .nd { - color: #ca7601; -} -.highlight .ni { - color: #ca7601; -} -.highlight .ne { - color: #ca7601; -} -.highlight .nf { - color: #383942; -} -.highlight .nl { - color: #ca7601; -} -.highlight .nn { - color: #383942; -} -.highlight .nx { - color: #383942; -} -.highlight .py { - color: #ca7601; -} -.highlight .nt { - color: #e35549; -} -.highlight .nv { - color: #ca7601; -} -.highlight .ow { - font-weight: 700; -} -.highlight .w { - color: #f8f8f2; -} -.highlight .mf { - color: #b66a00; -} -.highlight .mh { - color: #b66a00; -} -.highlight .mi { - color: #b66a00; -} -.highlight .mo { - color: #b66a00; -} -.highlight .sb { - color: #50a04f; -} -.highlight .sc { - color: #50a04f; -} -.highlight .sd { - color: #50a04f; -} -.highlight .s2 { - color: #50a04f; -} -.highlight .se { - color: #50a04f; -} -.highlight .sh { - color: #50a04f; -} -.highlight .si { - color: #50a04f; -} -.highlight .sx { - color: #50a04f; -} -.highlight .sr { - color: #0083bb; -} -.highlight .s1 { - color: #50a04f; -} -.highlight .ss { - color: #0083bb; -} -.highlight .bp { - color: #ca7601; -} -.highlight .vc { - color: #ca7601; -} -.highlight .vg { - color: #ca7601; -} -.highlight .vi { - color: #e35549; -} -.highlight .il { - color: #b66a00; -} -.highlight .gu { - color: #75715e; -} -.highlight .gd { - color: #e05151; -} -.highlight .gi { - color: #43d089; -} -.highlight ::selection { - background-color: #fff; -} -.highlight .language-json .w + .s2 { - color: #e35549; -} -.highlight .language-json .kc { - color: #0083bb; -} diff --git a/docs/_sass/vendor/normalize.scss/README.md b/docs/_sass/vendor/normalize.scss/README.md deleted file mode 100644 index 7af1714a9..000000000 --- a/docs/_sass/vendor/normalize.scss/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# normalize.scss - -Normalize.scss is an SCSS copy of [normalize.css](http://necolas.github.io/normalize.css), a customisable CSS file that makes browsers render all elements more consistently and in line with modern standards. - -The [normalize.scss fork](https://github.com/guerrero/normalize.scss) of [normalize.css](http://necolas.github.io/normalize.css) was archived in 2014, and has not been updated since v0.1.0. - -[View the normalize.css test file](http://necolas.github.io/normalize.css/latest/test.html) diff --git a/docs/_sass/vendor/normalize.scss/normalize.scss b/docs/_sass/vendor/normalize.scss/normalize.scss deleted file mode 100644 index bb6e2a7d6..000000000 --- a/docs/_sass/vendor/normalize.scss/normalize.scss +++ /dev/null @@ -1,351 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ - -/* Document - ========================================================================== */ - -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ - -html { - line-height: 1.15; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/* Sections - ========================================================================== */ - -/** - * Remove the margin in all browsers. - */ - -body { - margin: 0; -} - -/** - * Render the `main` element consistently in IE. - */ - -main { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ - -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ - -hr { - box-sizing: content-box; /* 1 */ - height: 0; /* 1 */ - overflow: visible; /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -pre { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Remove the gray background on active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ - -abbr[title] { - border-bottom: none; /* 1 */ - text-decoration: underline; /* 2 */ - text-decoration: underline dotted; /* 2 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -code, -kbd, -samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/** - * Add the correct font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove the border on images inside links in IE 10. - */ - -img { - border-style: none; -} - -/* Forms - ========================================================================== */ - -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ - -button, -input { - /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ - -button, -select { - /* 1 */ - text-transform: none; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} - -/** - * Remove the inner border and padding in Firefox. - */ - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ - -button:-moz-focusring, -[type="button"]:-moz-focusring, -[type="reset"]:-moz-focusring, -[type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ - -legend { - box-sizing: border-box; /* 1 */ - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - padding: 0; /* 3 */ - white-space: normal; /* 1 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ - -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ - -[type="checkbox"], -[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ - -[type="search"] { - -webkit-appearance: textfield; /* 1 */ - outline-offset: -2px; /* 2 */ -} - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ - -::-webkit-file-upload-button { - -webkit-appearance: button; /* 1 */ - font: inherit; /* 2 */ -} - -/* Interactive - ========================================================================== */ - -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ - -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ - -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ - -/** - * Add the correct display in IE 10+. - */ - -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ - -[hidden] { - display: none; -} diff --git a/docs/assets/css/just-the-docs-dark.scss b/docs/assets/css/just-the-docs-dark.scss deleted file mode 100644 index ac92fb152..000000000 --- a/docs/assets/css/just-the-docs-dark.scss +++ /dev/null @@ -1,3 +0,0 @@ ---- ---- -{% include css/just-the-docs.scss.liquid color_scheme="dark" %} diff --git a/docs/assets/css/just-the-docs-default.scss b/docs/assets/css/just-the-docs-default.scss deleted file mode 100644 index 0ef13bdd7..000000000 --- a/docs/assets/css/just-the-docs-default.scss +++ /dev/null @@ -1,11 +0,0 @@ ---- -# Use a comment to ensure Jekyll reads the file to be transformed into CSS later -# only main files contain this front matter, not partials. ---- - -{% if site.color_scheme and site.color_scheme != "nil" %} - {% assign color_scheme = site.color_scheme %} -{% else %} - {% assign color_scheme = "light" %} -{% endif %} -{% include css/just-the-docs.scss.liquid color_scheme=color_scheme %} diff --git a/docs/assets/css/just-the-docs-light.scss b/docs/assets/css/just-the-docs-light.scss deleted file mode 100644 index ac69688df..000000000 --- a/docs/assets/css/just-the-docs-light.scss +++ /dev/null @@ -1,3 +0,0 @@ ---- ---- -{% include css/just-the-docs.scss.liquid color_scheme="light" %} diff --git a/docs/assets/fonts/ChakraPetch-SemiBold.ttf b/docs/assets/fonts/ChakraPetch-SemiBold.ttf deleted file mode 100644 index 1c24c2401..000000000 Binary files a/docs/assets/fonts/ChakraPetch-SemiBold.ttf and /dev/null differ diff --git a/docs/assets/fonts/Rubik-Regular.ttf b/docs/assets/fonts/Rubik-Regular.ttf deleted file mode 100644 index 51266417c..000000000 Binary files a/docs/assets/fonts/Rubik-Regular.ttf and /dev/null differ diff --git a/docs/assets/js/just-the-docs.js b/docs/assets/js/just-the-docs.js deleted file mode 100644 index a3253a125..000000000 --- a/docs/assets/js/just-the-docs.js +++ /dev/null @@ -1,528 +0,0 @@ ---- ---- -(function (jtd, undefined) { - -// Event handling - -jtd.addEvent = function(el, type, handler) { - if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler); -} -jtd.removeEvent = function(el, type, handler) { - if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler); -} -jtd.onReady = function(ready) { - // in case the document is already rendered - if (document.readyState!='loading') ready(); - // modern browsers - else if (document.addEventListener) document.addEventListener('DOMContentLoaded', ready); - // IE <= 8 - else document.attachEvent('onreadystatechange', function(){ - if (document.readyState=='complete') ready(); - }); -} - -// Show/hide mobile menu - -function initNav() { - jtd.addEvent(document, 'click', function(e){ - var target = e.target; - while (target && !(target.classList && target.classList.contains('nav-list-expander'))) { - target = target.parentNode; - } - if (target) { - e.preventDefault(); - target.parentNode.classList.toggle('active'); - } - }); - - const siteNav = document.getElementById('site-nav'); - const mainHeader = document.getElementById('main-header'); - const menuButton = document.getElementById('menu-button'); - - jtd.addEvent(menuButton, 'click', function(e){ - e.preventDefault(); - - if (menuButton.classList.toggle('nav-open')) { - siteNav.classList.add('nav-open'); - mainHeader.classList.add('nav-open'); - } else { - siteNav.classList.remove('nav-open'); - mainHeader.classList.remove('nav-open'); - } - }); - - {%- if site.search_enabled != false and site.search.button %} - const searchInput = document.getElementById('search-input'); - const searchButton = document.getElementById('search-button'); - - jtd.addEvent(searchButton, 'click', function(e){ - e.preventDefault(); - - mainHeader.classList.add('nav-open'); - searchInput.focus(); - }); - {%- endif %} -} - -{%- if site.search_enabled != false %} -// Site search - -function initSearch() { - var request = new XMLHttpRequest(); - request.open('GET', '{{ "assets/js/search-data.json" | relative_url }}', true); - - request.onload = function(){ - if (request.status >= 200 && request.status < 400) { - var docs = JSON.parse(request.responseText); - - lunr.tokenizer.separator = {{ site.search.tokenizer_separator | default: site.search_tokenizer_separator | default: "/[\s\-/]+/" }} - - var index = lunr(function(){ - this.ref('id'); - this.field('title', { boost: 200 }); - this.field('content', { boost: 2 }); - {%- if site.search.rel_url != false %} - this.field('relUrl'); - {%- endif %} - this.metadataWhitelist = ['position'] - - for (var i in docs) { - {% include lunr/custom-index.js %} - this.add({ - id: i, - title: docs[i].title, - content: docs[i].content, - {%- if site.search.rel_url != false %} - relUrl: docs[i].relUrl - {%- endif %} - }); - } - }); - - searchLoaded(index, docs); - } else { - console.log('Error loading ajax request. Request status:' + request.status); - } - }; - - request.onerror = function(){ - console.log('There was a connection error'); - }; - - request.send(); -} - -function searchLoaded(index, docs) { - var index = index; - var docs = docs; - var searchInput = document.getElementById('search-input'); - var searchResults = document.getElementById('search-results'); - var mainHeader = document.getElementById('main-header'); - var currentInput; - var currentSearchIndex = 0; - - function showSearch() { - document.documentElement.classList.add('search-active'); - } - - function hideSearch() { - document.documentElement.classList.remove('search-active'); - } - - function update() { - currentSearchIndex++; - - var input = searchInput.value; - if (input === '') { - hideSearch(); - } else { - showSearch(); - // scroll search input into view, workaround for iOS Safari - window.scroll(0, -1); - setTimeout(function(){ window.scroll(0, 0); }, 0); - } - if (input === currentInput) { - return; - } - currentInput = input; - searchResults.innerHTML = ''; - if (input === '') { - return; - } - - var results = index.query(function (query) { - var tokens = lunr.tokenizer(input) - query.term(tokens, { - boost: 10 - }); - query.term(tokens, { - wildcard: lunr.Query.wildcard.TRAILING - }); - }); - - if ((results.length == 0) && (input.length > 2)) { - var tokens = lunr.tokenizer(input).filter(function(token, i) { - return token.str.length < 20; - }) - if (tokens.length > 0) { - results = index.query(function (query) { - query.term(tokens, { - editDistance: Math.round(Math.sqrt(input.length / 2 - 1)) - }); - }); - } - } - - if (results.length == 0) { - var noResultsDiv = document.createElement('div'); - noResultsDiv.classList.add('search-no-result'); - noResultsDiv.innerText = 'No results found'; - searchResults.appendChild(noResultsDiv); - - } else { - var resultsList = document.createElement('ul'); - resultsList.classList.add('search-results-list'); - searchResults.appendChild(resultsList); - - addResults(resultsList, results, 0, 10, 100, currentSearchIndex); - } - - function addResults(resultsList, results, start, batchSize, batchMillis, searchIndex) { - if (searchIndex != currentSearchIndex) { - return; - } - for (var i = start; i < (start + batchSize); i++) { - if (i == results.length) { - return; - } - addResult(resultsList, results[i]); - } - setTimeout(function() { - addResults(resultsList, results, start + batchSize, batchSize, batchMillis, searchIndex); - }, batchMillis); - } - - function addResult(resultsList, result) { - var doc = docs[result.ref]; - - var resultsListItem = document.createElement('li'); - resultsListItem.classList.add('search-results-list-item'); - resultsList.appendChild(resultsListItem); - - var resultLink = document.createElement('a'); - resultLink.classList.add('search-result'); - resultLink.setAttribute('href', doc.url); - resultsListItem.appendChild(resultLink); - - var resultTitle = document.createElement('div'); - resultTitle.classList.add('search-result-title'); - resultLink.appendChild(resultTitle); - - // note: the SVG svg-doc is only loaded as a Jekyll include if site.search_enabled is true; see _includes/icons/icons.html - var resultDoc = document.createElement('div'); - resultDoc.classList.add('search-result-doc'); - resultDoc.innerHTML = ''; - resultTitle.appendChild(resultDoc); - - var resultDocTitle = document.createElement('div'); - resultDocTitle.classList.add('search-result-doc-title'); - resultDocTitle.innerHTML = doc.doc; - resultDoc.appendChild(resultDocTitle); - var resultDocOrSection = resultDocTitle; - - if (doc.doc != doc.title) { - resultDoc.classList.add('search-result-doc-parent'); - var resultSection = document.createElement('div'); - resultSection.classList.add('search-result-section'); - resultSection.innerHTML = doc.title; - resultTitle.appendChild(resultSection); - resultDocOrSection = resultSection; - } - - var metadata = result.matchData.metadata; - var titlePositions = []; - var contentPositions = []; - for (var j in metadata) { - var meta = metadata[j]; - if (meta.title) { - var positions = meta.title.position; - for (var k in positions) { - titlePositions.push(positions[k]); - } - } - if (meta.content) { - var positions = meta.content.position; - for (var k in positions) { - var position = positions[k]; - var previewStart = position[0]; - var previewEnd = position[0] + position[1]; - var ellipsesBefore = true; - var ellipsesAfter = true; - for (var k = 0; k < {{ site.search.preview_words_before | default: 5 }}; k++) { - var nextSpace = doc.content.lastIndexOf(' ', previewStart - 2); - var nextDot = doc.content.lastIndexOf('. ', previewStart - 2); - if ((nextDot >= 0) && (nextDot > nextSpace)) { - previewStart = nextDot + 1; - ellipsesBefore = false; - break; - } - if (nextSpace < 0) { - previewStart = 0; - ellipsesBefore = false; - break; - } - previewStart = nextSpace + 1; - } - for (var k = 0; k < {{ site.search.preview_words_after | default: 10 }}; k++) { - var nextSpace = doc.content.indexOf(' ', previewEnd + 1); - var nextDot = doc.content.indexOf('. ', previewEnd + 1); - if ((nextDot >= 0) && (nextDot < nextSpace)) { - previewEnd = nextDot; - ellipsesAfter = false; - break; - } - if (nextSpace < 0) { - previewEnd = doc.content.length; - ellipsesAfter = false; - break; - } - previewEnd = nextSpace; - } - contentPositions.push({ - highlight: position, - previewStart: previewStart, previewEnd: previewEnd, - ellipsesBefore: ellipsesBefore, ellipsesAfter: ellipsesAfter - }); - } - } - } - - if (titlePositions.length > 0) { - titlePositions.sort(function(p1, p2){ return p1[0] - p2[0] }); - resultDocOrSection.innerHTML = ''; - addHighlightedText(resultDocOrSection, doc.title, 0, doc.title.length, titlePositions); - } - - if (contentPositions.length > 0) { - contentPositions.sort(function(p1, p2){ return p1.highlight[0] - p2.highlight[0] }); - var contentPosition = contentPositions[0]; - var previewPosition = { - highlight: [contentPosition.highlight], - previewStart: contentPosition.previewStart, previewEnd: contentPosition.previewEnd, - ellipsesBefore: contentPosition.ellipsesBefore, ellipsesAfter: contentPosition.ellipsesAfter - }; - var previewPositions = [previewPosition]; - for (var j = 1; j < contentPositions.length; j++) { - contentPosition = contentPositions[j]; - if (previewPosition.previewEnd < contentPosition.previewStart) { - previewPosition = { - highlight: [contentPosition.highlight], - previewStart: contentPosition.previewStart, previewEnd: contentPosition.previewEnd, - ellipsesBefore: contentPosition.ellipsesBefore, ellipsesAfter: contentPosition.ellipsesAfter - } - previewPositions.push(previewPosition); - } else { - previewPosition.highlight.push(contentPosition.highlight); - previewPosition.previewEnd = contentPosition.previewEnd; - previewPosition.ellipsesAfter = contentPosition.ellipsesAfter; - } - } - - var resultPreviews = document.createElement('div'); - resultPreviews.classList.add('search-result-previews'); - resultLink.appendChild(resultPreviews); - - var content = doc.content; - for (var j = 0; j < Math.min(previewPositions.length, {{ site.search.previews | default: 3 }}); j++) { - var position = previewPositions[j]; - - var resultPreview = document.createElement('div'); - resultPreview.classList.add('search-result-preview'); - resultPreviews.appendChild(resultPreview); - - if (position.ellipsesBefore) { - resultPreview.appendChild(document.createTextNode('... ')); - } - addHighlightedText(resultPreview, content, position.previewStart, position.previewEnd, position.highlight); - if (position.ellipsesAfter) { - resultPreview.appendChild(document.createTextNode(' ...')); - } - } - } - - {%- if site.search.rel_url != false %} - var resultRelUrl = document.createElement('span'); - resultRelUrl.classList.add('search-result-rel-url'); - resultRelUrl.innerText = doc.relUrl; - resultTitle.appendChild(resultRelUrl); - {%- endif %} - } - - function addHighlightedText(parent, text, start, end, positions) { - var index = start; - for (var i in positions) { - var position = positions[i]; - var span = document.createElement('span'); - span.innerHTML = text.substring(index, position[0]); - parent.appendChild(span); - index = position[0] + position[1]; - var highlight = document.createElement('span'); - highlight.classList.add('search-result-highlight'); - highlight.innerHTML = text.substring(position[0], index); - parent.appendChild(highlight); - } - var span = document.createElement('span'); - span.innerHTML = text.substring(index, end); - parent.appendChild(span); - } - } - - jtd.addEvent(searchInput, 'focus', function(){ - setTimeout(update, 0); - }); - - jtd.addEvent(searchInput, 'keyup', function(e){ - switch (e.keyCode) { - case 27: // When esc key is pressed, hide the results and clear the field - searchInput.value = ''; - break; - case 38: // arrow up - case 40: // arrow down - case 13: // enter - e.preventDefault(); - return; - } - update(); - }); - - jtd.addEvent(searchInput, 'keydown', function(e){ - switch (e.keyCode) { - case 38: // arrow up - e.preventDefault(); - var active = document.querySelector('.search-result.active'); - if (active) { - active.classList.remove('active'); - if (active.parentElement.previousSibling) { - var previous = active.parentElement.previousSibling.querySelector('.search-result'); - previous.classList.add('active'); - } - } - return; - case 40: // arrow down - e.preventDefault(); - var active = document.querySelector('.search-result.active'); - if (active) { - if (active.parentElement.nextSibling) { - var next = active.parentElement.nextSibling.querySelector('.search-result'); - active.classList.remove('active'); - next.classList.add('active'); - } - } else { - var next = document.querySelector('.search-result'); - if (next) { - next.classList.add('active'); - } - } - return; - case 13: // enter - e.preventDefault(); - var active = document.querySelector('.search-result.active'); - if (active) { - active.click(); - } else { - var first = document.querySelector('.search-result'); - if (first) { - first.click(); - } - } - return; - } - }); - - jtd.addEvent(document, 'click', function(e){ - if (e.target != searchInput) { - hideSearch(); - } - }); -} -{%- endif %} - -// Switch theme - -jtd.getTheme = function() { - var cssFileHref = document.querySelector('[rel="stylesheet"]').getAttribute('href'); - return cssFileHref.substring(cssFileHref.lastIndexOf('-') + 1, cssFileHref.length - 4); -} - -jtd.setTheme = function(theme) { - var cssFile = document.querySelector('[rel="stylesheet"]'); - cssFile.setAttribute('href', '{{ "assets/css/just-the-docs-" | relative_url }}' + theme + '.css'); -} - -// Scroll site-nav to ensure the link to the current page is visible - -function scrollNav() { - const href = document.location.pathname; - const siteNav = document.getElementById('site-nav'); - const targetLink = siteNav.querySelector('a[href="' + href + '"], a[href="' + href + '/"]'); - if(targetLink){ - const rect = targetLink.getBoundingClientRect(); - siteNav.scrollBy(0, rect.top - 3*rect.height); - } -} - -// Document ready - -jtd.onReady(function(){ - initNav(); - {%- if site.search_enabled != false %} - initSearch(); - {%- endif %} - scrollNav(); -}); - -// Copy button on code - - -{%- if site.enable_copy_code_button != false %} - -jtd.onReady(function(){ - - var codeBlocks = document.querySelectorAll('div.highlighter-rouge, div.listingblock > div.content, figure.highlight'); - - // note: the SVG svg-copied and svg-copy is only loaded as a Jekyll include if site.enable_copy_code_button is true; see _includes/icons/icons.html - var svgCopied = ''; - var svgCopy = ''; - - codeBlocks.forEach(codeBlock => { - var copyButton = document.createElement('button'); - var timeout = null; - copyButton.type = 'button'; - copyButton.ariaLabel = 'Copy code to clipboard'; - copyButton.innerHTML = svgCopy; - codeBlock.append(copyButton); - - copyButton.addEventListener('click', function () { - if(timeout === null) { - var code = (codeBlock.querySelector('pre:not(.lineno, .highlight)') || codeBlock.querySelector('code')).innerText; - window.navigator.clipboard.writeText(code); - - copyButton.innerHTML = svgCopied; - - var timeoutSetting = 4000; - - timeout = setTimeout(function () { - copyButton.innerHTML = svgCopy; - timeout = null; - }, timeoutSetting); - } - }); - }); - -}); - -{%- endif %} - -})(window.jtd = window.jtd || {}); - -{% include js/custom.js %} diff --git a/docs/assets/js/vendor/lunr.min.js b/docs/assets/js/vendor/lunr.min.js deleted file mode 100644 index 46c594b80..000000000 --- a/docs/assets/js/vendor/lunr.min.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 - * Copyright (C) 2020 Oliver Nightingale - * @license MIT - */ -/** - * ORIGINAL MIT LICENSE - * Copyright (C) 2013 by Oliver Nightingale - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -!function(){var e,t,r,i,n,s,o,a,u,l,c,h,d,f,p,y,m,g,x,v,w,Q,k,S,E,L,b,P,T=function(e){var t=new T.Builder;return t.pipeline.add(T.trimmer,T.stopWordFilter,T.stemmer),t.searchPipeline.add(T.stemmer),e.call(t,t),t.build()};T.version="2.3.9" -/*! -* lunr.utils -* Copyright (C) 2020 Oliver Nightingale -*/,T.utils={},T.utils.warn=(e=this,function(t){e.console&&console.warn&&console.warn(t)}),T.utils.asString=function(e){return null==e?"":e.toString()},T.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var u=T.utils.clone(t)||{};u.position=[o,a],u.index=n.length,n.push(new T.Token(r.slice(o,s),u))}o=s+1}}return n},T.tokenizer.separator=/[\s\-]+/ -/*! -* lunr.Pipeline -* Copyright (C) 2020 Oliver Nightingale -*/,T.Pipeline=function(){this._stack=[]},T.Pipeline.registeredFunctions=Object.create(null),T.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&T.utils.warn("Overwriting existing registered function: "+t),e.label=t,T.Pipeline.registeredFunctions[e.label]=e},T.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||T.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},T.Pipeline.load=function(e){var t=new T.Pipeline;return e.forEach((function(e){var r=T.Pipeline.registeredFunctions[e];if(!r)throw new Error("Cannot load unregistered function: "+e);t.add(r)})),t},T.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){T.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},T.Pipeline.prototype.after=function(e,t){T.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");r+=1,this._stack.splice(r,0,t)},T.Pipeline.prototype.before=function(e,t){T.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");this._stack.splice(r,0,t)},T.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},T.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e||s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},T.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},T.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var s,o=n.str.charAt(0);o in n.node.edges?s=n.node.edges[o]:(s=new T.TokenSet,n.node.edges[o]=s),1==n.str.length&&(s.final=!0),i.push({node:s,editsRemaining:n.editsRemaining,str:n.str.slice(1)})}if(0!=n.editsRemaining){if("*"in n.node.edges)var a=n.node.edges["*"];else{a=new T.TokenSet;n.node.edges["*"]=a}if(0==n.str.length&&(a.final=!0),i.push({node:a,editsRemaining:n.editsRemaining-1,str:n.str}),n.str.length>1&&i.push({node:n.node,editsRemaining:n.editsRemaining-1,str:n.str.slice(1)}),1==n.str.length&&(n.node.final=!0),n.str.length>=1){if("*"in n.node.edges)var u=n.node.edges["*"];else{u=new T.TokenSet;n.node.edges["*"]=u}1==n.str.length&&(u.final=!0),i.push({node:u,editsRemaining:n.editsRemaining-1,str:n.str.slice(1)})}if(n.str.length>1){var l,c=n.str.charAt(0),h=n.str.charAt(1);h in n.node.edges?l=n.node.edges[h]:(l=new T.TokenSet,n.node.edges[h]=l),1==n.str.length&&(l.final=!0),i.push({node:l,editsRemaining:n.editsRemaining-1,str:c+n.str.slice(2)})}}}return r},T.TokenSet.fromString=function(e){for(var t=new T.TokenSet,r=t,i=0,n=e.length;i=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}} -/*! -* lunr.Index -* Copyright (C) 2020 Oliver Nightingale -*/,T.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},T.Index.prototype.search=function(e){return this.query((function(t){new T.QueryParser(e,t).parse()}))},T.Index.prototype.query=function(e){for(var t=new T.Query(this.fields),r=Object.create(null),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a1?1:e},T.Builder.prototype.k1=function(e){this._k1=e},T.Builder.prototype.add=function(e,t){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=t||{},this.documentCount+=1;for(var n=0;n=this.length)return T.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},T.QueryLexer.prototype.width=function(){return this.pos-this.start},T.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},T.QueryLexer.prototype.backup=function(){this.pos-=1},T.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=T.QueryLexer.EOS&&this.backup()},T.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(T.QueryLexer.TERM)),e.ignore(),e.more())return T.QueryLexer.lexText},T.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(T.QueryLexer.EDIT_DISTANCE),T.QueryLexer.lexText},T.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(T.QueryLexer.BOOST),T.QueryLexer.lexText},T.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(T.QueryLexer.TERM)},T.QueryLexer.termSeparator=T.tokenizer.separator,T.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==T.QueryLexer.EOS)return T.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return T.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(T.QueryLexer.TERM),T.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(T.QueryLexer.TERM),T.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(T.QueryLexer.PRESENCE),T.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(T.QueryLexer.PRESENCE),T.QueryLexer.lexText;if(t.match(T.QueryLexer.termSeparator))return T.QueryLexer.lexTerm}else e.escapeCharacter()}},T.QueryParser=function(e,t){this.lexer=new T.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},T.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=T.QueryParser.parseClause;e;)e=e(this);return this.query},T.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},T.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},T.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},T.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case T.QueryLexer.PRESENCE:return T.QueryParser.parsePresence;case T.QueryLexer.FIELD:return T.QueryParser.parseField;case T.QueryLexer.TERM:return T.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(r+=" with value '"+t.str+"'"),new T.QueryParseError(r,t.start,t.end)}},T.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=T.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=T.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+t.str+"'";throw new T.QueryParseError(r,t.start,t.end)}var i=e.peekLexeme();if(null==i){r="expecting term or field, found nothing";throw new T.QueryParseError(r,t.start,t.end)}switch(i.type){case T.QueryLexer.FIELD:return T.QueryParser.parseField;case T.QueryLexer.TERM:return T.QueryParser.parseTerm;default:r="expecting term or field, found '"+i.type+"'";throw new T.QueryParseError(r,i.start,i.end)}}},T.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var r=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+r;throw new T.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var n=e.peekLexeme();if(null==n){i="expecting term, found nothing";throw new T.QueryParseError(i,t.start,t.end)}if(n.type===T.QueryLexer.TERM)return T.QueryParser.parseTerm;i="expecting term, found '"+n.type+"'";throw new T.QueryParseError(i,n.start,n.end)}},T.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(null!=r)switch(r.type){case T.QueryLexer.TERM:return e.nextClause(),T.QueryParser.parseTerm;case T.QueryLexer.FIELD:return e.nextClause(),T.QueryParser.parseField;case T.QueryLexer.EDIT_DISTANCE:return T.QueryParser.parseEditDistance;case T.QueryLexer.BOOST:return T.QueryParser.parseBoost;case T.QueryLexer.PRESENCE:return e.nextClause(),T.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new T.QueryParseError(i,r.start,r.end)}else e.nextClause()}},T.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new T.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=r;var n=e.peekLexeme();if(null!=n)switch(n.type){case T.QueryLexer.TERM:return e.nextClause(),T.QueryParser.parseTerm;case T.QueryLexer.FIELD:return e.nextClause(),T.QueryParser.parseField;case T.QueryLexer.EDIT_DISTANCE:return T.QueryParser.parseEditDistance;case T.QueryLexer.BOOST:return T.QueryParser.parseBoost;case T.QueryLexer.PRESENCE:return e.nextClause(),T.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+n.type+"'";throw new T.QueryParseError(i,n.start,n.end)}else e.nextClause()}},T.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="boost must be numeric";throw new T.QueryParseError(i,t.start,t.end)}e.currentClause.boost=r;var n=e.peekLexeme();if(null!=n)switch(n.type){case T.QueryLexer.TERM:return e.nextClause(),T.QueryParser.parseTerm;case T.QueryLexer.FIELD:return e.nextClause(),T.QueryParser.parseField;case T.QueryLexer.EDIT_DISTANCE:return T.QueryParser.parseEditDistance;case T.QueryLexer.BOOST:return T.QueryParser.parseBoost;case T.QueryLexer.PRESENCE:return e.nextClause(),T.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+n.type+"'";throw new T.QueryParseError(i,n.start,n.end)}else e.nextClause()}},b=this,P=function(){return T},"function"==typeof define&&define.amd?define(P):"object"==typeof exports?module.exports=P():b.lunr=P()}(); diff --git a/docs/assets/js/zzzz-search-data.json b/docs/assets/js/zzzz-search-data.json deleted file mode 100644 index 370dbe509..000000000 --- a/docs/assets/js/zzzz-search-data.json +++ /dev/null @@ -1,74 +0,0 @@ ---- -permalink: /assets/js/search-data.json ---- -{ -{%- assign i = 0 -%} -{%- assign pages_array = "" | split: "" -%} -{%- assign pages_array = pages_array | push: site.html_pages -%} -{%- if site.just_the_docs.collections -%} - {%- for collection_entry in site.just_the_docs.collections -%} - {%- assign collection_key = collection_entry[0] -%} - {%- assign collection_value = collection_entry[1] -%} - {%- assign collection = site[collection_key] -%} - {%- if collection_value.search_exclude != true -%} - {%- assign pages_array = pages_array | push: collection -%} - {%- endif -%} - {%- endfor -%} -{%- endif -%} -{%- for pages in pages_array -%} - {%- for page in pages -%} - {%- if page.title and page.search_exclude != true -%} - {%- assign page_content = page.content -%} - {%- assign heading_level = site.search.heading_level | default: 2 -%} - {%- for j in (2..heading_level) -%} - {%- assign tag = '' -%} - {%- assign title = titleAndContent[0] | replace_first: '>', '

' | split: '

' -%} - {%- assign title = title[1] | strip_html -%} - {%- assign content = titleAndContent[1] -%} - {%- assign url = page.url -%} - {%- if title == page.title and parts[0] == '' -%} - {%- assign title_found = true -%} - {%- else -%} - {%- assign id = titleAndContent[0] -%} - {%- assign id = id | split: 'id="' -%} - {%- if id.size == 2 -%} - {%- assign id = id[1] -%} - {%- assign id = id | split: '"' -%} - {%- assign id = id[0] -%} - {%- capture url -%}{{ url | append: '#' | append: id }}{%- endcapture -%} - {%- endif -%} - {%- endif -%} - {%- unless i == 0 -%},{%- endunless -%} - "{{ i }}": { - "doc": {{ page.title | jsonify }}, - "title": {{ title | jsonify }}, - "content": {{ content | replace: ' - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

Class List

-
- - - - diff --git a/docs/docs/apidocs/cpp_apidocs/bc_s.png b/docs/docs/apidocs/cpp_apidocs/bc_s.png deleted file mode 100644 index e4018628b..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/bc_s.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/bdedox.css b/docs/docs/apidocs/cpp_apidocs/bdedox.css deleted file mode 100644 index 8b28aaf65..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bdedox.css +++ /dev/null @@ -1,658 +0,0 @@ -/* The standard CSS for doxygen */ - -body, table, div, p, dl { - font-family: SF Pro Text,SF Pro Icons,Helvetica Neue,Helvetica,Verdana,Arial,sans-serif; - font-size: 15px; - line-height: 1.4; - font-weight: 400; -} - -/* @group Heading Levels */ - -h1 { - font-size: 150%; -} - -h2 { - font-size: 120%; -} - -h3 { - font-size: 100%; -} - -dt { - font-weight: bold; -} - -div.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; -} - -p.startli, p.startdd, p.starttd { - margin-top: 2px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - padding: 2px; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #ffffff; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code { - color: #4665A2; -} - -a.codeRef { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -.fragment { - font-family: monospace, fixed; - font-size: 105%; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 90%; - line-height: 125%; -} - -div.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - margin-bottom: 6px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 10px; - margin-right: 10px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memItemLeft, .memItemRight, .memTemplParams { - border-top: 1px solid #C4CFE5; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 3px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.memitem { - padding: 0; - margin-bottom: 10px; -} - -.memname { - white-space: nowrap; - font-weight: bold; - margin-left: 6px; -} - -.memproto { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 8px; - -moz-border-radius-topleft: 8px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 8px; - -webkit-border-top-left-radius: 8px; - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - -} - -.memdoc { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 2px 5px; - background-color: #FBFCFD; - border-top-width: 0; - /* firefox specific markup */ - -moz-border-radius-bottomleft: 8px; - -moz-border-radius-bottomright: 8px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 8px; - -webkit-border-bottom-right-radius: 8px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} - -/* @end */ - -/* @group Directory (tree) */ - -/* for the tree view */ - -.ftvtree { - font-family: sans-serif; - margin: 0px; -} - -/* these are for tree view when used as main index */ - -.directory { - font-size: 9pt; - font-weight: bold; - margin: 5px; -} - -.directory h3 { - margin: 0px; - margin-top: 1em; - font-size: 11pt; -} - -/* -The following two styles can be used to replace the root node title -with an image of your choice. Simply uncomment the next two styles, -specify the name of your image and be sure to set 'height' to the -proper pixel height of your image. -*/ - -/* -.directory h3.swap { - height: 61px; - background-repeat: no-repeat; - background-image: url("yourimage.gif"); -} -.directory h3.swap span { - display: none; -} -*/ - -.directory > h3 { - margin-top: 0; -} - -.directory p { - margin: 0px; - white-space: nowrap; -} - -.directory div { - display: none; - margin: 0px; -} - -.directory img { - vertical-align: -30%; -} - -/* these are for tree view when not used as main index */ - -.directory-alt { - font-size: 100%; - font-weight: bold; -} - -.directory-alt h3 { - margin: 0px; - margin-top: 1em; - font-size: 11pt; -} - -.directory-alt > h3 { - margin-top: 0; -} - -.directory-alt p { - margin: 0px; - white-space: nowrap; -} - -.directory-alt div { - display: none; - margin: 0px; -} - -.directory-alt img { - vertical-align: -30%; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable { - border-collapse:collapse; -} - -table.doxtable td, table.doxtable th { - /* border: 1px solid #2D4068; */ - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; -} - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right: 15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; -} - -.navpath a:hover -{ - color:#6884BD; -} - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - diff --git a/docs/docs/apidocs/cpp_apidocs/bmq_8h.html b/docs/docs/apidocs/cpp_apidocs/bmq_8h.html deleted file mode 100644 index dd5732274..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmq_8h.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -bmq.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmq.txt File Reference

-
-
- -

Public SDK API for the BlazingMQ framework. -More...

- -

Go to the source code of this file.

- -
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmq_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmq_8h_source.html deleted file mode 100644 index 83ede2414..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmq_8h_source.html +++ /dev/null @@ -1,71 +0,0 @@ - - -Bloomberg Development Environment - -
- bmq.txt
-
-@PURPOSE: Public SDK API for the BlazingMQ framework.
-
-@MNEMONIC: BlazingMQ (bmq)
-
-@DESCRIPTION: BlazingmQ (package group 'bmq') is a message-queue
- framework allowing application developers to use reliable distributed queues.
-
- The 'bmqa' and 'bmqt' packages contain all components that constitute the
- public API for BlazingmQ users to use.  A client should only use the
- components in these packages, and should not use any other package under the
- 'bmq' package group since they are implementation components that may change
- at any time.
-
-/Hierarchical Synopsis
-/---------------------
-The 'bmq' group library currently has 5 packages forming 5 levels of physical
-dependency.
-..
-  5. bmqa
-
-  4. bmqimp
-
-  3. bmqp
-
-  2. bmqt
-
-  1. bmqscm
-..
-
-/Package Synopsis
-/------------------
-: 'bmqa':
-:      Provide applications public API for the BlazingmQ SDK.
-:
-: 'bmqimp':
-:      [INTERNAL] Provide implementation for the API of the BlazingMQ SDK.
-:
-: 'bmqp':
-:      [INTERNAL] Provide BlazingMQ protocol definition, builders and parsers.
-:
-: 'bmqscm':
-:      Provide versioning information for library components in 'bmq'.
-:
-: 'bmqt':
-:      Provide value-semantic vocabulary types.
-
-/Package Overview
-/----------------
- The following provides a brief overview of several of the packages within the
- 'bmq' package group, arranged in alphabetical order.  The descriptions here
- are still very brief; see the respective Package Level documents for more
- details and usage examples.
-
-/'bmqa'
-/- - -
- 'bmqa' provides the top-level public APIs application can use to interact with
-  BlazingMQ framework in their applications.
-
-/'bmqt'
-/- - -
- 'bmqt' provides value-semantic vocabulary types used in the {'bmqa'} APIs.
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa_8h.html deleted file mode 100644 index 4c8f4ca88..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa_8h.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -bmqa.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa.txt File Reference

-
-
- -

Provide applications public API for the BlazingMQ SDK. -More...

- -

Go to the source code of this file.

- -
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa_8h_source.html deleted file mode 100644 index 70dea8112..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa_8h_source.html +++ /dev/null @@ -1,74 +0,0 @@ - - -Bloomberg Development Environment - -
- bmqa.txt
-
-@PURPOSE: Provide applications public API for the BlazingMQ SDK.
-
-@MNEMONIC: BlazingMQ API (bmqa)
-
-@DESCRIPTION: The 'bmqa' package provides the public API of the BlazingMQ SDK
- for applications to use.
-
-/Hierarchical Synopsis
-/---------------------
-The 'bmqa' package currently has 8 components having 6 levels of physical
-dependency.  The list below shows the hierarchical ordering of the components.
-..
-  6. bmqa_session
-
-  5. bmqa_event
-     bmqa_messageeventbuilder
-
-  4. bmqa_messageevent
-
-  3. bmqa_messageiterator
-
-  2. bmqa_message
-     bmqa_openqueuestatus
-     bmqa_closequeuestatus
-     bmqa_configurequeuestatus
-     bmqa_sessionevent
-
-  1. bmqa_queueid
-..
-
-/Component Synopsis
-/------------------
-: 'bmqa_event':
-:      Provide a generic variant encompassing all types of events.
-:
-: 'bmqa_message':
-:      Provide the application with a message data object.
-:
-: 'bmqa_messageevent':
-:      Provide the application with data event notifications.
-:
-: 'bmqa_messageeventbuilder':
-:      Provide a builder for 'MessageEvent' objects.
-:
-: 'bmqa_messageiterator':
-:      Provide a mechanism to iterate over the messages of a MessageEvent.
-:
-: 'bmqa_openqueuestatus':
-:      Provide value-semantic type for an open queue operation
-:
-: 'bmqa_closequeuestatus':
-:      Provide value-semantic type for a close queue operation
-:
-: 'bmqa_configurequeuestatus':
-:      Provide value-semantic type for a configure queue operation
-:
-: 'bmqa_queueid':
-:      Provide a value-semantic efficient identifier for a queue.
-:
-: 'bmqa_session':
-:      Provide access to the BlazingMQ broker.
-:
-: 'bmqa_sessionevent':
-:      Provide value-semantic type for system event session notifications.
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__abstractsession_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__abstractsession_8h.html deleted file mode 100644 index 81c164be6..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__abstractsession_8h.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - -bmqa_abstractsession.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_abstractsession.h File Reference

-
-
- -

Provide a pure protocol for a BlazingMQ session. -More...

- -

Go to the source code of this file.

- - - - - -

-Classes

class  bmqa::AbstractSession

-Namespaces

namespace  bmqa
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__abstractsession_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__abstractsession_8h_source.html deleted file mode 100644 index 08c4ea996..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__abstractsession_8h_source.html +++ /dev/null @@ -1,475 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2016-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_abstractsession.h                                             -*-C++-*-
-#ifndef INCLUDED_BMQA_ABSTRACTSESSION
-#define INCLUDED_BMQA_ABSTRACTSESSION
-
-//@PURPOSE: Provide a pure protocol for a BlazingMQ session.
-//
-//@CLASSES:
-//  bmqa::AbstractSession: Interface for a BlazingMQ session.
-//
-//@DESCRIPTION:
-// 'bmqa::AbstractSession' is a pure protocol for a BlazingMQ session.
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqa_closequeuestatus.h>
-#include <bmqa_configurequeuestatus.h>
-#include <bmqa_confirmeventbuilder.h>
-#include <bmqa_event.h>
-#include <bmqa_messageeventbuilder.h>
-#include <bmqa_messageproperties.h>
-#include <bmqa_openqueuestatus.h>
-#include <bmqa_queueid.h>
-#include <bmqt_queueoptions.h>
-#include <bmqt_uri.h>
-
-// BDE
-#include <bsl_functional.h>
-#include <bsls_timeinterval.h>
-#include <bsls_types.h>
-
-namespace BloombergLP {
-namespace bmqa {
-
-                           // =====================
-                           // class AbstractSession
-                           // =====================
-
-class AbstractSession {
-    // A pure protocol for a session.
-
-  public:
-    // TYPES
-    typedef bsl::function<void(const bmqa::OpenQueueStatus& result)>
-                                                        OpenQueueCallback;
-        // Invoked as a response to an asynchronous open queue operation,
-        // 'OpenQueueCallback' is an alias for a callback function object
-        // (functor) that takes as an argument the specified 'result',
-        // providing the result and context of the requested operation.
-
-    typedef bsl::function<void(const bmqa::ConfigureQueueStatus& result)>
-                                                        ConfigureQueueCallback;
-        // Invoked as a response to an asynchronous configure queue operation,
-        // 'ConfigureQueueCallback' is an alias for a callback function object
-        // (functor) that takes as an argument the specified 'result',
-        // providing the result and context of the requested operation.
-
-    typedef bsl::function<void(const bmqa::CloseQueueStatus& result)>
-                                                        CloseQueueCallback;
-        // Invoked as a response to an asynchronous close queue operation,
-        // 'CloseQueueCallback' is an alias for a callback function object
-        // (functor) that takes as an argument the specified 'result',
-        // providing the result and context of the requested operation.
-
-  public:
-    // CREATORS
-    virtual
-    ~AbstractSession();
-        // Destructor
-
-    // MANIPULATORS
-
-    ///Session management
-    ///------------------
-    virtual
-    int start(const bsls::TimeInterval& timeout = bsls::TimeInterval());
-        // Connect to the BlazingMQ broker and start the message processing for
-        // this 'Session'.  This method blocks until either the 'Session' is
-        // connected to the broker, fails to connect, or the operation times
-        // out.  If the optionally specified 'timeout' is not populated, use
-        // the one defined in the session options.  Return 0 on success, or a
-        // non-zero value corresponding to the 'bmqt::GenericResult::Enum' enum
-        // values otherwise.  The behavior is undefined if this method is
-        // called on an already started 'Session'.
-
-    virtual
-    int startAsync(const bsls::TimeInterval& timeout = bsls::TimeInterval());
-        // Connect to the BlazingMQ broker and start the message processing for
-        // this 'Session'.  This method returns without blocking.  The result
-        // of the operation is communicated with a session event.  If the
-        // optionally specified 'timeout' is not populated, use the one defined
-        // in the session options.  Return 0 on success (this doesn't imply the
-        // session is connected !), or a non-zero value corresponding to the
-        // 'bmqt::GenericResult::Enum' enum values otherwise.  The behavior is
-        // undefined if this method is called on an already started 'Session'.
-
-    virtual
-    void stop();
-        // Gracefully disconnect from the BlazingMQ broker and stop the
-        // operation of this 'Session'.  This method blocks waiting for all
-        // already invoked event handlers to exit and all session-related
-        // operations to be finished.  No other method but 'start()' may be
-        // used after this method returns.  This method must *NOT* be called if
-        // the session is in synchronous mode (i.e., not using the
-        // EventHandler), 'stopAsync()' should be called in this case.
-
-    virtual
-    void stopAsync();
-        // Disconnect from the BlazingMQ broker and stop the operation of this
-        // 'Session'.  This method returns without blocking and neither enforce
-        // nor waits for any already started session-related operation to be
-        // finished.  No method may be used after this method returns.
-
-    virtual
-    void finalizeStop();
-        // **DEPRECATED**
-        //
-        // This method is only to be used if the session is in synchronous mode
-        // (i.e., not using the EventHandler): it must be called once all
-        // threads getting events with 'nextEvent()' have been joined.
-
-    virtual
-    void loadMessageEventBuilder(MessageEventBuilder *builder);
-        // Load into the specified 'builder' an instance of
-        // 'bmqa::MessageEventBuilder' that can be used to build message event
-        // for posting on this session.  The behavior is undefined unless the
-        // session has been successfully started and 'builder' is non-null.
-        // Note that lifetime of the loaded object is bound by the lifetime of
-        // this session instance (i.e., loaded instance cannot outlive this
-        // session instance).  Also note that the 'MessageEventBuilder' objects
-        // are pooled, so this operation is cheap, and 'MessageEventBuilder'
-        // can be obtained on demand and kept on the stack.
-
-    virtual
-    void loadConfirmEventBuilder(ConfirmEventBuilder *builder);
-        // Load into the specified 'builder' an instance of
-        // 'bmqa::ConfirmEventBuilder' that can be used to build a batch of
-        // CONFIRM messages for sending to the broker.  The behavior is
-        // undefined unless the session has been successfully started and
-        // 'builder' is non-null.  Note that the lifetime of the loaded object
-        // is bound by the lifetime of this session instance (i.e., loaded
-        // instance cannot outlive this session instance).
-
-    virtual
-    void loadMessageProperties(MessageProperties *buffer);
-        // Load into the specified 'buffer' an instance of 'MessageProperties'
-        // that can be used to specify and associate properties while building
-        // a 'bmqa::Message'.  The behavior is undefined unless the session has
-        // been successfully started and 'buffer' is non-null.  Note that
-        // lifetime of the loaded object is bound by the lifetime of this
-        // session instance (i.e., loaded instance cannot outlive this session
-        // instance).
-
-    ///Queue management
-    ///----------------
-    virtual
-    int getQueueId(QueueId          *queueId,
-                   const bmqt::Uri&  uri) const;
-        // Load in the specified 'queueId' the queue corresponding to the
-        // specified 'uri' and return 0 if such a queue was found, or leave
-        // 'queueId' untouched and return a non-zero value if no queue
-        // corresponding to 'uri' is currently open.
-
-    virtual
-    int getQueueId(QueueId                    *queueId,
-                   const bmqt::CorrelationId&  correlationId) const;
-        // Load in the specified 'queueId' the queue corresponding to the
-        // specified 'correlationId' and return 0 if such a queue was found, or
-        // leave 'queueId' untouched and return a non-zero value if no queue
-        // corresponding to 'correlationId' is currently open.
-
-    virtual
-    int
-    openQueue(QueueId                   *queueId,
-              const bmqt::Uri&           uri,
-              bsls::Types::Uint64        flags,
-              const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-              const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-        // DEPRECATED: Use the 'openQueueSync(QueueId *queueId...)' instead.
-        //             This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    virtual
-    OpenQueueStatus
-    openQueueSync(QueueId                   *queueId,
-                  const bmqt::Uri&           uri,
-                  bsls::Types::Uint64        flags,
-                  const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                  const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-        // Open the queue having the specified 'uri' with the specified 'flags'
-        // (a combination of the values defined in 'bmqt::QueueFlags::Enum'),
-        // using the specified 'queueId' to correlate events related to that
-        // queue.  The object 'queueId' referring to is modified, so the
-        // 'queueId' represents the actual queue uri, flags and options.
-        // Return a result providing the status and context of the operation.
-        // Use the optionally specified 'options' to configure some advanced
-        // settings.  Note that this operation fails if 'queueId' is
-        // non-unique.  If the optionally specified 'timeout' is not populated,
-        // use the one defined in the session options.  This operation will
-        // block until either success, failure, or timing out happens.
-        //
-        // THREAD: Note that calling this method from the event processing
-        //         thread(s) (i.e., from the EventHandler callback, if
-        //         provided) *WILL* lead to a *DEADLOCK*.
-
-    virtual
-    int
-    openQueueAsync(QueueId                   *queueId,
-                   const bmqt::Uri&           uri,
-                   bsls::Types::Uint64        flags,
-                   const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                   const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-        // DEPRECATED: Use the 'openQueueAsync(...)' with callback flavor
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    virtual
-    void
-    openQueueAsync(bmqa::QueueId             *queueId,
-                   const bmqt::Uri&           uri,
-                   bsls::Types::Uint64        flags,
-                   const OpenQueueCallback&   callback,
-                   const bmqt::QueueOptions&  options  = bmqt::QueueOptions(),
-                   const bsls::TimeInterval&  timeout  = bsls::TimeInterval());
-        // Asynchronously open the queue having the specified 'uri' with the
-        // specified 'flags' (a combination of the values defined in
-        // 'bmqt::QueueFlags::Enum'), using the specified 'queueId' to
-        // correlate events related to that queue and the optionally specified
-        // 'options' to configure some advanced settings.  The object 'queueId'
-        // referring to is modified, so the 'queueId' represents the actual
-        // queue uri, flags and options.  The result of the operation is
-        // communicated to the specified 'callback' via a
-        // 'bmqa::OpenQueueStatus', providing the status and context of the
-        // requested operation.  Note that this operation fails if 'queueId' is
-        // non-unique.  If the optionally specified 'timeout' is not populated,
-        // use the one defined in the session options.
-        //
-        // THREAD: The 'callback' will *ALWAYS* be invoked from the
-        //         EventHandler thread(s) (or if a SessionEventHandler was not
-        //         specified, from the thread invoking 'nextEvent').
-
-    virtual
-    int
-    configureQueue(QueueId                   *queueId,
-                   const bmqt::QueueOptions&  options,
-                   const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-        // DEPRECATED: Use the 'configureQueueSync(QueueId *queueId...)
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    virtual
-    ConfigureQueueStatus
-    configureQueueSync(
-                    const QueueId             *queueId,
-                    const bmqt::QueueOptions&  options,
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-        // Configure the queue identified by the specified 'queueId' using the
-        // specified 'options' and return a result providing the status and
-        // context of the operation.  Fields from 'options' that have not been
-        // explicitly set will not be modified.  If the optionally specified
-        // 'timeout' is not populated, use the one defined in the session
-        // options.  This operation returns error if there is a pending
-        // configure for the same queue.  This operation will block until
-        // either success, failure, or timing out happens.
-        //
-        // THREAD: Note that calling this method from the event processing
-        //         thread(s) (i.e., from the EventHandler callback, if
-        //         provided) *WILL* lead to a *DEADLOCK*.
-
-    virtual
-    int
-    configureQueueAsync(
-                    QueueId                   *queueId,
-                    const bmqt::QueueOptions&  options,
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-        // DEPRECATED: Use the 'configureQueueAsync(...)' with callback flavor
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    virtual
-    void configureQueueAsync(
-               const QueueId                 *queueId,
-               const bmqt::QueueOptions&      options,
-               const ConfigureQueueCallback&  callback,
-               const bsls::TimeInterval&      timeout  = bsls::TimeInterval());
-
-        // Asynchronously configure the queue identified by the specified
-        // 'queueId' using the specified 'options' to configure some advanced
-        // settings.  The result of the operation is communicated to the
-        // specified 'callback' via a 'bmqa::ConfigureQueueStatus', providing
-        // the status and context of the requested operation.  If the
-        // optionally specified 'timeout' is not populated, use the one defined
-        // in the session options.
-        //
-        // THREAD: The 'callback' will *ALWAYS* be invoked from the
-        //         EventHandler thread(s) (or if a SessionEventHandler was not
-        //         specified, from the thread invoking 'nextEvent').
-
-    virtual
-    int
-    closeQueue(QueueId                   *queueId,
-               const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-        // DEPRECATED: Use the 'closeQueueSync(QueueId *queueId...) instead.
-        //             This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    virtual
-    CloseQueueStatus
-    closeQueueSync(const QueueId             *queueId,
-                   const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-        // Close the queue identified by the specified 'queueId' and return a
-        // result providing the status and context of the operation.  If the
-        // optionally specified 'timeout' is not populated, use the one defined
-        // in the session options.  Any outstanding configureQueue request for
-        // this 'queueId' will be canceled.  This operation will block until
-        // either success, failure, or timing out happens.  Once this method
-        // returns, there is guarantee that no more messages and events for
-        // this 'queueId' will be received.  Note that successful processing of
-        // this request in the broker closes this session's view of the queue;
-        // the underlying queue may not be deleted in the broker.  When this
-        // method returns, the correlationId associated to the queue is
-        // cleared.
-        //
-        // THREAD: Note that calling this method from the event processing
-        //         thread(s) (i.e., from the EventHandler callback, if
-        //         provided) *WILL* lead to a *DEADLOCK*.
-
-    virtual
-    int
-    closeQueueAsync(QueueId                   *queueId,
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-        // DEPRECATED: Use the 'closeQueueAsync(...)' with callback flavor
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    virtual
-    void closeQueueAsync(
-                   const QueueId             *queueId,
-                   const CloseQueueCallback&  callback,
-                   const bsls::TimeInterval&  timeout  = bsls::TimeInterval());
-        // Asynchronously close the queue identified by the specified
-        // 'queueId'.  Any outstanding configureQueue requests will be
-        // canceled.  The result of the operation is communicated to the
-        // specified 'callback' via a 'bmqa::CloseQueueStatus', providing the
-        // status and context of the operation.  If the optionally specified
-        // 'timeout' is not populated, use the one defined in the session
-        // options.  Note that successful processing of this request in the
-        // broker closes this session's view of the queue; the underlying queue
-        // may not be deleted in the broker.  The correlationId associated to
-        // the queue remains valid until the 'bmqa::CloseQueueStatus' result
-        // has been received and processed by the 'callback', after which it
-        // will be cleared and no more messages and events for this 'queueId'
-        // will be received.
-        //
-        // THREAD: The 'callback' will *ALWAYS* be invoked from the
-        //         EventHandler thread(s) (or if a SessionEventHandler was not
-        //         specified, from the thread invoking 'nextEvent').
-
-    ///Queue manipulation
-    ///------------------
-    virtual
-    Event nextEvent(const bsls::TimeInterval& timeout = bsls::TimeInterval());
-        // Return the next available event received for this session.  If there
-        // is no event available, this method blocks for up to the optionally
-        // specified 'timeout' time interval for an event to arrive.  An empty
-        // time interval for 'timeout' (the default) indicates that the method
-        // should not timeout (the method will not return until the next event
-        // is available).  Return a 'bmqa::SessionEvent' of type
-        // 'bmqt::SessionEventType::e_TIMEOUT' if a timeout was specified and
-        // that timeout expired before any event was received.  Note that this
-        // method can only be used if the session is in synchronous mode (ie
-        // not using the EventHandler).  The behavior is undefined unless the
-        // session was started.
-
-    virtual
-    int post(const MessageEvent& event);
-        // Asynchronously post the specified 'event' that must contain one or
-        // more 'Messages'.  The return value is one of the values defined in
-        // the 'bmqt::PostResult::Enum' enum.  Return zero on success and a
-        // non-zero value otherwise.  Note that success implies that SDK has
-        // accepted the 'event' and will eventually deliver it to the broker.
-        // The behavior is undefined unless the session was started.
-
-    virtual
-    int confirmMessage(const Message& message);
-        // Asynchronously confirm the receipt of the specified 'message'.  This
-        // indicates that the application is done processing the message and
-        // that the broker can safely discard it from the queue according to
-        // the retention policy set up for that queue.  Return 0 on success,
-        // and a non-zero value otherwise.  Note that success implies that SDK
-        // has accepted the 'message' and will eventually send confirmation
-        // notification to the broker.
-
-    virtual
-    int confirmMessage(const MessageConfirmationCookie& cookie);
-        // Asynchronously confirm the receipt of the message with which the
-        // specified 'cookie' is associated.  This indicates that the
-        // application is done processing the message and that the broker can
-        // safely discard it from the queue according to the retention policy
-        // set up for that queue.  Return 0 on success, and a non-zero value
-        // otherwise.  Note that success implies that SDK has accepted the
-        // 'message' and will eventually send confirmation notification to the
-        // broker.
-
-    virtual
-    int confirmMessages(ConfirmEventBuilder *builder);
-        // Asynchronously confirm the receipt of the batch of CONFIRM messages
-        // contained in the specified 'builder'.  This indicates that the
-        // application is done processing all of the messages and that the
-        // broker can safely discard them from the queue according to the
-        // retention policy set up for that queue.  Return 0 on success, and a
-        // non-zero value otherwise.  Note that in case of success, the
-        // instance pointed by the 'builder' will be reset.  Also note that
-        // success implies that SDK has accepted all of the messages in
-        // 'builder' and will eventually send confirmation notification to the
-        // broker.  Behavior is undefined unless 'builder' is non-null.
-
-    ///Debugging related
-    ///-----------------
-    virtual
-    int configureMessageDumping(const bslstl::StringRef& command);
-        // Configure this session instance to dump messages to the installed
-        // logger at 'ball::Severity::INFO' level according to the specified
-        // 'command' that should adhere to the following pattern:
-        //..
-        //   IN|OUT ON|OFF|100|10s
-        //..
-        // where each token has a specific meaning:
-        //: o !IN!  : incoming ('PUSH' and 'ACK') events
-        //: o !OUT! : outgoing ('PUT' and 'CONFIRM') events
-        //: o !ON!  : turn on message dumping until explicitly turned off
-        //: o !OFF! : turn off message dumping
-        //: o !100! : turn on message dumping for the next 100 messages
-        //: o !10s! : turn on message dumping for the next 10 seconds
-        // Note that above, '100' and '10' numerical values are for just for
-        // illustration purposes, and application can choose an appropriate
-        // value for them.  Also note that pattern is case-insensitive.  Return
-        // zero if 'command' is valid and message dumping has been configured,
-        // non-zero value otherwise.  The behavior is undefined unless the
-        // session has been started.
-};
-
-}  // close package namespace
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__closequeuestatus_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__closequeuestatus_8h.html deleted file mode 100644 index abc2382a1..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__closequeuestatus_8h.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - -bmqa_closequeuestatus.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_closequeuestatus.h File Reference

-
-
- -

Provide Value-Semantic Type for a close queue operation status. -More...

- -

Go to the source code of this file.

- - - - - - - - - -

-Classes

class  bmqa::CloseQueueStatus

-Namespaces

namespace  bmqa

-Functions

bool bmqa::operator== (const CloseQueueStatus &lhs, const CloseQueueStatus &rhs)
bool bmqa::operator!= (const CloseQueueStatus &lhs, const CloseQueueStatus &rhs)
bsl::ostream & bmqa::operator<< (bsl::ostream &stream, const CloseQueueStatus &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__closequeuestatus_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__closequeuestatus_8h_source.html deleted file mode 100644 index 9448f8b94..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__closequeuestatus_8h_source.html +++ /dev/null @@ -1,267 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2019-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_closequeuestatus.h                                            -*-C++-*-
-#ifndef INCLUDED_BMQA_CLOSEQUEUESTATUS
-#define INCLUDED_BMQA_CLOSEQUEUESTATUS
-
-//@PURPOSE: Provide Value-Semantic Type for a close queue operation status
-//
-//@CLASSES:
-//  bmqa::CloseQueueStatus: value-semantic type for a closeQueue result
-//
-//@DESCRIPTION: This component provides a specific value-semantic type for the
-// result of a close queue operation with the BlazingMQ broker, providing
-// applications with the result and context of the requested operation.
-//
-// A 'bmqa::CloseQueueStatus' type is composed of 3 attributes:
-//: o !result!:           indicates the status of the operation (success,
-//:                       failure, etc.) as specified in the corresponding
-//:                       result code enum, 'bmqt::CloseQueueResult::Enum'
-//: o !queueId!:          queueId associated with the close queue operation
-//: o !errorDescription!: optional string with a human readable description of
-//:                       the error, if any
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqa_queueid.h>
-#include <bmqt_resultcode.h>
-
-// BDE
-#include <bsl_iostream.h>
-#include <bsl_string.h>
-#include <bslma_allocator.h>
-#include <bslma_default.h>
-#include <bslma_usesbslmaallocator.h>
-#include <bslmf_nestedtraitdeclaration.h>
-
-
-namespace BloombergLP {
-namespace bmqa {
-
-                           // ======================
-                           // class CloseQueueStatus
-                           // ======================
-
-class CloseQueueStatus {
-    // A value-semantic type for a close queue operation with the message queue
-    // broker.
-
-  private:
-    // DATA
-    QueueId                      d_queueId;
-                                        // queueId associated with the open
-                                        // queue operation
-
-    bmqt::CloseQueueResult::Enum d_result;
-                                        // Result code of the operation
-                                        // (success, failure)
-
-    bsl::string                  d_errorDescription;
-                                        // Optional string with a human
-                                        // readable description of the error,
-                                        // if any
-
-  public:
-    // TRAITS
-    BSLMF_NESTED_TRAIT_DECLARATION(CloseQueueStatus, bslma::UsesBslmaAllocator)
-
-    // CREATORS
-    explicit CloseQueueStatus(bslma::Allocator *allocator = 0);
-        // Default constructor, use the optionally specified 'allocator'.
-
-    CloseQueueStatus(const bmqa::CloseQueueStatus&  other,
-                     bslma::Allocator              *allocator = 0);
-        // Create a new 'bmqa::CloseQueueStatus' using the optionally specified
-        // 'allocator'.
-
-    CloseQueueStatus(const QueueId&                queueId,
-                     bmqt::CloseQueueResult::Enum  result,
-                     const bsl::string&            errorDescription,
-                     bslma::Allocator             *allocator        = 0);
-        // Create a new 'bmqa::CloseQueueStatus' object having the specified
-        // 'queueId', 'result', and 'errorDescription', using the
-        // optionally specified 'allocator' to supply memory.
-
-    // MANIPULATORS
-    CloseQueueStatus& operator=(const CloseQueueStatus& rhs);
-        // Assign to this 'CloseQueueStatus' the same values as the one from the
-        // specified 'rhs'.
-
-    // ACCESSORS
-    operator bool() const;
-        // Return true if this result indicates success, and false otherwise.
-
-    const QueueId& queueId() const;
-        // Return the queueId associated to this operation result, if any.
-
-    bmqt::CloseQueueResult::Enum result() const;
-        // Return the status code that indicates success or the cause of a
-        // failure.
-
-    const bsl::string& errorDescription() const;
-        // Return a printable description of the error, if 'result'
-        // indicates failure.  Return an empty string otherwise.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-bool operator==(const CloseQueueStatus& lhs, const CloseQueueStatus& rhs);
-    // Return 'true' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return false otherwise.
-
-bool operator!=(const CloseQueueStatus& lhs, const CloseQueueStatus& rhs);
-    // Return 'false' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return 'true' otherwise.
-
-bsl::ostream& operator<<(bsl::ostream& stream, const CloseQueueStatus& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return a
-    // reference to the modifiable 'stream'.
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-                           // ----------------------
-                           // class CloseQueueStatus
-                           // ----------------------
-
-// CREATORS
-inline
-CloseQueueStatus::CloseQueueStatus(bslma::Allocator *allocator)
-: d_queueId(allocator)
-, d_result(bmqt::CloseQueueResult::e_SUCCESS)
-, d_errorDescription(allocator)
-{
-    // NOTHING
-}
-
-inline
-CloseQueueStatus::CloseQueueStatus(const CloseQueueStatus&  other,
-                                   bslma::Allocator        *allocator)
-: d_queueId(other.d_queueId, allocator)
-, d_result(other.d_result)
-, d_errorDescription(other.d_errorDescription)
-{
-    // NOTHING
-}
-
-inline
-CloseQueueStatus::CloseQueueStatus(
-                                const QueueId&                queueId,
-                                bmqt::CloseQueueResult::Enum  result,
-                                const bsl::string&            errorDescription,
-                                bslma::Allocator             *allocator)
-: d_queueId(queueId, allocator)
-, d_result(result)
-, d_errorDescription(errorDescription)
-{
-    // NOTHING
-}
-
-// MANIPULATORS
-inline
-CloseQueueStatus&
-CloseQueueStatus::operator=(const CloseQueueStatus& other)
-{
-    d_queueId          = other.queueId();
-    d_result           = other.result();
-    d_errorDescription = other.errorDescription();
-    return *this;
-}
-
-// ACCESSORS
-inline
-CloseQueueStatus::operator bool() const
-{
-    return d_result == bmqt::CloseQueueResult::e_SUCCESS;
-}
-
-inline
-const QueueId&
-CloseQueueStatus::queueId() const
-{
-    return d_queueId;
-}
-
-inline
-bmqt::CloseQueueResult::Enum
-CloseQueueStatus::result() const
-{
-    return d_result;
-}
-
-inline
-const bsl::string&
-CloseQueueStatus::errorDescription() const
-{
-    return d_errorDescription;
-}
-
-}  // close package namespace
-
-// FREE OPERATORS
-inline
-bsl::ostream&
-bmqa::operator<<(bsl::ostream&                 stream,
-                 const bmqa::CloseQueueStatus& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-inline
-bool
-bmqa::operator==(const bmqa::CloseQueueStatus& lhs,
-                 const bmqa::CloseQueueStatus& rhs)
-{
-    return    lhs.queueId()          == rhs.queueId()
-           && lhs.result()           == rhs.result()
-           && lhs.errorDescription() == rhs.errorDescription();
-}
-
-inline
-bool
-bmqa::operator!=(const bmqa::CloseQueueStatus& lhs,
-                 const bmqa::CloseQueueStatus& rhs)
-{
-    return !(lhs == rhs);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__configurequeuestatus_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__configurequeuestatus_8h.html deleted file mode 100644 index beaddbe37..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__configurequeuestatus_8h.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - -bmqa_configurequeuestatus.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_configurequeuestatus.h File Reference

-
-
- -

Provide Value-Semantic Type for a configure queue operation status. -More...

- -

Go to the source code of this file.

- - - - - - - - - -

-Classes

class  bmqa::ConfigureQueueStatus

-Namespaces

namespace  bmqa

-Functions

bool bmqa::operator== (const ConfigureQueueStatus &lhs, const ConfigureQueueStatus &rhs)
bool bmqa::operator!= (const ConfigureQueueStatus &lhs, const ConfigureQueueStatus &rhs)
bsl::ostream & bmqa::operator<< (bsl::ostream &stream, const ConfigureQueueStatus &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__configurequeuestatus_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__configurequeuestatus_8h_source.html deleted file mode 100644 index 65ca55d5a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__configurequeuestatus_8h_source.html +++ /dev/null @@ -1,273 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2019-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_configurequeuestatus.h                                        -*-C++-*-
-#ifndef INCLUDED_BMQA_CONFIGUREQUEUESTATUS
-#define INCLUDED_BMQA_CONFIGUREQUEUESTATUS
-
-//@PURPOSE: Provide Value-Semantic Type for a configure queue operation status
-//
-//@CLASSES:
-//  bmqa::ConfigureQueueStatus: value-semantic type for a configureQueue result
-//
-//@DESCRIPTION: This component provides a specific value-semantic type for the
-// result of a configure queue operation with the BlazingMQ broker, providing
-// applications with the result and context of the requested operation.
-//
-// A 'bmqa::ConfigureQueueStatus' type is composed of 3 attributes:
-//: o !result!:           indicates the status of the operation (success,
-//:                       failure, etc.) as specified in the corresponding
-//:                       result code enum, 'bmqt::ConfigureQueueResult::Enum'
-//: o !queueId!:          queueId associated with the configure queue operation
-//: o !errorDescription!: optional string with a human readable description of
-//:                       the error, if any
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqa_queueid.h>
-#include <bmqt_resultcode.h>
-
-// BDE
-#include <bsl_iostream.h>
-#include <bsl_string.h>
-#include <bslma_allocator.h>
-#include <bslma_default.h>
-#include <bslma_usesbslmaallocator.h>
-#include <bslmf_nestedtraitdeclaration.h>
-
-
-namespace BloombergLP {
-namespace bmqa {
-
-                         // ==========================
-                         // class ConfigureQueueStatus
-                         // ==========================
-
-class ConfigureQueueStatus {
-    // A value-semantic type for a configure queue operation with the message
-    // queue broker.
-
-  private:
-    // DATA
-    QueueId                          d_queueId;
-                                        // queueId associated with the open
-                                        // queue operation
-
-    bmqt::ConfigureQueueResult::Enum d_result;
-                                        // Status code of the operation
-                                        // (success, failure)
-
-    bsl::string                      d_errorDescription;
-                                        // Optional string with a human
-                                        // readable description of the error,
-                                        // if any
-
-  public:
-    // TRAITS
-    BSLMF_NESTED_TRAIT_DECLARATION(ConfigureQueueStatus,
-                                   bslma::UsesBslmaAllocator)
-
-    // CREATORS
-    explicit ConfigureQueueStatus(bslma::Allocator *allocator = 0);
-        // Default constructor, use the optionally specified 'allocator'.
-
-    ConfigureQueueStatus(const bmqa::ConfigureQueueStatus&  other,
-                    bslma::Allocator             *allocator = 0);
-        // Create a new 'bmqa::ConfigureQueueStatus' using the optionally
-        // specified 'allocator'.
-
-    ConfigureQueueStatus(
-                       const QueueId&                    queueId,
-                       bmqt::ConfigureQueueResult::Enum  result,
-                       const bsl::string&                errorDescription,
-                       bslma::Allocator                 *allocator        = 0);
-        // Create a new 'bmqa::ConfigureQueueStatus' object having the
-        // specified 'queueId', 'result', and 'errorDescription', using the
-        // optionally specified 'allocator' to supply memory.
-
-    // MANIPULATORS
-    ConfigureQueueStatus& operator=(const ConfigureQueueStatus& rhs);
-        // Assign to this 'ConfigureQueueStatus' the same values as the one
-        // from the specified 'rhs'.
-
-    // ACCESSORS
-    operator bool() const;
-        // Return true if this result indicates success, and false otherwise.
-
-    const QueueId& queueId() const;
-        // Return the queueId associated to this operation result, if any.
-
-    bmqt::ConfigureQueueResult::Enum result() const;
-        // Return the result code that indicates success or the cause of a
-        // failure.
-
-    const bsl::string& errorDescription() const;
-        // Return a printable description of the error, if 'result' indicates
-        // failure.  Return an empty string otherwise.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-bool
-operator==(const ConfigureQueueStatus& lhs, const ConfigureQueueStatus& rhs);
-    // Return 'true' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return false otherwise.
-
-bool
-operator!=(const ConfigureQueueStatus& lhs, const ConfigureQueueStatus& rhs);
-    // Return 'false' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return 'true' otherwise.
-
-bsl::ostream&
-operator<<(bsl::ostream& stream, const ConfigureQueueStatus& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return a
-    // reference to the modifiable 'stream'.
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-                         // --------------------------
-                         // class ConfigureQueueStatus
-                         // --------------------------
-
-// CREATORS
-inline
-ConfigureQueueStatus::ConfigureQueueStatus(bslma::Allocator *allocator)
-: d_queueId(allocator)
-, d_result(bmqt::ConfigureQueueResult::e_SUCCESS)
-, d_errorDescription(allocator)
-{
-    // NOTHING
-}
-
-inline
-ConfigureQueueStatus::ConfigureQueueStatus(
-                                        const ConfigureQueueStatus&  other,
-                                        bslma::Allocator            *allocator)
-: d_queueId(other.d_queueId, allocator)
-, d_result(other.d_result)
-, d_errorDescription(other.d_errorDescription)
-{
-    // NOTHING
-}
-
-inline
-ConfigureQueueStatus::ConfigureQueueStatus(
-                            const QueueId&                    queueId,
-                            bmqt::ConfigureQueueResult::Enum  result,
-                            const bsl::string&                errorDescription,
-                            bslma::Allocator                 *allocator)
-: d_queueId(queueId, allocator)
-, d_result(result)
-, d_errorDescription(errorDescription)
-{
-    // NOTHING
-}
-
-// MANIPULATORS
-inline
-ConfigureQueueStatus&
-ConfigureQueueStatus::operator=(const ConfigureQueueStatus& other)
-{
-    d_queueId          = other.queueId();
-    d_result           = other.result();
-    d_errorDescription = other.errorDescription();
-    return *this;
-}
-
-// ACCESSORS
-inline
-ConfigureQueueStatus::operator bool() const
-{
-    return result() == bmqt::ConfigureQueueResult::e_SUCCESS;
-}
-
-inline
-const QueueId&
-ConfigureQueueStatus::queueId() const
-{
-    return d_queueId;
-}
-
-inline
-bmqt::ConfigureQueueResult::Enum
-ConfigureQueueStatus::result() const
-{
-    return d_result;
-}
-
-inline
-const bsl::string&
-ConfigureQueueStatus::errorDescription() const
-{
-    return d_errorDescription;
-}
-
-}  // close package namespace
-
-// FREE OPERATORS
-inline
-bsl::ostream&
-bmqa::operator<<(bsl::ostream&                     stream,
-                 const bmqa::ConfigureQueueStatus& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-inline
-bool
-bmqa::operator==(const bmqa::ConfigureQueueStatus& lhs,
-                 const bmqa::ConfigureQueueStatus& rhs)
-{
-    return    lhs.queueId()          == rhs.queueId()
-           && lhs.result()           == rhs.result()
-           && lhs.errorDescription() == rhs.errorDescription();
-}
-
-inline
-bool
-bmqa::operator!=(const bmqa::ConfigureQueueStatus& lhs,
-                 const bmqa::ConfigureQueueStatus& rhs)
-{
-    return !(lhs == rhs);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__confirmeventbuilder_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__confirmeventbuilder_8h.html deleted file mode 100644 index 363bc9674..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__confirmeventbuilder_8h.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -bmqa_confirmeventbuilder.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_confirmeventbuilder.h File Reference

-
-
- -

Provide a builder for batching confirmation messages. -More...

- -

Go to the source code of this file.

- - - - - - - -

-Classes

struct  bmqa::ConfirmEventBuilderImpl
class  bmqa::ConfirmEventBuilder

-Namespaces

namespace  bmqp
namespace  bmqa
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__confirmeventbuilder_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__confirmeventbuilder_8h_source.html deleted file mode 100644 index c6b3da716..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__confirmeventbuilder_8h_source.html +++ /dev/null @@ -1,259 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2016-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_confirmeventbuilder.h                                         -*-C++-*-
-#ifndef INCLUDED_BMQA_CONFIRMEVENTBUILDER
-#define INCLUDED_BMQA_CONFIRMEVENTBUILDER
-
-//@PURPOSE: Provide a builder for batching confirmation messages.
-//
-//@CLASSES:
-//  bmqa::ConfirmEventBuilder: builder for batching confirmation messages.
-//
-//@DESCRIPTION: This component implements a mechanism,
-// 'bmqa::ConfirmEventBuilder', that can be used for batching CONFIRM messages.
-// The resulting batch can be sent to the BlazingMQ broker using the
-// 'bmqa::Session' (refer to 'bmqa_session' for details).  Wherever possible, a
-// BlazingMQ consumer should try to send a batch of CONFIRM messages, which is
-// more efficient than confirming messages individually.
-//
-// The builder holds a batch of CONFIRM messages under construction, and
-// provides two flavors of 'addMessageConfirmation' method to add a CONFIRM
-// message to the batch.  It also provides a routine to retrieve number of
-// CONFIRM messages added to the batch.  Once application is done creating the
-// batch, it can retrieve the blob (wire-representation) of the batch and send
-// it via 'bmqa::Session'.  See 'Usage' section for more details.
-//
-///Usage
-///-----
-//: o An instance of bmqa::ConfirmEventBuilder (the builder) can be used to
-//:   create multiple batches of CONFIRM messages.  The recommended approach is
-//:   to create one instance of the builder and use it throughout the lifetime
-//:   of the task (if the task is multi-threaded, an instance per thread must
-//:   be created and maintained).  See usage example #1 for an illustration.
-//:
-//: o The lifetime of an instance of the builder is bound by the bmqa::Session
-//:   from which it was created.  In other words, bmqa::Session instance must
-//:   outlive the builder instance.
-//
-///Example 1 - Basic Usage
-///-----------------------
-//..
-//   // In this snippet, we will send a batch of CONFIRMs for all the
-//   // 'bmqa::Message' messages received in a 'bmqa::MessageEvent'.
-//
-//   // Note that error handling is omitted from the snippet for the sake of
-//   // brevity.
-//
-//   bmqa::Session session;
-//       // Session start up logic elided.
-//
-//   // Create and load an instance of the ConfirmEventBuilder.  Note that in
-//   // this example, we are creating the builder on the stack everytime a
-//   // message event is received.  Another approach can be to maintain the
-//   // builder as a data member and use it everytime.
-//
-//   bmqa::ConfirmEventBuilder builder;
-//   session.loadConfirmEventBuilder(&builder);
-//
-//   // Assuming that a 'bmqa::MessageEvent' is received.
-//
-//   bmqa::MessageIterator iter = messageEvent.messageIterator();
-//   while (iter.nextMessage()) {
-//       const bmqa::Message& msg = iter.message();
-//
-//       // Business logic for processing 'msg' elided.
-//
-//       int rc = builder.addMessageConfirmation(msg);
-//           // Error handling elided.
-//   }
-//
-//   // All messages in the event have been processed and their corresponding
-//   // CONFIRM messages have been batched.  Now its time to send the batch to
-//   // the BlazingMQ broker.
-//
-//   int rc = session.confirmMessages(&builder);
-//       // Error handling elided.  Note that in case of success, above method
-//       // will also reset the 'builder'.
-//..
-//
-///Thread Safety
-///-------------
-// This component is *NOT* thread safe.  If it is desired to create a batch of
-// CONFIRM messages from multiple threads, an instance of the builder must be
-// created and maintained *per* *thread*.
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqa_message.h>
-#include <bmqt_resultcode.h>
-
-// BDE
-#include <bdlbb_blob.h>
-#include <bsls_alignedbuffer.h>
-
-namespace BloombergLP {
-
-// FORWARD DECLARATION
-namespace bmqp { class ConfirmEventBuilder; }
-
-namespace bmqa {
-
-                       // ==============================
-                       // struct ConfirmEventBuilderImpl
-                       // ==============================
-
-struct ConfirmEventBuilderImpl {
-    // Component-private class.  Do not use.
-
-    // CONSTANTS
-    static const int k_MAX_SIZEOF_BMQP_CONFIRMEVENTBUILDER = 64;
-        // Constant representing the maximum size of a
-        // 'bmqp::ConfirmEventBuilder' object, so that the below AlignedBuffer
-        // is big enough.  Note that since this buffer will hold a
-        // 'bmqp::ConfirmEventBuilder' which holds a 'bdlbb::Blob' data member,
-        // the size is different on 32 vs 64 bits.
-
-    // PUBLIC DATA
-    //   (for convenience)
-    bsls::AlignedBuffer<k_MAX_SIZEOF_BMQP_CONFIRMEVENTBUILDER>  d_buffer;
-
-    bmqp::ConfirmEventBuilder                                  *d_builder_p;
-
-    // CREATORS
-    ConfirmEventBuilderImpl();
-
-  private:
-    // NOT IMPLEMENTED
-    ConfirmEventBuilderImpl(const ConfirmEventBuilderImpl&); // = delete
-    ConfirmEventBuilderImpl&
-    operator=(const ConfirmEventBuilderImpl&);               // = delete
-};
-
-
-                         // =========================
-                         // class ConfirmEventBuilder
-                         // =========================
-
-class ConfirmEventBuilder {
-    // Mechanism to build a batch of CONFIRM messages.
-
-  private:
-    // DATA
-    ConfirmEventBuilderImpl d_impl;
-
-  private:
-    // NOT IMPLEMENTED
-    ConfirmEventBuilder(const ConfirmEventBuilder& other); // = delete
-    ConfirmEventBuilder&
-    operator=(const ConfirmEventBuilder& rhs);             // = delete
-        // Copy constructor and assignment operator not implemented
-
-  public:
-    // CREATORS
-    ConfirmEventBuilder();
-        // Create an invalid instance.  Application should not create
-        // 'ConfirmEventBuilder' themselves, but ask the 'bmqa::Session' to
-        // give them one, by using 'bmqa::Session::loadConfirmEventBuilder'.
-
-    ~ConfirmEventBuilder();
-        // Destroy this instance.
-
-    // MANIPULATORS
-    bmqt::EventBuilderResult::Enum
-    addMessageConfirmation(const Message& message);
-        // Append a confirmation message for the specified 'message'.  Return
-        // zero on success, and a non-zero value otherwise.  Behavior is
-        // undefined unless this instance was obtained using
-        // 'bmqa::Session::loadConfirmEventBuilder'.
-
-    bmqt::EventBuilderResult::Enum
-    addMessageConfirmation(const MessageConfirmationCookie& cookie);
-        // Append a confirmation message for the specified
-        // MessageConfirmationCookie 'cookie'.  Return zero on success, and a
-        // non-zero value otherwise.  Behavior is undefined unless this
-        // instance was obtained using
-        // 'bmqa::Session::loadConfirmEventBuilder'.
-
-    void reset();
-        // Reset the builder, effectively discarding the batch of confirmation
-        // messages under construction.
-
-    // ACCESSORS
-    int messageCount() const;
-        // Return the number of messages currently in the ConfirmEvent being
-        // built.  Behavior is undefined unless this instance was obtained
-        // using 'bmqa::Session::loadConfirmEventBuilder'.
-
-    const bdlbb::Blob& blob() const;
-        // Return a reference not offering modifiable access to the blob of
-        // confirmation messages batch built by this builder.  If no messages
-        // were added, this will return an empty blob, i.e., a blob with
-        // 'length == 0'.  Behavior is undefined unless this instance was
-        // obtained using 'bmqa::Session::loadConfirmEventBuilder'.
-};
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-                       // ------------------------------
-                       // struct ConfirmEventBuilderImpl
-                       // ------------------------------
-
-// CREATORS
-inline
-ConfirmEventBuilderImpl::ConfirmEventBuilderImpl()
-: d_buffer()
-, d_builder_p(0)
-{
-    // NOTHING
-}
-
-
-                         // -------------------------
-                         // class ConfirmEventBuilder
-                         // -------------------------
-
-// CREATORS
-inline
-ConfirmEventBuilder::ConfirmEventBuilder()
-: d_impl()
-{
-    // NOTHING
-}
-
-// MANIPULATORS
-inline
-bmqt::EventBuilderResult::Enum
-ConfirmEventBuilder::addMessageConfirmation(const Message& message)
-{
-    return addMessageConfirmation(message.confirmationCookie());
-}
-
-}  // close package namespace
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__event_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__event_8h.html deleted file mode 100644 index c6ea883f8..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__event_8h.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -bmqa_event.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_event.h File Reference

-
-
- -

Provide a generic variant encompassing all types of events. -More...

- -

Go to the source code of this file.

- - - - - - - - -

-Classes

class  bmqa::Event

-Namespaces

namespace  bmqimp
namespace  bmqa

-Functions

bsl::ostream & bmqa::operator<< (bsl::ostream &stream, const Event &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__event_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__event_8h_source.html deleted file mode 100644 index 2eef08dc7..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__event_8h_source.html +++ /dev/null @@ -1,148 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_event.h                                                       -*-C++-*-
-#ifndef INCLUDED_BMQA_EVENT
-#define INCLUDED_BMQA_EVENT
-
-//@PURPOSE: Provide a generic variant encompassing all types of events.
-//
-//@CLASSES:
-//  bmqa::Event: variant encompassing all types of events.
-//
-//@SEE_ALSO:
-//  bmqa::MessageEvent : Data event notification.
-//  bmqa::SessionEvent : Session and queue status event notification.
-//
-//@DESCRIPTION: This component provides a generic 'bmqa::Event' notification
-// object used by the 'bmqa::Session' to provide BlazingMQ applications with
-// information regarding the status of the session or data coming from queues.
-// This 'bmqa::Event' object is only used when user wants to process messages
-// from the EventQueue using its own thread, by calling the
-// bmqa::Session::nextEvent method.
-//
-// A 'bmqa::Event' can either be a 'bmqa::SessionEvent' or a
-// 'bmqa::MessageEvent'.  The former describes notifications such as the result
-// of a session start or the opening of a queue.  The latter carries
-// application messages retrieved from a queue.
-//
-// Note that event is implemented using the pimpl idiom, so copying an event is
-// very cheap (a pointer copy).  All copies of this 'bmqa::Event', as well as
-// any 'SessionEvent' or 'MessageEvent' extracted from it will share the same
-// underlying implementation.
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqa_messageevent.h>
-#include <bmqa_sessionevent.h>
-
-// BDE
-#include <bsl_iosfwd.h>
-#include <bsl_memory.h>
-
-namespace BloombergLP {
-
-// FORWARD DECLARATION
-namespace bmqimp { class Event; }
-
-namespace bmqa {
-
-                                // ===========
-                                // class Event
-                                // ===========
-
-class Event {
-    // A variant type encompassing all types of events
-
-  private:
-    // DATA
-    bsl::shared_ptr<bmqimp::Event> d_impl_sp; // pimpl
-
-  public:
-    // CREATORS
-    explicit Event();
-        // Default constructor
-
-    //! Event(const Event& other) = default;
-
-    // MANIPULATORS
-    //! Event& operator=(const Event& rhs) = default;
-
-    // ACCESSORS
-    SessionEvent sessionEvent() const;
-        // Return the 'SessionEvent' variant.  The behavior is undefined unless
-        // 'isSessionEvent' returns true.
-
-    MessageEvent messageEvent() const;
-        // Return the 'MessageEvent' variant.  The behavior is undefined unless
-        // 'isMessageEvent' returns true.
-
-    bool isSessionEvent() const;
-        // Return true if the event is a session event.
-
-    bool isMessageEvent() const;
-        // Return true if the event is a message event.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream& stream, const Event& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return a
-    // reference to the modifiable 'stream'.
-
-}  // close package namespace
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-
-                                // -----------
-                                // class Event
-                                // -----------
-
-inline
-bsl::ostream&
-bmqa::operator<<(bsl::ostream&      stream,
-                 const bmqa::Event& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__manualhosthealthmonitor_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__manualhosthealthmonitor_8h.html deleted file mode 100644 index 669e323bd..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__manualhosthealthmonitor_8h.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - -bmqa_manualhosthealthmonitor.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_manualhosthealthmonitor.h File Reference

-
-
- -

Provide a minimal implementation of bmqpi::HostHealthMonitor. -More...

- -

Go to the source code of this file.

- - - - - -

-Classes

class  bmqa::ManualHostHealthMonitor

-Namespaces

namespace  bmqa
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__manualhosthealthmonitor_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__manualhosthealthmonitor_8h_source.html deleted file mode 100644 index 3675ebcad..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__manualhosthealthmonitor_8h_source.html +++ /dev/null @@ -1,87 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2021-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_manualhosthealthmonitor.h                                     -*-C++-*-
-#ifndef INCLUDED_BMQA_MANUALHOSTHEALTHMONITOR
-#define INCLUDED_BMQA_MANUALHOSTHEALTHMONITOR
-
-//@PURPOSE: Provide a minimal implementation of 'bmqpi::HostHealthMonitor'.
-//
-//@CLASSES:
-//  bmqa::ManualHostHealthMonitor: A 'HostHealthMonitor' that derives its host
-//  health state from a value explicitly set through a setter method.
-//
-//@DESCRIPTION:
-// 'bmqa::ManualHostHealthMonitor' is a minimal implementation of
-// 'bmqpi::HostHealthMonitor', which is primarily useful for unit-testing, and
-// for integrating with other systems for determining host health.
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqpi_hosthealthmonitor.h>
-#include <bmqt_hosthealthstate.h>
-
-// BDE
-#include <bdlmt_signaler.h>
-#include <bsl_memory.h>
-#include <bsls_keyword.h>
-
-namespace BloombergLP {
-
-namespace bmqa {
-
-                       // =============================
-                       // class ManualHostHealthMonitor
-                       // =============================
-
-class ManualHostHealthMonitor: public bmqpi::HostHealthMonitor {
-  private:
-    // PRIVATE DATA
-    bsl::shared_ptr<bmqpi::HostHealthMonitor> d_impl_sp;
-
-  public:
-    // CREATORS
-    ManualHostHealthMonitor(bmqt::HostHealthState::Enum  initialState,
-                            bslma::Allocator            *allocator = 0);
-        // Constructs a 'ManualHostHealthMonitor' with the given initial state.
-        // Optionally specify an 'allocator' to supply memory. If 'allocator'
-        // is 0, the currently installed default allocator is used.
-
-    ~ManualHostHealthMonitor() BSLS_KEYWORD_OVERRIDE;
-        // Destructor.
-
-    // MANIPULATORS
-    bdlmt::SignalerConnection
-    observeHostHealth(const HostHealthChangeFn& cb) BSLS_KEYWORD_OVERRIDE;
-
-    void setState(bmqt::HostHealthState::Enum newState);
-
-    // ACCESSORS
-    bmqt::HostHealthState::Enum hostState() const BSLS_KEYWORD_OVERRIDE;
-};
-
-}  // close package namespace
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__message_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__message_8h.html deleted file mode 100644 index 5a57dd235..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__message_8h.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - -bmqa_message.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_message.h File Reference

-
-
- -

Provide the application with a message data object. -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Classes

struct  bmqa::MessageImpl
class  bmqa::MessageConfirmationCookie
class  bmqa::Message

-Namespaces

namespace  bmqimp
namespace  bmqa

-Functions

bsl::ostream & bmqa::operator<< (bsl::ostream &stream, const Message &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__message_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__message_8h_source.html deleted file mode 100644 index 54af4e2b3..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__message_8h_source.html +++ /dev/null @@ -1,503 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_message.h                                                     -*-C++-*-
-#ifndef INCLUDED_BMQA_MESSAGE
-#define INCLUDED_BMQA_MESSAGE
-
-//@PURPOSE: Provide the application with a message data object.
-//
-//@CLASSES:
-//  bmqa::Message:                   message received from/sent to a queue
-//  bmqa::MessageConfirmationCookie: cookie for async message confirmation
-//
-//@SEE_ALSO:
-//  bmqa::MessageEvent       : Mechanism for data event notification.
-//  bmqa::MessageEventBuilder: Builder for 'bmqa::MessageEvent'
-//
-//@DESCRIPTION: A 'bmqa::Message' represents the data message to put on a
-// queue, or retrieved from a queue.  It is composed of the following fields:
-//
-//: o A message GUID, which is a printable string generated by the broker to
-//:    uniquely identify this message.
-//:
-//: o A correlation Id, which is a user-provided identifier for the message.
-//:
-//: o A queue Id, to map with the queue this message is associated with.
-//:
-//: o The payload, which is opaque to the framework. At some point, framework
-//:   may provide utilities to encode and decode schema messages using various
-//:   CODECs.  For example, a JavaScript publisher may publish a message into
-//:   a queue using a JSON object as payload, and the consumer may be receiving
-//:   that payload as a BER-encoded schema object.
-//:
-//: o At some point, system properties such as version, encoding, timestamp,
-//:   priority, message group and "reply-to" will be supported. System
-//:   properties will be used by the broker; for example to deliver
-//:   high-priority messages first or to filter based on a minimum version.
-//:
-//: o At some point, application-defined message properties will also be
-//:   supported, where properties are a list of name-value pairs.
-//
-// A 'bmqa::MessageConfirmationCookie' is a small object which allows to
-// confirm a 'bmqa::Message' asynchronously without having to hold on to the
-// entire message.  This can be useful when, for example, the message is
-// decoded in the event handler, and the resulting object is enqueued for
-// asynchronous processing, along with that small cookie object for confirming
-// the message once successfully processed.
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqa_queueid.h>
-#include <bmqt_compressionalgorithmtype.h>
-#include <bmqt_correlationid.h>
-#include <bmqt_messageguid.h>
-
-// BDE
-#include <bdlbb_blob.h>
-#include <bsl_cstddef.h> // for 'size_t'
-#include <bsl_iosfwd.h>
-#include <bsl_memory.h>
-#include <bsl_string.h>
-#include <bslma_allocator.h>
-#include <bsls_annotation.h>
-
-
-namespace BloombergLP {
-
-// FORWARD DECLARATION
-namespace bmqimp { class Event; }
-
-namespace bmqa {
-
-// FORWARD DECLARATION
-class MessageProperties;
-
-
-                             // ==================
-                             // struct MessageImpl
-                             // ==================
-
-struct MessageImpl {
-    // Struct containing the internal (private) members of Message (That is so
-    // that we can access private members of Message to initialize it, without
-    // having to expose them publicly).
-    //
-    // IMPLEMENTATION NOTE: If adding new data members to this struct that are
-    //                      lazily populated (such as 'queueId' or
-    //                      'correlationId'), then they should be reset in
-    //                      'bmqa::MessageIterator.nextMessage()'.
-
-    // PUBLIC DATA
-    bmqimp::Event                  *d_event_p;
-                                      // Pointer to the Event this message is
-                                      // associated with
-
-    bsl::shared_ptr<bmqimp::Event>  d_clonedEvent_sp;
-                                      // May point to a bmqimp::Event (in case
-                                      // this Message is a clone)
-
-    bmqa::QueueId                   d_queueId;
-                                      // QueueId this message is associated
-                                      // with
-
-    bmqt::CorrelationId             d_correlationId;
-                                      // CorrelationId this message is
-                                      // associated with
-
-#ifdef BMQ_ENABLE_MSG_GROUPID
-    bsl::string                     d_groupId;
-                                      // Optional Group Id this message is
-                                      // associated with
-#endif
-};
-
-
-                      // ===============================
-                      // class MessageConfirmationCookie
-                      // ===============================
-
-class MessageConfirmationCookie {
-    // Cookie for async message confirmation.
-
-  private:
-    // DATA
-    bmqa::QueueId     d_queueId;
-                       // QueueID associated to this cookie
-
-    bmqt::MessageGUID d_guid;
-                       // GUID associated to this cookie
-
-  public:
-    // CREATORS
-    MessageConfirmationCookie();
-        // Create an unset instance of this class.
-
-    MessageConfirmationCookie(const QueueId&           queueId,
-                              const bmqt::MessageGUID& messageGUID);
-        // Create an instance with the specified 'queueId' and 'messageGUID'.
-        // Users should not use that constructor directly, but rather load the
-        // message cookie from an existing 'bmqa::Message' with the
-        // 'bmqa::Message::confirmationCookie' accessor.
-
-    // ACCESSORS
-    const QueueId& queueId() const;
-        // Return the queue ID of the message with which this confirmation
-        // cookie is associated.
-
-    const bmqt::MessageGUID& messageGUID() const;
-        // Return message GUID of the message with which this confirmation
-        // cookie is associated.
-};
-
-                               // =============
-                               // class Message
-                               // =============
-
-class Message {
-    // A message sent/received to/from the BlazingMQ broker.
-
-#ifdef BMQ_ENABLE_MSG_GROUPID
-  public:
-    // CONSTANTS
-    static const int k_GROUP_ID_MAX_LENGTH = 31;
-        // Constant representing the maximum length of a Group Id string.
-#endif
-
-  private:
-    // DATA
-    mutable MessageImpl d_impl; // pimpl
-
-  private:
-    // PRIVATE ACCESSORS
-    bool isInitialized() const;
-        // Return true if the message has been initialized with an underlying
-        // event (and thus is valid), and false otherwise.  Any operation
-        // except assignment or destruction on an uninitialized message is an
-        // error.
-
-  public:
-    // CREATORS
-    explicit Message();
-        // Create an invalid message having no content. Only valid operations
-        // on an invalid message instance are assignment and destruction.
-
-    //! Message(const Message& other) = default;
-        // Create a message from the specified 'other' instance.
-
-    //! ~Message() = default;
-        // Destructor
-
-    // MANIPULATORS
-    //! Message& operator=(const Message& other) = default;
-        // Assign to this object the value of the specified 'other' instance
-        // and return a reference to this object.
-
-    Message& setData(const bdlbb::Blob *data) BSLS_ANNOTATION_DEPRECATED;
-        // Set the payload of this message to the blob pointed to by the
-        // specified 'data'.  Behavior is undefined unless 'data' is non-null
-        // and payload's length is greater than zero.  Note that payload
-        // pointed to by 'data' is *not* copied right away, and should not be
-        // destroyed or modified until this message has been packed (see
-        // 'bmqa::MessageEventBuilder' component level documentation for
-        // correct usage).
-        //
-        // This method is deprecated, please use 'setDataRef()' instead.
-
-    Message& setData(const char *data,size_t length)
-                                                    BSLS_ANNOTATION_DEPRECATED;
-        // Set the payload of this message to the specified 'length' bytes
-        // starting at the specified 'data' address.  The behavior is undefined
-        // unless 'data' is non-null and 'length' is greater than zero.  Note
-        // that payload pointed to by 'data' is *not* copied right away, and
-        // should not be destroyed or modified until this message has been
-        // packed (see 'bmqa::MessageEventBuilder' component level
-        // documentation for correct usage).
-        //
-        // This method is deprecated, please use 'setDataRef()' instead.
-
-    Message& setDataRef(const bdlbb::Blob *data);
-        // Set the payload of this message to the blob pointed to by the
-        // specified 'data'.  Behavior is undefined unless 'data' is non-null
-        // and payload's length is greater than zero.  Note that payload
-        // pointed to by 'data' is *not* copied right away, and should not be
-        // destroyed or modified until this message has been packed (see
-        // 'bmqa::MessageEventBuilder' component level documentation for
-        // correct usage).
-
-    Message& setDataRef(const char *data,
-                        size_t      length);
-        // Set the payload of this message to the specified 'length' bytes
-        // starting at the specified 'data' address.  The behavior is undefined
-        // unless 'data' is non-null and 'length' is greater than zero.  Note
-        // that payload pointed to by 'data' is *not* copied right away, and
-        // should not be destroyed or modified until this message has been
-        // packed (see 'bmqa::MessageEventBuilder' component level
-        // documentation for correct usage).
-
-    Message& setPropertiesRef(const MessageProperties *properties);
-        // Set the properties of this message to the 'MessageProperties'
-        // instance pointed by the specified 'properties'.  Behavior is
-        // undefined unless 'properties' is non-null.  Note that properties are
-        // *not* copied right away, and should not be destroyed or modified
-        // until this message has been packed (see 'bmqa::MessageEventBuilder'
-        // component level documentation for correct usage).
-
-    Message& clearPropertiesRef();
-        // Clear out and properties associated with this message.  Note that if
-        // there are no properties associated with this message, this method
-        // has no effect.  Also note that the associated 'MessageProperties'
-        // instance, if any, is not modified; it's simply dissociated from this
-        // message.
-
-    Message& setCorrelationId(const bmqt::CorrelationId& correlationId);
-        // Set correlation ID of this message to the specified 'correlationId'.
-
-    Message&
-    setCompressionAlgorithmType(bmqt::CompressionAlgorithmType::Enum value);
-        // Set the Compression algorithm type of the current message to the
-        // specified 'value' and return a reference offering modifiable access
-        // to this object.
-
-#ifdef BMQ_ENABLE_MSG_GROUPID
-    Message& setGroupId(const bsl::string& groupId);
-        // Set Group Id of this message to the specified 'groupId'.  The
-        // 'groupId' must be a null-terminated string with up to
-        // 'Message::k_GROUP_ID_MAX_LENGTH' characters (excluding the
-        // terminating '\0').  The behavior is undefined if the message is not
-        // a started, 'PUT' message or if 'groupId' is empty.
-
-    Message& clearGroupId();
-        // Clear the Group Id of this message.  The behavior is undefined if
-        // the message is not a started, 'PUT' message.
-#endif
-
-    // ACCESSORS
-    bool isValid() const; // TBD:BSLS_ANNOTATION_DEPRECATED
-        // Return true if the message is valid, and false otherwise.  Any
-        // operation except assignment or destruction on an invalid message is
-        // an error.
-        //
-        // This method is deprecated.
-
-    operator bool() const; // TBD:BSLS_ANNOTATION_DEPRECATED
-        // Same as 'isValid'.
-        //
-        // This method is deprecated.
-
-    Message clone(bslma::Allocator *basicAllocator = 0) const;
-        // Return a copy of this message, using the optionally specified
-        // 'basicAllocator' with the copy holding all the data of this instance
-        // and not backed by any 'MessageEvent'.  Note that this operation
-        // does *not* copy underlying data.
-
-    const bmqa::QueueId& queueId() const;
-        // Return the queue ID indicating the queue for which this message has
-        // been received from.  The behavior is undefined unless this instance
-        // represents a 'PUT', 'PUSH' or 'ACK' message.
-
-    const bmqt::CorrelationId& correlationId() const;
-        // Return the correlation Id associated with this message.  The
-        // behavior is undefined unless this instance represents a 'PUT' or an
-        // 'ACK', or a 'PUSH' message.  Note that in case of failure to accept
-        // a 'PUT' message, BlazingMQ sends an 'ACK' message with failed
-        // status, even if an 'ACK' message was not requested by the
-        // application (i.e., no correlationId was specified when posting the
-        // message).  In such cases, correlationId associated with the 'ACK'
-        // message will be unset, and as such, application *must* check for
-        // that by invoking 'isUnset' on the returned correlationId object.  In
-        // the case of a 'PUSH' message, the return value is the one specified
-        // as the correlation id of the corresponding Subscription.  Invoking
-        // 'thePointer', 'theNumeric' or 'theSharedPtr' on an unset
-        // correlationId instance will lead to undefined behavior.
-
-    bmqt::CompressionAlgorithmType::Enum compressionAlgorithmType() const;
-        // Return Compression algorithm type of the current message. Behavior
-        // is undefined unless this instance represents a 'PUT' or 'PUSH'
-        // message.
-
-#ifdef BMQ_ENABLE_MSG_GROUPID
-    const bsl::string& groupId() const;
-        // Return the Group Id associated with this message.  The behavior is
-        // undefined unless this instance represents a 'PUT' or a 'PUSH'
-        // message and 'hasGroupId()' returns 'true".
-#endif
-
-    const bmqt::MessageGUID& messageGUID() const;
-        // Return the unique message Id generated by the SDK for this message.
-        // The behavior is undefined unless this instance represents a 'PUT',
-        // a 'PUSH' or an 'ACK' message.
-
-    MessageConfirmationCookie confirmationCookie() const;
-        // Return a cookie which can be used to confirm this message.  The
-        // behavior is undefined unless this instance represents a 'PUSH'
-        // message.
-
-    int ackStatus() const;
-        // Return the status of the 'ACK' message.  The behavior is undefined
-        // unless this instance represents an 'ACK' message.  This value
-        // correspond to the 'bmqt::AckResult::Enum' enum.
-
-    int getData(bdlbb::Blob *blob) const;
-        // Load into the specified 'blob' the payload of the message, if any.
-        // Return zero if the message has a payload and non-zero value
-        // otherwise.  The behaviour is undefined unless this instance
-        // represents a 'PUT' or 'PUSH' message.  Note that for efficiency,
-        // application should fetch payload once and cache the value, instead
-        // of invoking this method multiple times on a message.
-
-    int dataSize() const;
-        // Return the number of bytes in the payload.  The behaviour is
-        // undefined unless this instance represents a 'PUT' or a 'PUSH'
-        // message.  Note that for efficiency, application should fetch payload
-        // size once and cache the value, instead of invoking this method
-        // multiple times on a message.
-
-    bool hasProperties() const;
-        // Return 'true' if this instance has at least one message property
-        // associated with it, 'false' otherwise.  Behavior is undefined unless
-        // this instance represents a 'PUT' or a 'PUSH' message.
-
-#ifdef BMQ_ENABLE_MSG_GROUPID
-    bool hasGroupId() const;
-        // Return whether this message has an associated GroupId set.  The
-        // behavior is undefined unless this instance represents a 'PUT' or a
-        // 'PUSH' message.
-#endif
-
-    int loadProperties(MessageProperties *buffer) const;
-        // Load into the specified 'buffer' the properties associated with this
-        // message.  Return zero on success, and a non-zero value otherwise.
-        // Behavior is undefined unless this instance represents a 'PUT' or a
-        // 'PUSH' message, and unless 'buffer' is non-null.  Note that if there
-        // are no properties associated with this message, zero will be
-        // returned and the 'MessageProperties' instance pointed by 'buffer'
-        // will be cleared.  Also note that for efficiency, application should
-        // fetch properties once and cache the value, instead of invoking this
-        // method multiple times on a message.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream& stream, const Message& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return a
-    // reference to the modifiable 'stream'.
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-
-                               // -------------
-                               // class Message
-                               // -------------
-
-inline
-Message&
-Message::setData(const bdlbb::Blob *data)
-{
-    return setDataRef(data);
-}
-
-inline
-Message&
-Message::setData(const char *data,
-                 size_t      length)
-{
-    return setDataRef(data, length);
-}
-
-inline
-Message::operator bool() const
-{
-    return isInitialized();
-}
-
-                        // -------------------------------
-                        // class MessageConfirmationCookie
-                        // -------------------------------
-
-inline
-MessageConfirmationCookie::MessageConfirmationCookie()
-: d_queueId()
-, d_guid()
-{
-    // NOTHING
-}
-
-inline
-MessageConfirmationCookie::MessageConfirmationCookie(
-                                          const bmqa::QueueId&     queueId,
-                                          const bmqt::MessageGUID& messageGUID)
-: d_queueId(queueId)
-, d_guid(messageGUID)
-{
-    // NOTHING
-}
-
-// ACCESSORS
-inline
-const QueueId&
-MessageConfirmationCookie::queueId() const
-{
-    return d_queueId;
-}
-
-inline
-const bmqt::MessageGUID&
-MessageConfirmationCookie::messageGUID() const
-{
-    return d_guid;
-}
-}  // close package namespace
-
-
-                               // -------------
-                               // class Message
-                               // -------------
-
-// FREE OPERATORS
-inline
-bsl::ostream&
-bmqa::operator<<(bsl::ostream&        stream,
-                 const bmqa::Message& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__messageevent_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__messageevent_8h.html deleted file mode 100644 index 6808b2812..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__messageevent_8h.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -bmqa_messageevent.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_messageevent.h File Reference

-
-
- -

Provide the application with data event notifications. -More...

- -

Go to the source code of this file.

- - - - - - - - -

-Classes

class  bmqa::MessageEvent

-Namespaces

namespace  bmqimp
namespace  bmqa

-Functions

bsl::ostream & bmqa::operator<< (bsl::ostream &stream, const MessageEvent &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__messageevent_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__messageevent_8h_source.html deleted file mode 100644 index 545e3bb3f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__messageevent_8h_source.html +++ /dev/null @@ -1,139 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_messageevent.h                                                -*-C++-*-
-#ifndef INCLUDED_BMQA_MESSAGEEVENT
-#define INCLUDED_BMQA_MESSAGEEVENT
-
-//@PURPOSE: Provide the application with data event notifications.
-//
-//@CLASSES:
-//  bmqa::MessageEvent: Mechanism for data event notification.
-//
-//@SEE_ALSO:
-//  bmqa::MessageIterator: iterator over the messages in this event
-//  bmqa::Message:         type of the Message
-//
-//@DESCRIPTION: This component provides a 'bmqa::MessageEvent' notification
-// object used by the 'bmqa::Session' to provide BlazingMQ applications with
-// data messages received from the broker.  The application can consume the
-// messages by asking this 'MessageEvent' for a 'MessageIterator'.
-//
-// Note that 'MessageEvent' is implemented using the pimpl idiom, so copying a
-// 'MessageEvent' is very cheap (a pointer copy).  All copies of this
-// 'MessageEvent' will share the same underlying implementation.
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqa_messageiterator.h>
-#include <bmqt_messageeventtype.h>
-
-// BDE
-#include <bsl_memory.h>
-#include <bsl_iosfwd.h>
-
-namespace BloombergLP {
-
-// FORWARD DECLARATION
-namespace bmqimp { class Event; }
-
-namespace bmqa {
-
-
-                             // ==================
-                             // class MessageEvent
-                             // ==================
-
-class MessageEvent {
-    // An event containing messages received from a queue.  The application can
-    // consume messages using the message iterator.
-
-  private:
-    // DATA
-    bsl::shared_ptr<bmqimp::Event> d_impl_sp; // pimpl
-
-  public:
-    // CREATORS
-    explicit MessageEvent();
-        // Create an unset instance.  Note that 'type()' will return
-        // 'bmqt::MessageEventType::UNDEFINED'.
-
-    //! MessageEvent(const MessageEvent& other) = default;
-
-    // MANIPULATORS
-    //! MessageEvent& operator=(const MessageEvent& rhs) = default;
-
-    // ACCESSORS
-    MessageIterator messageIterator() const;
-        // Return a 'MessageIterator' object usable for iterating over the
-        // 'Message' objects contained in this 'MessageEvent'.  Note that
-        // obtaining an iterator invalidates (resets) any previously obtained
-        // iterator.  The behavior is undefined if 'type()' returns
-        // 'bmqt::MessageEventType::UNDEFINED'.
-
-    bmqt::MessageEventType::Enum type() const;
-        // Return the type of messages contained in this MessageEvent.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream& stream, const MessageEvent& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return a
-    // reference to the modifiable 'stream'.
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-}  // close package namespace
-
-
-                             // ------------------
-                             // class MessageEvent
-                             // ------------------
-
-inline
-bsl::ostream&
-bmqa::operator<<(bsl::ostream&             stream,
-                 const bmqa::MessageEvent& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__messageeventbuilder_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__messageeventbuilder_8h.html deleted file mode 100644 index 602539dcb..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__messageeventbuilder_8h.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -bmqa_messageeventbuilder.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_messageeventbuilder.h File Reference

-
-
- -

Provide a builder for MessageEvent objects. -More...

- -

Go to the source code of this file.

- - - - - - - -

-Classes

struct  bmqa::MessageEventBuilderImpl
class  bmqa::MessageEventBuilder

-Namespaces

namespace  bmqa
namespace  bmqp
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__messageeventbuilder_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__messageeventbuilder_8h_source.html deleted file mode 100644 index c8e65688d..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__messageeventbuilder_8h_source.html +++ /dev/null @@ -1,367 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_messageeventbuilder.h                                         -*-C++-*-
-#ifndef INCLUDED_BMQA_MESSAGEEVENTBUILDER
-#define INCLUDED_BMQA_MESSAGEEVENTBUILDER
-
-//@PURPOSE: Provide a builder for 'MessageEvent' objects.
-//
-//@CLASSES:
-//  bmqa::MessageEventBuilder: a builder for 'MessageEvent'.
-//
-//@DESCRIPTION: This component implements a mechanism,
-// 'bmqa::MessageEventBuilder', that can be used for creating message events
-// containing one or multiple messages.  The resulting MessageEvent can be sent
-// to the BlazingMQ broker using the 'bmqa::Session' (refer to 'bmqa_session'
-// for details).
-//
-// The builder holds a 'MessageEvent' under construction, and provides methods
-// to return a reference to the current message (in order to set its various
-// members), as well as to append a new message.  Once the application is done,
-// the builder provides a method to get the message event that has been
-// constructed.  See 'Usage' section for more details.
-//
-// Note that publishing events containing multiple messages may be more
-// efficient than events limited to a single message for applications that send
-// large volume of small messages.
-//
-///Usage
-///-----
-//: o An instance of bmqa::MessageEventBuilder (the builder) can be used to
-//:   create multiple bmqa::MessageEvent's, as long as the instance is reset in
-//:   between.  This reset is preferably to do right after sending the event to
-//:   guarantee that all user resources bound to the bmqa::MessageEvent (e.g.
-//:   CorrelationIds with user's shared_ptr) are kept no longer than expected
-//:   (e.g. until related ACK event is received).  The recommended approach is
-//:   to create one instance of the builder and use that throughout the
-//:   lifetime of the task (if the task is multi-threaded, an instance per
-//:   thread must be created and maintained).
-//:   See usage example #1 for an illustration.
-//:
-//: o The lifetime of an instance of the builder is bound by the bmqa::Session
-//:   from which it was created.  In other words, bmqa::Session instance must
-//:   outlive the builder instance.
-//:
-//: o If it is desired to post the same bmqa::Message to different queues,
-//:   'packMessage' can be called multiple times in a row with different queue
-//:   IDs.  The builder will append the previously packed message with the new
-//:   queue ID to the underlying message event.  Note that after calling
-//:   'packMessage', the message keeps all the attributes (payload, properties,
-//:   etc) that were previously set (except for the 'correlationId' which must
-//:   be set explicitly for each individual message).  If desired, any
-//:   attribute can be tweaked before being packing the message again.  Refer
-//:   to usage example #2 for an illustration.
-//
-///Example 1 - Basic Usage
-///-----------------------
-//..
-//   // Note that error handling is omitted below for the sake of brevity
-//
-//   bmqa::Session session;
-//       // Session start up logic omitted for brevity.
-//
-//   // Obtain a valid instance of message properties.
-//   bmqt::MessageProperties properties;
-//   session.loadMessageProperties(&properties);
-//
-//   // Set common properties that will be applicable to all messages sent by
-//   // this application.
-//   int rc = properties.setPropertyAsChar(
-//                                   "encoding",
-//                                   static_cast<char>(MyEncodingEnum::e_BER));
-//
-//   rc = properties.setPropertyAsString("producerId", "MyUniqueId");
-//
-//   // Obtain a valid instance of message event builder.
-//   bmqa::MessageEventBuilder builder;
-//   session.loadMessageEventBuilder(&builder);
-//
-//   // Create and post a message event containing 1 message.  Associate
-//   // properties with this message.
-//   bmqa::Message& msg = builder.startMessage();
-//
-//   msg.setCorrelationId(myCorrelationId);
-//
-//   // Set payload (where 'myPayload' is of type 'bdlbb::Blob')
-//   msg.setDataRef(&myPayload);
-//
-//   // Set current timestamp as one of the properties.
-//   rc = properties.setPropertyAsInt64(
-//                "timestamp",
-//                bdlt::EpochUtil::convertToTimeT64(bdlt::CurrentTime::now()));
-//
-//   // Set properties.
-//   msg.setPropertiesRef(&properties);
-//
-//   // Pack the message.
-//   rc = builder.packMessage(myQueueId);
-//
-//   // Post message event
-//   rc = session.post(builder.messageEvent());
-//
-//
-//   // Create and post another message event containing 1 message.
-//
-//   // bmqa::MessageEventBuilder must be reset before reuse.
-//   builder.reset();
-//
-//   // Start a new message.
-//   bmqa::Message& msg = builder.startMessage();
-//
-//   msg.setCorrelationId(myAnotherCorrelationId);
-//   msg.setDataRef(&myAnotherPayload);
-//
-//   // It's okay (and recommended) to use same properties instance.
-//   rc = properties.setPropertyAsInt64(
-//                "timestamp",
-//                bdlt::EpochUtil::convertToTimeT64(bdlt::CurrentTime::now()));
-//
-//   msg.setPropertiesRef(&properties);
-//   rc = builder.packMessage(myAnotherQueueId);
-//
-//   // Post second message event
-//   rc = session.post(builder.messageEvent());
-//
-//   // Reset the builder to free resources earlier.
-//   builder.reset();
-//..
-//
-///Example 2 - Packing multiple messages in a message event
-///--------------------------------------------------------
-//..
-//   // Note that error handling is omitted below for the sake of brevity
-//
-//   bmqa::Session session;
-//   // Session start up logic omitted for brevity.
-//
-//   // Obtain a valid instance of message properties.
-//   bmqt::MessageProperties properties;
-//   session.loadMessageProperties(&properties);
-//
-//   // Set common properties that will be applicable to all messages sent by
-//   // this application.
-//   int rc = properties.setPropertyAsChar(
-//                                   "encoding",
-//                                   static_cast<char>(MyEncodingEnum::e_BER));
-//
-//   rc = properties.setPropertyAsString("producerId", "MyUniqueId");
-//
-//   // Obtain a valid instance of message event builder.
-//   bmqa::MessageEventBuilder builder;
-//   session.loadMessageEventBuilder(&builder);
-//
-//   // Create and post a message event containing 4 messages.
-//   bmqa::Message& msg = builder.startMessage();
-//
-//   // Pack message #1
-//   msg.setCorrelationId(correlationId1);
-//   msg.setDataRef(&payload1);  // where 'payload1' is of type 'bdlbb::Blob'
-//
-//   // Set current timestamp as one of the properties.
-//   int rc = properties.setPropertyAsInt64(
-//                "timestamp",
-//                bdlt::EpochUtil::convertToTimeT64(bdlt::CurrentTime::now()));
-//
-//   // Pack the message.
-//   rc = builder.packMessage(queueId1);
-//
-//   // Pack message #2
-//   // We want to send message #1 to another queue.  In order to do so, we
-//   // just update the correlation ID of message #1.  There is no need to set
-//   // the payload or properties again.  Because 'payload1' and 'properties'
-//   // objects are being reused for the second message, they should not be
-//   // destroyed before packing the second message.
-//
-//   msg.setCorrelationId(correlationId2);
-//
-//   // Also note that the "timestamp" property for the second message will be
-//   // updated for this message.  There is no need to invoke
-//   // 'setPropertiesRef' on the message though.
-//   rc = properties.setPropertyAsInt64(
-//                "timestamp",
-//                bdlt::EpochUtil::convertToTimeT64(bdlt::CurrentTime::now()));
-//
-//   rc = builder.packMessage(queueId2);
-//
-//   // 'payload1' can be safely destroyed at this point if it will not be
-//   // reused again for another message.
-//
-//   // Pack message #3
-//   // Message #3 has a different payload, no properties and destined to
-//   // 'queueId1'.
-//   msg.setCorrelationId(correlationId3);
-//   msg.setDataRef(&payload2);  // where 'payload2' is of type 'bdlbb::Blob'
-//
-//   // We need to explicitly clear out the associated properties.
-//   msg.clearProperties();
-//
-//   rc = builder.packMessage(queueId1);
-//
-//   // Pack message #4
-//   // Message #4 has different payload and destined to 'queueId3'.
-//   msg.setCorrelationId(correlationId4);
-//   msg.setDataRef(&payload3);  // where 'payload3' is of type 'bdlbb::Blob'
-//
-//   // Update "timestamp" property.
-//   rc = properties.setPropertyAsInt64(
-//                "timestamp",
-//                bdlt::EpochUtil::convertToTimeT64(bdlt::CurrentTime::now()));
-//
-//   // Need to associate properties with the message, since they were cleared
-//   // out while packing message #3 above.
-//   msg.setPropertiesRef(&properties);
-//
-//   rc = builder.packMessage(queueId3);
-//
-//   // Post second message event
-//   rc = session.post(builder.messageEvent());
-//
-//   // Reset the builder to free resources earlier.
-//   builder.reset();
-//..
-//
-///Thread Safety
-///-------------
-// This component is *NOT* thread safe.
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqa_message.h>
-#include <bmqa_messageevent.h>
-#include <bmqt_resultcode.h>
-
-// BDE
-#include <bsl_memory.h>
-
-namespace BloombergLP {
-
-// FORWARD DECLARATION
-namespace bmqa { class QueueId; }
-namespace bmqp { class MessageGUIDGenerator; }
-
-namespace bmqa {
-
-                       // ==============================
-                       // struct MessageEventBuilderImpl
-                       // ==============================
-
-struct MessageEventBuilderImpl {
-    // Struct containing the internal (private) members of MessageEventBuilder
-    // (That is so that bmqa::Session::loadMessageEventBuilder can access
-    // private members of MessageEventBuilder to initialize it, without having
-    // to expose them publicly).
-
-    // PUBLIC DATA
-    MessageEvent d_msgEvent; // This is needed so that 'getMessageEvent()' can
-                             // return a const ref.
-
-    Message      d_msg;      // This is needed so that 'startMessage()' can
-                             // return a ref.
-
-    bsl::shared_ptr<bmqp::MessageGUIDGenerator>
-                 d_guidGenerator_sp;
-                             // GUID generator object.
-};
-
-
-                         // =========================
-                         // class MessageEventBuilder
-                         // =========================
-
-class MessageEventBuilder {
-    // A builder for 'MessageEvent' objects.
-
-  private:
-    // DATA
-    MessageEventBuilderImpl d_impl; // Impl
-
-  public:
-    // CREATORS
-    explicit MessageEventBuilder();
-        // Create an invalid instance.  Application should not create
-        // 'MessageEventBuilder' themselves, but ask the 'bmqa::Session' to
-        // give them one, by using 'bmqa::Session::loadMessageEventBuilder'.
-
-    //! ~MessageEventBuilder() = default;
-        // Destructor
-
-    //! MessageEventBuilder(const MessageEventBuilder&) = default;
-    //! MessageEventBuilder& operator=(const MessageEventBuilder&) = default;
-        // Copy constructor and assignment operator
-
-    // MANIPULATORS
-    Message& startMessage();
-        // Reset the current message being built, and return a reference to the
-        // current message.  Note that returned 'Message' is valid until this
-        // builder is reset or destroyed.  Behavior is undefined if this
-        // builder was earlier used to build an event *and* has not been reset
-        // since then.
-
-    bmqt::EventBuilderResult::Enum packMessage(const bmqa::QueueId& queueId);
-        // Add the current message into the message event under construction,
-        // setting the destination queue of the current message to match the
-        // specified 'queueId'.  Return zero on success, non-zero value
-        // otherwise.  In case of failure, this method has no effect on the
-        // underlying message event being built.  The behavior is undefined
-        // unless all mandatory attributes of the current Message have been
-        // set, *and* 'queueId' is valid *and* has been opened in WRITE mode.
-        // The result is one of the values from the
-        // 'bmqt::EventBuilderResult::Enum' enum.  Note that this method can be
-        // called multiple times in a row with different 'queueId' if the
-        // application desires to post the same 'bmqa::Message' to multiple
-        // queues: all attributes on the message are unchanged, exception for
-        // the 'correlationId' which is cleared.
-
-    void reset();
-        // Reset the builder, effectively discarding the 'MessageEvent' under
-        // construction.
-
-    const MessageEvent& messageEvent();
-        // Return the 'MessageEvent' that was built.  Note that returned
-        // 'MessageEvent' is valid until this builder is reset or destroyed,
-        // calling this method multiple times in a row will return the same
-        // bmqa::MessageEvent instance.  Also note that this builder must be
-        // reset before calling 'startMessage' again.
-
-    Message& currentMessage();
-        // Return a reference to the current message.
-
-    // ACCESSORS
-    int messageCount() const;
-        // Return the number of messages currently in the MessageEvent being
-        // built.
-
-    int messageEventSize() const;
-        // Return the size in bytes of the event built after last successful
-        // call to 'packMessage()', otherwise return zero.  Note that returned
-        // value represents the length of entire message event, *including*
-        // BlazingMQ wire protocol overhead.
-};
-
-
-}  // close package namespace
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__messageiterator_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__messageiterator_8h.html deleted file mode 100644 index 9efd7933f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__messageiterator_8h.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -bmqa_messageiterator.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_messageiterator.h File Reference

-
-
- -

Provide a mechanism to iterate over the messages of a MessageEvent. -More...

- -

Go to the source code of this file.

- - - - - - - -

-Classes

struct  bmqa::MessageIteratorImpl
class  bmqa::MessageIterator

-Namespaces

namespace  bmqimp
namespace  bmqa
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__messageiterator_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__messageiterator_8h_source.html deleted file mode 100644 index ad1eb3f12..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__messageiterator_8h_source.html +++ /dev/null @@ -1,137 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_messageiterator.h                                             -*-C++-*-
-#ifndef INCLUDED_BMQA_MESSAGEITERATOR
-#define INCLUDED_BMQA_MESSAGEITERATOR
-
-//@PURPOSE: Provide a mechanism to iterate over the messages of a MessageEvent.
-//
-//@CLASSES:
-//  bmqa::MessageIterator: read-only sequential iterator on 'Message' objects
-//
-//@DESCRIPTION: 'bmqa::MessageIterator' is an iterator-like mechanism providing
-// read-only sequential access to messages contained into a MessageEvent.
-//
-///Usage
-///-----
-// Typical usage of this iterator should follow the following pattern:
-//..
-//  while (messageIterator.nextMessage()) {
-//    const Message& message = messageIterator.message();
-//    // Do something with message
-//  }
-//..
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqa_message.h>
-
-// BDE
-#include <ball_log.h>
-
-namespace BloombergLP {
-
-// FORWARD DECLARATION
-namespace bmqimp { class Event; }
-
-namespace bmqa {
-
-
-                         // ==========================
-                         // struct MessageIteratorImpl
-                         // ==========================
-
-struct MessageIteratorImpl {
-    // Struct to hold the impl of the 'MessageIterator'; that is so that we can
-    // keep the real impl private and use some special cast to manipulate it,
-    // without publicly exposing private members.
-
-    // PUBLIC DATA
-    bmqimp::Event *d_event_p; // Raw pointer to the event
-
-    bmqa::Message  d_message; // A 'Message', representing a view to the
-                              // current message pointing at by this iterator.
-                              // This is so that 'message' can return a 'const
-                              // Message&' to clearly indicate the lifetime of
-                              // the Message, and so that we only create one
-                              // such object per MessageIterator.
-
-    int            d_messageIndex;
-                              // Position of 'd_message' in the underlying
-                              // message event.
-};
-
-
-                           // =====================
-                           // class MessageIterator
-                           // =====================
-
-class MessageIterator {
-    // An iterator providing read-only sequential access to messages contained
-    // into a 'MesssageEvent'.
-
-  private:
-    // CLASS-SCOPE CATEGORY
-    BALL_LOG_SET_CLASS_CATEGORY("BMQA.MESSAGEITERATOR");
-
-  private:
-    // DATA
-    MessageIteratorImpl d_impl; // Implementation. Abstracted in its own struct
-                                // and private so that we can do some magic to
-                                // manipulate it without exposing any
-                                // accessors/manipulators (this is wanted since
-                                // this class is a public class).
-
-  public:
-    // CREATORS
-    explicit MessageIterator();
-        // Default constructor
-
-    //! MessageIterator(const MessageIterator&) = default;
-
-    //! ~MessageIterator() = default;
-
-    // MANIPULATORS
-    //! MessageIterator& operator=(const MessageIterator&) = default;
-
-    bool nextMessage();
-        // Advance the position of the iterator to the next message in the
-        // event.  Return true if there is a next message and false otherwise.
-        // Note that advancing to the next message will invalidate any
-        // previously returned bmqa::Message retrieved from the 'message()'
-        // call.
-
-    // ACCESSORS
-    const Message& message() const;
-        // Return the message to which the iterator is pointing, if any;
-        // otherwise return an invalid message.  Note that 'nextMessage' must
-        // be called before 'message' in order to advance the iterators
-        // position to the first message in the event.
-};
-
-}  // close package namespace
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__messageproperties_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__messageproperties_8h.html deleted file mode 100644 index e754afd78..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__messageproperties_8h.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - -bmqa_messageproperties.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_messageproperties.h File Reference

-
-
- -

Provide a VST representing message properties. -More...

- -

Go to the source code of this file.

- - - - - - - - - -

-Classes

class  bmqa::MessageProperties
class  bmqa::MessagePropertiesIterator

-Namespaces

namespace  bmqp
namespace  bmqa

-Functions

bsl::ostream & bmqa::operator<< (bsl::ostream &stream, const MessageProperties &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__messageproperties_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__messageproperties_8h_source.html deleted file mode 100644 index 2335799f4..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__messageproperties_8h_source.html +++ /dev/null @@ -1,398 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2016-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_messageproperties.h                                           -*-C++-*-
-#ifndef INCLUDED_BMQA_MESSAGEPROPERTIES
-#define INCLUDED_BMQA_MESSAGEPROPERTIES
-
-//@PURPOSE: Provide a VST representing message properties.
-//
-//@CLASSES:
-//  bmqa::MessageProperties:         VST representing message properties.
-//  bmqa::MessagePropertiesIterator: Mechanism to iterate over properties.
-//
-//@SEE ALSO: bmqt::PropertyType
-//
-//@DESCRIPTION: 'bmqa::MessageProperties' provides a VST representing message
-// properties.  Message properties are a collection of name-value pairs that
-// producer can associate with a message, and consumer can retrieve from the
-// corresponding message.  In order to keep their usage flexible, no schema is
-// enforced for the message properties, and their format (names and data types)
-// should be negotiated by producers and consumers.  Message properties can be
-// used for routing, pipelining or filtering messages within the application.
-// It can be efficient to specify such message attributes in the properties
-// instead of the message payload, because application does not have to decode
-// entire payload to retrieve these attributes.
-// 'bmqa::MessagePropertiesIterator' provides a mechanism to iterate over all
-// the properties of a 'bmqa::MessageProperties' object.
-//
-///Restrictions on Property Names
-///------------------------------
-//
-//: o Length of a property name must be greater than zero and must *not* exceed
-//:   'bmqa::MessageProperties::k_MAX_PROPERTY_NAME_LENGTH'
-//
-//: o First character of the property name must be alpha-numeric.
-//
-///Restrictions on Property Values
-///-------------------------------
-//
-//: o Length of a property value must be non-negative (ie, can be zero) and
-//:   must *not* exceed 'bmqa::MessageProperties::k_MAX_PROPERTY_VALUE_LENGTH'.
-//:   Note that this restriction is obviously applicable to property values
-//:   with types 'bmqt::PropertyType::e_STRING' and
-//:   'bmqt::PropertyType::e_BINARY', because for all other property value
-//:   types, size is implicitly applicable based on the type (see 'Data Types
-//:   and Size' section in 'bmqt::PropertyType' component).
-//
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqt_resultcode.h>
-#include <bmqt_propertytype.h>
-
-// BDE
-#include <bdlbb_blob.h>
-#include <bsl_string.h>
-#include <bslma_allocator.h>
-#include <bslma_usesbslmaallocator.h>
-#include <bslmf_nestedtraitdeclaration.h>
-#include <bsls_alignedbuffer.h>
-#include <bsls_types.h>
-#include <bsl_cstdint.h>
-
-
-namespace BloombergLP {
-
-// FORWARD DECLARATION
-namespace bmqp { class MessageProperties; }
-namespace bmqp { class MessagePropertiesIterator; }
-
-namespace bmqa {
-
-                          // =======================
-                          // class MessageProperties
-                          // =======================
-
-class MessageProperties {
-    // Provide a VST representing message properties.
-
-    // FRIENDS
-    friend class MessagePropertiesIterator;
-
-  private:
-    // PRIVATE CONSTANTS
-    static const int k_MAX_SIZEOF_BMQP_MESSAGEPROPERTIES = 176;
-        // Constant representing the maximum size of a
-        // 'bmqp::MessageProperties' object, so that the below AlignedBuffer
-        // is big enough.
-
-    // PRIVATE TYPES
-    typedef
-    bsls::AlignedBuffer<k_MAX_SIZEOF_BMQP_MESSAGEPROPERTIES> ImplBuffer;
-
-  private:
-    // DATA
-    mutable bmqp::MessageProperties *d_impl_p;
-                                        // Pointer to the implementation object
-                                        // in 'd_buffer', providing a shortcut
-                                        // type safe cast to that object.  This
-                                        // variable *must* *be* the first
-                                        // member of this class, as other
-                                        // components in bmqa package may
-                                        // reinterpret_cast to that variable.
-
-    ImplBuffer                       d_buffer;
-                                        // Buffer containing the implementation
-                                        // object, maximally aligned.
-
-    bslma::Allocator                *d_allocator_p;
-
-  public:
-    // PUBLIC CONSTANTS
-    static const int k_MAX_NUM_PROPERTIES        = 255;
-        // Maximum number of properties that can appear in a 'bmqa::Message'.
-
-    static const int k_MAX_PROPERTIES_AREA_LENGTH = (64 * 1024 * 1024) - 8;
-       // Maximum length of all the properties (including their names, values
-       // and the wire protocol overhead).  Note that this value is just under
-       // 64 MB.
-
-    static const int k_MAX_PROPERTY_NAME_LENGTH  = 4095;
-        // Maximum length of a property name.
-
-    static const int k_MAX_PROPERTY_VALUE_LENGTH = 67104745;  // ~64 MB
-       // Maximum length of a property value.  Note that this value is just
-       // under 64 MB.  Also note that this value is calculated assuming that
-       // there is only one property and property's name has maximum allowable
-       // length, and also takes into consideration the protocol overhead.
-
-  public:
-    // TRAITS
-    BSLMF_NESTED_TRAIT_DECLARATION(MessageProperties,
-                                   bslma::UsesBslmaAllocator)
-
-    // CREATORS
-    explicit
-    MessageProperties(bslma::Allocator *basicAllocator = 0);
-        // Create an empty instance of 'MessageProperties'.  Optionally
-        // specify a 'basicAllocator' used to supply memory.  Note that it is
-        // more efficient to use a 'MessageProperties' object retrieved via
-        // 'Session::loadMessageProperties', instead of creating it via this
-        // constructor.
-
-    MessageProperties(const MessageProperties&  other,
-                      bslma::Allocator         *basicAllocator = 0);
-        // Create an instance of 'MessageProperties' having the same value as
-        // the specified 'other', that will use the optionally specified
-        // 'basicAllocator' to supply memory.
-
-    ~MessageProperties();
-        // Destroy this object.
-
-    // MANIPULATORS
-    MessageProperties& operator=(const MessageProperties& rhs);
-        // Assign to this object the value of the specified 'rhs' object.
-
-    bool remove(const bsl::string&        name,
-                bmqt::PropertyType::Enum *buffer = 0);
-        // Remove the property with the specified 'name' if one exists and
-        // return true and load into the optionally specified 'buffer' the data
-        // type of the property.  Return false if the 'name' property does not
-        // exist, and leave the 'buffer' unchanged.
-
-    void clear();
-        // Remove all properties from this instance.  Note that 'numProperties'
-        // will return zero after invoking this method.
-
-    int setPropertyAsBool(const bsl::string& name, bool value);
-    int setPropertyAsChar(const bsl::string& name, char value);
-    int setPropertyAsShort(const bsl::string& name, short value);
-    int setPropertyAsInt32(const bsl::string& name, bsl::int32_t value);
-    int setPropertyAsInt64(const bsl::string& name, bsls::Types::Int64 value);
-    int setPropertyAsString(const bsl::string& name, const bsl::string& value);
-    int setPropertyAsBinary(const bsl::string&       name,
-                            const bsl::vector<char>& value);
-        // Set a property with the specified 'name' having the specified
-        // 'value' with the corresponding data type.  Return zero on success,
-        // and a non-zero value in case of failure.  Note that if a property
-        // with 'name' and the same type exists, it will be updated with the
-        // provided 'value', however if the data type of the existing property
-        // differs, an error will be returned.
-
-    int streamIn(const bdlbb::Blob& blob);
-        // Populate this instance with its BlazingMQ wire protocol
-        // representation from the specified 'blob'.  Return zero on success,
-        // and a non-zero value otherwise.
-
-    // ACCESSORS
-    int numProperties() const;
-        // Return the total number of properties set in this instance.
-
-    int totalSize() const;
-        // Return the total size (in bytes) of the wire representation of this
-        // instance.  Note that returned value includes the BlazingMQ wire
-        // protocol overhead as well.
-
-    bool hasProperty(const bsl::string&        name,
-                     bmqt::PropertyType::Enum *type = 0) const;
-        // Return true if a property with the specified 'name' exists and load
-        // into the optionally specified 'type' the type of the property.
-        // Return false otherwise.
-
-    bmqt::PropertyType::Enum propertyType(const bsl::string& name) const;
-        // Return the type of property having the specified 'name'.  Behavior
-        // is undefined unless 'hasProperty' returns true for the property
-        // 'name'.
-
-    bool getPropertyAsBool(const bsl::string& name) const;
-    char getPropertyAsChar(const bsl::string& name) const;
-    short getPropertyAsShort(const bsl::string& name) const;
-    bsl::int32_t getPropertyAsInt32(const bsl::string& name) const;
-    bsls::Types::Int64 getPropertyAsInt64(const bsl::string& name) const;
-    const bsl::string& getPropertyAsString(const bsl::string& name) const;
-    const bsl::vector<char>& getPropertyAsBinary(
-                                                const bsl::string& name) const;
-        // Return the property having the corresponding type and the specified
-        // 'name'.  Behavior is undefined unless property with 'name' exists.
-
-    bool getPropertyAsBoolOr(const bsl::string& name, bool value) const;
-    char getPropertyAsCharOr(const bsl::string& name, char value) const;
-    short getPropertyAsShortOr(const bsl::string& name, short value) const;
-    bsl::int32_t getPropertyAsInt32Or(const bsl::string& name,
-                                      bsl::int32_t       value) const;
-    bsls::Types::Int64 getPropertyAsInt64Or(const bsl::string& name,
-                                            bsls::Types::Int64 value) const;
-    const bsl::string& getPropertyAsStringOr(const bsl::string& name,
-                                             const bsl::string& value) const;
-    const bsl::vector<char>& getPropertyAsBinaryOr(
-                                         const bsl::string&       name,
-                                         const bsl::vector<char>& value) const;
-        // Return the property having the corresponding type and the specified
-        // 'name' if property with such a name exists.  Return the specified
-        // 'value' if property with 'name' does not exist.
-
-    const bdlbb::Blob&
-    streamOut(bdlbb::BlobBufferFactory *bufferFactory) const;
-        // Return a blob having the BlazingMQ wire protocol representation of
-        // this instance, using the specified 'bufferFactory' to build the
-        // blob.  Behavior is undefined unless 'bufferFactory' is non-null.
-        // Note that if this instance is empty (i.e., 'numProperties()' == 0),
-        // returned blob will be empty.  In other words, an empty instance has
-        // no wire representation.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream& stream, const MessageProperties& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return a
-    // reference to the modifiable 'stream'.
-
-
-                      // ===============================
-                      // class MessagePropertiesIterator
-                      // ===============================
-
-class MessagePropertiesIterator {
-    // Provide a mechanism to iterator over all the properties in an instance
-    // of 'bmqa::MessageProperties'.  The order of the iteration is
-    // implementation defined.  An iterator is *valid* if it is associated with
-    // a property , otherwise it is *invalid*.  Behavior is undefined if the
-    // underlying instance of 'bmqa::MessageProperties' is modified during the
-    // lifetime of this iterator.
-
-  private:
-    // PRIVATE CONSTANTS
-    static const int k_MAX_SIZEOF_BMQP_MESSAGEPROPERTIESITER = 64;
-        // Constant representing the maximum size of a
-        // 'bmqp::MessagePropertiesIterator' object, so that the below
-        // AlignedBuffer is big enough.
-
-    // PRIVATE TYPES
-    typedef
-    bsls::AlignedBuffer<k_MAX_SIZEOF_BMQP_MESSAGEPROPERTIESITER> ImplBuffer;
-
-  private:
-    // DATA
-    mutable bmqp::MessagePropertiesIterator *d_impl_p;
-                                        // Pointer to the implementation object
-                                        // in 'd_buffer'.  This variable *must*
-                                        // *be* the first member of this class.
-                                        // If the value is null, the object
-                                        // has not been constructed in the
-                                        // 'd_buffer'.
-
-    ImplBuffer                               d_buffer;
-                                        // Buffer containing the implementation
-                                        // object
-
-  public:
-    // CREATORS
-    MessagePropertiesIterator();
-        // Create an empty iterator instance.  The only valid operations that
-        // can be invoked on an empty instance are copying, assignment and
-        // destruction.
-
-    explicit
-    MessagePropertiesIterator(const MessageProperties *properties);
-        // Create an iterator for the specified 'properties'.  Behavior is
-        // undefined unless 'properties' is not null.
-
-    MessagePropertiesIterator(const MessagePropertiesIterator& other);
-        // Copy constructor from the specified 'other'.
-
-    ~MessagePropertiesIterator();
-        // Destroy this iterator.
-
-    // MANIPULATORS
-    MessagePropertiesIterator&
-    operator=(const MessagePropertiesIterator& rhs);
-        // Assignment operator from the specified 'rhs'.
-
-    bool hasNext();
-        // Advance this iterator to refer to the next property of the
-        // associated 'MessageProperties' instance, if there is one and return
-        // true, return false otherwise.  Behavior is undefined unless this
-        // method is being invoked for the first time on this object or
-        // previous call to 'hasNext' returned true.  Note that the order of
-        // the iteration is not specified.
-
-    // ACCESSORS
-    const bsl::string& name() const;
-        // Return a reference offering non-modifiable access to the name of the
-        // property being pointed by the iterator.  Behavior is undefined
-        // unless last call to 'hasNext' returned true.
-
-    bmqt::PropertyType::Enum type() const;
-        // Return the data type of property being pointed by the iterator.
-        // Behavior is undefined unless last call to 'hasNext' returned true;
-
-    bool getAsBool() const;
-    char getAsChar() const;
-    short getAsShort() const;
-    bsl::int32_t getAsInt32() const;
-    bsls::Types::Int64 getAsInt64() const;
-    const bsl::string& getAsString() const;
-    const bsl::vector<char>& getAsBinary() const;
-        // Return property value having the corresponding type being currently
-        // being pointed by this iterator instance.  Behavior is undefined
-        // unless last call to 'hasNext' returned true.  Behavior is also
-        // undefined unless property's data type matches the requested type.
-};
-
-}  // close package namespace
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-
-                          // -----------------------
-                          // class MessageProperties
-                          // -----------------------
-
-inline
-bsl::ostream&
-bmqa::operator<<(bsl::ostream&                  stream,
-                 const bmqa::MessageProperties& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__mocksession_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__mocksession_8h.html deleted file mode 100644 index 1c59417c8..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__mocksession_8h.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - -bmqa_mocksession.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_mocksession.h File Reference

-
-
- -

Provide a mock session, implementing bmqa::AbstractSession. -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - -

-Classes

struct  bmqa::MockSessionUtil
struct  bmqa::MockSessionUtil::AckParams
struct  bmqa::MockSessionUtil::PushMessageParams
class  bmqa::MockSession
struct  bmqa::MockSession::Job
struct  bmqa::MockSession::Call

-Namespaces

namespace  bmqimp
namespace  bmqa

-Defines

#define BMQA_EXPECT_CALL(OBJ, CALL)   (((OBJ).expect_ ## CALL).fromLocation(__FILE__, __LINE__))
-

Detailed Description

-

Define Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
#define BMQA_EXPECT_CALL( OBJ,
 CALL 
)   (((OBJ).expect_ ## CALL).fromLocation(__FILE__, __LINE__))
-
-
- -
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__mocksession_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__mocksession_8h_source.html deleted file mode 100644 index c03a47d6f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__mocksession_8h_source.html +++ /dev/null @@ -1,1541 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2016-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_mocksession.h                                                 -*-C++-*-
-#ifndef INCLUDED_BMQA_MOCKSESSION
-#define INCLUDED_BMQA_MOCKSESSION
-
-//@PURPOSE: Provide a mock session, implementing 'bmqa::AbstractSession'.
-//
-//@CLASSES:
-//  bmqa::MockSession:     mechanism to mock a 'bmqa::Session'
-//  bmqa::MockSessionUtil: utility methods to create 'bmqa' events
-//
-//@DESCRIPTION: This component provides a mechanism implementing the
-// 'bmqa::AbstractSession' protocol, for mocking a 'bmqa::Session' and can be
-// used to write a test for an application that uses BMQ.  The
-// 'bmqa::MockSession' provides all the methods that 'Session' provides, with
-// added methods to specify return codes and emitted events and expected calls.
-// This can be used to test BlazingMQ application code without a connection to
-// the broker.  'bmqa::MockSessionUtil' is a utility namespace providing useful
-// methods to build 'bmqa::Event' objects that are typically only emitted from
-// the broker.
-//
-// The following documentation elucidates the API that this component provides
-// and some simple use cases to get you started.
-//
-//
-///Disclaimer
-///----------
-// THIS COMPONENT SHOULD ONLY BE USED IN TEST DRIVERS.  IT WILL NOT WORK WITH
-// PRODUCTION CODE.
-//
-//
-///Usable Components
-///-----------------
-//: o !BMQA_EXPECT_CALL!: Macro to specify an expected call to a
-//:                       'bmqa::MockSession' object. This macro is used to
-//:                       specify which is the next expected call on the
-//:                       'bmqa::MockSession'.  If an incorrect call is invoked
-//:                       or incorrect parameters are used, an assert will be
-//:                       invoked.
-//
-//: o !returning!       : Specify a return value for the expected call.  This
-//:                       is the value that will be returned when the method on
-//:                       'bmqa::MockSession' is invoked.
-//
-//: o !emitting!        : Specify an event to be 'emitted' when the expected
-//:                       call is invoked.  The events specified are enqueued
-//:                       to the internal event queue and are delivered to the
-//:                       application when 'emitEvent' is invoked.
-//
-///Static Helper Methods
-///---------------------
-//: o !createAckEvent!            : Create an acknowledgment message event for
-//:                                 messages posted to BMQ.
-//
-//: o !createPushEvent!           : Create a push message event for messages to
-//:                                 be consumed from BMQ.
-//
-//: o !createOpenQueueStatus!     : Create an openQueue result (relating to an
-//:                                 async open queue operation)
-//
-//: o !createConfigureQueueStatus!: Create a configureQueue result (relating to
-//:                                 an async configure queue operation)
-//
-//: o !createCloseQueueStatus!    : Create a closeQueue result (relating to an
-//:                                 async close queue operation)
-//
-//: o !createSessionEvent!        : Create a specified type of session event
-//:                                 except for events related to open, close
-//:                                 and configure queue.
-//
-// The static event builder specified above are typically built inside the
-// broker but are now available to be built in the SDK.  The expected use of
-// such events is to build them and specify them to either the
-// 'BMQA_EXPECT_CALL' macro in the 'emitting' parameter, or enqueued to the
-// 'bmqa::MockSession' directly through the 'enqueueEvent' method.  They can
-// then be emitted by invoking the 'emitEvent' method, which in turn would be
-// processed through the application-provided 'bmqa::SessionEventHandler'.
-//
-///Additional Note
-///---------------
-// 'MockSession' does not check if methods have been invoked in the correct
-// order.  The user is responsible for ensuring that the methods are invoked
-// and events enqueued in the correct order.
-//
-// The following methods do not emit events:
-//: o 'getQueueId'
-//: o 'loadMessageEventBuilder'
-//: o 'loadConfirmEventBuilder'
-//: o 'loadMessageProperties'
-//: o 'confirmMessage'
-//: o 'confirmMessages'
-//
-// Calls to the following methods do not require an expect:
-//: o 'getQueueId'
-//: o 'loadMessageEventBuilder'
-//: o 'loadConfirmEventBuilder'
-//: o 'loadMessageProperties'
-//
-//
-///Creating a mock session in asynchronous mode
-///--------------------------------------------
-// The 'MockSession' is created in asynchronous mode when a
-// 'SessionEventHandler' is provided to it.  If it is not provided a handler,
-// the 'MockSession' is started in synchronous mode, requiring the application
-// to call 'nextEvent' to access enqueued events.  A sample handler could look
-// like this:
-//
-//..
-//  class MyEventHandler : public bmqa::SessionEventHandler {
-//
-//    private:
-//      // DATA
-//      bsl::deque<bmqa::SessionEvent>    d_sessionEventsQueue;
-//      bsl::deque<bmqa::MessageEvents>   d_messageEventsQueue;
-//      bsl::deque<bmqa::OpenQueueStatus> d_openQueueResultsQueue;
-//      ...
-//
-//    public:
-//      // MANIPULATORS
-//      virtual void onSessionEvent(const bmqa::SessionEvent& event)
-//      {
-//          bsl::cout << "Received session event " << event << "\n";
-//          // some business logic, typically a switch case on
-//          // 'bmqt::SessionEventType'
-//          d_sessionEventsQueue.push_back(event);
-//      }
-//
-//      virtual void onMessageEvent(const bmqa::MessageEvent& event)
-//      {
-//          bsl::cout << "Received message event " << event << "\n";
-//          // some business logic, typically a switch case on
-//          // 'bmqt::MessageEventType'
-//          d_messageEventsQueue.push_back(event);
-//      }
-//
-//      void onOpenQueueStatus(const bmqa::OpenQueueStatus& result)
-//      {
-//          bsl::cout << "Received open queue result: " << result << "\n";
-//          // Some business logic
-//          d_openQueueResultsQueue.push_back(result);
-//      }
-//      ...
-//
-//      bmqa::SessionEvent popSessionEvent()
-//      {
-//          BSLS_ASSERT(d_sessionEventsQueue.size() > 0);
-//          bmqa::SessionEvent ret(d_receivedSessionEvents.front());
-//          d_receivedSessionEvents.pop_front();
-//          return ret;
-//      }
-//
-//      bmqa::MessageEvent popMessageEvent()
-//      {
-//          BSLS_ASSERT(d_messageEventsSize.size() > 0);
-//          bmqa::MessageEvent ret(d_receivedMessageEvents.front());
-//          d_receivedMessageEvents.erase(d_receivedMessageEvents.begin());
-//          return ret;
-//      }
-//
-//      bmqa::OpenQueueStatus popOpenQueueStatus()
-//      {
-//          BSLS_ASSERT(d_openQueueResultsQueue.size() > 0);
-//          bmqa::OpenQueueStatus ret(d_openQueueResultsQueue.front());
-//          d_openQueueResultsQueue.erase(d_openQueueResultsQueue.begin());
-//          return ret;
-//      }
-//      ...
-//  };
-//..
-//
-///Usage
-///-----
-// This section illustrates intended use of this component.
-//
-///Example 1
-///- - - - -
-// The folowing example shows a simple producer in asynchronous mode, which
-// will start the session, open a queue, post a message to the queue, generate
-// an ack for that message and finally stop the session (skipping over close
-// queue because it is analogous to opening a queue).  In theory, you can use
-// 'emitting' on the 'BMQA_EXPECT_CALL' macro and 'enqueueEvent'
-// interchangeably, but in practice it is important to note that events from
-// the broker are generated asynchronously, which means that they are not
-// emitted as you call the method.  You can control emission of events,
-// however, by delaying the call to 'emitEvent'.
-//
-// NOTE: As with 'bmqa::Session', calling 'nextEvent' is meaningless in
-//       asynchronous mode.
-//
-//..
-//  void unitTest()
-//  {
-//       // Create an event handler
-//       EventHandler eventHandler(d_allocator_p);
-//
-//       // The following static initializer method calls all the appropriate
-//       // static initializers of the underlying components needed for the
-//       // 'MockSession'.  The constructor of 'MockSession' will call it in
-//       // any case but if events need to be built outside the scope of the
-//       // creation of 'MockSession' you will need to explicitly invoke this
-//       // static initializer method.
-//       // bmqa::MockSession::initialize(s_allocator_p);
-//
-//       bslma::ManagedPtr<bmqa::SessionEventHandler> handlerMp;
-//       handlerMp.load(&eventHandler, 0, bslma::ManagedPtrUtil::noOpDeleter);
-//
-//       bmqa::MockSession mockSession(handlerMp,
-//                                     bmqt::SessionOptions(d_allocator_p),
-//                                     d_allocator_p);
-//
-//       bmqa::QueueId       queueId(bmqt::CorrelationId(1), d_allocator_p);
-//       bmqt::CorrelationId corrId(1);
-//
-//       // Expect a call to start and the call emits an 'e_CONNECTED' event.
-//       BMQA_EXPECT_CALL(mockSession, startAsync())
-//           .returning(0)
-//           .emitting(bmqa::MockSessionUtil::createSessionEvent(
-//                         bmqt::SessionEventType::e_CONNECTED,
-//                         0,   // statusCode
-//                         "",  // errorDescription
-//                         d_allocator_p));
-//
-//       // Make a call to startAsync and emit the event that is enqueued from
-//       // that call.
-//       ASSERT_EQ(mockSession.startAsync(), 0);
-//
-//       // Emit our enqueued event.  This fully sets up the session which is
-//       // now ready to use.  Typically you would have some business logic on
-//       // 'e_CONNECTED' that makes your application ready to use.
-//       ASSERT_EQ(mockSession.emitEvent(), true);
-//
-//       // Our event handler internally just stores the event emitted, so pop
-//       // it out and examine.
-//       bmqa::SessionEvent startEvent(eventHandler.popSessionEvent());
-//
-//       ASSERT_EQ(startEvent.type(), bmqt::SessionEventType::e_CONNECTED);
-//       ASSERT_EQ(startEvent.statusCode(), 0);
-//
-//       // Create the uri to your queue as you would in your application.
-//       const bmqt::Uri uri("bmq://my.domain/queue");
-//
-//       // Initialize the queue flags for a producer with acks enabled
-//       bsls::Types::Uint64 flags = 0;
-//       bmqt::QueueFlagsUtil::setWriter(&flags);
-//       bmqt::QueueFlagsUtil::setAck(&flags);
-//
-//       // We use the macro to expect a call to 'openQueueAsync', binding the
-//       // 'uri' and 'queueId' objects as well as the 'flags' that we created.
-//       bmqa::MockSession::OpenQueueCallback openQueueCallback =
-//           bdlf::BindUtil::bind(&EventHandler::onOpenQueueStatus,
-//                                &eventHandler,
-//                                bdlf::PlaceHolders::_1); // result
-//
-//       BMQA_EXPECT_CALL(mockSession,
-//                        openQueueAsync(uri1,
-//                                       flags,
-//                                       openQueueCallback));
-//       BMQA_EXPECT_CALL(mockSession,
-//                        openQueueAsync(uri, flags, openQueueCallback));
-//
-//       // Now that we have set our expectations we can try to open the queue.
-//       mockSession.openQueueAsync(uri1, flags, openQueueCallback);
-//
-//       // Since the application may not have direct access to the queue, we
-//       // need to get the 'queueId' from the session.  We can then bind this
-//       // retrieved 'queueId' to the 'e_QUEUE_OPEN_RESULT' session event and
-//       // enqueue it to the 'MockSession'.
-//       // Note: You can only get the 'queueId' after 'openQueue' or
-//       //       'openQueueAsync' has been invoked on the session.
-//       bmqa::QueueId         queueId1(corrId1);
-//       bmqa::OpenQueueStatus openQueueResult =
-//           bmqa::MockSessionUtil::createOpenQueueStatus(
-//                       queueId1,
-//                       bmqt::OpenQueueResult::e_TIMEOUT,  // statusCode
-//                       "Local Timeout",                   // errorDescription
-//                       d_allocator_p);
-//       mockSession.enqueueEvent(openQueueResult);
-//
-//       // We just enqueued a 'bmqa::OpenQueueStatus' to be emitted.  We can
-//       // emit it using 'emitEvent'.
-//       ASSERT_EQ(mockSession.emitEvent(), true);
-//
-//       //  Pop out this event from the handler and examine it.
-//       bmqa::OpenQueueStatus result = eventHandler.popOpenQueueStatus();
-//       ASSERT_EQ(result, openQueueResult);
-//
-//       // On emission of 'bmqa::OpenQueueStatus', the queue is fully open and
-//       // we can now post to it.
-//       bmqa::MessageEventBuilder builder;
-//       mockSession.loadMessageEventBuilder(&builder);
-//
-//       BMQA_EXPECT_CALL(mockSession, post(builder.messageEvent()))
-//           .returning(0);
-//
-//       // Use the builder to build a mesage event and pack it for the queue
-//       // that has been opened.  If you try to pack the message for an
-//       // invalid or closed queue, packing the message will fail. This has
-//       // been elided for brevity.
-//
-//       // Now that the event has been built we can 'post' it to BMQ.
-//       ASSERT_EQ(mockSession.post(builder.messageEvent()), 0);
-//
-//       // Simply creating a blob buffer factory on the stack to be used by
-//       // 'createAckEvent'.  Typically you would have one for the component.
-//       bdlbb::PooledBlobBufferFactory bufferFactory(4 * 1024, d_allocator_p);
-//
-//       // The method 'createAckEvent' takes a vector of 'AckParams' to
-//       // specify multiple acks per event, but here we are only acknowledging
-//       // 1 message.  Specify a positive ack with 'e_SUCCESS' here but you
-//       // can specify any from 'bmqt::AckResult::Enum'.
-//       bsl::vector<bmqa::MockSessionUtil::AckParams> acks(d_allocator_p);
-//       acks.emplace_back(bmqt::AckResult::e_SUCCESS,
-//                         bmqt::CorrelationId(1),
-//                         bmqt::MessageGUID(), // Real GUID needed if you want
-//                                              // to record ack messages.
-//                         bmqa::QueueId(1));
-//
-//       // Enqueuing ack event to be emitted.  We use the helper function
-//       // 'createAckEvent' to generate this event.
-//       mockSession.enqueueEvent(bmqa::MockSessionUtil::createAckEvent(
-//                                                             acks,
-//                                                             &bufferFactory,
-//                                                             d_allocator_p));
-//
-//       // Emit the enqueued ack event.
-//       ASSERT_EQ(mockSession.emitEvent(), true);
-//
-//       // As we did earlier, pop it out and examine.
-//       bmqa::MessageEvent ackEvent(eventHandler.popMessageEvent());
-//       ASSERT_EQ(ackEvent.type(), bmqt::MessageEventType::e_ACK);
-//       bmqa::MessageIterator mIter = ackEvent.messageIterator();
-//       mIter.nextMessage();
-//       ASSERT_EQ(mIter.message().ackStatus(), bmqt::AckResult::e_SUCCESS);
-//
-//       // This is a simple test.  After posting our message and receiving the
-//       // ack, we are now shutting down our application.  Therefore we expect
-//       // a 'stopAsync' call.
-//       BMQA_EXPECT_CALL(mockSession, stopAsync());
-//
-//       // Now make a call to 'stopAsync' to stop our session.
-//       mockSession.stopAsync();
-//
-//       // Here we are enqueuing an 'e_DISCONNECTED' event as you would
-//       // receive from the broker on a successful shutdown.
-//       mockSession.enqueueEvent(bmqa::MockSessionUtil::createSessionEvent(
-//                                      bmqt::SessionEventType::e_DISCONNECTED,
-//                                      0,   // statusCode
-//                                      "",  // errorDescription
-//                                      d_allocator_p));
-//       ASSERT_EQ(mockSession.emitEvent(), true);
-//
-//       // Our event handler internally just stores the event emitted, so pop
-//       // it out and examine.
-//       bmqa::SessionEvent stopEvent(eventHandler.popSessionEvent());
-//       ASSERT_EQ(stopEvent.type(), bmqt::SessionEventType::e_DISCONNECTED);
-//       ASSERT_EQ(stopEvent.statusCode(), 0);
-//
-//      // The corresponding pendant operation of the 'initialize' which would
-//      // need to be called only if 'initialize' was explicitly called.
-//      // bmqa::MockSession::shutdown();
-//   }
-//..
-//
-///Example 2
-///- - - - -
-// The folowing example shows a consumer in synchronous mode, which will start
-// the session, generate a push message (simulating the broker), confirm the
-// message and then stop the session.  Additionally, this test case also sets
-// all expectations up front before running the code, as this is the alternate
-// way of writing your test driver.
-//
-// NOTE: Using 'enqueue' or 'emitEvent' on 'bmqa::MockSession' or 'emitting' on
-//       the 'BMQA_EXPECT_CALL' macro in synchronous mode is meaningless.
-//
-//..
-//  void unitTest()
-//  {
-//      // MockSession created without an eventHandler.
-//      bmqa::MockSession mockSession(bmqt::SessionOptions(d_allocator_p),
-//                                    d_allocator_p);
-//
-//      // The following static initializer method calls all the appropriate
-//      // static initializers of the underlying components needed for the
-//      // 'MockSession'.  The constructor of 'MockSession' will call it in
-//      // any case but if events need to be built outside the scope of the
-//      // creation of 'MockSession' you will need to explicitly invoke this
-//      // static initializer method.
-//      // bmqa::MockSession::initialize(s_allocator_p);
-//
-//      // Create simple queueIds and corrIds
-//      bmqa::QueueId       queueId(1);
-//      bmqt::CorrelationId corrId(1);
-//
-//      // Create the uri to your queue as you would in your application.
-//      bmqt::Uri uri("bmq://my.domain/queue");
-//
-//      // Expecting that 'startAsync' will be called on the MockSession.
-//      BMQA_EXPECT_CALL(mockSession, startAsync())
-//          .returning(0);
-//
-//      // Simply creating a blob buffer factory on the stack to be used by
-//      // 'createAckEvent'.  Typically you would have one for the component.
-//      bdlbb::PooledBlobBufferFactory bufferFactory(4 * 1024, d_allocator_p);
-//
-//      // We then expect that 'nextEvent' will be called to return the
-//      // 'e_CONNECTED' event from the broker
-//      BMQA_EXPECT_CALL(mockSession, nextEvent(bsls::TimeInterval()))
-//          .returning(bmqa::MockSessionUtil::createSessionEvent(
-//                         bmqt::SessionEventType::e_CONNECTED,
-//                         bmqt::CorrelationId::autoValue(),
-//                         0,   // errorCode
-//                         "",  // errorDescription
-//                         d_allocator_p));
-//          // Note that we use an 'autoValue' for correlationId because it's
-//          // irrelevant for a 'CONNECTED' event.
-//
-//       // Initialize the queue flags for a consumer
-//       bsls::Types::Uint64 flags = 0;
-//       bmqt::QueueFlagsUtil::setReader(&flags);
-//
-//      // We use the macro to expect a call to 'openQueueSync', binding the
-//      // 'uri' and 'queueId' objects as well as the flags that we created.
-//      // Note that the 'queueId' object will be modified as 'openQueueSync'
-//      // takes it as an output parameter.
-//      bmqa::OpenQueueStatus expectedResult =
-//          bmqa::MockSessionUtil::createOpenQueueStatus(
-//                       queueId,
-//                       bmqt::OpenQueueResult::e_SUCCESS,  // statusCode
-//                       "",                                // errorDescription
-//                       d_allocator_p);
-//      BMQA_EXPECT_CALL(mockSession, openQueueSync(&queueId, uri, flags))
-//          .returning(expectedResult);
-//
-//      // Build our incoming message event.
-//      bsl::vector<bmqa::MockSessionUtil::PushMessageParams> pushMsgs(
-//                                                              d_allocator_p);
-//      bdlbb::Blob payload(&bufferFactory, d_allocator_p);
-//      bdlbb::BlobUtil::append(&payload, "hello", 6);
-//
-//      const char        guidHex[] = "00000000000000000000000000000001";
-//      bmqt::MessageGUID guid;
-//      guid.fromHex(guidHex);
-//
-//      bmqa::MessageProperties properties;
-//      mockSession.loadMessageProperties(&properties);
-//
-//      // For each message that we are supposed to receive from the broker,
-//      // we need to specify the payload, the queueId, a guid (the hex is
-//      // random but unique within your test driver) and properties which
-//      // could be empty.
-//      pushMsgs.emplace_back(payload, queueId, guid, properties);
-//      bmqa::Event pushMsgEvent = bmqa::MockSessionUtil::createPushEvent(
-//                                                              pushMsgs,
-//                                                              &bufferFactory,
-//                                                              d_allocator_p);
-//      BMQA_EXPECT_CALL(mockSession, nextEvent(bsls::TimeInterval()))
-//          .returning(pushMsgEvent);
-//
-//      // Next we expect a call to 'confirmMessages', to confirm the 1 message
-//      // that we received from the broker.
-//      bmqa::ConfirmEventBuilder confirmBuilder;
-//      mockSession.loadConfirmEventBuilder(&confirmBuilder);
-//      BMQA_EXPECT_CALL(mockSession, confirmMessages(&confirmBuilder))
-//          .returning(0);
-//
-//      // Expectations have been set up.  Now we run the code.
-//      // 'startAsync' is the first call.  We expect it to return 0 and we
-//      // expect 'nextEvent' to return the 'e_CONNECTED' session event.
-//      int rc = mockSession.startAsync();
-//      ASSERT_EQ(rc, 0);
-//      bmqa::SessionEvent startEvent = mockSession.nextEvent(
-//                                                        bsls::TimeInterval())
-//          .sessionEvent();
-//      ASSERT_EQ(startEvent.type(), bmqt::SessionEventType::e_CONNECTED);
-//      ASSERT_EQ(startEvent.statusCode(),       0);
-//      ASSERT_EQ(startEvent.errorDescription(), "");
-//
-//      // Next we expect a call to 'openQueue' to open the queue.
-//      bmqa::OpenQueueStatus result = mockSession.openQueueSync(&queueId,
-//                                                               uri,
-//                                                               10);
-//      ASSERT_EQ(result, expectedResult);
-//
-//      // Now our call to 'nextEvent' will generate a push message from the
-//      // broker, which we will then go on to confirm.
-//      bmqa::MessageEvent pushMsgEvt(mockSession.nextEvent(
-//                                                        bsls::TimeInterval())
-//                                                            .messageEvent());
-//      ASSERT_EQ(pushMsgEvt.type(), bmqt::MessageEventType::e_PUSH);
-//
-//      // Now that we have received a push message which has yet to be
-//      // confirmed, we can confirm that 1 unconfirmed message exists.
-//      ASSERT_EQ(mockSession.unconfirmedMessages(), 1U);
-//
-//      // Since there is only 1 message in our message event, we dont have to
-//      // iterate over the event but in reality you will want to iterate over
-//      // each message and add it to the confirm builder.
-//      bmqa::MessageIterator mIter = pushMsgEvt.messageIterator();
-//      mIter.nextMessage();
-//      confirmBuilder.addMessageConfirmation(mIter.message());
-//      ASSERT_EQ(confirmBuilder.messageCount(), 1);
-//
-//      // Confirm the messages using the builder that has been populated.
-//      rc = mockSession.confirmMessages(&confirmBuilder);
-//      ASSERT_EQ(rc, 0);
-//
-//      // Voila! We now have no unconfirmed messages.
-//      ASSERT_EQ(mockSession.unconfirmedMessages(), 0u);
-//      // 'stop' has been elided for brevity and is analogous to 'start'
-//
-//      // The corresponding pendant operation of the 'initialize' which would
-//      // need to be called only if 'initialize' was explicitly called.
-//      // bmqa::MockSession::shutdown();
-//  }
-//..
-//
-///Thread Safety
-///-------------
-// THREAD SAFE.
-
-// BMQ
-#include <bmqa_abstractsession.h>
-#include <bmqa_closequeuestatus.h>
-#include <bmqa_configurequeuestatus.h>
-#include <bmqa_messageeventbuilder.h>
-#include <bmqa_openqueuestatus.h>
-#include <bmqa_queueid.h>
-#include <bmqa_session.h>     // for 'bmqa::SessionEventHandler'
-#include <bmqscm_version.h>
-#include <bmqt_queueoptions.h>
-#include <bmqt_sessionoptions.h>
-
-// MWC
-#include <mwcst_statcontext.h>
-
-// BDE
-#include <ball_log.h>
-#include <bdlb_variant.h>
-#include <bdlbb_blob.h>
-#include <bdlbb_pooledblobbufferfactory.h>
-#include <bsl_cstddef.h>
-#include <bsl_deque.h>
-#include <bsl_functional.h>
-#include <bsl_memory.h>
-#include <bsl_string.h>
-#include <bsl_unordered_map.h>
-#include <bsl_unordered_set.h>
-#include <bslma_allocator.h>
-#include <bslma_managedptr.h>
-#include <bslma_usesbslmaallocator.h>
-#include <bslmf_nestedtraitdeclaration.h>
-#include <bslmt_mutex.h>
-#include <bsls_alignedbuffer.h>
-#include <bsls_assert.h>
-#include <bsls_timeinterval.h>
-#include <bsls_types.h>
-
-namespace BloombergLP {
-
-// FORWARD DECLARATION
-namespace bmqimp { class Event; }
-namespace bmqimp { class MessageCorrelationIdContainer; }
-namespace bmqimp { struct Stat; }
-
-
-namespace bmqa {
-
-// FORWARD DECLARATION
-class ConfirmEventBuilder;
-
-// Record an expected method 'CALL' into the specified mock session 'OBJ'.
-#define BMQA_EXPECT_CALL(OBJ, CALL)                                           \
-    (((OBJ).expect_ ## CALL).fromLocation(__FILE__, __LINE__))
-
-
-                            // ======================
-                            // struct MockSessionUtil
-                            // ======================
-
-struct MockSessionUtil {
-    // Utility methods to create 'bmqa' events
-
-  private:
-    // PRIVATE TYPES
-    typedef bsl::shared_ptr<bmqimp::Event> EventImplSp;
-                                        // Event impl shared pointer to access
-                                        // the pimpl of 'bmqa::Event'.
-
-    typedef bsl::shared_ptr<bmqimp::Queue> QueueImplSp;
-                                        // Queue impl shared pointer to access
-                                        // the pimpl of 'bmqa::QueueId'.
-
-  public:
-    // PUBLIC TYPES
-    struct AckParams {
-        // Struct representing parameters for an ack message.
-
-        // PUBLIC DATA
-        bmqt::AckResult::Enum d_status; // Status code
-
-        bmqt::CorrelationId   d_correlationId;
-                                        // Correlation id
-
-        bmqt::MessageGUID     d_guid;   // Message GUID of confirmed message
-
-        QueueId               d_queueId;
-                                        // Queue id for message being referred
-                                        // to
-
-        // CREATORS
-        AckParams(const bmqt::AckResult::Enum status,
-                  const bmqt::CorrelationId&  correlationId,
-                  const bmqt::MessageGUID&    guid,
-                  const bmqa::QueueId&        queueId);
-            // Create a new AckParams object with the specified 'status',
-            // 'correlationId', 'guid' and 'queueId'.
-    };
-
-    // PUBLIC TYPES
-    struct PushMessageParams {
-        // Struct representing parameters for a push message.
-
-        // PUBLIC DATA
-        bdlbb::Blob       d_payload;   // Payload of message
-
-        QueueId           d_queueId;    // Queue Id for this message
-
-        bmqt::MessageGUID d_guid;       // GUID for message
-
-        MessageProperties d_properties; // Optionally specified properties for
-                                        // message
-
-        // CREATORS
-        PushMessageParams(const bdlbb::Blob&       payload,
-                          const bmqa::QueueId&     queueId,
-                          const bmqt::MessageGUID& guid,
-                          const MessageProperties& properties);
-            // Create a new PushMessageParams object with the specified
-            // 'payload', 'queueId', 'guid' and 'properties'.
-    };
-
-    // CLASS METHODS
-    static
-    Event createAckEvent(const bsl::vector<AckParams>&  acks,
-                         bdlbb::BlobBufferFactory      *bufferFactory,
-                         bslma::Allocator              *allocator);
-        // Create and return an 'Event' configured as a message event of type
-        // 'e_ACK' with the specified 'acks' params using the specified
-        // 'bufferFactory' and the specified 'allocator' to supply memory.
-
-    static
-    Event
-    createPushEvent(const bsl::vector<PushMessageParams>&  pushEventParams,
-                    bdlbb::BlobBufferFactory              *bufferFactory,
-                    bslma::Allocator                      *allocator);
-        // Create and return an 'Event' configured as a message event of type
-        // 'e_PUSH' and with the specified 'pushEventParams', using the
-        // specified 'bufferFactory' and the specified 'allocator' to supply
-        // memory.
-
-    static
-    Event
-    createQueueSessionEvent(bmqt::SessionEventType::Enum  sessionEventType,
-                            QueueId                      *queueId,
-                            const bmqt::CorrelationId&    correlationId,
-                            int                           errorCode,
-                            const bslstl::StringRef&      errorDescription,
-                            bslma::Allocator             *allocator);
-        // DEPRECATED: Use the 'createOpenQueueStatus(...)',
-        //            'createConfigureQueueStatus(...)', or
-        //            'createCloseQueueStatus(...)' methods instead.  This
-        //            method will be marked as 'BSLS_ANNOTATION_DEPRECATED' in
-        //            future release of libbmq.
-
-    static
-    Event createSessionEvent(bmqt::SessionEventType::Enum  sessionEventType,
-                             const bmqt::CorrelationId&    correlationId,
-                             const int                     errorCode,
-                             const bslstl::StringRef&      errorDescription,
-                             bslma::Allocator             *allocator);
-        // Create and return an 'Event' configured as a session event with the
-        // specified 'sessionEventType', 'errorCode' and 'errorDescription' and
-        // using the specified 'allocator' to supply memory.  Note that this
-        // method will not create queue related session events.
-
-    static
-    OpenQueueStatus
-    createOpenQueueStatus(const QueueId&               queueId,
-                          bmqt::OpenQueueResult::Enum  statusCode,
-                          const bsl::string&           errorDescription,
-                          bslma::Allocator            *allocator        = 0);
-        // Create and return a 'bmqa::OpenQueueStatus' object with the
-        // specified 'queueId', 'statusCode', and 'errorDescription', using the
-        // optionally specified 'allocator' to supply memory in the result.
-
-    static
-    ConfigureQueueStatus
-    createConfigureQueueStatus(
-                       const QueueId&                    queueId,
-                       bmqt::ConfigureQueueResult::Enum  statusCode,
-                       const bsl::string&                errorDescription,
-                       bslma::Allocator                 *allocator        = 0);
-        // Create and return a 'bmqa::ConfigureQueueStatus' object with the
-        // specified 'queueId', 'statusCode', and 'errorDescription', using the
-        // optionally specified 'allocator' to supply memory in the result.
-
-    static
-    CloseQueueStatus
-    createCloseQueueStatus(const QueueId&                queueId,
-                           bmqt::CloseQueueResult::Enum  statusCode,
-                           const bsl::string&            errorDescription,
-                           bslma::Allocator             *allocator        = 0);
-        // Create and return a 'bmqa::CloseQueueStatus' object with the
-        // specified 'queueId', 'statusCode', and 'errorDescription', using the
-        // optionally specified 'allocator' to supply memory in the result.
-};
-
-
-                             // =================
-                             // class MockSession
-                             // =================
-
-class MockSession : public AbstractSession {
-    // Mechanism to mock a 'bmqa::Session'
-
-  public:
-    // CLASS METHODS
-    static void initialize(bslma::Allocator *allocator = 0);
-        // Perform a one time initialization needed by components used in
-        // 'MockSession' and 'MockSessionUtil'.  This method only needs to be
-        // called once before any other method, but can be called multiple
-        // times provided that for each call to 'initialize' there is a
-        // corresponding call to 'shutdown'.  Use the optionally specified
-        // 'allocator' for any memory allocation, or the 'global' allocator if
-        // none is provided.  Note that specifying the allocator is provided
-        // for test drivers only, and therefore users should let it default to
-        // the global allocator.
-        // NOTE: This method will need to be invoked only if the application
-        //       needs to use 'MockSessionUtil' outside the scope of
-        //       'MockSession'.
-
-    static void shutdown();
-        // Pendant operation of the 'initialize' one.  The number of calls to
-        // 'shutdown' must equal the number of calls to 'initialize', without
-        // corresponding 'shutdown' calls, to fully destroy the objects.  It is
-        // safe to call 'initialize' after calling 'shutdown'.  The behaviour
-        // is undefined if 'shutdown' is called without 'initialize' first
-        // being called.
-
-    // PUBLIC TYPES
-    typedef bsl::function<void (const char *description,
-                                const char *file,
-                                int         line)> FailureCb;
-        // Callback used to inform the test driver of an assertion failure.
-        // The application test driver using the 'MockSession' may provide an
-        // implementation that makes the test driver fail (for instance,
-        // calling BDE's test driver ASSERT macro).
-
-  private:
-    // CLASS-SCOPE CATEGORY
-    BALL_LOG_SET_CLASS_CATEGORY("BMQA.MOCKSESSION");
-
-  private:
-    // CONSTANTS
-    static const int k_MAX_SIZEOF_MWCC_TWOKEYHASHMAP = 256;
-        // Constant representing the maximum size of a 'mwcc::TwoKeyHashMap'
-        // object, so that the below AlignedBuffer is big enough.  No 'mwc'
-        // headers can be included in 'bmq' public headers, to prevent build
-        // time dependency.
-
-    // PRIVATE TYPES
-    typedef bsls::AlignedBuffer<k_MAX_SIZEOF_MWCC_TWOKEYHASHMAP>
-                                                           TwoKeyHashMapBuffer;
-        // Aligned buffer holding the two key hash map
-
-    typedef bsl::shared_ptr<bmqimp::Queue>                 QueueImplSp;
-        // Cast for bmqimp::Queue to access internal data
-
-    typedef bsl::shared_ptr<bmqimp::Event>                 EventImplSp;
-        // Cast for bmqimp::Event to access internal data
-
-    typedef bsl::shared_ptr<bmqimp::Stat>                  StatImplSp;
-        // Convenience for bmqimp::Stat
-
-    typedef bsl::shared_ptr<bmqimp::MessageCorrelationIdContainer>
-                                                      CorrelationIdContainerSp;
-        // Convenience for bmqimp::MessageCorrelationIdContainer
-
-    typedef bsl::function<void()>                          CallbackFn;
-
-    struct Job {
-        // Struct holding attributes associated with an asynchronous queue
-        // operation executed with a user-specified callback
-
-        // PUBLIC DATA
-        CallbackFn                   d_callback;
-                                      // Signature of a 'void' callback method
-
-        QueueImplSp                  d_queue;
-                                      // Queue associated with this job
-
-        bmqt::SessionEventType::Enum d_type;
-                                      // Type of queue event associated with
-                                      // this job (OPEN,CONFIGURE, or CLOSE)
-
-        int                          d_status;
-                                      // Status of the queue operation
-    };
-
-    typedef bdlb::Variant<Event, Job>                      EventOrJob;
-
-    enum Method {
-        // Enumeration for the methods in the 'MockSession' protocol.  Each
-        // enum value corresponds to a method.
-        e_START
-      , e_START_ASYNC
-      , e_STOP
-      , e_STOP_ASYNC
-      , e_FINALIZE_STOP
-      , e_OPEN_QUEUE
-      , e_OPEN_QUEUE_SYNC
-      , e_OPEN_QUEUE_ASYNC
-      , e_OPEN_QUEUE_ASYNC_CALLBACK
-      , e_CLOSE_QUEUE
-      , e_CLOSE_QUEUE_SYNC
-      , e_CLOSE_QUEUE_ASYNC
-      , e_CLOSE_QUEUE_ASYNC_CALLBACK
-      , e_CONFIGURE_QUEUE
-      , e_CONFIGURE_QUEUE_SYNC
-      , e_CONFIGURE_QUEUE_ASYNC
-      , e_CONFIGURE_QUEUE_ASYNC_CALLBACK
-      , e_NEXT_EVENT
-      , e_POST
-      , e_CONFIRM_MESSAGE
-      , e_CONFIRM_MESSAGES
-    };
-
-    struct Call {
-        // PUBLIC TYPES
-        typedef bsl::vector<EventOrJob>  EventsAndJobs; // Vector of events
-
-        // PUBLIC DATA
-        int                        d_rc;
-                                        // Value to be returned on call
-
-        Method                     d_method;
-                                        // The type of method
-
-        int                        d_line;
-                                        // Line number
-
-        bsl::string                d_file;
-                                        // File
-
-        bmqt::Uri                  d_uri;
-                                        // Uri associated with this call
-
-        bsls::Types::Uint64        d_flags;
-                                        // Flags associated with this call
-
-        bmqt::QueueOptions         d_queueOptions;
-                                        // QueueOptions associated with this
-                                        // call
-
-        bsls::TimeInterval         d_timeout;
-                                        // Timeout interval associated with
-                                        // this call
-
-        OpenQueueCallback          d_openQueueCallback;
-                                        // Callback to be invoked upon emission
-                                        // of an async openQueue (if callback
-                                        // was provided)
-
-        ConfigureQueueCallback     d_configureQueueCallback;
-                                        // Callback to be invoked upon emission
-                                        // of an async configureQueue (if
-                                        // callback was provided)
-
-        CloseQueueCallback         d_closeQueueCallback;
-                                        // Callback to be invoked upon emission
-                                        // of an async closeQueue (if callback
-                                        // was provided)
-
-        bmqa::OpenQueueStatus      d_openQueueResult;
-                                        // The result of an open queue
-                                        // operation
-
-        bmqa::ConfigureQueueStatus d_configureQueueResult;
-                                        // The result of a configure queue
-                                        // operation
-
-        bmqa::CloseQueueStatus     d_closeQueueResult;
-                                        // The result of a close queue
-                                        // operation
-
-        EventsAndJobs              d_emittedEvents;
-                                        // Events to be emitted on this call
-
-        Event                      d_returnEvent;
-                                        // Event to be returned on this call
-
-        MessageEvent               d_messageEvent;
-                                        // MessageEvent associated with this
-                                        // call
-
-        MessageConfirmationCookie  d_cookie;
-                                        // MessageConfirmationCookie associated
-                                        // with this call
-
-        bslma::Allocator          *d_allocator_p;
-                                        // Allocator
-
-        // TRAITS
-        BSLMF_NESTED_TRAIT_DECLARATION(Call, bslma::UsesBslmaAllocator)
-
-        // CREATORS
-        Call(Method method, bslma::Allocator *allocator);
-            // Create a Call object having the specified 'method' and the
-            // specified 'allocator' to supply memory.
-
-        Call(const Call& other, bslma::Allocator *allocator);
-
-        // MANIPULATORS
-        Call& fromLocation(const char* file, int line);
-            // Record the specified 'file' and 'line' that this call was
-            // created from.
-            //
-            // NOTE: This function is invoked through the macro only.
-
-        Call& returning(int rc);
-            // Specify the return value for this function call to be the
-            // specified 'rc'.
-
-        Call& returning(const bmqa::OpenQueueStatus& result);
-            // Specify the return value for this function call to be the
-            // specified 'result'.  The behavior is undefined unless this call
-            // corresponds to a synchronous open queue.
-
-        Call& returning(const bmqa::ConfigureQueueStatus& result);
-            // Specify the return value for this function call to be the
-            // specified 'result'.  The behavior is undefined unless this call
-            // corresponds to a synchronous configure queue.
-
-        Call& returning(const bmqa::CloseQueueStatus& result);
-            // Specify the return value for this function call to be the
-            // specified 'result'.  The behavior is undefined unless this call
-            // corresponds to a synchronous close queue.
-
-        Call& returning(const Event& event);
-            // Specify the return value for this function call to be the
-            // specified 'event'.
-
-        Call& emitting(const Event& event);
-            // Specify the specified 'event' to be emitted on this function
-            // call.
-
-        Call& emitting(const OpenQueueStatus& openQueueResult);
-            // Specify the specified 'openQueueResult' to be emitted on this
-            // function call.  The behavior is undefined unless the call is an
-            // 'openQueueAsync' provided a callback.
-
-        Call& emitting(const ConfigureQueueStatus& configureQueueResutl);
-            // Specify the specified 'configureQueueResult' to be emitted on
-            // this function call.  The behavior is undefined unless the call
-            // is a 'configureQueueResult' provided a callback.
-
-        Call& emitting(const CloseQueueStatus& closeQueueResult);
-            // Specify the specified 'closeQueueResult' to be emitted on this
-            // function call.  The behavior is undefined unless the call is a
-            // 'closeQueueResult' provided a callback.
-
-        // ACCESSORS
-        const char* methodName() const;
-            // Get the method name of this call.
-    };
-
-    typedef bsl::deque<Call> CallQueue;
-        // Queue of expected calls
-
-    typedef bsl::deque<bmqa::MessageEvent> PostedEvents;
-        // Queue of posted events
-
-    // DATA
-    bdlbb::PooledBlobBufferFactory          d_blobBufferFactory;
-                                        // Buffer factory
-
-    bslma::ManagedPtr<SessionEventHandler>  d_eventHandler_mp;
-                                        // Event handler (set only in
-                                        // asynchronous mode)
-
-    mutable CallQueue                       d_calls;
-                                        // sequence of method calls that are
-                                        // expected
-
-    mutable bsl::deque<EventOrJob>          d_eventsAndJobs;
-                                        // events waiting to be emitted
-
-    bsl::unordered_set<bmqt::MessageGUID>   d_unconfirmedGUIDs;
-                                        // GUIDS of unconfirmed messages
-
-    TwoKeyHashMapBuffer                     d_twoKeyHashMapBuffer;
-                                        // Aligned buffer of two key hash map
-                                        // uri, corrid to queues
-
-    FailureCb                               d_failureCb;
-                                        // Currently installed failure callback
-                                        // that is invoked if methods are
-                                        // called incorrectly or out of order.
-
-    int                                     d_lastQueueId;
-                                        // QueueId
-
-    CorrelationIdContainerSp                d_corrIdContainer_sp;
-                                        // Mock correlationId container
-
-    PostedEvents                            d_postedEvents;
-                                        // Queue of posted events
-
-    mutable bslmt::Mutex                    d_mutex;
-                                        // protects all public methods
-
-    mwcst::StatContext                      d_rootStatContext;
-                                        // Top level stat context for this
-                                        // mocked Session.
-
-    StatImplSp                              d_queuesStats_sp;
-                                        // Stats for all queues
-
-    bmqt::SessionOptions                    d_sessionOptions;
-                                        // Session Options for current session
-
-    bslma::Allocator                       *d_allocator_p;
-                                        // Allocator
-
-  private:
-    // PRIVATE CLASS METHODS
-    static const char *toAscii(const Method method);
-        // Get the string representation of the specified 'method'.
-
-    // PRIVATE MANIPULATORS
-    void initializeStats();
-        // Configure this component to keep track of statistics.
-
-    void
-    openQueueImp(QueueId                   *queueId,
-                 const bmqt::QueueOptions&  options,
-                 const bmqt::Uri&           uri,
-                 bsls::Types::Uint64        flags,
-                 bool                       async);
-        // Open the specified 'queueId' with the specified 'uri' and 'flags'.
-        // If the specified 'async' param is true, set the state of the
-        // specified 'queueId' to 'e_OPENING', else set it to 'e_OPENED.  This
-        // is to account for the fact that in 'openQueue' blocks until the
-        // queue is opened whereas 'openQueueAsync' returns immediately and the
-        // state changes to opened on emission of a successfull open queue
-        // response.
-
-    void processIfQueueEvent(Event *event);
-        // Modify the queues specified by the 'event' if this event is a
-        // session event of type 'e_QUEUE_OPEN_RESULT' or
-        // 'e_QUEUE_CLOSE_RESULT'.
-
-    void processIfQueueJob(Job *job);
-        // Modify the queue(s) associated with the specified 'job' if this job
-        // is associated with an operation of type 'e_QUEUE_OPEN_RESULT' or
-        // 'e_QUEUE_CLOSE_RESULT'.
-
-    void processIfPushEvent(const Event& event);
-        // Record the messages in the specified 'event' as unconfirmed if it is
-        // a push message event.
-
-    // PRIVATE ACCESSORS
-    void assertWrongCall(const Method method) const;
-        // Invoke the failure callback because of a wrong call to the specified
-        // 'method'.
-
-    void assertWrongCall(const Method method, const Call&  expectedCall) const;
-        // Invoke the failure callback because of a wrong call to the specified
-        // 'method', while the specified 'expectedCall' was expected instead.
-
-    template<class T, class U>
-    void assertWrongArg(const T&      expected,
-                        const U&      actual,
-                        const Method  method,
-                        const char   *arg,
-                        const Call&   call) const;
-        // Verify that the specified 'actual' value is equal to the specified
-        // 'expected' value for argument 'argName' (a string) in the call to
-        // 'method' (a Method enum) in 'call' (a Call).  Invoke the failure
-        // callback if not.
-
-  public:
-    // TRAITS
-    BSLMF_NESTED_TRAIT_DECLARATION(MockSession, bslma::UsesBslmaAllocator)
-
-    // CREATORS
-    explicit
-    MockSession(const bmqt::SessionOptions&  options = bmqt::SessionOptions(),
-                bslma::Allocator            *allocator = 0);
-        // Create a new 'MockSession' in *synchronous* mode using the
-        // optionally specified 'options'.  In such mode, events have to be
-        // fetched by the application using the 'nextEvent()' method.
-        // Optionally specify an 'allocator' used to supply memory.  If
-        // 'allocator' is 0, the currently installed default allocator is used.
-
-    explicit
-    MockSession(
-      bslma::ManagedPtr<SessionEventHandler>  eventHandler,
-      const bmqt::SessionOptions&             options = bmqt::SessionOptions(),
-      bslma::Allocator                       *allocator = 0);
-        // Create a 'MockSession' in *asynchronous* mode using the specified
-        // 'eventHandler' as callback for event processing and the optionally
-        // specified 'options'.  Optionally specify an 'allocator' used to
-        // supply memory.  If the optionally specified 'allocator' is 0, the
-        // currently installed default allocator is used.
-
-    ~MockSession() BSLS_KEYWORD_OVERRIDE;
-        // Stop the 'MockSession' and destroy this object.
-
-    // MANIPULATORS
-    //   (specific to 'bmqa::MockSession')
-    void enqueueEvent(const bmqa::Event& event);
-        // Enqueue the specified 'event' in the queue of events to be emitted.
-        // NOTE: This method is unique to 'MockSession' and is valid only in
-        //       unit tests.
-
-    bool emitEvent(int numEvents = 1);
-        // Emit the specified number of 'numEvents' from the queue of events to
-        // be emitted.  Return true if at least one event was emitted, and
-        // false otherwise.
-        // NOTE: This method is unique to 'MockSession' and is valid only in
-        //       unit tests.
-
-    Call&
-    expect_start(const bsls::TimeInterval& timeout = bsls::TimeInterval());
-    Call&
-    expect_startAsync(
-                     const bsls::TimeInterval& timeout = bsls::TimeInterval());
-    Call& expect_stop();
-    Call& expect_stopAsync();
-    Call& expect_finalizeStop();
-    Call&
-    expect_openQueue(
-                    QueueId                   *queueId,
-                    const bmqt::Uri&           uri,
-                    bsls::Types::Uint64        flags,
-                    const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-    Call&
-    expect_openQueueSync(
-                    QueueId                   *queueId,
-                    const bmqt::Uri&           uri,
-                    bsls::Types::Uint64        flags,
-                    const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-
-    Call&
-    expect_openQueueAsync(
-                    QueueId                   *queueId,
-                    const bmqt::Uri&           uri,
-                    bsls::Types::Uint64        flags,
-                    const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-    Call&
-    expect_openQueueAsync(
-                   QueueId                   *queueId,
-                   const bmqt::Uri&           uri,
-                   bsls::Types::Uint64        flags,
-                   const OpenQueueCallback&   callback,
-                   const bmqt::QueueOptions&  options  = bmqt::QueueOptions(),
-                   const bsls::TimeInterval&  timeout  = bsls::TimeInterval());
-
-    Call&
-    expect_closeQueue(
-                    QueueId                   *queueId,
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-    Call&
-    expect_closeQueueSync(
-                    QueueId                   *queueId,
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-
-    Call&
-    expect_closeQueueAsync(
-                    QueueId                   *queueId,
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-    Call&
-    expect_closeQueueAsync(
-                   QueueId                   *queueId,
-                   const CloseQueueCallback&  callback,
-                   const bsls::TimeInterval&  timeout  = bsls::TimeInterval());
-    Call&
-    expect_configureQueue(
-                    QueueId                   *queueId,
-                    const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-    Call&
-    expect_configureQueueSync(
-                    QueueId                   *queueId,
-                    const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-    Call&
-    expect_configureQueueAsync(
-                    QueueId                   *queueId,
-                    const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval());
-
-    Call&
-    expect_configureQueueAsync(
-               QueueId                       *queueId,
-               const bmqt::QueueOptions&      options,
-               const ConfigureQueueCallback&  callback,
-               const bsls::TimeInterval&      timeout  = bsls::TimeInterval());
-
-    Call&
-    expect_nextEvent(const bsls::TimeInterval& timeout = bsls::TimeInterval());
-    Call& expect_post(const MessageEvent& messageEvent);
-    Call& expect_confirmMessage(const Message& message);
-    Call& expect_confirmMessage(const MessageConfirmationCookie& cookie);
-    Call& expect_confirmMessages(ConfirmEventBuilder *builder);
-        // Expect a call to the function and return a reference offering
-        // modifiable access to the corresponding 'Call' object.
-        //
-        // NOTE: Do not use these method directly, use the macro
-        //       'BMQA_EXPECT_CALL' instead.
-
-    // MANIPULATORS
-    //   (virtual bmqa::AbstractSession)
-    int start(const bsls::TimeInterval& timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-    int startAsync(const bsls::TimeInterval& timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Start the 'MockSession' with an optionally specified 'timeout'.  The
-        // return values are elucidated in 'bmqt::GenericResult'.  In general a
-        // call to 'start' or 'startAsync' emits a 'SessionEvent' of type
-        // 'e_CONNECTED' or 'e_CONNECTION_TIMEOUT'.
-
-    void stop() BSLS_KEYWORD_OVERRIDE;
-    void stopAsync() BSLS_KEYWORD_OVERRIDE;
-        // Stop the 'MockSession'.  In general a call to 'start' or
-        // 'startAsync' emits a 'SessionEvent' of type 'e_DISCONNECTED' or
-        // 'e_CONNECTION_TIMEOUT'.
-
-    void finalizeStop() BSLS_KEYWORD_OVERRIDE;
-        // This method is only to be used if the session is in synchronous mode
-        // (i.e., not using the EventHandler): it must be called once all
-        // threads getting events with 'nextEvent()' have been joined.
-
-    void loadMessageEventBuilder(MessageEventBuilder *builder)
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Load the 'MessageEventBuilder' into the specified 'builder' output
-        // parameter.
-
-    void loadConfirmEventBuilder(ConfirmEventBuilder *builder)
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Load the 'ConfirmEventBuilder' into the specified 'builder' output
-        // parameter.
-
-    void loadMessageProperties(MessageProperties *buffer)
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Load the 'MessageProperties' into the specified 'buffer' output
-        // parameter.
-
-    ///Queue management
-    ///----------------
-    int getQueueId(QueueId *queueId, const bmqt::Uri& uri) const
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Load 'QueueId' object associated with the specified 'uri' into the
-        // specified 'queueId' output parameter.
-
-    int getQueueId(QueueId                    *queueId,
-                   const bmqt::CorrelationId&  correlationId) const
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Load 'QueueId' object associated with the specified 'correlationId'
-        // into the specified 'queueId' output parameter.
-
-    int
-    openQueue(QueueId                   *queueId,
-              const bmqt::Uri&           uri,
-              bsls::Types::Uint64        flags,
-              const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-              const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // DEPRECATED: Use the 'openQueueSync(QueueId *queueId...)' instead.
-        //             This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    OpenQueueStatus
-    openQueueSync(QueueId                   *queueId,
-                  const bmqt::Uri&           uri,
-                  bsls::Types::Uint64        flags,
-                  const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                  const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Open the queue having the specified 'uri' with the specified 'flags'
-        // (a combination of the values defined in 'bmqt::QueueFlags::Enum'),
-        // using the specified 'queueId' to correlate events related to that
-        // queue.  The object 'queueId' referring to is modified, so the
-        // 'queueId' represents the actual queue uri, flags and options.
-        // Return a result providing the status and context of the operation.
-        // Use the optionally specified 'options' to configure some advanced
-        // settings.  In general, a call to 'openQueueSync' emits nothing.
-
-    int
-    openQueueAsync(QueueId                   *queueId,
-                   const bmqt::Uri&           uri,
-                   bsls::Types::Uint64        flags,
-                   const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                   const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // DEPRECATED: Use the 'openQueueAsync(...)' with callback flavor
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    void
-    openQueueAsync(QueueId                   *queueId,
-                   const bmqt::Uri&           uri,
-                   bsls::Types::Uint64        flags,
-                   const OpenQueueCallback&   callback,
-                   const bmqt::QueueOptions&  options  = bmqt::QueueOptions(),
-                   const bsls::TimeInterval&  timeout  = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Asynchronously open the queue having the specified 'uri' with the
-        // specified 'flags' (a combination of the values defined in
-        // 'bmqt::QueueFlags::Enum').  The object 'queueId' referring to is
-        // modified, so the 'queueId' represents the actual queue uri, flags
-        // and options.  The result of the operation is communicated to the
-        // specified 'callback' via a 'bmqa::OpenQueueStatus', providing an
-        // automatically generated correlation 'queueId' and the status and
-        // context of the requested operation.  Use the optionally specified
-        // 'options' to configure some advanced settings.  In general, a call
-        // to 'openQueueAsync' does not emit a 'SessionEvent', but rather
-        // invokes the 'callback' (if provided) instead when the corresponding
-        // 'emitEvent' is called.
-        //
-        // NOTE: 'openQueueAsync' updates the queue state to 'e_OPENING' which
-        //       is further updated upon invocation of the 'callback' (if
-        //       provided) with a successful 'bmqa::OpenQueueStatus'.
-
-    int
-    configureQueue(QueueId                   *queueId,
-                   const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                   const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // DEPRECATED: Use the 'configureQueueSync(QueueId *queueId...)
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    ConfigureQueueStatus
-    configureQueueSync(const QueueId             *queueId,
-                       const bmqt::QueueOptions&  options,
-                       const bsls::TimeInterval&  timeout)
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Configure the queue identified by the specified 'queueId' using the
-        // specified 'options' to configure some advanced settings and return a
-        // result providing the status and context of the operation.  In
-        // general, a call to 'configureQueueSync' emits nothing.
-
-    int
-    configureQueueAsync(
-                    QueueId                   *queueId,
-                    const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // DEPRECATED: Use the 'configureQueueAsync(...)' with callback flavor
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    void
-    configureQueueAsync(
-               const QueueId                 *queueId,
-               const bmqt::QueueOptions&      options,
-               const ConfigureQueueCallback&  callback,
-               const bsls::TimeInterval&      timeout  = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Asynchronously configure the queue identified by the specified
-        // 'queueId' using the specified 'options' to configure some advanced
-        // settings.  The result of the operation is communicated to the
-        // specified 'callback' via a 'bmqa::ConfigureQueueStatus', providing
-        // the status and context of the requested operation.  In general, a
-        // call to 'configureQueueAsync' does not emit a 'SessionEvent', but
-        // rather invokes the 'callback' (if provided) instead when the
-        // corresponding 'emitEvent' is called.
-
-    int
-    closeQueue(QueueId                   *queueId,
-               const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // DEPRECATED: Use the 'closeQueueSync(QueueId *queueId...)' instead.
-        //             This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    CloseQueueStatus
-    closeQueueSync(const QueueId             *queueId,
-                   const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Close the queue identified by the specified 'queueId' using the
-        // specified 'timeout'.  Populate the optionally specified 'result'
-        // with the status and context of the operation and return a value
-        // providing the status of the operation.  In general, a call to
-        // 'closeQueueSync' emits nothing.
-
-    int
-    closeQueueAsync(QueueId                   *queueId,
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // DEPRECATED: Use the 'closeQueueAsync(...)' with callback flavor
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    void
-    closeQueueAsync(
-                   const QueueId             *queueId,
-                   const CloseQueueCallback&  callback,
-                   const bsls::TimeInterval&  timeout  = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Asynchronously close the queue identified by the specified 'queueId'
-        // using the specified 'timeout'.  The result of the operation is
-        // communicated to the specified 'callback' via a
-        // 'bmqa::CloseQueueStatus', providing the status and context of the
-        // requested operation.  In general, a call to 'closeQueueAsync' does
-        // not emit a 'SessionEvent', but rather invokes the 'callback' (if
-        // provided) instead when the corresponding 'emitEvent' is called.
-
-    Event nextEvent(const bsls::TimeInterval& timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Returns the nextEvent emitted.
-        //
-        // NOTE: This method should only be used when the 'MockSession' has
-        //       been created in synchronous mode.  It is invalid if used in
-        //       asynchronous mode and your test case is likely to be faulty
-        //       if used with such a set up.
-
-    int post(const MessageEvent& messageEvent) BSLS_KEYWORD_OVERRIDE;
-        // Post the specified 'messageEvent'.  Return values are defined as per
-        // 'bmqt::PostResult'.  In general a call to 'post' emits a
-        // 'MessageEvent' of type 'e_ACK' or no response if acks are not
-        // requested.
-
-    int confirmMessage(const Message& message) BSLS_KEYWORD_OVERRIDE;
-    int confirmMessage(const MessageConfirmationCookie& cookie)
-                                                         BSLS_KEYWORD_OVERRIDE;
-    int confirmMessages(ConfirmEventBuilder *builder) BSLS_KEYWORD_OVERRIDE;
-        // Confirm messages specified by the 'message', 'cookie' or 'builder'.
-        // Return values are defined as per 'bmqt::GenericResult'.  No event is
-        // emitted for calls to 'confirmMessage'.
-
-    int configureMessageDumping(const bslstl::StringRef& command)
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // NOT IMPLEMENTED
-
-    void setFailureCallback(const FailureCb& failureCb);
-        // Set the failure callback of to be the specified 'failureCb'.  This
-        // callback is invoked whenever an expectation set by the test driver
-        // is not met.
-
-    bool popPostedEvent(bmqa::MessageEvent *event);
-        // Load into the specified 'event' the next posted event on this
-        // session, if any, and return true; leave 'event' unchanged and return
-        // false otherwise.
-
-    // ACCESSORS
-    size_t unconfirmedMessages() const;
-        // Get the number of unconfirmed messages.  This corresponds to the
-        // number of push messages enqueued to the session object but not yet
-        // confirmed by the application.
-};
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-                             // -----------------
-                             // class MockSession
-                             // -----------------
-
-inline
-void
-MockSession::setFailureCallback(const FailureCb& failureCb)
-{
-    d_failureCb = failureCb;
-}
-
-inline
-size_t
-MockSession::unconfirmedMessages() const
-{
-    return d_unconfirmedGUIDs.size();
-}
-
-inline
-bool
-MockSession::popPostedEvent(bmqa::MessageEvent *event)
-{
-    // PRECONDITIONS
-    BSLS_ASSERT(event);
-
-    bslmt::LockGuard<bslmt::Mutex> guard(&d_mutex);                   // LOCKED
-
-    if (d_postedEvents.empty()) {
-        return false;                                                 // RETURN
-    }
-
-    *event = d_postedEvents.front();
-    d_postedEvents.pop_front();
-
-    return true;
-}
-
-}  // close package namespace
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__openqueuestatus_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__openqueuestatus_8h.html deleted file mode 100644 index 4defd93bd..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__openqueuestatus_8h.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - -bmqa_openqueuestatus.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_openqueuestatus.h File Reference

-
-
- -

Provide Value-Semantic Type for an open queue operation status. -More...

- -

Go to the source code of this file.

- - - - - - - - - -

-Classes

class  bmqa::OpenQueueStatus

-Namespaces

namespace  bmqa

-Functions

bool bmqa::operator== (const OpenQueueStatus &lhs, const OpenQueueStatus &rhs)
bool bmqa::operator!= (const OpenQueueStatus &lhs, const OpenQueueStatus &rhs)
bsl::ostream & bmqa::operator<< (bsl::ostream &stream, const OpenQueueStatus &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__openqueuestatus_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__openqueuestatus_8h_source.html deleted file mode 100644 index ac1d80495..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__openqueuestatus_8h_source.html +++ /dev/null @@ -1,265 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2019-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_openqueuestatus.h                                             -*-C++-*-
-#ifndef INCLUDED_BMQA_OPENQUEUESTATUS
-#define INCLUDED_BMQA_OPENQUEUESTATUS
-
-//@PURPOSE: Provide Value-Semantic Type for an open queue operation status
-//
-//@CLASSES:
-//  bmqa::OpenQueueStatus: value-semantic type for an openQueue result
-//
-//@DESCRIPTION: This component provides a specific value-semantic type for the
-// result of an open queue operation with the BlazingMQ broker, providing
-// applications with the result and context of the requested operation.
-//
-// A 'bmqa::OpenQueueStatus' type is composed of 3 attributes:
-//: o !result!:           indicates the status of the operation (success,
-//:                       failure, etc.) as specified in the corresponding
-//:                       result code enum, 'bmqt::OpenQueueResult::Enum'
-//: o !queueId!:          queueId associated with the open queue operation
-//: o !errorDescription!: optional string with a human readable description of
-//:                       the error, if any
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqa_queueid.h>
-#include <bmqt_resultcode.h>
-
-// BDE
-#include <bsl_iostream.h>
-#include <bsl_string.h>
-#include <bslma_allocator.h>
-#include <bslma_default.h>
-#include <bslma_usesbslmaallocator.h>
-#include <bslmf_nestedtraitdeclaration.h>
-
-
-namespace BloombergLP {
-namespace bmqa {
-
-                           // =====================
-                           // class OpenQueueStatus
-                           // =====================
-
-class OpenQueueStatus {
-    // A value-semantic type for an open queue operation with the message queue
-    // broker.
-
-  private:
-    // DATA
-    QueueId                     d_queueId;
-                                        // queueId associated with the open
-                                        // queue operation
-
-    bmqt::OpenQueueResult::Enum d_result;
-                                        // Result code of the operation
-                                        // (success, failure)
-
-    bsl::string                 d_errorDescription;
-                                        // Optional string with a human
-                                        // readable description of the error,
-                                        // if any
-
-  public:
-    // TRAITS
-    BSLMF_NESTED_TRAIT_DECLARATION(OpenQueueStatus, bslma::UsesBslmaAllocator)
-
-    // CREATORS
-    explicit OpenQueueStatus(bslma::Allocator *allocator = 0);
-        // Default constructor, use the optionally specified 'allocator'.
-
-    OpenQueueStatus(const bmqa::OpenQueueStatus&  other,
-                    bslma::Allocator             *allocator = 0);
-        // Create a new 'bmqa::OpenQueueStatus' using the optionally specified
-        // 'allocator'.
-
-    OpenQueueStatus(const QueueId&               queueId,
-                    bmqt::OpenQueueResult::Enum  result,
-                    const bsl::string&           errorDescription,
-                    bslma::Allocator            *allocator        = 0);
-        // Create a new 'bmqa::OpenQueueStatus' object having the specified
-        // 'queueId', 'result', and 'errorDescription', using the
-        // optionally specified 'allocator' to supply memory.
-
-    // MANIPULATORS
-    OpenQueueStatus& operator=(const OpenQueueStatus& rhs);
-        // Assignment operator from the specified 'rhs'.
-
-    // ACCESSORS
-    operator bool() const;
-        // Return true if this result indicates success, and false otherwise.
-
-    const QueueId& queueId() const;
-        // Return the queueId associated to this operation result, if any.
-
-    bmqt::OpenQueueResult::Enum result() const;
-        // Return the result code that indicates success or the cause of a
-        // failure.
-
-    const bsl::string& errorDescription() const;
-        // Return a printable description of the error, if 'result' indicates
-        // failure.  Return an empty string otherwise.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-bool operator==(const OpenQueueStatus& lhs, const OpenQueueStatus& rhs);
-    // Return 'true' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return false otherwise.
-
-bool operator!=(const OpenQueueStatus& lhs, const OpenQueueStatus& rhs);
-    // Return 'false' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return 'true' otherwise.
-
-bsl::ostream& operator<<(bsl::ostream& stream, const OpenQueueStatus& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return a
-    // reference to the modifiable 'stream'.
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-                           // ---------------------
-                           // class OpenQueueStatus
-                           // ---------------------
-
-// CREATORS
-inline
-OpenQueueStatus::OpenQueueStatus(bslma::Allocator *allocator)
-: d_queueId(allocator)
-, d_result(bmqt::OpenQueueResult::e_SUCCESS)
-, d_errorDescription(allocator)
-{
-    // NOTHING
-}
-
-inline
-OpenQueueStatus::OpenQueueStatus(const OpenQueueStatus&  other,
-                                 bslma::Allocator       *allocator)
-: d_queueId(other.d_queueId, allocator)
-, d_result(other.d_result)
-, d_errorDescription(other.d_errorDescription, allocator)
-{
-    // NOTHING
-}
-
-inline
-OpenQueueStatus::OpenQueueStatus(const QueueId&               queueId,
-                                 bmqt::OpenQueueResult::Enum  result,
-                                 const bsl::string&           errorDescription,
-                                 bslma::Allocator            *allocator)
-: d_queueId(queueId, allocator)
-, d_result(result)
-, d_errorDescription(errorDescription)
-{
-    // NOTHING
-}
-
-// MANIPULATORS
-inline
-OpenQueueStatus&
-OpenQueueStatus::operator=(const OpenQueueStatus& other)
-{
-    d_queueId          = other.queueId();
-    d_result           = other.result();
-    d_errorDescription = other.errorDescription();
-    return *this;
-}
-
-// ACCESSORS
-inline
-OpenQueueStatus::operator bool() const
-{
-    return d_result == bmqt::OpenQueueResult::e_SUCCESS;
-}
-
-inline
-const QueueId&
-OpenQueueStatus::queueId() const
-{
-    return d_queueId;
-}
-
-inline
-bmqt::OpenQueueResult::Enum
-OpenQueueStatus::result() const
-{
-    return d_result;
-}
-
-inline
-const bsl::string&
-OpenQueueStatus::errorDescription() const
-{
-    return d_errorDescription;
-}
-
-}  // close package namespace
-
-// FREE OPERATORS
-inline
-bsl::ostream&
-bmqa::operator<<(bsl::ostream&                stream,
-                 const bmqa::OpenQueueStatus& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-inline
-bool
-bmqa::operator==(const bmqa::OpenQueueStatus& lhs,
-                 const bmqa::OpenQueueStatus& rhs)
-{
-    return    lhs.queueId()          == rhs.queueId()
-           && lhs.result()           == rhs.result()
-           && lhs.errorDescription() == rhs.errorDescription();
-}
-
-inline
-bool
-bmqa::operator!=(const bmqa::OpenQueueStatus& lhs,
-                 const bmqa::OpenQueueStatus& rhs)
-{
-    return !(lhs == rhs);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__queueid_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__queueid_8h.html deleted file mode 100644 index e3be8bc17..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__queueid_8h.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - -bmqa_queueid.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_queueid.h File Reference

-
-
- -

Provide a value-semantic efficient identifier for a queue. -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Classes

class  bmqa::QueueId

-Namespaces

namespace  bmqimp
namespace  bmqa

-Functions

bsl::ostream & bmqa::operator<< (bsl::ostream &stream, const QueueId &rhs)
bool bmqa::operator== (const QueueId &lhs, const QueueId &rhs)
bool bmqa::operator!= (const QueueId &lhs, const QueueId &rhs)
bool bmqa::operator< (const QueueId &lhs, const QueueId &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__queueid_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__queueid_8h_source.html deleted file mode 100644 index 93b44d63e..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__queueid_8h_source.html +++ /dev/null @@ -1,220 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_queueid.h                                                     -*-C++-*-
-#ifndef INCLUDED_BMQA_QUEUEID
-#define INCLUDED_BMQA_QUEUEID
-
-//@PURPOSE: Provide a value-semantic efficient identifier for a queue.
-//
-//@CLASSES:
-//  bmqa::QueueId: Value-semantic efficient identifier for a queue.
-//
-//@DESCRIPTION: This component implements a value-semantic class,
-// 'bmqa::QueueId', which can be used to efficiently identify the queue
-// associated with a message event.  A 'bmqa::QueueId' instance can be created
-// with a 64-bit integer, raw pointer, shared pointer, or
-// 'bmqt::CorrelationId'.
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqt_correlationid.h>
-#include <bmqt_queueoptions.h>
-#include <bmqt_uri.h>
-
-// BDE
-#include <bsl_string.h>
-#include <bsl_iosfwd.h>
-#include <bsl_memory.h>
-#include <bsls_types.h>
-#include <bslma_allocator.h>
-#include <bslma_usesbslmaallocator.h>
-#include <bslmf_nestedtraitdeclaration.h>
-
-namespace BloombergLP {
-
-// FORWARD DECLARATION
-namespace bmqimp { class Queue; }
-
-namespace bmqa {
-
-
-                               // =============
-                               // class QueueId
-                               // =============
-
-class QueueId {
-    // Value-semantic efficient identifier for a queue
-
-    // FRIENDS
-    friend bool operator==(const QueueId& lhs, const QueueId& rhs);
-    friend bool operator!=(const QueueId& lhs, const QueueId& rhs);
-    friend bool operator<(const QueueId& lhs, const QueueId& rhs);
-
-  private:
-    // DATA
-    bsl::shared_ptr<bmqimp::Queue> d_impl_sp; // pimpl
-
-  public:
-    // TRAITS
-    BSLMF_NESTED_TRAIT_DECLARATION(QueueId, bslma::UsesBslmaAllocator)
-
-    // CREATORS
-    explicit QueueId(bslma::Allocator *allocator = 0);
-        // Default constructor.  Create a new QueueId associated with an
-        // automatically generated correlation Id, using the optionally
-        // specified 'allocator'.
-
-    QueueId(const QueueId&    other,
-            bslma::Allocator *allocator = 0);
-        // Copy constructor, create a new queueId having the same values as the
-        // specified 'other', and using the optionally specified 'allocator'.
-
-    explicit QueueId(const bmqt::CorrelationId&  correlationId,
-                     bslma::Allocator           *allocator = 0);
-        // Create a new QueueId associated to the correlation Id having the
-        // specified 'correlationId' value, using the optionally specified
-        // 'allocator'.
-
-    explicit QueueId(bsls::Types::Int64  numeric,
-                     bslma::Allocator   *allocator = 0);
-        // Create a new QueueId associated to the correlation Id having the
-        // specified 'numeric' correlationId value, using the optionally
-        // specified 'allocator'.
-
-    explicit QueueId(void             *pointer,
-                     bslma::Allocator *allocator = 0);
-        // Create a new QueueId associated to the correlation Id having the
-        // specified 'pointer' correlationId value, using the optionally
-        // specified 'allocator'.
-
-    explicit QueueId(const bsl::shared_ptr<void>&  sharedPtr,
-                     bslma::Allocator             *allocator = 0);
-        // Create a new QueueId associated to the correlation Id having the
-        // specified 'sharedPtr' correlationId value, using the optionally
-        // specified 'allocator'.  The lifetime of 'sharedPtr' is tied to this
-        // object, and it is the responsibility of the user to manage it
-        // accordingly.
-
-    // MANIPULATORS
-    QueueId& operator=(const QueueId& rhs);
-        // Assignment operator, from the specified 'rhs' using the specified
-        // 'allocator'.
-
-    // ACCESSORS
-    const bmqt::CorrelationId& correlationId() const;
-        // Return the correlationId associated to this QueueId. The behavior is
-        // undefined unless this QueueId is valid.
-
-    bsls::Types::Uint64 flags() const;
-        // Return the flags used when opening this queue.
-
-    const bmqt::Uri& uri() const;
-        // Return the URI associated to this QueueId. The behavior is
-        // undefined unless this QueueId is valid.
-
-    const bmqt::QueueOptions& options() const;
-        // Return the options used when opening this queue.
-
-    bool isValid() const;
-        // Return whether this QueueId is valid, i.e., is associated to an
-        // opened queue.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream& stream, const QueueId& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return a
-    // reference to the modifiable 'stream'.
-
-bool operator==(const QueueId& lhs, const QueueId& rhs);
-    // Return 'true' if 'rhs' object contains the value of the same type as
-    // contained in 'lhs' object and the value itself is the same in both
-    // objects, return false otherwise.
-
-bool operator!=(const QueueId& lhs, const QueueId& rhs);
-    // Return 'false' if 'rhs' object contains the value of the same type as
-    // contained in 'lhs' object and the value itself is the same in both
-    // objects, return 'true' otherwise.
-
-bool operator<(const QueueId& lhs, const QueueId& rhs);
-    // Operator used to allow comparison between the specified 'lhs' and 'rhs'
-    // CorrelationId objects so that CorrelationId can be used as key in a map.
-
-}  // close package namespace
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-                               // -------------
-                               // class QueueId
-                               // -------------
-
-inline
-bsl::ostream&
-bmqa::operator<<(bsl::ostream&        stream,
-                 const bmqa::QueueId& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-inline
-bool
-bmqa::operator==(const bmqa::QueueId& lhs,
-                 const bmqa::QueueId& rhs)
-{
-    return rhs.d_impl_sp.get() == lhs.d_impl_sp.get();
-}
-
-inline
-bool
-bmqa::operator!=(const bmqa::QueueId& lhs,
-                 const bmqa::QueueId& rhs)
-{
-    return rhs.d_impl_sp.get() != lhs.d_impl_sp.get();
-}
-
-inline
-bool
-bmqa::operator<(const bmqa::QueueId& lhs,
-                const bmqa::QueueId& rhs)
-{
-    return rhs.d_impl_sp.get() < lhs.d_impl_sp.get();
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__session_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__session_8h.html deleted file mode 100644 index 9c3121b6d..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__session_8h.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -bmqa_session.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_session.h File Reference

-
-
- -

Provide access to the BlazingMQ broker. -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Classes

class  bmqa::SessionEventHandler
struct  bmqa::SessionImpl
class  bmqa::Session

-Namespaces

namespace  bmqimp
namespace  bmqp
namespace  bslmt
namespace  bmqa
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__session_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__session_8h_source.html deleted file mode 100644 index abef723c3..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__session_8h_source.html +++ /dev/null @@ -1,1159 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_session.h                                                     -*-C++-*-
-#ifndef INCLUDED_BMQA_SESSION
-#define INCLUDED_BMQA_SESSION
-
-//@PURPOSE: Provide access to the BlazingMQ broker.
-//
-//@CLASSES:
-//  bmqa::SessionEventHandler: interface for receiving events asynchronously.
-//  bmqa::Session            : mechanism for access to the BlazingMQ broker.
-//
-//@DESCRIPTION: This component provides a mechanism, 'bmqa::Session', that
-// provides access to a message queue broker and an interface,
-// 'bmqa::SessionEventHandler' for asynchronous notification of events.  The
-// broker manages named, persistent queues of messages.  This broker allows a
-// client to open queues, post messages to them, or retrieve messages from
-// them.  All of these operations take place within the context of the session
-// opened by the client application.
-//
-// Messages received from a broker are communicated to the application by the
-// session associated with that broker in the form of events (see
-// 'bmqa_event').  Events can be of two different types: (1) Messages and
-// message status events ('bmqa::MessageEvent'), or (2) Session or queue
-// status events ('bmqa::SessionEvent').
-//
-// A 'Session' can dispatch events to the application in either a synchronous
-// or asynchronous mode.  In synchronous mode, the application must call the
-// 'nextEvent' method in order to obtain events from the 'Session'.  In
-// asynchronous mode, the application must supply a concrete
-// 'SessionEventHandler' object at construction time.  The concrete
-// 'SessionEventHandler' provided by the application must implement the
-// 'onSessionEvent' and 'onMessageEvent' methods, which will be called by the
-// 'Session' every time a session event or a message event is received.  Note
-// that by default, a session created in asynchronous mode creates only one
-// internal thread to dispatch events, but a different value for number of
-// threads can be specified in 'bmqt::SessionOptions'.
-//
-// A 'Session' is created either in synchronous or in asynchronous mode, and it
-// will remain in that mode until destruction.  Allowing a mix between
-// synchronous or asynchronous would make the SDK complicated.  The only
-// exceptions are the "start" and "open" operations that must be available in
-// synchronous or asynchronous version for the convenience of the programmer.
-//
-// By default a 'Session' connects to the local broker, which in turn may
-// connect to a remote cluster based on configuration.
-//
-// After a 'bmqa::Session' is started, the application has to open one or
-// several queues in read and/or write mode.
-//
-///Disclaimer
-///----------
-// A 'Session' object is a heavy object representing the negotiated TCP session
-// with the broker, and the entire associated state (opened queues, statistics,
-// ...).  Therefore, sessions should be always reused if possible, preferably
-// with only *one* session per lifetime of a component/library/task.
-// Note that at the time of this writing multiplexing of different logical
-// sessions over the same physical connection is not supported, so in certain
-// circumstances reuse of the same session across the whole of a single
-// application will not be possible. For example, if an application uses two
-// unrelated libraries both of which use BlazingMQ under the hood, they won't
-// be able to share a session as it stands.
-// An example of an extreme inefficiency and an abuse of resources is to
-// create a session ad-hoc every time a message needs to be posted by the same
-// component.
-//
-///Thread-safety
-///-------------
-// This session object is *thread* *enabled*, meaning that two threads can
-// safely call any methods on the *same* *instance* without external
-// synchronization.
-//
-///Connecting to the Broker
-///------------------------
-// A 'Session' establishes a communication with a broker service using TCP/IP.
-// Each 'Session' object must be constructed with a 'bmqa::SessionOptions'
-// object, which provides the necessary information to connect to the broker.
-// In particular, the 'SessionOptions' object must specify the IP address and
-// port needed to connect to the broker.  The 'SessionOptions' object may also
-// provide extra parameters for tuning the TCP connection behavior (see
-// 'bmqa_sessionoptions' for details).
-//
-// Note that in most cases the user does not need to explicitly construct a
-// 'SessionOptions' object: the default constructor for 'SessionOptions'
-// creates an instance that will connect to the broker service on the local
-// machine using the standard port.
-//
-// Some options can also be provided using environment variables.
-//: o !BMQ_BROKER_URI!: Corresponds to 'SessionOptions::brokerUri'.
-//:   If this environment variable is set, its value will override the one
-//:   specified in the 'SessionOptions'.
-//
-// A 'Session' object is created in an unconnected state.  The 'start' or
-// 'startAsync' method must be called to connect to the broker.  Note that
-// 'start' method is blocking, and returns either after connection to broker
-// has been established (success), or after specified timeout (failure).
-// 'startAsync' method, as the name suggests, connects to the broker
-// asynchronously (i.e., it returns immediately), and the result of the
-// operation is notified via 'bmqt::SessionEventType::CONNECTED' session event.
-//
-// When the 'Session' is no longer needed, the application should call the
-// 'stop' (blocking) or 'stopAsync' (non-blocking) method to shut down the
-// 'Session' and disconnect from the broker.  Note that destroying a Session
-// automatically stops it.  The session can be restarted with a call to 'start'
-// or 'startAsync' once it has been fully stopped.
-//
-///Connection loss and reconnection
-///--------------------------------
-// If the connection between the application and the broker is lost, the
-// 'Session' will automatically try to reconnect periodically.  The 'Session'
-// will also notify the application of the event of losing the connection via
-// 'bmqt::SessionEventType::CONNECTION_LOST' session event.
-//
-// Once the connection has been re-established with the broker (as a result of
-// one of the periodic reconnection attempts), the 'Session' will notify the
-// application via 'bmqt::SessionEventType::RECONNECTED' session event.  After
-// the connection re-establishment, the 'Session' will attempt to reopen the
-// queues that were in 'OPEN' state prior to connection loss.  The 'Session'
-// will notify the application of the result of reopen operation via
-// 'bmqt::SessionEventType::QUEUE_REOPEN_RESULT' for each queue.  Note that a
-// reopen operation on a queue may fail (due to broker issue, machine issue,
-// etc), so the application must keep track on these session events, and stop
-// posting on a queue that failed to reopen.
-//
-// After all reopen operations are complete and application has been notified
-// with all 'bmqt::SessionEventType::QUEUE_REOPEN_RESULT' events, the 'Session'
-// delivers a 'bmqt::SessionEventType::STATE_RESTORED' session event to the
-// application.
-//
-///Example 1
-///- - - - -
-// The following example illustrates how to create a 'Session' in synchronous
-// mode, start it, and stop it.
-//..
-//  void runSession()
-//  {
-//      bmqt::SessionOptions options;
-//      options.setBrokerUri("tcp://localhost:30114");
-//
-//      bmqa::Session session(options);
-//      int res = session.start();
-//      if (0 != res) {
-//          bsl::cout << "Failed to start session (" << res << ")"
-//                    << bsl::endl;
-//          return;
-//      }
-//      bsl::cout << "Session started." << bsl::endl;
-//
-//      // Open queue in READ or WRITE or READ/WRITE mode, and receive or
-//      // post messages, etc.
-//      // ...
-//
-//      session.stop();
-//  }
-//..
-// This example can be simplified because the constructor for 'Session' uses a
-// default 'SessionOptions' object that will connect to the local broker
-// service.  The example may be rewritten as follow:
-//..
-//  void runSession()
-//  {
-//      bmqa::Session session;     // using default 'SessionOptions'
-//      int res = session.start();
-//      if (0 != res) {
-//          bsl::cout << "Failed to start session (" << res << ")"
-//                    << bsl::endl;
-//          return;
-//      }
-//      bsl::cout << "Session started." << bsl::endl;
-//
-//      // Open queue in READ or WRITE or READ/WRITE mode, and receive or
-//      // post messages, etc.
-//      // ...
-//
-//      session.stop();
-//  }
-//..
-//
-///Processing session events - synchronous mode
-///--------------------------------------------
-// If the 'Session' is created in synchronous mode, the application needs to
-// call the 'nextEvent' method on a regular basis in order to receive events.
-// This method takes an optional wait timeout as a parameter, and it will
-// return the next available 'Event' from the session's internal event queue or
-// it will block the calling thread execution until new 'Event' arrives or
-// until the specified timeout expires.  It is safe to call the 'nextEvent'
-// method from different threads simultaneously: the 'Session' class provides
-// proper synchronization logic to protect the internal event queue from
-// corruption in this scenario.
-//
-///Example 2
-///- - - - -
-// The following example demonstrates how to write a function that queries and
-// processes events synchronously.  In this example the switch form checks the
-// type of the 'Event' and performs the necessary actions.
-//
-// We first define two functions to process 'SessionEvent' and 'MessageEvent'.
-// These functions return 'true' if we should keep processing events and
-// 'false' otherwise (i.e., no more events are expected from the 'Session').
-//..
-//  bool processSessionEvent(const bmqa::SessionEvent& event)
-//  {
-//      bool result = true;
-//      switch (event.type()) {
-//
-//        case bmqt::SessionEventType::e_CONNECTED:
-//          // The connection to the broker is established (as a result
-//          // of a call to the 'start' method).
-//          openQueues();
-//          startPostingToQueues();
-//          break;
-//
-//        case bmqt::SessionEventType::e_DISCONNECTED:
-//          // The connection to the broker is terminated (as a result
-//          // of a call to the 'stop' method).
-//          result = false;
-//          break;
-//
-//        case bmqt::SessionEventType::e_CONNECTION_LOST:
-//          // The connection to the broker dropped. Stop posting to the queue.
-//          stopPostingToQueues();
-//          break;
-//
-//        case bmqt::SessionEventType::e_STATE_RESTORED:
-//          // The connection to the broker has been restored (i.e., all queues
-//          // have been re-opened. Resume posting to the queue.
-//          resumePostingToQueues();
-//          break;
-//
-//        case bmqt::SessionEventType::e_CONNECTION_TIMEOUT:
-//          // The connection to the broker has timed out.
-//          result = false;
-//          break;
-//
-//        case bmqt::SessionEventType::e_ERROR:
-//          // Internal error
-//          bsl::cout << "Unexpected session error: "
-//                    << event.errorDescription() << bsl::endl;
-//          break;
-//
-//      } // end switch
-//
-//      return result;
-//  }
-//
-//  bool processMessageEvent(const bmqa::MessageEvent& event)
-//  {
-//      bool result = true;
-//      switch (event.type()) {
-//
-//        case bmqt::MessageEventType::e_PUSH: {
-//          // Received a 'PUSH' event from the broker.
-//          bmqa::MessageIterator msgIter = event.messageIterator();
-//          while (msgIter.nextMessage()) {
-//              const bmqa::Message& msg = msgIter.message();
-//              // Process 'PUSH' msg here (omitted for brevity)
-//              // ...
-//          }
-//      } break;
-//
-//        case bmqt::MessageEventType::e_ACK: {
-//          // Received an 'ACK' event from the broker.
-//          bmqa::MessageIterator msgIter = event.messageIterator();
-//          while (msgIter.nextMessage()) {
-//              const bmqa::Message& msg = msgIter.message();
-//              // Process 'ACK' msg here (omitted for brevity)
-//              // ...
-//          }
-//      } break;
-//
-//      } // end switch
-//
-//      return result;
-//  }
-//..
-//
-// Next, we define a function that handles events synchronously using the
-// 'processSessionEvent' and 'processMessageEvent' functions.
-//..
-//  void handleEventsSynchronously(bmqa::Session *startedSession)
-//  {
-//      bool more = true;
-//      while (more) {
-//          bmqa::Event event =
-//                  startedSession->nextEvent(bsls::TimeInterval(2.0));
-//          if (event.isSessionEvent()) {
-//              more = processSessionEvent(event.sessionEvent());
-//          }
-//          else {
-//              more = processMessageEvent(event.messageEvent());
-//          }
-//      }
-//  }
-//..
-//
-///Processing session events - asynchronous mode
-///---------------------------------------------
-// If application wishes to use 'Session' in asynchronous mode, it must pass a
-// managed pointer to an event handler implementing the 'SessionEventHandler'.
-// In this case, when 'Session' is started, a thread pool owned by the
-// 'Session' is also started for processing events asynchronously.  The
-// 'Session' will call event handler's 'onSessionEvent' or 'onMessageEvent'
-// method every time a session event or a message event is available.
-//
-// Note that after the 'Session' is associated with some event handler, this
-// association cannot be changed or canceled.  The event handler will be used
-// for processing events until the 'Session' object is destroyed.
-//
-///Example 3
-///- - - - -
-// The following example demonstrates how to implement an event handler and how
-// to make the 'Session' use an instance of this event handler for processing
-// events.
-//
-// First, we define a concrete implementation of 'SessionEventHandler'.
-//
-//..
-//  class MyHandler: public bmqa::SessionEventHandler {
-//  public:
-//      MyHandler() { }
-//      virtual ~MyHandler() { }
-//      virtual void onSessionEvent(const bmqa::SessionEvent& event);
-//      virtual void onMessageEvent(const bmqa::MessageEvent& event);
-//  };
-//
-//  void MyHandler::onSessionEvent(const bmqa::SessionEvent& event)
-//  {
-//      // The implementation is similar to our 'processSessionEvent' function
-//      // defined in the previous example.
-//      processSessionEvent(event);
-//  }
-//
-//  void MyHandler::onMessageEvent(const bmqa::MessageEvent& event)
-//  {
-//      // The implementation is similar to our 'processMessageEvent' function
-//      // defined in the previous example.
-//      processMessageEvent(event);
-//  }
-//..
-// Next, we define a function that creates a 'Session' using our implementation
-// of 'SessionEventHandler'.
-//..
-//  void runAsyncSession()
-//  {
-//      bslma::ManagedPtr<SessionEventHandler> handlerMp(new MyHandler());
-//
-//      bmqa::Session session(handlerMp);   // using default 'SessionOptions'
-//      int res = session.start();
-//      if (0 != res) {
-//          bsl::cout << "Failed to start session (" << res << ")"
-//                    << bsl::endl;
-//          return;
-//      }
-//
-//      // ...
-//
-//      session.stop();
-//  }
-//..
-//
-///Opening queues
-///--------------
-// Once the 'Session' has been created and started, the application can use it
-// to open queues for producing and/or consuming messages.  A queue is
-// associated with a domain.  Domain metadata must be deployed in the BlazingMQ
-// infrastructure prior to opening queues under that domain, because opening a
-// queue actually loads the metadata deployed for the associated domain.
-//
-// The metadata associated with a domain defines various parameters like
-// maximum queue size and capacity, persistent policy, routing policy, etc.
-//
-// Queue are identified by URIs (Unified Resource Identifiers) that must
-// follow the BlazingMQsyntax, manipulated as 'bmqt::Uri' objects.  A queue URI
-// is typically formatted as follows:
-//..
-//  bmq://my.domain/my.queue
-//..
-// Note that domain names are unique in BlazingMQ infrastructure, which makes a
-// fully qualified queue URI unique too.
-//
-// Queues in BlazingMQ infrastructure are created by applications on demand.
-// Broke creates a queue when it receives an open-queue request from an
-// application for a queue that does not exist currently.
-//
-// Application can open a queue by calling 'openQueue' or 'openQueueAsync'
-// method on a started session.  Application must pass appropriate flags to
-// indicate if it wants to post messages to queue, consume messages from the
-// queue, or both.
-//
-// Note that 'openQueue' is a blocking method, and returns after specified
-// queue has been successfully opened (success) or after specified timeout has
-// expired (failure).  'openQueueAsync' method, as the name suggests, is non
-// blocking, and the result of the operation is notified via
-// 'bmqt::SessionEventType::QUEUE_OPEN_RESULT' session event.
-//
-///Example 4
-///- - - - -
-// The following example demonstrates how to open a queue for posting messages.
-// The code first opens the queue with appropriate flags, and then uses
-// 'bmqa::MessageEventBuilder' to build a message event and post to the queue.
-//..
-//  // Session creation and startup logic elided for brevity
-//  const char *queueUri = "bmq://my.domain/my.queue";
-//  bmqa::QueueId myQueueId(1);       // ID for the queue
-//  int rc = session.openQueue(
-//                      &myQueueId,
-//                      queueUri,
-//                      bmqt::QueueFlags::e_WRITE | bmqt::QueueFlags::e_ACK,
-//                      bsls::TimeInterval(30, 0));
-//
-//  if (rc != 0) {
-//      bsl::cerr << "Failed to open queue, rc: "
-//                << bmqt::OpenQueueResult::Enum(rc)
-//                << bsl::endl;
-//      return;
-//  }
-//..
-// Note that apart from 'WRITE' flag, 'ACK' flag has been passed to
-// 'openQueue' method above.  This indicates that application is interested in
-// receiving 'ACK' notification for each message it posts to the queue,
-// irrespective of whether or not the message was successfully received by the
-// broker and posted to the queue.
-//
-// Once the queue has been successfully opened for writing, messages can be
-// posted to the queue for consumption by interested applications.  We will use
-// 'bmqa::MessageEventBuilder' to build a message event.
-//..
-//  // Create a message event builder
-//  bmqa::MessageEventBuilder builder;
-//  session.loadMessageEventBuilder(&builder);
-//
-//  // Create and post a message event containing 1 message
-//  bmqa::Message& msg = builder.startMessage();
-//
-//  msg.setCorrelationId(myCorrelationId);
-//  msg.setDataRef(&myPayload);  // where 'myPayload' is of type 'bdlbb::Blob'
-//  rc = builder.packMessage(myQueueId);
-//  if (rc != 0) {
-//      bsl::cerr << "Failed to pack message, rc: "
-//                << bmqt::EventBuilderResult::Enum(rc)
-//                << bsl::endl;
-//      return;
-//  }
-//
-//  // Post message event
-//  rc = session.post(builder.messageEvent());
-//  if (rc != 0) {
-//      bsl::cerr << "Failed to post message event to the queue, rc: "
-//                << bmqt::PostResult::Enum(rc)
-//                << bsl::endl;
-//      return;
-//  }
-//
-//  // ... post more messages
-//..
-//
-///Closing queues
-///--------------
-// After an application no longer needs to produce or consume messages from a
-// queue, it can be closed by 'closeQueue' or 'closeQueueAsync' method.  Note
-// that closing a queue closes an application's "view" on the queue, and may
-// not lead to queue deletion in the broker.  A 'Session' does not expose any
-// method to explicitly delete a queue.
-//
-// Note that 'closeQueue' is a blocking method and returns after the specified
-// queue has been successfully closed (success) or after specified timeout has
-// expired (failure).  'closeQueueAsync', as the name suggests, is a
-// non-blocking method, and result of the operation is notified via
-// 'bmqt::SessionEventType::e_QUEUE_CLOSE_RESULT' session event.
-//
-// There are 3 flavors which behave differently with regard to thread blocking
-// and callback execution:
-///----------------------------------------------------------------------------
-//           |  openQueue        |  openQueueSync       |  openQueueAsync
-//           |  configureQueue   |  configureQueueSync  |  configureQueueAsync
-//           |  closeQueue       |  closeQueueSync      |  closeQueueAsync
-//           | (deprecated Sync) | (Synchronous)        | (Asynchronous)
-//-----------|-------------------|----------------------|----------------------
-//   event   | unblocks in       | unblocks in event    | executes callback in
-//  handler  | internal thread   | handler thread  (*)  | event handler thread
-//           |                   |                      |
-// nextEvent | unblocks in       | unblocks in          | executes callback
-//           | internal thread   | internal thread      | in nextEvent thread
-//-----------------------------------------------------------------------------
-//
-// (*) - guarantees unblocking after all previously enqueued events have been
-// emitted to the eventHandler, allowing the user to have proper serialization
-// of events for the given queue (for example no more PUSH messages will be
-// delivered through the eventHandler for the queue after
-// configureQueueSync(maxUnconfirmed = 0) returns).
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqa_abstractsession.h>
-#include <bmqa_closequeuestatus.h>
-#include <bmqa_configurequeuestatus.h>
-#include <bmqa_confirmeventbuilder.h>
-#include <bmqa_messageeventbuilder.h>
-#include <bmqa_openqueuestatus.h>
-#include <bmqt_queueoptions.h>
-#include <bmqt_sessionoptions.h>
-#include <bmqt_uri.h>
-
-// BDE
-#include <ball_log.h>
-#include <bsl_memory.h>
-#include <bsl_string.h>
-#include <bslma_allocator.h>
-#include <bslma_managedptr.h>
-#include <bslma_usesbslmaallocator.h>
-#include <bslmf_nestedtraitdeclaration.h>
-#include <bsls_keyword.h>
-#include <bsls_timeinterval.h>
-#include <bsls_types.h>
-
-
-namespace BloombergLP {
-
-// FORWARD DECLARATION
-namespace bmqimp { class Application; }
-namespace bmqimp { class Event; }
-namespace bmqp   { class MessageGUIDGenerator; }
-namespace bslmt  { class Semaphore; }
-
-namespace bmqa {
-
-// FORWARD DECLARATION
-class Event;
-class Message;
-class MessageEvent;
-class MessageProperties;
-class QueueId;
-class SessionEvent;
-
-
-                         // =========================
-                         // class SessionEventHandler
-                         // =========================
-
-class SessionEventHandler {
-    // Pure protocol for an asynchronous event handler.  The implementation
-    // must be thread safe if the 'Session' is configured to use multiple
-    // threads.
-
-  public:
-    // CREATORS
-    virtual
-    ~SessionEventHandler();
-        // Destroy this object.
-
-    // MANIPULATORS
-    virtual
-    void onSessionEvent(const SessionEvent& event) = 0;
-        // Process the specified session 'event' (connected, disconnected,
-        // queue opened, queue closed, etc.).
-
-    virtual
-    void onMessageEvent(const MessageEvent& event) = 0;
-        // Process the specified message 'event' containing one or more
-        // messages.
-};
-
-
-                             // ==================
-                             // struct SessionImpl
-                             // ==================
-
-struct SessionImpl {
-    // Impl structure for the session data members, so that special task such
-    // as 'bmqadm' can access them by reinterpret casting a 'Session' object.
-    // Care should be taken though since 'Session' is a polymorphic class.
-
-    // PUBLIC DATA
-    bslma::Allocator                       *d_allocator_p;
-                                             // The allocator to use
-
-    bmqt::SessionOptions                    d_sessionOptions;
-                                             // Session options as provided by
-                                             // the application.
-
-    bslma::ManagedPtr<SessionEventHandler>  d_eventHandler_mp;
-                                             // Event handler, if any, to use
-                                             // for notifying application of
-                                             // events.
-
-    bsl::shared_ptr<bmqp::MessageGUIDGenerator>
-                                            d_guidGenerator_sp;
-                                             // GUID generator object.
-
-    bslma::ManagedPtr<bmqimp::Application>  d_application_mp;
-                                             // The application object.
-
-  private:
-    // NOT IMPLEMENTED
-    SessionImpl(const SessionImpl&)            BSLS_KEYWORD_DELETED;
-    SessionImpl& operator=(const SessionImpl&) BSLS_KEYWORD_DELETED;
-
-  public:
-    // TRAITS
-    BSLMF_NESTED_TRAIT_DECLARATION(SessionImpl, bslma::UsesBslmaAllocator)
-
-    // CREATORS
-    SessionImpl(const bmqt::SessionOptions&             options,
-                bslma::ManagedPtr<SessionEventHandler>  eventHandler,
-                bslma::Allocator                       *allocator = 0);
-        // Create a new object having the specified 'options' and
-        // 'eventHandler' and using the optionally specified 'allocator'.
-};
-
-
-                               // =============
-                               // class Session
-                               // =============
-
-class Session: public AbstractSession {
-    // A session with a BlazingMQ broker.
-
-  public:
-    // TYPES
-    typedef AbstractSession::OpenQueueCallback      OpenQueueCallback;
-        // Invoked as a response to an asynchronous open queue operation,
-        // 'OpenQueueCallback' is an alias for a callback function object
-        // (functor) that takes as an argument the specified 'result',
-        // providing the result and context of the requested operation.
-
-    typedef AbstractSession::ConfigureQueueCallback ConfigureQueueCallback;
-        // Invoked as a response to an asynchronous configure queue operation,
-        // 'ConfigureQueueCallback' is an alias for a callback function object
-        // (functor) that takes as an argument the specified 'result',
-        // providing the result and context of the requested operation.
-
-    typedef AbstractSession::CloseQueueCallback     CloseQueueCallback;
-        // Invoked as a response to an asynchronous close queue operation,
-        // 'CloseQueueCallback' is an alias for a callback function object
-        // (functor) that takes as an argument the specified 'result',
-        // providing the result and context of the requested operation.
-
-  private:
-    // CLASS-SCOPE CATEGORY
-    BALL_LOG_SET_CLASS_CATEGORY("BMQA.SESSION");
-
-  private:
-    // DATA
-    SessionImpl d_impl; // Sole data member of this object.
-
-  private:
-    // NOT IMPLEMENTED
-    Session(const Session&)            BSLS_KEYWORD_DELETED;
-    Session& operator=(const Session&) BSLS_KEYWORD_DELETED;
-        // Copy constructor and assignment operator are not implemented
-
-  public:
-    // TRAITS
-    BSLMF_NESTED_TRAIT_DECLARATION(Session, bslma::UsesBslmaAllocator)
-
-    // CREATORS
-    explicit
-    Session(const bmqt::SessionOptions&  options   = bmqt::SessionOptions(),
-            bslma::Allocator            *allocator = 0);
-        // Create a new 'Session' in *synchronous* mode using the optionally
-        // specified 'options'.  In such mode, events have to be fetched by the
-        // application using the 'nextEvent()' method.  Optionally specify an
-        // 'allocator' used to supply memory.  If 'allocator' is 0, the
-        // currently installed default allocator is used.
-
-    explicit
-    Session(bslma::ManagedPtr<SessionEventHandler>  eventHandler,
-            const bmqt::SessionOptions&             options   =
-                                                        bmqt::SessionOptions(),
-            bslma::Allocator                       *allocator = 0);
-        // Create a 'Session' in *asynchronous* mode using the specified
-        // 'eventHandler' as callback for event processing and the optionally
-        // specified 'options'.  Optionally specify an 'allocator' used to
-        // supply memory.  If the optionally specified 'allocator' is 0, the
-        // currently installed default allocator is used.
-
-    ~Session() BSLS_KEYWORD_OVERRIDE;
-        // Stop the 'Session' and destroy this object.
-
-    // MANIPULATORS
-    //   (virtual bmqa::AbstractSession)
-
-    ///Session management
-    ///------------------
-    int start(const bsls::TimeInterval& timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Connect to the BlazingMQ broker and start the message processing for
-        // this 'Session'.  This method blocks until either the 'Session' is
-        // connected to the broker, fails to connect, or the operation times
-        // out.  If the optionally specified 'timeout' is not populated, use
-        // the one defined in the session options.  Return 0 on success, or a
-        // non-zero value corresponding to the 'bmqt::GenericResult::Enum' enum
-        // values otherwise.  The behavior is undefined if this method is
-        // called on an already started 'Session'.
-
-    int startAsync(const bsls::TimeInterval& timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Connect to the BlazingMQ broker and start the message processing for
-        // this 'Session'.  This method returns without blocking.  The result
-        // of the operation is communicated with a session event.  If the
-        // optionally specified 'timeout' is not populated, use the one defined
-        // in the session options.  Return 0 on success (this doesn't imply the
-        // session is connected !), or a non-zero value corresponding to the
-        // 'bmqt::GenericResult::Enum' enum values otherwise.  The behavior is
-        // undefined if this method is called on an already started 'Session'.
-
-    void stop() BSLS_KEYWORD_OVERRIDE;
-        // Gracefully disconnect from the BlazingMQ broker and stop the
-        // operation of this 'Session'.  This method blocks waiting for all
-        // already invoked event handlers to exit and all session-related
-        // operations to be finished.  No other method but 'start()' may be
-        // used after this method returns.  This method must *NOT* be called if
-        // the session is in synchronous mode (i.e., not using the
-        // EventHandler), 'stopAsync()' should be called in this case.
-
-    void stopAsync() BSLS_KEYWORD_OVERRIDE;
-        // Disconnect from the BlazingMQ broker and stop the operation of this
-        // 'Session'.  This method returns without blocking and neither enforce
-        // nor waits for any already started session-related operation to be
-        // finished.  No method may be used after this method returns.
-
-    void finalizeStop() BSLS_KEYWORD_OVERRIDE;
-        // **DEPRECATED**
-        //
-        // This method is only to be used if the session is in synchronous mode
-        // (i.e., not using the EventHandler): it must be called once all
-        // threads getting events with 'nextEvent()' have been joined.
-
-    virtual
-    MessageEventBuilder createMessageEventBuilder();
-        // Return a MessageEventBuilder that can be used to build message event
-        // for posting on this session.  The behavior is undefined unless the
-        // session has been successfully started.  Note that lifetime of the
-        // returned object is bound by the lifetime of this session instance
-        // (i.e., returned instance cannot outlive this session instance).
-        // Also note that the 'MessageEventBuilder' objects are pooled, so this
-        // operation is cheap, and 'MessageEventBuilder' can be obtained on
-        // demand and kept on the stack.
-        //
-        // DEPRECATED: Use the 'loadMessageEventBuilder instead.  This
-        //             method will be marked as 'BSLS_ANNOTATION_DEPRECATED' in
-        //             future release of libbmq.
-
-    void loadMessageEventBuilder(MessageEventBuilder *builder)
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Load into the specified 'builder' an instance of
-        // 'bmqa::MessageEventBuilder' that can be used to build message event
-        // for posting on this session.  The behavior is undefined unless the
-        // session has been successfully started and 'builder' is non-null.
-        // Note that lifetime of the loaded object is bound by the lifetime of
-        // this session instance (i.e., loaded instance cannot outlive this
-        // session instance).  Also note that the 'MessageEventBuilder' objects
-        // are pooled, so this operation is cheap, and 'MessageEventBuilder'
-        // can be obtained on demand and kept on the stack.
-
-    void loadConfirmEventBuilder(ConfirmEventBuilder *builder)
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Load into the specified 'builder' an instance of
-        // 'bmqa::ConfirmEventBuilder' that can be used to build a batch of
-        // CONFIRM messages for sending to the broker.  The behavior is
-        // undefined unless the session has been successfully started and
-        // 'builder' is non-null.  Note that the lifetime of the loaded object
-        // is bound by the lifetime of this session instance (i.e., loaded
-        // instance cannot outlive this session instance).
-
-    void loadMessageProperties(MessageProperties *buffer)
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Load into the specified 'buffer' an instance of 'MessageProperties'
-        // that can be used to specify and associate properties while building
-        // a 'bmqa::Message'.  The behavior is undefined unless the session has
-        // been successfully started and 'buffer' is non-null.  Note that
-        // lifetime of the loaded object is bound by the lifetime of this
-        // session instance (i.e., loaded instance cannot outlive this session
-        // instance).
-
-    ///Queue management
-    ///----------------
-    int getQueueId(QueueId          *queueId,
-                   const bmqt::Uri&  uri) const BSLS_KEYWORD_OVERRIDE;
-        // Load in the specified 'queueId' the queue corresponding to the
-        // specified 'uri' and return 0 if such a queue was found, or leave
-        // 'queueId' untouched and return a non-zero value if no queue
-        // corresponding to 'uri' is currently open.
-
-    int getQueueId(QueueId                    *queueId,
-                   const bmqt::CorrelationId&  correlationId) const
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Load in the specified 'queueId' the queue corresponding to the
-        // specified 'correlationId' and return 0 if such a queue was found, or
-        // leave 'queueId' untouched and return a non-zero value if no queue
-        // corresponding to 'correlationId' is currently open.
-
-    int openQueue(QueueId                   *queueId,
-                  const bmqt::Uri&           uri,
-                  bsls::Types::Uint64        flags,
-                  const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                  const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // DEPRECATED: Use the 'openQueueSync(QueueId *queueId...)' instead.
-        //             This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    OpenQueueStatus
-    openQueueSync(QueueId                   *queueId,
-                  const bmqt::Uri&           uri,
-                  bsls::Types::Uint64        flags,
-                  const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                  const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Open the queue having the specified 'uri' with the specified 'flags'
-        // (a combination of the values defined in 'bmqt::QueueFlags::Enum'),
-        // using the specified 'queueId' to correlate events related to that
-        // queue.  The object 'queueId' referring to is modified, so the
-        // 'queueId' represents the actual queue uri, flags and options.
-        // Return a result providing the status and context of the operation.
-        // Use the optionally specified 'options' to configure some advanced
-        // settings.  Note that this operation fails if 'queueId' is
-        // non-unique.  If the optionally specified 'timeout' is not populated,
-        // use the one defined in the session options.  This operation will
-        // block until either success, failure, or timing out happens.
-        //
-        // THREAD: Note that calling this method from the event processing
-        //         thread(s) (i.e., from the EventHandler callback, if
-        //         provided) *WILL* lead to a *DEADLOCK*.
-
-    virtual
-    int openQueue(const QueueId&            queueId,
-                  const bmqt::Uri&          uri,
-                  bsls::Types::Uint64       flags,
-                  const bmqt::QueueOptions& options = bmqt::QueueOptions(),
-                  const bsls::TimeInterval& timeout = bsls::TimeInterval());
-        // DEPRECATED: Use the 'openQueue(QueueId *queueId...)' instead.  This
-        //             method will be marked as 'BSLS_ANNOTATION_DEPRECATED' in
-        //             future release of libbmq.
-
-    int
-    openQueueAsync(QueueId                   *queueId,
-                   const bmqt::Uri&           uri,
-                   bsls::Types::Uint64        flags,
-                   const bmqt::QueueOptions&  options = bmqt::QueueOptions(),
-                   const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // DEPRECATED: Use the 'openQueueAsync(...)' with callback flavor
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    void
-    openQueueAsync(QueueId                   *queueId,
-                   const bmqt::Uri&           uri,
-                   bsls::Types::Uint64        flags,
-                   const OpenQueueCallback&   callback,
-                   const bmqt::QueueOptions&  options  = bmqt::QueueOptions(),
-                   const bsls::TimeInterval&  timeout  = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Asynchronously open the queue having the specified 'uri' with the
-        // specified 'flags' (a combination of the values defined in
-        // 'bmqt::QueueFlags::Enum'), using the specified 'queueId' to
-        // correlate events related to that queue and the optionally specified
-        // 'options' to configure some advanced settings.  The object 'queueId'
-        // referring to is modified, so the 'queueId' represents the actual
-        // queue uri, flags and options.  The result of the operation is
-        // communicated to the specified 'callback' via a
-        // 'bmqa::OpenQueueStatus', providing the status and context of the
-        // requested operation.  Note that this operation fails if 'queueId' is
-        // non-unique.  If the optionally specified 'timeout' is not populated,
-        // use the one defined in the session options.
-        //
-        // THREAD: The 'callback' will *ALWAYS* be invoked from the
-        //         EventHandler thread(s) (or if a SessionEventHandler was not
-        //         specified, from the thread invoking 'nextEvent').
-
-    int
-    configureQueue(QueueId                   *queueId,
-                   const bmqt::QueueOptions&  options,
-                   const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // DEPRECATED: Use the 'configureQueueSync(QueueId *queueId...)
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    ConfigureQueueStatus
-    configureQueueSync(
-                    const QueueId             *queueId,
-                    const bmqt::QueueOptions&  options,
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Configure the queue identified by the specified 'queueId' using the
-        // specified 'options' and return a result providing the status and
-        // context of the operation.  If the optionally specified 'timeout' is
-        // not populated, use the one defined in the session options.  This
-        // operation returns error if there is a pending configure for the same
-        // queue.  This operation will block until either success, failure, or
-        // timing out happens.
-        //
-        // Note that the following 'bmqt::QueueOptions' fields cannot be
-        // reconfigured after the queue has been opened:
-        //   - suspendsOnBadHostHealth
-        // Attempts to reconfigure these fields will yield an 'e_NOT_SUPPORTED'
-        // error code.
-        //
-        // THREAD: Note that calling this method from the event processing
-        //         thread(s) (i.e., from the EventHandler callback, if
-        //         provided) *WILL* lead to a *DEADLOCK*.
-
-    int configureQueueAsync(
-                    QueueId                   *queueId,
-                    const bmqt::QueueOptions&  options,
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // DEPRECATED: Use the 'configureQueueAsync(...)' with callback flavor
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    void configureQueueAsync(
-               const QueueId                 *queueId,
-               const bmqt::QueueOptions&      options,
-               const ConfigureQueueCallback&  callback,
-               const bsls::TimeInterval&      timeout  = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Asynchronously configure the queue identified by the specified
-        // 'queueId' using the specified 'options' to configure some advanced
-        // settings.  The result of the operation is communicated to the
-        // specified 'callback' via a 'bmqa::ConfigureQueueStatus', providing
-        // the status and context of the requested operation.  If the
-        // optionally specified 'timeout' is not populated, use the one defined
-        // in the session options.
-        //
-        // Note that the following 'bmqt::QueueOptions' fields cannot be
-        // reconfigured after the queue has been opened:
-        //   - suspendsOnBadHostHealth
-        // Attempts to reconfigure these fields will yield an 'e_NOT_SUPPORTED'
-        // error code.
-        //
-        // THREAD: The 'callback' will *ALWAYS* be invoked from the
-        //         EventHandler thread(s) (or if a SessionEventHandler was not
-        //         specified, from the thread invoking 'nextEvent').
-
-    int closeQueue(QueueId                   *queueId,
-                   const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // DEPRECATED: Use the 'closeQueueSync(QueueId *queueId...) instead.
-        //             This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    CloseQueueStatus
-    closeQueueSync(const QueueId             *queueId,
-                   const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Close the queue identified by the specified 'queueId' and return a
-        // result providing the status and context of the operation.  If the
-        // optionally specified 'timeout' is not populated, use the one defined
-        // in the session options.  Any outstanding configureQueue request for
-        // this 'queueId' will be canceled.  This operation will block until
-        // either success, failure, or timing out happens.  Once this method
-        // returns, there is guarantee that no more messages and events for
-        // this 'queueId' will be received.  Note that successful processing of
-        // this request in the broker closes this session's view of the queue;
-        // the underlying queue may not be deleted in the broker.  When this
-        // method returns, the correlationId associated to the queue is
-        // cleared.
-        //
-        // THREAD: Note that calling this method from the event processing
-        //         thread(s) (i.e., from the EventHandler callback, if
-        //         provided) *WILL* lead to a *DEADLOCK*.
-
-    virtual
-    int closeQueue(const QueueId&            queueId,
-                   const bsls::TimeInterval& timeout = bsls::TimeInterval());
-        // DEPRECATED: Use the 'closeQueue(QueueId *queueId...) instead.  This
-        //             method will be marked as 'BSLS_ANNOTATION_DEPRECATED' in
-        //             future release of libbmq.
-
-    int
-    closeQueueAsync(QueueId                   *queueId,
-                    const bsls::TimeInterval&  timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // DEPRECATED: Use the 'closeQueueAsync(...)' with callback flavor
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    void closeQueueAsync(
-                   const QueueId             *queueId,
-                   const CloseQueueCallback&  callback,
-                   const bsls::TimeInterval&  timeout  = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Asynchronously close the queue identified by the specified
-        // 'queueId'.  Any outstanding configureQueue requests will be
-        // canceled.  The result of the operation is communicated to the
-        // specified 'callback' via a 'bmqa::CloseQueueStatus', providing the
-        // status and context of the operation.  If the optionally specified
-        // 'timeout' is not populated, use the one defined in the session
-        // options.  Note that successful processing of this request in the
-        // broker closes this session's view of the queue; the underlying queue
-        // may not be deleted in the broker.  The correlationId associated to
-        // the queue remains valid until the 'bmqa::CloseQueueStatus' result
-        // has been received and processed by the 'callback', after which it
-        // will be cleared and no more messages and events for this 'queueId'
-        // will be received.
-        //
-        // THREAD: The 'callback' will *ALWAYS* be invoked from the
-        //         EventHandler thread(s) (or if a SessionEventHandler was not
-        //         specified, from the thread invoking 'nextEvent').
-
-    virtual
-    int
-    closeQueueAsync(const QueueId&            queueId,
-                    const bsls::TimeInterval& timeout = bsls::TimeInterval());
-        // DEPRECATED: Use the 'closeQueueAsync(...)' with callback flavor
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    ///Queue manipulation
-    ///------------------
-    Event nextEvent(const bsls::TimeInterval& timeout = bsls::TimeInterval())
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Return the next available event received for this session.  If there
-        // is no event available, this method blocks for up to the optionally
-        // specified 'timeout' time interval for an event to arrive.  An empty
-        // time interval for 'timeout' (the default) indicates that the method
-        // should not timeout (the method will not return until the next event
-        // is available).  Return a 'bmqa::SessionEvent' of type
-        // 'bmqt::SessionEventType::e_TIMEOUT' if a timeout was specified and
-        // that timeout expired before any event was received.  Note that this
-        // method can only be used if the session is in synchronous mode (ie
-        // not using the EventHandler).  The behavior is undefined unless the
-        // session was started.
-
-    int post(const MessageEvent& event) BSLS_KEYWORD_OVERRIDE;
-        // Asynchronously post the specified 'event' that must contain one or
-        // more 'Messages'.  The return value is one of the values defined in
-        // the 'bmqt::PostResult::Enum' enum.  Return zero on success and a
-        // non-zero value otherwise.  Note that success implies that SDK has
-        // accepted the 'event' and will eventually deliver it to the broker.
-        // The behavior is undefined unless the session was started.
-
-    int confirmMessage(const Message& message) BSLS_KEYWORD_OVERRIDE;
-        // Asynchronously confirm the receipt of the specified 'message'.  This
-        // indicates that the application is done processing the message and
-        // that the broker can safely discard it from the queue according to
-        // the retention policy set up for that queue.  Return 0 on success,
-        // and a non-zero value otherwise.  Note that success implies that SDK
-        // has accepted the 'message' and will eventually send confirmation
-        // notification to the broker.
-
-    int confirmMessage(const MessageConfirmationCookie& cookie)
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Asynchronously confirm the receipt of the message with which the
-        // specified 'cookie' is associated.  This indicates that the
-        // application is done processing the message and that the broker can
-        // safely discard it from the queue according to the retention policy
-        // set up for that queue.  Return 0 on success, and a non-zero value
-        // otherwise.  Note that success implies that SDK has accepted the
-        // 'message' and will eventually send confirmation notification to the
-        // broker.
-
-    int confirmMessages(ConfirmEventBuilder *builder) BSLS_KEYWORD_OVERRIDE;
-        // Asynchronously confirm the receipt of the batch of CONFIRM messages
-        // contained in the specified 'builder'.  This indicates that the
-        // application is done processing all of the messages and that the
-        // broker can safely discard them from the queue according to the
-        // retention policy set up for that queue.  The return value is one of
-        // the values defined in the 'bmqt::GenericResult::Enum' enum.  Note
-        // that in case of success, the instance pointed by the 'builder' will
-        // be reset.  Also note that success implies that SDK has accepted all
-        // of the messages in 'builder' and will eventually send confirmation
-        // notification to the broker, whereas failure implies that none of the
-        // messages in 'builder' were accepted.  Behavior is undefined unless
-        // 'builder' is non-null.
-
-    ///Debugging related
-    ///-----------------
-    int configureMessageDumping(const bslstl::StringRef& command)
-                                                         BSLS_KEYWORD_OVERRIDE;
-        // Configure this session instance to dump messages to the installed
-        // logger at 'ball::Severity::INFO' level according to the specified
-        // 'command' that should adhere to the following pattern:
-        //..
-        //   IN|OUT|PUSH|ACK|PUT|CONFIRM ON|OFF|100|10s
-        //..
-        // where each token has a specific meaning:
-        //: o !IN!      : incoming ('PUSH' and 'ACK') events
-        //: o !OUT!     : outgoing ('PUT' and 'CONFIRM') events
-        //: o !PUSH!    : incoming 'PUSH' events
-        //: o !ACK!     : incoming 'ACK' events
-        //: o !PUT!     : outgoing 'PUT' events
-        //: o !CONFIRM! : outgoing 'CONFIRM' events
-        //: o !ON!      : turn on message dumping until explicitly turned off
-        //: o !OFF!     : turn off message dumping
-        //: o !100!     : turn on message dumping for the next 100 messages
-        //: o !10s!     : turn on message dumping for the next 10 seconds
-        // Above, the numerical values '100' and '10' are just for illustration
-        // purposes, and application can choose an appropriate positive numeric
-        // value for them.  Also, pattern is case-insensitive.  Return zero if
-        // 'command' is valid and message dumping has been configured, non-zero
-        // value otherwise.  The behavior is undefined unless the session has
-        // been started.
-
-    ///Internal
-    ///--------
-    void *impl();
-        // Do *NOT* use.  Internal function, reserved for BlazingMQ internal
-        // usage.
-};
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-                               // -------------
-                               // class Session
-                               // -------------
-
-inline
-int
-Session::confirmMessage(const Message& message)
-{
-    return confirmMessage(message.confirmationCookie());
-}
-
-inline
-void*
-Session::impl()
-{
-    return &d_impl;
-}
-
-
-}  // close package namespace
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__sessionevent_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqa__sessionevent_8h.html deleted file mode 100644 index 369dcea9b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__sessionevent_8h.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - -bmqa_sessionevent.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa_sessionevent.h File Reference

-
-
- -

Provide value-semantic type for system event session notifications. -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Classes

class  bmqa::SessionEvent

-Namespaces

namespace  bmqimp
namespace  bmqa

-Functions

bool bmqa::operator== (const SessionEvent &lhs, const SessionEvent &rhs)
bool bmqa::operator!= (const SessionEvent &lhs, const SessionEvent &rhs)
bsl::ostream & bmqa::operator<< (bsl::ostream &stream, const SessionEvent &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqa__sessionevent_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqa__sessionevent_8h_source.html deleted file mode 100644 index 06e52c930..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqa__sessionevent_8h_source.html +++ /dev/null @@ -1,176 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqa_sessionevent.h                                                -*-C++-*-
-#ifndef INCLUDED_BMQA_SESSIONEVENT
-#define INCLUDED_BMQA_SESSIONEVENT
-
-//@PURPOSE: Provide value-semantic type for system event session notifications.
-//
-//@CLASSES:
-//  bmqa::SessionEvent: type for notification events related to the 'Session'.
-//
-//@SEE_ALSO:
-// bmqt::SessionEventType: Enum of the various type of notifications
-//
-//@DESCRIPTION: This component provides a generic 'bmqa::SessionEvent'
-// notification object used by the 'bmqa::Session' to provide BlazingMQ
-// applications with information regarding changes in the session status or the
-// result of operations with the message queue broker.
-//
-// A 'SessionEvent' is composed of 4 attributes:
-//: o !type!:             indicate the type of the notification
-//: o !statusCode!:       indicate the status of the operation (success,
-//:                       failure)
-//: o !correlationId!:    optional correlationId used during async response
-//: o !queueId!:          optional queueId associated with the event, of type
-//:                       'OPEN', 'CONFIGURE', 'CLOSE', 'REOPEN'
-//: o !errorDescription!: optional string with a human readable description of
-//:                       the error, if any
-//
-// Note that 'SessionEvent' is implemented using the pimpl idiom, so copying a
-// 'SessionEvent' is very cheap (a pointer copy).  All copies of this
-// 'SessionEvent' will share the same underlying implementation.
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqa_queueid.h>
-#include <bmqt_correlationid.h>
-#include <bmqt_sessioneventtype.h>
-
-// BDE
-#include <bsl_memory.h>
-#include <bsl_string.h>
-
-namespace BloombergLP {
-
-// FORWARD DECLARATION
-namespace bmqimp { class Event; }
-
-namespace bmqa {
-
-                             // ==================
-                             // class SessionEvent
-                             // ==================
-
-class SessionEvent {
-    // An event related to the operation of a 'Session'.
-
-  private:
-    // FRIENDS
-    friend bool operator==(const SessionEvent& lhs, const SessionEvent& rhs);
-    friend bool operator!=(const SessionEvent& lhs, const SessionEvent& rhs);
-
-  private:
-    // DATA
-    bsl::shared_ptr<bmqimp::Event> d_impl_sp; // pimpl
-
-  public:
-    // CREATORS
-    explicit SessionEvent();
-        // Default constructor
-
-    SessionEvent(const SessionEvent& other);
-        // Create a new 'SessionEvent' having the same values (pointing to the
-        // same pimpl) as the specified 'other'.
-
-    // MANIPULATORS
-    SessionEvent& operator=(const SessionEvent& rhs);
-        // Assign to this 'SessionEvent' the same values as the one from the
-        // specified 'rhs' (i.e., reference the same pimpl).
-
-    // ACCESSORS
-    bmqt::SessionEventType::Enum type() const;
-        // Return the session event type.
-
-    const bmqt::CorrelationId& correlationId() const;
-        // Return the correlationId associated to this event, if any.
-
-    QueueId queueId() const;
-        // Return the queueId associated to this event, if any.  The behavior
-        // is undefined unless this event corresponds to a queue related event
-        // (i.e. 'OPEN', 'CONFIGURE', 'CLOSE', 'REOPEN').
-
-    int statusCode() const;
-        // Return the status code that indicates success or the cause of a
-        // failure.
-
-    const bsl::string& errorDescription() const;
-        // Return a printable description of the error, if 'statusCode' returns
-        // non-zero.  Return an empty string otherwise.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-bool operator==(const SessionEvent& lhs,
-                const SessionEvent& rhs);
-    // Return 'true' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return false otherwise.
-
-bool operator!=(const SessionEvent& lhs,
-                const SessionEvent& rhs);
-    // Return 'false' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return 'true' otherwise.
-
-bsl::ostream& operator<<(bsl::ostream&       stream,
-                         const SessionEvent& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return a
-    // reference to the modifiable 'stream'.
-
-}  // close package namespace
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-                            // ------------------
-                            // class SessionEvent
-                            // ------------------
-
-inline
-bsl::ostream&
-bmqa::operator<<(bsl::ostream&             stream,
-                 const bmqa::SessionEvent& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqpi_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqpi_8h.html deleted file mode 100644 index 4a33731d5..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqpi_8h.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -bmqpi.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqpi.txt File Reference

-
-
- -

Provide an interface for monitoring the health of the host. -More...

- -

Go to the source code of this file.

- -
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqpi_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqpi_8h_source.html deleted file mode 100644 index 4e2e5593a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqpi_8h_source.html +++ /dev/null @@ -1,32 +0,0 @@ - - -Bloomberg Development Environment - -
- bmqpi.txt
-
-@PURPOSE: Provide an interface for monitoring the health of the host.
-
-@MNEMONIC: BlazingMQ Public Interfaces (bmqpi)
-
-@DESCRIPTION: The 'bmqpi' package provides pure abstract interfaces, which are
- intended for clients to extend in their own applications and libraries. These
- extension points facilitate integration with other aspects of a runtime
- environment (e.g. authentication, host health-checking), which may vary
- significantly from organization to organization.
-
-/Hierarchical Synopsis
-/---------------------
- The 'bmqpi' package currently has 1 component having 1 level of physical
- dependency.  The list below shows the hierarchical ordering of the components.
-..
-  1. bmqpi_hosthealthmonitor
-..
-
-/Component Synopsis
-/------------------
-: 'bmqpi_hosthealthmonitor':
-:      Provide an interface for monitoring the health of the host.
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqpi__dtcontext_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqpi__dtcontext_8h.html deleted file mode 100644 index b0ebd631d..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqpi__dtcontext_8h.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - -bmqpi_dtcontext.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqpi_dtcontext.h File Reference

-
-
- -

Provide an interface for a context with a notion of a current span. -More...

- -

Go to the source code of this file.

- - - - - -

-Classes

class  bmqpi::DTContext

-Namespaces

namespace  bmqpi
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqpi__dtcontext_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqpi__dtcontext_8h_source.html deleted file mode 100644 index 073e7d284..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqpi__dtcontext_8h_source.html +++ /dev/null @@ -1,99 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2021-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqpi_dtcontext.h                                                  -*-C++-*-
-#ifndef INCLUDED_BMQPI_DTCONTEXT
-#define INCLUDED_BMQPI_DTCONTEXT
-
-//@PURPOSE: Provide an interface for a context with a notion of a current span.
-//
-//@CLASSES:
-//  bmqpi::DTContext: Interface for a context with a notion of a current span.
-//
-//@DESCRIPTION:
-// 'bmqpi::DTContext' is a pure interface representing a context which defines
-// a "current" 'bmqpi::DTSpan' for the calling thread. Implementations *may*
-// return different spans for each thread, or return a single span shared by
-// all calling threads.
-//
-// Many distributed trace libraries provide a well-defined thread-local storage
-// slot for the span currently under execution, which allows a function to
-// obtain a reference to its caller across library boundaries, without changes
-// to its API to facilitate dependency injection. This storage slot is set by
-// instantiating an RAII "Span Guard" that writes a span to the TLS at
-// construction, and reverts its state on destruction (emulating the semantics
-// of a call-stack). The API of 'bmqpi::DTContext' aims to make it easy to wrap
-// these common patterns in a library-agnostic manner, while also facilitating
-// test double implementations.
-//
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqpi_dtspan.h>
-
-// BDE
-#include <bsl_memory.h>
-#include <bslma_managedptr.h>
-
-namespace BloombergLP {
-namespace bmqpi {
-
-                              // ===============
-                              // class DTContext
-                              // ===============
-
-class DTContext {
-    // A pure interface for a context with a notion of a current span.
-
-  public:
-    // PUBLIC CREATORS
-    virtual ~DTContext();
-        // Destructor
-
-    // PUBLIC ACCESSORS
-    virtual bsl::shared_ptr<bmqpi::DTSpan> span() const = 0;
-        // Returns the current 'DTSpan' for the calling thread according to
-        // this 'DTContext', or an empty 'shared_ptr' if no span is currently
-        // set.
-
-    // PUBLIC MANIPULATORS
-    virtual
-    bslma::ManagedPtr<void>
-    scope(const bsl::shared_ptr<DTSpan>& newSpan) = 0;
-        // Letting 'previous = span()' on some thread 'T', returns an object
-        // 'token' which promises:
-        //: o 'span()' will return 'newSpan' when called on thread 'T',
-        //:    following the construction of 'token'.
-        //: o 'span()' will return 'previous' when called on thread 'T',
-        //:    following the destruction of 'token'.
-        //
-        // Note that if 'token2 = scope(otherSpan)' is called on thread 'T'
-        // during the lifetime of 'token', then 'span()' will return
-        // 'otherSpan'. After 'token2' is destroyed, it will again return
-        // 'newSpan'.
-};
-
-}  // close package namespace
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqpi__dtspan_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqpi__dtspan_8h.html deleted file mode 100644 index 19e637e1a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqpi__dtspan_8h.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - -bmqpi_dtspan.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqpi_dtspan.h File Reference

-
-
- -

Provide an interface representing a span of a distributed trace. -More...

- -

Go to the source code of this file.

- - - - - - -

-Classes

class  bmqpi::DTSpan
class  bmqpi::DTSpan::BSLS_KEYWORD_FINAL

-Namespaces

namespace  bmqpi
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqpi__dtspan_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqpi__dtspan_8h_source.html deleted file mode 100644 index d51927843..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqpi__dtspan_8h_source.html +++ /dev/null @@ -1,128 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2021-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqpi_dtspan.h                                                     -*-C++-*-
-#ifndef INCLUDED_BMQPI_DTSPAN
-#define INCLUDED_BMQPI_DTSPAN
-
-//@PURPOSE: Provide an interface representing a span of a distributed trace.
-//
-//@CLASSES:
-//  bmqpi::DTSpan: Interface for a span of a distributed trace.
-//  bmqpi::DTSpan::Baggage: A set of key-values used to describe a 'DTSpan'.
-//
-//@DESCRIPTION:
-// 'bmqpi::DTSpan' is a pure interface representing a node within a distributed
-// trace graph (which forms a DAG with edges as invocations).
-//
-// 'bmqpi::DTSpan::Baggage' represents a set of key-values used to describe
-// metadata belonging to a 'DTSpan'. The phrase "baggage" is borrowed from the
-// OpenTelemetry standard's terminology.
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <bsl_unordered_map.h>
-#include <bsl_string.h>
-#include <bsl_string_view.h>
-#include <bslma_allocator.h>
-
-namespace BloombergLP {
-namespace bmqpi {
-
-                                // ============
-                                // class DTSpan
-                                // ============
-
-class DTSpan {
-    // A pure interface for representing a span of a distributed trace.
-
-  public:
-    // PUBLIC CREATORS
-    virtual ~DTSpan();
-        // Destructor
-
-    // PUBLIC ACCESSORS
-    virtual bsl::string_view operation() const = 0;
-        // Returns the name of the operation that this 'DTSpan' represents.
-
-                               // =============
-                               // class Baggage
-                               // =============
-
-
-    // PUBLIC INNER CLASSES
-    class Baggage BSLS_KEYWORD_FINAL {
-        // A set of key-values used to describe a 'DTSpan'.
-
-      private:
-        // PRIVATE TYPEDEFS
-        typedef bsl::unordered_map<bsl::string, bsl::string> MapType;
-
-        // PRIVATE DATA
-        MapType d_data;
-
-      public:
-        // PUBLIC TYPES
-        typedef MapType::const_iterator const_iterator;
-
-        // PUBLIC CREATORS
-        Baggage(bslma::Allocator *allocator = 0);
-
-        // PUBLIC ACCESSORS
-        const_iterator begin() const;
-            // Returns a const-iterator used to iterate over key-values.
-
-        const_iterator end() const;
-            // Returns a const-iterator representing the end of key-values.
-
-        bool has(const bsl::string& key) const;
-            // Returns whether this object holds a value associated with the
-            // specified 'key'.
-
-        bsl::string_view get(const bsl::string&      key,
-                             const bsl::string_view& dflt = "") const;
-            // Returns the value currently associated with 'key', or 'dflt' if
-            // no associated value is currently held.
-            //
-            // Beware that if 'key' is not found and the returned 'string_view'
-            // outlives 'dflt', then the 'string_view' will reference a
-            // deallocated address.
-
-        // PUBLIC MANIPULATORS
-        void put(const bsl::string_view& key, const bsl::string_view& value);
-            // Stores the specified 'value' associated with the specified
-            // 'key'. Note that if such a 'key' was already stored, then its
-            // associated value will be replaced by the supplied one.
-
-        bool erase(const bsl::string& key);
-            // Erases any value currently associated with 'key', and returns
-            // whether any such value was previously held.
-    };
-};
-
-}  // close package namespace
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqpi__dttracer_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqpi__dttracer_8h.html deleted file mode 100644 index c3c42effe..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqpi__dttracer_8h.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - -bmqpi_dttracer.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqpi_dttracer.h File Reference

-
-
- -

Provide an interface that can create new DTSpan objects. -More...

- -

Go to the source code of this file.

- - - - - -

-Classes

class  bmqpi::DTTracer

-Namespaces

namespace  bmqpi
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqpi__dttracer_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqpi__dttracer_8h_source.html deleted file mode 100644 index 0918a25ab..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqpi__dttracer_8h_source.html +++ /dev/null @@ -1,73 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2021-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqpi_dttracer.h                                                   -*-C++-*-
-#ifndef INCLUDED_BMQPI_DTTRACER
-#define INCLUDED_BMQPI_DTTRACER
-
-//@PURPOSE: Provide an interface that can create new 'DTSpan' objects.
-//
-//@CLASSES:
-//  bmqpi::DTTracer: Interface for creators of 'DTSpan' objects.
-//
-//@DESCRIPTION:
-// 'bmqpi::DTTracer' is a pure interface for creators of new 'DTSpan' objects.
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqpi_dtspan.h>
-
-// BDE
-#include <bsl_memory.h>
-#include <bsl_string_view.h>
-
-namespace BloombergLP {
-namespace bmqpi {
-
-                               // ==============
-                               // class DTTracer
-                               // ==============
-
-class DTTracer {
-    // A pure interface for creators of 'DTSpan' objects.
-
-  public:
-    // PUBLIC CREATORS
-    virtual ~DTTracer();
-        // Destructor
-
-    // PUBLIC METHODS
-    virtual
-    bsl::shared_ptr<DTSpan>
-    createChildSpan(const bsl::shared_ptr<DTSpan>& parent,
-                    const bsl::string_view&        operation,
-                    const DTSpan::Baggage&         baggage
-                                                = DTSpan::Baggage()) const = 0;
-        // Creates and returns a new 'DTSpan' representing 'operation' as a
-        // child of 'parent', having the key-value tags defined by 'baggage'.
-};
-
-}  // close package namespace
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqpi__hosthealthmonitor_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqpi__hosthealthmonitor_8h.html deleted file mode 100644 index 21c9925ca..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqpi__hosthealthmonitor_8h.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - -bmqpi_hosthealthmonitor.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqpi_hosthealthmonitor.h File Reference

-
-
- -

Provide an interface for monitoring the health of the host. -More...

- -

Go to the source code of this file.

- - - - - -

-Classes

class  bmqpi::HostHealthMonitor

-Namespaces

namespace  bmqpi
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqpi__hosthealthmonitor_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqpi__hosthealthmonitor_8h_source.html deleted file mode 100644 index 3c65fb54d..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqpi__hosthealthmonitor_8h_source.html +++ /dev/null @@ -1,86 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2021-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqpi_hosthealthmonitor.h                                          -*-C++-*-
-#ifndef INCLUDED_BMQPI_HOSTHEALTHMONITOR
-#define INCLUDED_BMQPI_HOSTHEALTHMONITOR
-
-//@PURPOSE: Provide an interface for monitoring the health of the host.
-//
-//@CLASSES:
-//  bmqpi::HostHealthMonitor: Interface for a monitor of host health.
-//
-//@DESCRIPTION:
-// 'bmqpi::HostHealthMonitor' is a pure interface for a monitor of the health
-//   of the host. BlazingMQ sessions can use such objects to conditionally
-//   suspend queue activity while the host is marked unhealthy.
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqt_hosthealthstate.h>
-
-// BDE
-#include <bsl_functional.h>
-#include <bdlmt_signaler.h>
-
-namespace BloombergLP {
-namespace bmqpi {
-
-                           // =======================
-                           // class HostHealthMonitor
-                           // =======================
-
-class HostHealthMonitor {
-    // A pure interface for monitoring the health of the host.
-
-  public:
-    // TYPES
-    typedef bsl::function<void(bmqt::HostHealthState::Enum)>
-        HostHealthChangeFn;
-        // Invoked as a response to the HostHealthMonitor detecting a change
-        // in the state of the host health.
-
-  public:
-    // CREATORS
-    virtual
-    ~HostHealthMonitor();
-        // Destructor
-
-    // MANIPULATORS
-    virtual
-    bdlmt::SignalerConnection
-    observeHostHealth(const HostHealthChangeFn& cb) = 0;
-        // Registers the specified `cb` to be invoked each time the health of
-        // the host changes.
-
-    // ACCESSORS
-    virtual
-    bmqt::HostHealthState::Enum hostState() const = 0;
-        // Queries the current health of the host.
-};
-
-}  // close package namespace
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt_8h.html deleted file mode 100644 index 38cd39876..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt_8h.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -bmqt.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt.txt File Reference

-
-
- -

Provide value-semantic vocabulary types. -More...

- -

Go to the source code of this file.

- -
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt_8h_source.html deleted file mode 100644 index 5159d3260..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt_8h_source.html +++ /dev/null @@ -1,76 +0,0 @@ - - -Bloomberg Development Environment - -
- bmqt.txt
-
-@PURPOSE: Provide value-semantic vocabulary types.
-
-@MNEMONIC: BlazingMQ (vocabulary) Types (bmqt)
-
-@DESCRIPTION: The 'bmqt' package provides low level value-semantic vocabulary
- types for use by the BlazingMQ SDK.
-
-/Hierarchical Synopsis
-/---------------------
- The 'bmqt' package currently has 11 components having 1 level of physical
- dependency.  The list below shows the hierarchical ordering of the components.
-..
-  1. bmqt_correlationid
-     bmqt_encodingtype
-     bmqt_hosthealthstate
-     bmqt_messageeventtype
-     bmqt_messageguid
-     bmqt_queueflags
-     bmqt_queueoptions
-     bmqt_resultcode
-     bmqt_sessioneventtype
-     bmqt_sessionoptions
-     bmqt_uri
-     bmqt_version
-..
-
-/Component Synopsis
-/------------------
-: 'bmqt_compressionalgorithmtype':
-:      Provide an enumeration for different compression algorithm types.
-
-: 'bmqt_correlationid':
-:      Provide a value-semantic type usable as an efficient identifier.
-:
-: 'bmqt_encodingtype':
-:      Provide an enumeration for different message encoding types.
-:
-: 'bmqt_hosthealthstate':
-:      Provide an enumeration for different host health states.
-:
-: 'bmqt_messageeventtype':
-:      Provide an enumeration for the different types of message events.
-:
-: 'bmqt_messageguid':
-:      Provide a value-semantic global unique identifier for BlazingMQ messages
-:
-: 'bmqt_queueflags':
-:      Provide enums for flags to use at Queue open.
-:
-: 'bmqt_queueoptions':
-:      Provide a value-semantic type for options related to a queue.
-:
-: 'bmqt_resultcode':
-:      Provide enums for various publicly exposed result code.
-:
-: 'bmqt_sessioneventtype':
-:      Provide an enumeration for the different types of session events.
-:
-: 'bmqt_sessionoptions':
-:      Provide a value-semantic type to configure session with the broker.
-:
-: 'bmqt_uri':
-:      Provide value-semantic type and utilities for a BlazingMQ queue URI.
-:
-: 'bmqt_version':
-:      Provide a value-semantic type representing a version (major minor).
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__compressionalgorithmtype_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__compressionalgorithmtype_8h.html deleted file mode 100644 index 604dab7d8..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__compressionalgorithmtype_8h.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -bmqt_compressionalgorithmtype.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_compressionalgorithmtype.h File Reference

-
-
- -

Provide an enumeration for different compression algorithm types. -More...

- -

Go to the source code of this file.

- - - - - - - -

-Classes

struct  bmqt::CompressionAlgorithmType

-Namespaces

namespace  bmqt

-Functions

bsl::ostream & bmqt::operator<< (bsl::ostream &stream, CompressionAlgorithmType::Enum value)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__compressionalgorithmtype_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__compressionalgorithmtype_8h_source.html deleted file mode 100644 index 975a96127..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__compressionalgorithmtype_8h_source.html +++ /dev/null @@ -1,163 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2019-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_compressionalgorithmtype.h                                    -*-C++-*-
-#ifndef INCLUDED_BMQT_COMPRESSIONALGORITHMTYPE
-#define INCLUDED_BMQT_COMPRESSIONALGORITHMTYPE
-
-//@PURPOSE: Provide an enumeration for different compression algorithm types.
-//
-//@CLASSES:
-//  bmqt::CompressionAlgorithmType: Type of compression algorithm
-//
-//@DESCRIPTION: Provide an enumeration, 'bmqt::CompressionAlgorithmType' for
-// different types of compression algorithm.
-//
-//: o !NONE!: No compression algorithm was specified
-//: o !ZLIB!: The compression algorithm is ZLIB
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <bsl_ostream.h>
-#include <bsl_string.h>
-
-namespace BloombergLP {
-namespace bmqt {
-
-                    // ===============================
-                    // struct CompressionAlgorithmType
-                    // ===============================
-
-struct CompressionAlgorithmType {
-    // This struct defines various types of compression algorithms.
-
-    // TYPES
-    enum Enum {
-        e_UNKNOWN = -1
-      , e_NONE    = 0
-      , e_ZLIB    = 1
-    };
-
-    // CONSTANTS
-    static const int k_LOWEST_SUPPORTED_TYPE  = e_NONE;
-        // NOTE: This value must always be equal to the lowest type in the
-        // enum because it is being used as a lower bound to verify that a
-        // header's 'CompressionAlgorithmType' field is a supported type.
-
-    static const int k_HIGHEST_SUPPORTED_TYPE = e_ZLIB;
-        // NOTE: This value must always be equal to the highest type in the
-        // enum because it is being used as an upper bound to verify that a
-        // header's 'CompressionAlgorithmType' field is a supported type.
-
-    // CLASS METHODS
-    static
-    bsl::ostream& print(bsl::ostream&                  stream,
-                        CompressionAlgorithmType::Enum value,
-                        int                            level = 0,
-                        int                            spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'CompressionAlgorithmType::Enum' value.
-
-    static const char *toAscii(CompressionAlgorithmType::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the "e_" prefix eluded.  For
-        // example:
-        //..
-        //  bsl::cout << CompressionAlgorithmType::toAscii(
-        //                              CompressionAlgorithmType::e_NONE);
-        //..
-        // will print the following on standard output:
-        //..
-        //  NONE
-        //..
-        // Note that specifying a 'value' that does not match any of the
-        // enumerators will result in a string representation that is distinct
-        // from any of those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(CompressionAlgorithmType::Enum *out,
-                          const bsl::string&              str);
-        // Update the specified 'out' with correct enum corresponding to the
-        // specified string 'str', if it exists, and return true.  Otherwise in
-        // case of an error or unidentified string, return false.  The expected
-        // 'str' is the enumerator name with the "e_" prefix excluded.
-        // For example:
-        //..
-        //  CompressionAlgorithmType::fromAscii(out, NONE);
-        //..
-        //  will return true and the value of 'out' will be:
-        //..
-        //  bmqt::CompresssionAlgorithmType::e_NONE
-        //..
-        // Note that specifying a 'str' that does not match any of the
-        // enumerators excluding "e_" prefix will result in the function
-        // returning false and the specified 'out' will not be touched.
-
-    static bool isValid(const bsl::string *str, bsl::ostream& stream);
-        // Return true incase of valid specified 'str' i.e. a enumerator name
-        // with the "e_" prefix excluded.  Otherwise in case of invalid 'str'
-        // return false and populate the specified 'stream' with error message.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream&                  stream,
-                         CompressionAlgorithmType::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-}  // close package namespace
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-                    // ===============================
-                    // struct CompressionAlgorithmType
-                    // ===============================
-
-// FREE OPERATORS
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&                        stream,
-                 bmqt::CompressionAlgorithmType::Enum value)
-{
-    return bmqt::CompressionAlgorithmType::print(stream, value, 0, -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__correlationid_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__correlationid_8h.html deleted file mode 100644 index a9260301d..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__correlationid_8h.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - -bmqt_correlationid.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_correlationid.h File Reference

-
-
- -

Provide a value-semantic type usable as an efficient identifier. -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Classes

class  bmqt::CorrelationId
struct  bmqt::CorrelationIdLess

-Namespaces

namespace  bmqt

-Functions

bsl::ostream & bmqt::operator<< (bsl::ostream &stream, const CorrelationId &rhs)
bool bmqt::operator== (const CorrelationId &lhs, const CorrelationId &rhs)
bool bmqt::operator!= (const CorrelationId &lhs, const CorrelationId &rhs)
bool bmqt::operator< (const CorrelationId &lhs, const CorrelationId &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__correlationid_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__correlationid_8h_source.html deleted file mode 100644 index afc6b12d9..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__correlationid_8h_source.html +++ /dev/null @@ -1,642 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_correlationid.h                                               -*-C++-*-
-#ifndef INCLUDED_BMQT_CORRELATIONID
-#define INCLUDED_BMQT_CORRELATIONID
-
-//@PURPOSE: Provide a value-semantic type usable as an efficient identifier.
-//
-//@CLASSES:
-//  bmqt::CorrelationId:     correlation ID class.
-//  bmqt::CorrelationIdLess: comparison functor for 'CorrelationId' as map key
-//  bsl::hash:               hash functor specialization
-//
-//@DESCRIPTION: This component implements a value-semantic class,
-// 'bmqt::CorrelationId', which can be used to identify any async operations.
-// The correlationId contains a value (64-bit integer, raw pointer or
-// sharedPtr) supplied by the application or uses an auto-assigned value.  The
-// type and the value of the correlationId can be set at construction time and
-// changed later via the 'setNumeric()', 'setPointer()' and 'setSharedPointer'
-// methods.  Alternatively, a 'CorrelationId::AutoValue' can be used to
-// generate a unique correlationId from within the process.  The
-// 'bmqt::CorrelationIdLess' comparison functor can be used for storing
-// 'CorrelationId' in a map as the key element; and a hash functor
-// specialization is provided in the 'bsl::hash' namespace.
-//
-///AutoValue
-///---------
-// If the application doesn't care about the actual value of the correlation,
-// AutoValue type can be used to create a unique correlationId.  An AutoValue
-// correlationId behaves exactly the same as any other type of correlation,
-// with the exception that it's value can not be retrieved (but two
-// correlationId can be still compared equal).
-//..
-//  bmqt::CorrelationId corrId = bmqt::CorrelationId::autoValue();
-//..
-//
-///Usage
-///-----
-// This section illustrates intended use of this component.
-//
-///Example 1: Correlating Responses
-/// - - - - - - - - - - - - - - - -
-// Suppose that we have the following asynchronous messaging interface that we
-// want to use to implement a basic request/response class.
-//..
-//  class Messenger {
-//
-//    public:
-//      // TYPES
-//      typedef bsl::function<
-//        void(void                       *buffer,
-//             int                         bufferLength,
-//             const bmqt::CorrelationId&  correlationId)> MessageHandler;
-//          // 'MessageHandler' is an alias for a functor that handles received
-//          // messages consisting of the specified 'buffer', having the
-//          // specified 'bufferLength', as well as the specified associated
-//          // 'correlationId' if the message is in response to a previously
-//          // transmitted message.
-//
-//      // MANIPULATORS
-//      void sendMessage(void                       *buffer,
-//                       int                         bufferLength,
-//                       const bmqt::CorrelationId&  correlationId);
-//          // Send a message containing the specified 'buffer' of the
-//          // specified 'bufferLength', associating the specified
-//          // 'correlationId' with any messages later received in response.
-//
-//      void setMessageHandler(const MessageHandler& handler);
-//          // Set the functor to handle messages received by this object to
-//          // the specified 'handler'.
-//  };
-//..
-// First we declare a requester class.
-//..
-//  class Requester {
-//
-//      // DATA
-//      Messenger        *d_messenger_p;  // used to send messages (held)
-//      bslma::Allocator *d_allocator_p;  // memory supply (held)
-//
-//      // PRIVATE CLASS METHODS
-//      static void handleMessage(void                       *buffer,
-//                                int                         bufferLength,
-//                                const bmqt::CorrelationId&  correlationId);
-//          // Handle the response message consisting fo the specified 'buffer'
-//          // having the specified 'bufferLength', and associated
-//          // 'correlationId'.
-//
-//    public:
-//      // TYPES
-//      typedef bsl::function<void(void *buffer, int bufferLength)>
-//                                                            ResponseCallback;
-//          // 'ResponseCallback' is an alias for a functor that is used to
-//          // process received responses consisting of the specified 'buffer'
-//          // having the specified 'bufferLength'.
-//
-//      // CREATORS
-//      explicit Requester(Messenger        *messenger,
-//                         bslma::Allocator *basicAllocator);
-//          // Create a 'Requester' that uses the specified 'messenger' to send
-//          // requests and receive responses, and the specified
-//          // 'basicAllocator' to supply memory.
-//
-//      // MANIPULATORS
-//      void sendRequest(void                    *buffer,
-//                       int                      bufferLength,
-//                       const ResponseCallback&  callback);
-//          // Send a request consisting of the specified 'buffer' having the
-//          // specified 'bufferLength', and invoke the specified 'callback'
-//          // with any asynchronous response.
-//  };
-//..
-// Then, we implement the constructor, setting the message handler on the
-// provided 'Messenger' to our class method.
-//..
-//  Requester::Requester(Messenger        *messenger,
-//                       bslma::Allocator *basicAllocator)
-//  : d_messenger_p(messenger)
-//  , d_allocator_p(basicAllocator)
-//  {
-//      d_messenger_p->setMessageHandler(&Requester::handleMessage);
-//  }
-//..
-// Now, we implement 'sendRequest', copying the given 'callback' into a
-// correlationId that is provided to the messenger.
-//..
-//  void Requester::sendRequest(void                    *buffer,
-//                              int                      bufferLength,
-//                              const ResponseCallback&  callback)
-//  {
-//      bsl::shared_ptr<ResponseCallback> callbackCopy;
-//      callbackCopy.createInplace(d_allocator_p, callback, d_allocator_p);
-//      bmqt::CorrelationId correlationId(bsl::shared_ptr<void>(callbackCopy));
-//      d_messenger_p->sendMessage(buffer, bufferLength, correlationId);
-//  }
-//..
-// Finally, we implement our message handler, extracting the response callback
-// from the correlationId, and invoking it with the received response message.
-//..
-//  void Requester::handleMessage(void                       *buffer,
-//                                int                         bufferLength,
-//                                const bmqt::CorrelationId&  correlationId)
-//  {
-//      assert(correlationId.isSharedPtr());
-//      ResponseCallback *callback = static_cast<ResponseCallback *>(
-//                                         correlationId.theSharedPtr().get());
-//      (*callback)(buffer, bufferLength);
-//  }
-//..
-//
-
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <bdlb_variant.h>
-
-#include <bsl_cstdint.h>
-#include <bsl_iosfwd.h>
-#include <bsl_memory.h>
-#include <bsls_assert.h>
-#include <bsls_types.h>
-#include <bslh_hash.h>
-
-namespace BloombergLP {
-namespace bmqt {
-
-
-                            // ===================
-                            // class CorrelationId
-                            // ===================
-
-class CorrelationId {
-    // This class implements an in-core value-semantic type for correlating an
-    // asynchronous result with the original operation.
-
-    // FRIENDS
-    //  Needed to access getAsAutoValue
-    friend bool operator==(const CorrelationId& lhs, const CorrelationId& rhs);
-    friend bool operator!=(const CorrelationId& lhs, const CorrelationId& rhs);
-    friend struct CorrelationIdLess;
-    friend bsl::ostream& operator<<(bsl::ostream&        stream,
-                                    const CorrelationId& rhs);
-
-    template <class HASH_ALGORITHM>
-    friend
-    void hashAppend(HASH_ALGORITHM& hashAlgo, const CorrelationId& value);
-
-  private:
-    // PRIVATE TYPES
-    typedef bsls::Types::Uint64 AutoValue;
-        // 'AutoValue' is an alias for a 64-bit unsigned integer value that is
-        // used to generate automatic, opaque, correlationId values.
-
-    // DATA
-    bdlb::Variant4<bsls::Types::Int64,
-                   void*,
-                   bsl::shared_ptr<void>,
-                   AutoValue> d_variant;
-                               // The variant used to hold the value of a
-                               // 'CorrelationId', that may either be unset,
-                               // hold a 64-bit integer, a raw pointer, a
-                               // shared pointer, or an 'AutoValue'.
-
-    // PRIVATE ACCESSORS
-    AutoValue theAutoValue() const;
-        // Return the value of this correlationId as an 'AutoValue'.  The
-        // behavior is undefined unless 'isAutoValue'.  Note that this method
-        // is only available in order to implement the comparison and hash
-        // operations.
-
-  public:
-    // TYPES
-    enum Type {
-        e_NUMERIC     // the 'CorrelationId' holds a 64-bit integer
-      , e_POINTER     // the 'CorrelationId' holds a raw pointer
-      , e_SHARED_PTR  // the 'CorrelationId' holds a shared pointer
-      , e_AUTO_VALUE  // the 'CorrelationId' holds an auto value
-      , e_UNSET       // the 'CorrelationId' is not set
-    };
-
-    // CLASS METHOD
-    static CorrelationId autoValue();
-        // Return a 'CorrelationId' having a unique, automatically assigned
-        // opaque value.
-
-    // CREATORS
-    explicit CorrelationId();
-        // Create a 'CorrelationId' having the default, unset, value.
-
-    explicit CorrelationId(bsls::Types::Int64 numeric);
-        // Create a 'CorrelationId' object initialized with the specified
-        // 'numeric' integer value.
-
-    explicit CorrelationId(void *pointer);
-        // Create a 'CorrelationId' object initialized with the specified
-        // 'pointer' value.
-
-    explicit CorrelationId(const bsl::shared_ptr<void>& sharedPtr);
-        // Create a 'CorrelationId' object initialized with the specified
-        // 'sharedPtr' shared pointer value.
-
-    // MANIPULATORS
-    CorrelationId& makeUnset();
-        // Unset the value of this object.
-
-    CorrelationId& setNumeric(bsls::Types::Int64 numeric);
-        // Set the value of this object value to the specified 'numeric'.
-        // Return a reference to this object.
-
-    CorrelationId& setPointer(void* pointer);
-        // Set the value of this object value to the specified 'pointer'.
-        // Return a reference to this object.
-
-    CorrelationId& setSharedPointer(const bsl::shared_ptr<void>& sharedPtr);
-        // Set the value of this object value to the specified 'sharedPtr'.
-        // Return a reference to this object.
-
-    // void setAutoValue
-        // There is explicitly no setAuto, autoCorrelation should only be used
-        // at creation
-
-    // ACCESSORS
-    bool isUnset() const;
-        // Return 'true' if the value of this object is unset;
-
-    bool isNumeric() const;
-        // Return 'true' if the value of this object is an integer value, and
-        // otherwise return 'false'.
-
-    bool isPointer() const;
-        // Return 'true' if the value of this object is a pointer value, and
-        // otherwise return 'false'.
-
-    bool isSharedPtr() const;
-        // Return 'true' if the value of this object is a shared pointer value,
-        // and otherwise return 'false'.
-
-    bool isAutoValue() const;
-        // Return 'true' if the value of this object is an auto correlation
-        // value, and otherwise return 'false'.
-
-    bsls::Types::Int64 theNumeric() const;
-        // Return the 64-bit integer value of this object.  The behavior is
-        // undefined unless method 'isNumeric' returns 'true'.
-
-    void* thePointer() const;
-        // Return the pointer value of this object.  The behavior is undefined
-        // unless method 'isPointer' returns 'true'.
-
-    const bsl::shared_ptr<void>& theSharedPtr() const;
-        // Return the pointer value of this object.  The behavior is undefined
-        // unless method 'isSharedPtr' returns 'true'.
-
-    Type type() const;
-        // Return the type of the value of this object.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-
-                            // -------------------
-                            // class CorrelationId
-                            // -------------------
-
-bsl::ostream& operator<<(bsl::ostream& stream, const CorrelationId& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-bool operator==(const CorrelationId& lhs, const CorrelationId& rhs);
-    // Return 'true' if 'rhs' object contains the value of the same type as
-    // contained in 'lhs' object and the value itself is the same in both
-    // objects, return false otherwise.
-
-bool operator!=(const CorrelationId& lhs, const CorrelationId& rhs);
-    // Return 'false' if 'rhs' object contains the value of the same type as
-    // contained in 'lhs' object and the value itself is the same in both
-    // objects, return 'true' otherwise.
-
-bool operator<(const CorrelationId& lhs, const CorrelationId& rhs);
-    // Operator used to allow comparison between the specified 'lhs' and 'rhs'
-    // CorrelationId objects so that CorrelationId can be used as key in a map.
-
-
-                          // =======================
-                          // class CorrelationIdLess
-                          // =======================
-
-struct CorrelationIdLess
-{
-    // ACCESSORS
-    bool operator()(const CorrelationId& lhs, const CorrelationId& rhs) const;
-        // Return 'true' if the specified 'lhs' should be considered as having
-        // a value less than the specified 'rhs'.
-};
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-
-                            // -------------------
-                            // class CorrelationId
-                            // -------------------
-
-inline
-CorrelationId::AutoValue
-CorrelationId::theAutoValue() const
-{
-    // PRECONDITIONS
-    BSLS_ASSERT(isAutoValue());
-
-    return d_variant.the<AutoValue>();
-}
-
-// CREATORS
-inline
-CorrelationId::CorrelationId()
-: d_variant()
-{
-    // NOTHING
-}
-
-inline
-CorrelationId::CorrelationId(bsls::Types::Int64 numeric)
-: d_variant(numeric)
-{
-    // NOTHING
-}
-
-inline
-CorrelationId::CorrelationId(void *pointer)
-: d_variant(pointer)
-{
-    // NOTHING
-}
-
-inline
-CorrelationId::CorrelationId(const bsl::shared_ptr<void>& sharedPtr)
-: d_variant(sharedPtr)
-{
-    // NOTHING
-}
-
-// MANIPULATORS
-inline
-CorrelationId&
-CorrelationId::makeUnset()
-{
-    d_variant.reset();
-    return *this;
-}
-
-inline
-CorrelationId&
-CorrelationId::setNumeric(bsls::Types::Int64 numeric)
-{
-    d_variant.assign(numeric);
-    return *this;
-}
-
-inline
-CorrelationId&
-CorrelationId::setPointer(void* pointer)
-{
-    d_variant.assign(pointer);
-    return *this;
-}
-
-inline
-CorrelationId&
-CorrelationId::setSharedPointer(const bsl::shared_ptr<void>& sharedPtr)
-{
-    d_variant.assign(sharedPtr);
-    return *this;
-}
-
-// ACCESSORS
-inline
-bool
-CorrelationId::isUnset() const
-{
-    return d_variant.isUnset();
-}
-
-inline
-bool
-CorrelationId::isNumeric() const
-{
-    return d_variant.is<bsls::Types::Int64>();
-}
-
-inline
-bool
-CorrelationId::isPointer() const
-{
-    return d_variant.is<void*>();
-}
-
-inline
-bool
-CorrelationId::isSharedPtr() const
-{
-    return d_variant.is<bsl::shared_ptr<void> >();
-}
-
-inline
-bool
-CorrelationId::isAutoValue() const
-{
-    return d_variant.is<AutoValue>();
-}
-
-inline
-bsls::Types::Int64
-CorrelationId::theNumeric() const
-{
-    // PRECONDITIONS
-    BSLS_ASSERT(isNumeric());
-
-    return d_variant.the<bsls::Types::Int64>();
-}
-
-inline
-void*
-CorrelationId::thePointer() const
-{
-    // PRECONDITIONS
-    BSLS_ASSERT(isPointer());
-
-    return d_variant.the<void*>();
-}
-
-inline
-const bsl::shared_ptr<void>&
-CorrelationId::theSharedPtr() const
-{
-    // PRECONDITIONS
-    BSLS_ASSERT(isSharedPtr());
-
-    return d_variant.the<bsl::shared_ptr<void> >();
-}
-
-inline
-CorrelationId::Type
-CorrelationId::type() const
-{
-    int result = isUnset()     ? e_UNSET
-               : isNumeric()   ? e_NUMERIC
-               : isPointer()   ? e_POINTER
-               : isSharedPtr() ? e_SHARED_PTR
-               : isAutoValue() ? e_AUTO_VALUE
-               : -1;
-    BSLS_ASSERT_OPT(-1 != result && "Unknown correlation type");
-
-    return static_cast<Type>(result);
-}
-
-// FREE FUNCTIONS
-template <class HASH_ALGORITHM>
-void
-hashAppend(HASH_ALGORITHM&      hashAlgo,
-           const CorrelationId& value)
-{
-    using bslh::hashAppend;  // for ADL
-
-    CorrelationId::Type type = value.type();
-    hashAppend(hashAlgo, static_cast<int>(type));
-
-    switch (type) {
-      case CorrelationId::e_NUMERIC: {
-          hashAppend(hashAlgo, value.theNumeric());
-      } break;
-      case CorrelationId::e_POINTER: {
-          hashAppend(hashAlgo, value.thePointer());
-      } break;
-      case CorrelationId::e_SHARED_PTR: {
-          hashAppend(hashAlgo, value.theSharedPtr());
-      } break;
-      case CorrelationId::e_AUTO_VALUE: {
-          hashAppend(hashAlgo, value.theAutoValue());
-      } break;
-      case CorrelationId::e_UNSET: {
-          hashAppend(hashAlgo, 0);
-      } break;
-      default: {
-        BSLS_ASSERT_OPT(false && "Unknown correlationId type");
-        hashAppend(hashAlgo, 0);
-      }
-    }
-}
-
-                          // ------------------------
-                          // struct CorrelationIdLess
-                          // ------------------------
-
-inline
-bool
-CorrelationIdLess::operator()(const CorrelationId& lhs,
-                              const CorrelationId& rhs) const
-{
-    // If 'lhs' and 'rhs' have different types, they are compared by their
-    // corresponding type indices.  Otherwise, they are compared by value.
-
-    bool result;
-    if (lhs.d_variant.typeIndex() != rhs.d_variant.typeIndex()) {
-        result = lhs.d_variant.typeIndex() < rhs.d_variant.typeIndex();
-    } else if (lhs.isNumeric()) {
-        result = lhs.theNumeric() < rhs.theNumeric();
-    } else if (lhs.isPointer()) {
-        result = reinterpret_cast<bsl::uintptr_t>(lhs.thePointer()) <
-                 reinterpret_cast<bsl::uintptr_t>(rhs.thePointer());
-    } else if (lhs.isSharedPtr()) {
-        result = lhs.theSharedPtr() < rhs.theSharedPtr();
-    } else if (lhs.isAutoValue()) {
-        result = lhs.theAutoValue() < rhs.theAutoValue();
-    } else {
-        BSLS_ASSERT_OPT(false && "Unknown correlator type");
-        result = false;
-    }
-
-    return result;
-}
-
-}  // close package namespace
-
-                            // -------------------
-                            // class CorrelationId
-                            // -------------------
-
-// FREE OPERATORS
-inline
-bool
-bmqt::operator==(const bmqt::CorrelationId& lhs,
-                 const bmqt::CorrelationId& rhs)
-{
-    return lhs.d_variant == rhs.d_variant;
-}
-
-inline
-bool
-bmqt::operator!=(const bmqt::CorrelationId& lhs,
-                 const bmqt::CorrelationId& rhs)
-{
-    return lhs.d_variant != rhs.d_variant;
-}
-
-inline
-bool
-bmqt::operator<(const bmqt::CorrelationId& lhs,
-                const bmqt::CorrelationId& rhs)
-{
-    CorrelationIdLess less;
-    return less(lhs, rhs);
-}
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&              stream,
-                 const bmqt::CorrelationId& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__encodingtype_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__encodingtype_8h.html deleted file mode 100644 index af78ab5b5..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__encodingtype_8h.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -bmqt_encodingtype.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_encodingtype.h File Reference

-
-
- -

Provide an enumeration for different message encoding types. -More...

- -

Go to the source code of this file.

- - - - - - - -

-Classes

struct  bmqt::EncodingType

-Namespaces

namespace  bmqt

-Functions

bsl::ostream & bmqt::operator<< (bsl::ostream &stream, EncodingType::Enum value)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__encodingtype_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__encodingtype_8h_source.html deleted file mode 100644 index 9e019100a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__encodingtype_8h_source.html +++ /dev/null @@ -1,157 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_encodingtype.h                                                -*-C++-*-
-#ifndef INCLUDED_BMQT_ENCODINGTYPE
-#define INCLUDED_BMQT_ENCODINGTYPE
-
-//@PURPOSE: Provide an enumeration for different message encoding types.
-//
-//@CLASSES:
-//  bmqt::EncodingType: Enumeration for different message encoding types.
-//
-//@DESCRIPTION: Provide an enumeration, 'bmqt::EncodingType' for different
-// message encoding types.
-//
-//: o !UNDEFINED!: No encoding was specified
-//: o !RAW!: The encoding is RAW, i.e., binary
-//: o !BER!: Binary encoding using the BER codec
-//: o !BDEX!: Binary encoding using the BDEX codec
-//: o !XML!: Text encoding, using the XML format
-//: o !JSON!: Text encoding, using the JSON format
-//: o !TEXT!: Plain text encoding, using a custom user-specific format
-//: o !MULTIPARTS!: Message is part of a multipart message
-
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <bsl_iosfwd.h>
-#include <bsl_string.h>
-
-
-namespace BloombergLP {
-namespace bmqt {
-
-                            // ===================
-                            // struct EncodingType
-                            // ===================
-
-struct EncodingType {
-    // Enumeration for message encoding types.
-
-    // TYPES
-    enum Enum {
-        e_UNDEFINED  = 0
-      , e_RAW        = 1
-      , e_BER        = 2
-      , e_BDEX       = 3
-      , e_XML        = 4
-      , e_JSON       = 5
-      , e_TEXT       = 6
-      , e_MULTIPARTS = 7
-    };
-
-    // PUBLIC CONSTANTS
-    static const int k_LOWEST_SUPPORTED_ENCODING_TYPE = e_RAW;
-        // NOTE: This value must always be equal to the lowest type in the
-        // enum because it is being used as a lower bound to verify that an
-        // EncodingType field is a supported type.
-
-    static const int k_HIGHEST_SUPPORTED_ENCODING_TYPE = e_MULTIPARTS;
-        // NOTE: This value must always be equal to the highest type in the
-        // enum because it is being used as an upper bound to verify an
-        // EncodingType field is a supported type.
-
-    // CLASS METHODS
-    static bsl::ostream& print(bsl::ostream&      stream,
-                               EncodingType::Enum value,
-                               int                level = 0,
-                               int                spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'EncodingType::Value' value.
-
-    static const char *toAscii(EncodingType::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the 'BMQT_' prefix elided.  Note
-        // that specifying a 'value' that does not match any of the enumerators
-        // will result in a string representation that is distinct from any of
-        // those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(EncodingType::Enum       *out,
-                          const bslstl::StringRef&  str);
-        // Return true and fills the specified 'out' with the enum value
-        // corresponding to the specified 'str', if valid, or return false and
-        // leave 'out' untouched if 'str' doesn't correspond to any value of
-        // the enum.
-
-    static bool isValid(const bsl::string *string, bsl::ostream& stream);
-        // Return true if the specified 'string' is a valid representation of
-        // the 'EncodingType', otherwise return false and print a description
-        // of the error to the specified 'stream'.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream&      stream,
-                         EncodingType::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-}  // close package namespace
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-
-                            // -------------------
-                            // struct EncodingType
-                            // -------------------
-
-// FREE OPERATORS
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&            stream,
-                 bmqt::EncodingType::Enum value)
-{
-    return EncodingType::print(stream, value, 0 , -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__hosthealthstate_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__hosthealthstate_8h.html deleted file mode 100644 index 6f2807904..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__hosthealthstate_8h.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -bmqt_hosthealthstate.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_hosthealthstate.h File Reference

-
-
- -

Provide an enumeration for different host health states. -More...

- -

Go to the source code of this file.

- - - - - - - -

-Classes

struct  bmqt::HostHealthState

-Namespaces

namespace  bmqt

-Functions

bsl::ostream & bmqt::operator<< (bsl::ostream &stream, HostHealthState::Enum value)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__hosthealthstate_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__hosthealthstate_8h_source.html deleted file mode 100644 index 409807cbe..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__hosthealthstate_8h_source.html +++ /dev/null @@ -1,130 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2021-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_hosthealthstate.h                                             -*-C++-*-
-#ifndef INCLUDED_BMQT_HOSTHEALTHSTATE
-#define INCLUDED_BMQT_HOSTHEALTHSTATE
-
-//@PURPOSE: Provide an enumeration for different host health states.
-//
-//@CLASSES:
-//  bmqt::HostHealthState: Enumeration for different host health states.
-//
-//@DESCRIPTION: Provide an enumeration, 'bmqt::HostHealthState' for different
-// representations of the health of a host.
-//
-//: o !UNKNOWN!: Host health could not be ascertained
-//: o !HEALTHY!: Host is considered to be healthy
-//: o !UNHEALTHY!: Host is not considered to be healthy
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <bsl_iosfwd.h>
-#include <bsl_string.h>
-
-
-namespace BloombergLP {
-namespace bmqt {
-
-                            // ======================
-                            // struct HostHealthState
-                            // ======================
-
-struct HostHealthState {
-    // Enumeration for host health states.
-
-    // TYPES
-    enum Enum {
-        e_UNKNOWN   = 0
-      , e_HEALTHY   = 1
-      , e_UNHEALTHY = 2
-    };
-
-    // CLASS METHODS
-    static bsl::ostream& print(bsl::ostream&         stream,
-                               HostHealthState::Enum value,
-                               int                   level = 0,
-                               int                   spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'HostHealthState::Value' value.
-
-    static const char *toAscii(HostHealthState::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the 'BMQT_' prefix elided.  Note
-        // that specifying a 'value' that does not match any of the enumerators
-        // will result in a string representation that is distinct from any of
-        // those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(HostHealthState::Enum    *out,
-                          const bslstl::StringRef&  str);
-        // Return true and fills the specified 'out' with the enum value
-        // corresponding to the specified 'str', if valid, or return false and
-        // leave 'out' untouched if 'str' doesn't correspond to any value of
-        // the enum.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream&         stream,
-                         HostHealthState::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-}  // close package namespace
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-
-                            // ----------------------
-                            // struct HostHealthState
-                            // ----------------------
-
-// FREE OPERATORS
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&               stream,
-                 bmqt::HostHealthState::Enum value)
-{
-    return HostHealthState::print(stream, value, 0 , -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__messageeventtype_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__messageeventtype_8h.html deleted file mode 100644 index 7dd54bb89..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__messageeventtype_8h.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -bmqt_messageeventtype.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_messageeventtype.h File Reference

-
-
- -

Provide an enumeration for the different types of message events. -More...

- -

Go to the source code of this file.

- - - - - - - -

-Classes

struct  bmqt::MessageEventType

-Namespaces

namespace  bmqt

-Functions

bsl::ostream & bmqt::operator<< (bsl::ostream &stream, MessageEventType::Enum value)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__messageeventtype_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__messageeventtype_8h_source.html deleted file mode 100644 index 1f4b1374b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__messageeventtype_8h_source.html +++ /dev/null @@ -1,146 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_messageeventtype.h                                            -*-C++-*-
-#ifndef INCLUDED_BMQT_MESSAGEEVENTTYPE
-#define INCLUDED_BMQT_MESSAGEEVENTTYPE
-
-//@PURPOSE: Provide an enumeration for the different types of message events.
-//
-//@CLASSES:
-//  bmqt::MessageEventType: Enumeration for the types of message events.
-//
-//@DESCRIPTION: Provide an enumeration, 'bmqt::MessageEventType', for the
-// different types of message events.
-//
-//: o !UNDEFINED!: Unknown message type
-//: o !ACK!:       Message is an ack
-//: o !PUSH!:      Message is a push
-//: o !PUT!:       Message is a put
-//
-
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <bsl_iosfwd.h>
-#include <bsl_string.h>
-
-
-namespace BloombergLP {
-namespace bmqt {
-
-                          // =======================
-                          // struct MessageEventType
-                          // =======================
-
-struct MessageEventType {
-    // Enumeration for the types of message events
-
-    // TYPES
-    enum Enum {
-        e_UNDEFINED =  0
-      , e_PUT       =  1
-      , e_PUSH      =  2
-      , e_ACK       =  3
-    };
-
-    // PUBLIC CONSTANTS
-    static const int k_LOWEST_SUPPORTED_EVENT_TYPE = e_PUT;
-        // NOTE: This value must always be equal to the lowest type in the
-        // enum because it is being used as a lower bound to verify that an
-        // MessageEventType field is a supported type.
-
-    static const int k_HIGHEST_SUPPORTED_EVENT_TYPE = e_ACK;
-        // NOTE: This value must always be equal to the highest type in the
-        // enum because it is being used as an upper bound to verify an
-        // MessageEventType field is a supported type.
-
-    // CLASS METHODS
-    static bsl::ostream& print(bsl::ostream&          stream,
-                               MessageEventType::Enum value,
-                               int                    level          = 0,
-                               int                    spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'MessageEventType::Value' value.
-
-    static const char *toAscii(MessageEventType::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the 'BMQT_' prefix elided.  Note
-        // that specifying a 'value' that does not match any of the enumerators
-        // will result in a string representation that is distinct from any of
-        // those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(MessageEventType::Enum   *out,
-                          const bslstl::StringRef&  str);
-        // Return true and fills the specified 'out' with the enum value
-        // corresponding to the specified 'str', if valid, or return false and
-        // leave 'out' untouched if 'str' doesn't correspond to any value of
-        // the enum.
-
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream&          stream,
-                         MessageEventType::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-}  // close package namespace
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-
-                          // -----------------------
-                          // struct MessageEventType
-                          // -----------------------
-
-// FREE OPERATORS
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&                stream,
-                 bmqt::MessageEventType::Enum value)
-{
-    return MessageEventType::print(stream, value, 0 , -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__messageguid_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__messageguid_8h.html deleted file mode 100644 index bbd38dcf4..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__messageguid_8h.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - -bmqt_messageguid.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_messageguid.h File Reference

-
-
- -

Provide a value-semantic global unique identifier for BlazingMQ. -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - -

-Classes

class  bmqt::MessageGUID
struct  bmqt::MessageGUIDLess
class  bmqt::MessageGUIDHashAlgo

-Namespaces

namespace  bmqt

-Functions

bsl::ostream & bmqt::operator<< (bsl::ostream &stream, const MessageGUID &rhs)
bool bmqt::operator== (const MessageGUID &lhs, const MessageGUID &rhs)
bool bmqt::operator!= (const MessageGUID &lhs, const MessageGUID &rhs)
bool bmqt::operator< (const MessageGUID &lhs, const MessageGUID &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__messageguid_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__messageguid_8h_source.html deleted file mode 100644 index a6f0edaf8..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__messageguid_8h_source.html +++ /dev/null @@ -1,463 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_messageguid.h                                                 -*-C++-*-
-#ifndef INCLUDED_BMQT_MESSAGEGUID
-#define INCLUDED_BMQT_MESSAGEGUID
-
-//@PURPOSE: Provide a value-semantic global unique identifier for BlazingMQ
-//messages.
-//
-//@CLASSES:
-//  bmqt::MessageGUID         : Value-semantic global unique ID for BlazingMQ
-//                              message
-//  bmqt::MessageGUIDLess     : Binary function for comparing GUIDs.
-//  bmqt::MessageGUIDHashAlgo : Provide a hashing algorithm for Message GUID.
-//
-//@DESCRIPTION: 'bmqt::MessageGUID' provides a value-semantic global unique
-// identifier for BlazingMQ messages.  Each bmqa::Message delivered to
-// BlazingMQ client from BlazingMQ broker contains a unique MessageGUID.  The
-// binary function 'bmqt::MessageGUIDLess' can be used for comparing GUIDs, and
-// an optimized custom hash function is provided with
-// 'bmqt::MessageGUIDHashAlgo'.
-//
-//
-///Externalization
-///---------------
-// For convenience, this class provides 'toHex' method that can be used to
-// externalize a 'bmqt::MessageGUID' instance.  Applications can persist the
-// resultant buffer (on filesystem, in database) to keep track of last
-// processed message ID across task instantiations.  'fromHex' method can be
-// used to convert a valid externalized buffer back to a message ID.
-//
-///Efficient comparison and hash function
-///--------------------------------------
-// This component also provides efficient comparison and hash functions for
-// convenience, and thus, applications can use this component as a key in
-// associative containers.
-//
-//
-///Example 1: Externalizing
-/// - - - - - - - - - - - -
-//..
-//  // Below, 'msg' is a valid instance of 'bmqa::Message' obtained from an
-//  // instance of 'bmqa::Session':
-//
-//  bmqt::MessageGUID g1 = msg.messageId();
-//
-//  char buffer[bmqt::MessageGUID::e_SIZE_HEX];
-//  g1.toHex(buffer);
-//
-//  BSLS_ASSERT(true == bmqt::MessageGUID::isValidHexRepresentation(buffer));
-//
-//  bmqt::MessageGUID g2;
-//  g2.fromHex(buffer);
-//
-//  BSLS_ASSERT(g1 == g2);
-//..
-//
-
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <bsl_cstring.h>      // for bsl::memset, bsl::memcmp
-
-#include <bsl_cstddef.h>
-
-#include <bsl_iosfwd.h>
-#include <bslh_hash.h>
-#include <bslmf_isbitwiseequalitycomparable.h>
-#include <bslmf_istriviallycopyable.h>
-#include <bslmf_nestedtraitdeclaration.h>
-#include <bsls_annotation.h>
-#include <bsls_types.h>
-
-namespace BloombergLP {
-namespace bmqt {
-
-
-                             // =================
-                             // class MessageGUID
-                             // =================
-
-class MessageGUID {
-    // This class provides a value-semantic type to represent a global unique
-    // ID for BlazingMQ messages.
-
-    // FRIENDS
-    friend bool operator==(const MessageGUID& lhs, const MessageGUID& rhs);
-    friend bool operator!=(const MessageGUID& lhs, const MessageGUID& rhs);
-    friend struct MessageGUIDLess;
-    template <class HASH_ALGORITHM>
-    friend void hashAppend(HASH_ALGORITHM& hashAlgo, const MessageGUID& guid);
-
-  public:
-    // TYPES
-    enum Enum {
-        // Enum representing the size of a buffer needed to represent a GUID
-        e_SIZE_BINARY = 16 // Binary format of the GUID
-
-      , e_SIZE_HEX    = 2 * e_SIZE_BINARY
-                           // Hexadecimal string representation of the GUID
-    };
-
-    // TRAITS
-    BSLMF_NESTED_TRAIT_DECLARATION(MessageGUID,
-                                   bslmf::IsBitwiseEqualityComparable)
-    BSLMF_NESTED_TRAIT_DECLARATION(MessageGUID, bsl::is_trivially_copyable)
-
-  private:
-    // PRIVATE CONSTANTS
-    static const char k_UNSET_GUID[e_SIZE_BINARY];
-                                //  Constant representing an unset GUID
-
-  private:
-    // IMPLEMENTATION NOTE: Some structs in bmqp::Protocol.h blindly
-    //                      reinterpret_cast a char[e_SIZE_BINARY] to a
-    //                      MessageGUID (instead of using 'fromBinary()') so
-    //                      that they can return a const MessageGUID&.
-    // IMPLEMENTATION NOTE: See mqbu_messageguidutil.cpp for internal layout of
-    //                      MessageGUID
-
-    // DATA
-    char d_buffer[e_SIZE_BINARY];
-
-  public:
-    // CLASS METHODS
-    static bool isValidHexRepresentation(const char *buffer);
-        // Return true if the specified 'buffer' is a valid hex representation
-        // of a MessageGUID.  The behavior is undefined unless 'buffer' is
-        // non-null and length of the 'buffer' is equal to 'e_SIZE_HEX'.
-
-    // CREATORS
-    MessageGUID();
-        // Create an un-initialized MessageGUID.  Note that 'isUnset()' would
-        // return true.
-
-    ~MessageGUID();
-        // Destructor.
-
-    // MANIPULATORS
-    MessageGUID& fromBinary(const unsigned char *buffer);
-        // Initialize this MessageGUID with the binary representation from the
-        // specified 'buffer', in binary format.  Behavior is undefined unless
-        // 'buffer' is non-null and of length 'e_SIZE_BINARY'.  Return a
-        // reference offering modifiable access to this object.
-
-    MessageGUID& fromHex(const char* buffer);
-        // Initialize this MessageGUID with the hexadecimal representation from
-        // the specified 'buffer'.  Behavior is undefined unless
-        // 'isValidHexRepresentation()' returns true for the provided
-        // 'buffer'.  Return a reference offering modifiable access to this
-        // object.
-
-    // ACCESSORS
-    bool isUnset() const;
-        // Return 'true' if the value of this object is not set.
-
-    void toBinary(unsigned char *destination) const;
-        // Write the binary representation of this object to the specified
-        // 'destination'.  Behavior is undefined unless 'destination' is of
-        // length 'e_SIZE_BINARY'.  Note that 'destination' can later be used
-        // to populate a MessageGUID object using 'fromBinary' method.
-
-    void toHex(char *destination) const;
-        // Write the hex representation of this object to the specified
-        // 'destination'.  Behavior is undefined unless 'destination' is of
-        // length 'e_SIZE_HEX'.  Note that 'destination' can later be used to
-        // populate a MessageGUID object using 'fromHex' method.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Write the value of this object to the specified output 'stream' in a
-        // human-readable format, and return a reference to 'stream'.
-        // Optionally specify an initial indentation 'level'.  If 'level' is
-        // specified, optionally specify 'spacesPerLevel', whose absolute value
-        // indicates the number of spaces per indentation level for this
-        // object.  If 'level' is negative, suppress indentation of the first
-        // line.  If 'spacesPerLevel' is negative, format the entire output on
-        // one line, suppressing all but the initial indentation (as governed
-        // by 'level').  If 'stream' is not valid on entry, this operation has
-        // no effect.  Note that this human-readable format is not fully
-        // specified, and can change without notice.  Applications relying on a
-        // fixed length format must use 'toHex' method.
-};
-
-// FREE OPERATORS
-
-                             // -----------------
-                             // class MessageGUID
-                             // -----------------
-
-bsl::ostream& operator<<(bsl::ostream& stream, const MessageGUID& rhs);
-    // Write the value of the specified 'rhs' object to the specified output
-    // 'stream' in a human-readable format, and return a reference to 'stream'.
-    // Note that this human-readable format is not fully specified, and can
-    // change without notice.  Applications relying on a fixed length format
-    // must use 'toHex' method.
-
-bool operator==(const MessageGUID& lhs, const MessageGUID& rhs);
-    // Return 'true' if 'rhs' object contains the value of the same type as
-    // contained in 'lhs' object and the value itself is the same in both
-    // objects, return false otherwise.
-
-bool operator!=(const MessageGUID& lhs, const MessageGUID& rhs);
-    // Return 'false' if 'rhs' object contains the value of the same type as
-    // contained in 'lhs' object and the value itself is the same in both
-    // objects, return 'true' otherwise.
-
-bool operator<(const MessageGUID& lhs, const MessageGUID& rhs);
-    // Return true if the specified 'lhs' instance is smaller than the
-    // specified 'rhs' instance, false otherwise.  Note that criteria for
-    // comparison is implementation defined, and result of this routine *does*
-    // *not* in any way signify the order of creation/arrival/delivery of
-    // messages to which 'lhs' and 'rhs' instances belong.  Note that this
-    // operator is provided so that MessageGUID can be used as a key in
-    // associative containers (map, set, etc).
-
-
-                           // =====================
-                           // class MessageGUIDLess
-                           // =====================
-
-struct MessageGUIDLess
-{
-    // This struct provides a binary function for comparing 2 GUIDs.
-
-    // ACCESSORS
-    bool operator()(const MessageGUID& lhs, const MessageGUID& rhs) const;
-        // Return 'true' if the specified 'lhs' should be considered as having
-        // a value less than the specified 'rhs'.
-};
-
-
-                         // =========================
-                         // class MessageGUIDHashAlgo
-                         // =========================
-
-class MessageGUIDHashAlgo {
-    // This class provides a hashing algorithm for 'bmqt::MessageGUID'.  At the
-    // time of writing, this algorithm was found to be approximately 4x faster
-    // than the default hashing algorithm that comes with 'bslh' package.
-    // Performance-critical applications may want to use this hashing algorithm
-    // instead of the default one.
-
-  private:
-    // DATA
-    bsls::Types::Uint64  d_result;
-
-  public:
-    // TYPES
-    typedef bsls::Types::Uint64 result_type;
-
-    // CREATORS
-    MessageGUIDHashAlgo();
-        // Constructor
-
-    // MANIPULATORS
-    void operator()(const void *data, size_t numBytes);
-
-    result_type computeHash();
-        // Compute and return the hash for the GUID.
-};
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-
-                             // -----------------
-                             // class MessageGUID
-                             // -----------------
-
-// CREATORS
-inline
-MessageGUID::MessageGUID()
-{
-    bsl::memcpy(d_buffer, k_UNSET_GUID, e_SIZE_BINARY);
-}
-
-inline
-MessageGUID::~MessageGUID() {
-#ifdef BSLS_ASSERT_SAFE_IS_ACTIVE
-    bsl::memcpy(d_buffer, k_UNSET_GUID, e_SIZE_BINARY);
-#endif
-}
-
-// ACCESSORS
-inline
-bool
-MessageGUID::isUnset() const
-{
-    return 0 == bsl::memcmp(d_buffer, k_UNSET_GUID, e_SIZE_BINARY);
-}
-
-// FREE FUNCTIONS
-template <class HASH_ALGORITHM>
-void
-hashAppend(HASH_ALGORITHM&    hashAlgo,
-           const MessageGUID& guid)
-{
-    using bslh::hashAppend;  // for ADL
-    hashAppend(hashAlgo, guid.d_buffer);  // hashes entire buffer array
-}
-
-
-                           // ----------------------
-                           // struct MessageGUIDLess
-                           // ----------------------
-
-inline
-bool
-MessageGUIDLess::operator()(const MessageGUID& lhs,
-                            const MessageGUID& rhs) const
-{
-    return 0 > bsl::memcmp(lhs.d_buffer,
-                           rhs.d_buffer,
-                           MessageGUID::e_SIZE_BINARY);
-}
-
-
-                         // -------------------------
-                         // class MessageGUIDHashAlgo
-                         // -------------------------
-
-// CREATORS
-inline
-MessageGUIDHashAlgo::MessageGUIDHashAlgo()
-: d_result(0)
-{
-}
-
-// MANIPULATORS
-inline
-void
-MessageGUIDHashAlgo::operator()(const void                    *data,
-                                BSLS_ANNOTATION_UNUSED size_t  numBytes)
-{
-    // Implementation note: we implement the 'djb2' hash algorithm (more
-    // details at http://www.cse.yorku.ca/~oz/hash.html).
-
-    // At the time of writing, this algorithm came out to be about 400% faster
-    // than 'bslh::SpookyHashAlgorithm', which is the default hashing algorithm
-    // in 'bslh' hashing framework.  Note that while
-    // 'bslh::SpookyHashAlgorithm' is slower, it may have a better uniform
-    // distribution than this algorithm (although some literature claims djb2
-    // to have a very good distribution as well).  Both algorithms were found
-    // to be collision free in testing (see mqbu_messageguidtutil.t).
-
-    // We have slightly modified the djb2 algorithm by unrolling djb2 'while'
-    // loop, by using our knowledge that 'numBytes' is always 16 for
-    // 'bmqt::MessageGUID'.  For reference, the unmodified djb2 algorithm has
-    // been specified at the end of this method.  Our unrolled version comes
-    // out to be about 25% faster than the looped version.  The unrolled
-    // version has data dependency, so its not the ILP but probably the absence
-    // of branching which makes it faster than the looped version.
-
-    d_result = 5381ULL;
-
-    const char *start = reinterpret_cast<const char*>(data);
-    d_result = (d_result << 5) + d_result + start[0];
-    d_result = (d_result << 5) + d_result + start[1];
-    d_result = (d_result << 5) + d_result + start[2];
-    d_result = (d_result << 5) + d_result + start[3];
-    d_result = (d_result << 5) + d_result + start[4];
-    d_result = (d_result << 5) + d_result + start[5];
-    d_result = (d_result << 5) + d_result + start[6];
-    d_result = (d_result << 5) + d_result + start[7];
-    d_result = (d_result << 5) + d_result + start[8];
-    d_result = (d_result << 5) + d_result + start[9];
-    d_result = (d_result << 5) + d_result + start[10];
-    d_result = (d_result << 5) + d_result + start[11];
-    d_result = (d_result << 5) + d_result + start[12];
-    d_result = (d_result << 5) + d_result + start[13];
-    d_result = (d_result << 5) + d_result + start[14];
-    d_result = (d_result << 5) + d_result + start[15];
-
-    // For reference, 'loop' version of djb2 algorithm:
-    //..
-    //  size_t index = 0;
-    //  while (index++ < numBytes) {
-    //      d_result = (d_result << 5) + d_result +  // same as 'd_result * 33'
-    //                 (reinterpret_cast<const char*>(data))[index];
-    //  }
-    //..
-}
-
-inline
-MessageGUIDHashAlgo::result_type
-MessageGUIDHashAlgo::computeHash()
-{
-    return d_result;
-}
-
-}  // close package namespace
-
-
-                             // -----------------
-                             // class MessageGUID
-                             // -----------------
-
-// FREE OPERATORS
-inline
-bool
-bmqt::operator==(const bmqt::MessageGUID& lhs,
-                 const bmqt::MessageGUID& rhs)
-{
-    return 0 == bsl::memcmp(lhs.d_buffer,
-                            rhs.d_buffer,
-                            MessageGUID::e_SIZE_BINARY);
-}
-
-inline
-bool
-bmqt::operator!=(const bmqt::MessageGUID& lhs,
-                 const bmqt::MessageGUID& rhs)
-{
-    return !(lhs == rhs);
-}
-
-inline
-bool
-bmqt::operator<(const bmqt::MessageGUID& lhs,
-                const bmqt::MessageGUID& rhs)
-{
-    MessageGUIDLess less;
-    return less(lhs, rhs);
-}
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&            stream,
-                 const bmqt::MessageGUID& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__propertytype_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__propertytype_8h.html deleted file mode 100644 index 79e210037..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__propertytype_8h.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -bmqt_propertytype.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_propertytype.h File Reference

-
-
- -

Provide enum for the supported data types for a message property. -More...

- -

Go to the source code of this file.

- - - - - - - -

-Classes

struct  bmqt::PropertyType

-Namespaces

namespace  bmqt

-Functions

bsl::ostream & bmqt::operator<< (bsl::ostream &stream, PropertyType::Enum value)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__propertytype_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__propertytype_8h_source.html deleted file mode 100644 index 1771993ba..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__propertytype_8h_source.html +++ /dev/null @@ -1,166 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2016-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_propertytype.h                                                -*-C++-*-
-#ifndef INCLUDED_BMQT_PROPERTYTYPE
-#define INCLUDED_BMQT_PROPERTYTYPE
-
-//@PURPOSE: Provide enum for the supported data types for a message property.
-//
-//@CLASSES:
-//  bmqt::PropertyType: Enum for supported data types for a message property.
-//
-//@DESCRIPTION: This component contains 'bmqt::PropertyType' which describes
-// various data types that are supported for message properties.
-//
-///Data Types and Size
-///-------------------
-// This section describes the size of each data type:
-//..
-//
-//  +----------------------------------------------------+
-//  | Data Type                      | Size (in bytes)   |
-//  +====================================================+
-//  | BOOL                           | 1
-//  | CHAR                           | 1                 |
-//  +----------------------------------------------------+
-//  | SHORT                          | 2                 |
-//  +----------------------------------------------------+
-//  | INT                            | 4                 |
-//  +----------------------------------------------------+
-//  | INT64                          | 8                 |
-//  +----------------------------------------------------+
-//  | STRING                         | variable          |
-//  +----------------------------------------------------+
-//  | BINARY                         | variable          |
-//  +----------------------------------------------------+
-//..
-//
-// Note that the difference between 'BINARY' and 'STRING' data types is that
-// the former allows null ('\0') character while the later does not.
-
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <bsl_iosfwd.h>
-#include <bsl_string.h>
-
-namespace BloombergLP {
-namespace bmqt {
-
-                            // ===================
-                            // struct PropertyType
-                            // ===================
-
-struct PropertyType {
-    // This enum represents the supported data types for a message property.
-
-    // TYPES
-    enum Enum {
-        e_UNDEFINED = 0
-      , e_BOOL      = 1
-      , e_CHAR      = 2
-      , e_SHORT     = 3
-      , e_INT32     = 4
-      , e_INT64     = 5
-      , e_STRING    = 6
-      , e_BINARY    = 7
-    };
-
-    // CONSTANTS
-    static const int k_LOWEST_SUPPORTED_PROPERTY_TYPE = e_BOOL;
-        // NOTE: This value must always be equal to the lowest type in the
-        // enum because it is being used as a lower bound to verify that a
-        // Property's 'type' field is a supported type.
-
-    static const int k_HIGHEST_SUPPORTED_PROPERTY_TYPE = e_BINARY;
-        // NOTE: This value must always be equal to the highest type in the
-        // enum because it is being used as an upper bound to verify a
-        // Property's 'type' field is a supported type.
-
-    // CLASS METHODS
-    static bsl::ostream& print(bsl::ostream&      stream,
-                               PropertyType::Enum value,
-                               int                level = 0,
-                               int                spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'PropertyType::Enum' value.
-
-    static const char *toAscii(PropertyType::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the 'e_' prefix elided.  Note
-        // that specifying a 'value' that does not match any of the enumerators
-        // will result in a string representation that is distinct from any of
-        // those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(PropertyType::Enum       *out,
-                          const bslstl::StringRef&  str);
-        // Return true and fills the specified 'out' with the enum value
-        // corresponding to the specified 'str', if valid, or return false and
-        // leave 'out' untouched if 'str' doesn't correspond to any value of
-        // the enum.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream&      stream,
-                         PropertyType::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-}  // close package namespace
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-                            // -------------------
-                            // struct PropertyType
-                            // -------------------
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&            stream,
-                 bmqt::PropertyType::Enum value)
-{
-    return bmqt::PropertyType::print(stream, value, 0 , -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__queueflags_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__queueflags_8h.html deleted file mode 100644 index 9622d7c44..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__queueflags_8h.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -bmqt_queueflags.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_queueflags.h File Reference

-
-
- -

Provide enumerators for flags to use at Queue open. -More...

- -

Go to the source code of this file.

- - - - - - - - -

-Classes

struct  bmqt::QueueFlags
struct  bmqt::QueueFlagsUtil

-Namespaces

namespace  bmqt

-Functions

bsl::ostream & bmqt::operator<< (bsl::ostream &stream, QueueFlags::Enum value)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__queueflags_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__queueflags_8h_source.html deleted file mode 100644 index 92d5661ca..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__queueflags_8h_source.html +++ /dev/null @@ -1,346 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_queueflags.h                                                  -*-C++-*-
-#ifndef INCLUDED_BMQT_QUEUEFLAGS
-#define INCLUDED_BMQT_QUEUEFLAGS
-
-//@PURPOSE: Provide enumerators for flags to use at Queue open.
-//
-//@CLASSES:
-//  bmqt::QueueFlags:     flags to use at Queue open
-//  bmqt::QueueFlagsUtil: utilities to manipulate queue flags bit-mask values
-//
-//@DESCRIPTION: This file contains an enum, 'bmqt::QueueFlags' of all the flags
-// that can be used at Queue open.  Each value of the enum correspond to a bit
-// of a bit-mask integer.  It also exposes a set of utilities, in the
-// 'bmqt::QueueFlagsUtil' namespace to manipulate such bit-mask value.
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <bsl_iosfwd.h>
-#include <bsl_string.h>
-#include <bsls_types.h>
-
-namespace BloombergLP {
-namespace bmqt {
-
-
-                             // =================
-                             // struct QueueFlags
-                             // =================
-
-struct QueueFlags {
-    // This enum represents queue flags
-
-    // TYPES
-    enum Enum {
-        e_ADMIN  = (1 << 0) // The queue is opened in admin mode (Valid only
-                            // for BlazingMQ admin tasks)
-      , e_READ   = (1 << 1) // The queue is opened for consuming messages
-      , e_WRITE  = (1 << 2) // The queue is opened for posting messages
-      , e_ACK    = (1 << 3) // Set to indicate interested in receiving
-                            // 'ACK' events for all message posted
-    };
-
-    // PUBLIC CONSTANTS
-    static const int k_LOWEST_SUPPORTED_QUEUE_FLAG = e_ADMIN;
-        // NOTE: This value must always be equal to the lowest type in the
-        // enum because it is being used as a lower bound to verify that a
-        // QueueFlags field is a supported type.
-
-    static const int k_HIGHEST_SUPPORTED_QUEUE_FLAG = e_ACK;
-        // NOTE: This value must always be equal to the highest *supported*
-        // type in the enum because it is being used to verify a QueueFlags
-        // field is a supported type.
-
-
-    // CLASS METHODS
-    static bsl::ostream& print(bsl::ostream&    stream,
-                               QueueFlags::Enum value,
-                               int              level = 0,
-                               int              spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'GenericResult::Enum' value.
-
-    static const char *toAscii(QueueFlags::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the 'e_' prefix elided.  Note
-        // that specifying a 'value' that does not match any of the enumerators
-        // will result in a string representation that is distinct from any of
-        // those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(QueueFlags::Enum *out, const bslstl::StringRef& str);
-        // Return true and fills the specified 'out' with the enum value
-        // corresponding to the specified 'str', if valid, or return false and
-        // leave 'out' untouched if 'str' doesn't correspond to any value of
-        // the enum.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream& stream, QueueFlags::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-
-                           // =====================
-                           // struct QueueFlagsUtil
-                           // =====================
-
-struct QueueFlagsUtil {
-
-  public:
-    // CLASS METHODS
-    static bool isSet(bsls::Types::Uint64 flags, QueueFlags::Enum flag);
-        // Return true if the bit-mask in the specified 'flags' has the
-        // specified 'flag' set, or false if not.
-        //
-        // DEPRECATED: This method is deprecated in favor of the below more
-        //             specific accessors; and should be made private once all
-        //             clients have been updated to the new APIs.
-
-  public:
-    // CLASS METHODS
-    static
-    bool isValid(bsl::ostream& errorDescription, bsls::Types::Uint64 flags);
-        // Check whether the specified 'flags' represent a valid combination of
-        // flags to use for opening a queue.  Return true if it does, or false
-        // if some exclusive flags are both set, and populate the specified
-        // 'errorDescription' with the reason of the failure.
-
-    static bsls::Types::Uint64 empty();
-        // The 'empty' value for flags.
-
-    static bool isEmpty(bsls::Types::Uint64 flags);
-        // Returns 'true' if the specified 'flags' have the 'empty' value.
-
-    static bool isReader(bsls::Types::Uint64 flags);
-        // Returns 'true' if the specified 'flags' represent a reader.
-
-    static bool isWriter(bsls::Types::Uint64 flags);
-        // Returns 'true' if the specified 'flags' represent a writer.
-
-    static bool isAdmin(bsls::Types::Uint64 flags);
-        // Returns 'true' if the specified 'flags' represent an admin.
-
-    static bool isAck(bsls::Types::Uint64 flags);
-        // Returns 'true' if the specified 'flags' represent ack required.
-
-    static void setReader(bsls::Types::Uint64 *flags);
-        // Sets the specified 'flags' representation for reader.
-
-    static void setAdmin(bsls::Types::Uint64 *flags);
-        // Sets the specified 'flags' representation for admin.
-
-    static void setWriter(bsls::Types::Uint64 *flags);
-        // Sets the specified 'flags' representation for writer.
-
-    static void setAck(bsls::Types::Uint64 *flags);
-        // Sets the specified 'flags' representation for ack.
-
-    static void unsetReader(bsls::Types::Uint64 *flags);
-        // Resets the specified 'flags' representation for reader.
-
-    static void unsetAdmin(bsls::Types::Uint64 *flags);
-        // Resets the specified 'flags' representation for admin.
-
-    static void unsetWriter(bsls::Types::Uint64 *flags);
-        // Resets the specified 'flags' representation for writer.
-
-    static void unsetAck(bsls::Types::Uint64 *flags);
-        // Resets the specified 'flags' representation for ack.
-
-    static bsls::Types::Uint64 additions(bsls::Types::Uint64 oldFlags,
-                                         bsls::Types::Uint64 newFlags);
-        // Return a new flag mask that only set bits are the ones that are in
-        // the specified 'newFlags' and not in the specified 'oldFlags'.
-
-    static bsls::Types::Uint64 removals(bsls::Types::Uint64 oldFlags,
-                                        bsls::Types::Uint64 newFlags);
-        // Return a new flag mask that only set bits are the ones that are in
-        // the specified 'oldFlags' and not in the specified 'newFlags'.
-
-    static
-    bsl::ostream& prettyPrint(bsl::ostream& stream, bsls::Types::Uint64 flags);
-        // Print the ascii-representation of all the values set in the
-        // specified 'flags' to the specified 'stream'.  Each value is ','
-        // separated.
-
-    static int fromString(bsl::ostream&        errorDescription,
-                          bsls::Types::Uint64 *out,
-                          const bsl::string&   str);
-        // Convert the string representation of the enum bit mask from the
-        // specified 'str' (which format corresponds to the one of the
-        // 'prettyPrint' method) and populate the specified 'out' with the
-        // result on success returning 0, or return a non-zero error code on
-        // error, populating the specified 'errorDescription' with a
-        // description of the error.
-};
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-
-                           // ---------------------
-                           // struct QueueFlagsUtil
-                           // ---------------------
-
-inline
-bool
-QueueFlagsUtil::isSet(bsls::Types::Uint64 flags,
-                      QueueFlags::Enum    flag)
-{
-    return ((flags & flag) != 0);
-}
-
-inline
-void
-QueueFlagsUtil::setReader(bsls::Types::Uint64 *flags)
-{
-    *flags |= bmqt::QueueFlags::e_READ;
-}
-
-inline
-void
-QueueFlagsUtil::setAdmin(bsls::Types::Uint64 *flags)
-{
-    *flags |= bmqt::QueueFlags::e_ADMIN;
-}
-
-inline
-void
-QueueFlagsUtil::setWriter(bsls::Types::Uint64 *flags)
-{
-    *flags |= bmqt::QueueFlags::e_WRITE;
-}
-
-inline
-void
-QueueFlagsUtil::setAck(bsls::Types::Uint64 *flags)
-{
-    *flags |= bmqt::QueueFlags::e_ACK;
-}
-
-inline
-void
-QueueFlagsUtil::unsetReader(bsls::Types::Uint64 *flags)
-{
-    *flags &= ~bmqt::QueueFlags::e_READ;
-}
-
-inline
-void
-QueueFlagsUtil::unsetAdmin(bsls::Types::Uint64 *flags)
-{
-    *flags &= ~bmqt::QueueFlags::e_ADMIN;
-}
-
-inline
-void
-QueueFlagsUtil::unsetWriter(bsls::Types::Uint64 *flags)
-{
-    *flags &= ~bmqt::QueueFlags::e_WRITE;
-}
-
-inline
-void
-QueueFlagsUtil::unsetAck(bsls::Types::Uint64 *flags)
-{
-    *flags &= ~bmqt::QueueFlags::e_ACK;
-}
-
-inline
-bool
-QueueFlagsUtil::isReader(bsls::Types::Uint64 flags)
-{
-    return isSet(flags, bmqt::QueueFlags::e_READ);
-}
-
-inline
-bool
-QueueFlagsUtil::isWriter(bsls::Types::Uint64 flags)
-{
-    return isSet(flags, bmqt::QueueFlags::e_WRITE);
-}
-
-inline
-bool
-QueueFlagsUtil::isAdmin(bsls::Types::Uint64 flags)
-{
-    return isSet(flags, bmqt::QueueFlags::e_ADMIN);
-}
-
-inline
-bool
-QueueFlagsUtil::isAck(bsls::Types::Uint64 flags)
-{
-    return isSet(flags, bmqt::QueueFlags::e_ACK);
-}
-
-inline
-bool
-QueueFlagsUtil::isEmpty(bsls::Types::Uint64 flags)
-{
-    return flags == empty();
-}
-
-inline
-bsls::Types::Uint64
-QueueFlagsUtil::empty()
-{
-    return 0;
-}
-
-}  // close package namespace
-
-                            // -----------------
-                            // struct QueueFlags
-                            // -----------------
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&          stream,
-                 bmqt::QueueFlags::Enum value)
-{
-    return bmqt::QueueFlags::print(stream, value, 0 , -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__queueoptions_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__queueoptions_8h.html deleted file mode 100644 index 55be339ea..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__queueoptions_8h.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - -bmqt_queueoptions.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_queueoptions.h File Reference

-
-
- -

Provide a value-semantic type for options related to a queue. -More...

- -

Go to the source code of this file.

- - - - - - - - - -

-Classes

class  bmqt::QueueOptions

-Namespaces

namespace  bmqt

-Functions

bool bmqt::operator== (const QueueOptions &lhs, const QueueOptions &rhs)
bool bmqt::operator!= (const QueueOptions &lhs, const QueueOptions &rhs)
bsl::ostream & bmqt::operator<< (bsl::ostream &stream, const QueueOptions &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__queueoptions_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__queueoptions_8h_source.html deleted file mode 100644 index 7575a739f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__queueoptions_8h_source.html +++ /dev/null @@ -1,399 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2015-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_queueoptions.h                                                -*-C++-*-
-#ifndef INCLUDED_BMQT_QUEUEOPTIONS
-#define INCLUDED_BMQT_QUEUEOPTIONS
-
-//@PURPOSE: Provide a value-semantic type for options related to a queue.
-//
-//@CLASSES:
-//  bmqt::QueueOptions: options related to a queue.
-//
-//@DESCRIPTION: 'bmqt::QueueOptions' provides a value-semantic type,
-// 'QueueOptions', which is used to specify parameters for a queue.
-//
-//
-// The following parameters are supported:
-//: o !maxUnconfirmedMessages!:
-//:      Maximum number of outstanding messages that can be sent by the broker
-//:      without being confirmed.
-//:
-//: o !maxUnconfirmedBytes!:
-//:      Maximum accumulated bytes of all outstanding messages that can be sent
-//:      by the broker without being confirmed.
-//:
-//: o !consumerPriority!:
-//:      Priority of a consumer with respect to delivery of messages.
-//:
-//: o !suspendsOnBadHostHealth!:
-//:      Sets whether the queue should suspend operation when the host machine
-//:      is unhealthy.
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqt_subscription.h>
-
-//BDE
-#include <bsl_iosfwd.h>
-#include <bsl_optional.h>
-#include <bsl_vector.h>
-#include <bsl_unordered_map.h>
-#include <bslma_allocator.h>
-#include <bslma_usesbslmaallocator.h>
-#include <bslmf_nestedtraitdeclaration.h>
-
-namespace BloombergLP {
-
-namespace bmqt {
-
-
-                            // ==================
-                            // class QueueOptions
-                            // ==================
-
-class QueueOptions {
-    // Value-semantic type for options related to a queue.
-
-  public:
-    // PUBLIC CONSTANTS
-    static const int k_CONSUMER_PRIORITY_MIN;
-                                        // Constant representing the minimum
-                                        // valid consumer priority
-
-    static const int k_CONSUMER_PRIORITY_MAX;
-                                        // Constant representing the maximum
-                                        // valid consumer priority
-
-    static const int  k_DEFAULT_MAX_UNCONFIRMED_MESSAGES;
-    static const int  k_DEFAULT_MAX_UNCONFIRMED_BYTES;
-    static const int  k_DEFAULT_CONSUMER_PRIORITY;
-    static const bool k_DEFAULT_SUSPENDS_ON_BAD_HOST_HEALTH;
-
-  private:
-    // PRIVATE TYPES
-    typedef bsl::unordered_map<SubscriptionHandle, Subscription> Subscriptions;
-
-  private:
-    // DATA
-    Subscription        d_info;
-
-    bsl::optional<bool> d_suspendsOnBadHostHealth;
-                                        // Whether the queue suspends operation
-                                        // while the host is unhealthy.
-
-    Subscriptions       d_subscriptions;
-
-    bool                d_hadSubscriptions;
-                            // 'true' if 'd_subscriptions' had a value, 'false'
-                            // otherwise.  Emulates 'bsl::optional' for
-                            // 'd_subscriptions'.
-
-    bslma::Allocator   *d_allocator_p;
-                            // Allocator
-
-  public:
-    // PUBLIC TYPES
-
-    typedef bsl::pair<SubscriptionHandle, Subscription> HandleAndSubscription;
-    typedef bsl::vector<HandleAndSubscription> SubscriptionsSnapshot;
-        // 'loadSubscriptions' return types
-        //
-        // EXPERIMENTAL.  Do not use until this feature is announced.
-
-  public:
-     // TRAITS
-    BSLMF_NESTED_TRAIT_DECLARATION(QueueOptions, bslma::UsesBslmaAllocator)
-
-    // CREATORS
-    explicit QueueOptions(bslma::Allocator *allocator = 0);
-        // Create a new QueueOptions using the optionally specified
-        // 'allocator'.
-
-    QueueOptions(const QueueOptions&  other,
-                 bslma::Allocator    *allocator = 0);
-        // Create a new QueueOptions by copying values from the specified
-        // 'other', using the optionally specified 'allocator'.
-
-    // MANIPULATORS
-    QueueOptions& setMaxUnconfirmedMessages(int value);
-        // Set the maxUnconfirmedMessages to the specified 'value'.  The
-        // behavior is undefined unless 'value >= 0'. If the specified 'value'
-        // is set to 0, it means that the consumer does not receive any
-        // messages.  This might be useful when the consumer is shutting down
-        // and wants to process only pending messages, or when it is unable to
-        // process new messages because of transient issues.
-
-    QueueOptions& setMaxUnconfirmedBytes(int value);
-        // Set the maxUnconfirmedBytes to the specified 'value'.  The behavior
-        // is undefined unless 'value >= 0'.
-
-    QueueOptions& setConsumerPriority(int value);
-        // Set the consumerPriority to the specified 'value'.  The behavior is
-        // undefined unless 'k_CONSUMER_PRIORITY_MIN <= value <=
-        // k_CONSUMER_PRIORITY_MAX'
-
-    QueueOptions& setSuspendsOnBadHostHealth(bool value);
-        // Set whether the queue suspends operation while host is unhealthy.
-
-    QueueOptions& merge(const QueueOptions& other);
-        // "Merges" another 'QueueOptions' into this one, by invoking
-        //     setF(other.F())
-        // for all fields 'F' for which 'other.hasF()' is true.  Returns the
-        // instance on which the method was invoked.
-
-    bool addOrUpdateSubscription(bsl::string               *errorDescription,
-                                 const SubscriptionHandle&  handle,
-                                 const Subscription&        subscription);
-        // Add, or update if it exists, the specified 'subscription' for the
-        // specified 'handle'.  Return true on success, otherwise return false
-        // and load the specified 'errorDescription' with a description of the
-        // error.  Note that 'errorDescription' may be null if the caller does
-        // not care about getting error messages, but users are strongly
-        // encouraged to log error string if this API returns failure.
-        //
-        // EXPERIMENTAL.  Do not use until this feature is announced.
-
-    bool removeSubscription(const SubscriptionHandle& handle);
-        // Return false if subscription does not exist.
-        //
-        // EXPERIMENTAL.  Do not use until this feature is announced.
-
-    void removeAllSubscriptions();
-        // Remove all subscriptions.
-        //
-        // EXPERIMENTAL.  Do not use until this feature is announced.
-
-    // ACCESSORS
-    int maxUnconfirmedMessages() const;
-        // Get the number for the maxUnconfirmedMessages parameter.
-
-    int maxUnconfirmedBytes() const;
-        // Get the number for the maxUnconfirmedBytes parameter.
-
-    int consumerPriority() const;
-        // Get the number for the consumerPriority parameter.
-
-    bool suspendsOnBadHostHealth() const;
-        // Get whether the queue suspends operation while host is unhealthy.
-
-    bool hasMaxUnconfirmedMessages() const;
-        // Returns whether 'maxUnconfirmedMessages' has been set for this
-        // object, or whether it implicitly holds
-        // 'k_DEFAULT_MAX_UNCONFIRMED_MESSAGES'.
-
-    bool hasMaxUnconfirmedBytes() const;
-        // Returns whether 'maxUnconfirmedBytes' has been set for this object,
-        // or whether it implicitly holds 'k_DEFAULT_MAX_UNCONFIRMED_BYTES'.
-
-    bool hasConsumerPriority() const;
-        // Returns whether 'consumerPriority' has been set for this object, or
-        // whether it implicitly holds 'k_DEFAULT_CONSUMER_PRIORITY'.
-
-    bool hasSuspendsOnBadHostHealth() const;
-        // Returns whether 'suspendsOnBadHostHealth' has been set for this
-        // object, or whether it implicitly holds
-        // 'k_DEFAULT_SUSPENDS_ON_BAD_HOST_HEALTH'.
-
-    bool loadSubscription(Subscription              *subscription,
-                          const SubscriptionHandle&  handle) const;
-        // Return false if subscription does not exist.
-        //
-        // EXPERIMENTAL.  Do not use until this feature is announced.
-
-    void loadSubscriptions(SubscriptionsSnapshot *snapshot) const;
-        // Load all handles and subscriptions into the specified 'snapshot'.
-        //
-        // EXPERIMENTAL.  Do not use until this feature is announced.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-bool operator==(const QueueOptions& lhs, const QueueOptions& rhs);
-    // Return 'true' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return false otherwise.
-
-bool operator!=(const QueueOptions& lhs, const QueueOptions& rhs);
-    // Return 'false' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return 'true' otherwise.
-
-bsl::ostream& operator<<(bsl::ostream& stream, const QueueOptions& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return a
-    // reference to the modifiable 'stream'.
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-
-                             // ------------------
-                             // class QueueOptions
-                             // ------------------
-
-// MANIPULATORS
-inline
-QueueOptions&
-QueueOptions::setMaxUnconfirmedMessages(int value)
-{
-    d_info.setMaxUnconfirmedMessages(value);
-    return *this;
-}
-
-inline
-QueueOptions&
-QueueOptions::setMaxUnconfirmedBytes(int value)
-{
-    d_info.setMaxUnconfirmedBytes(value);
-    return *this;
-}
-
-inline
-QueueOptions&
-QueueOptions::setConsumerPriority(int value)
-{
-    d_info.setConsumerPriority(value);
-    return *this;
-}
-
-inline
-QueueOptions&
-QueueOptions::setSuspendsOnBadHostHealth(bool value)
-{
-    d_suspendsOnBadHostHealth.emplace(value);
-    return *this;
-}
-
-// ACCESSORS
-inline
-int
-QueueOptions::maxUnconfirmedMessages() const
-{
-    return d_info.maxUnconfirmedMessages();
-}
-
-inline
-int
-QueueOptions::maxUnconfirmedBytes() const
-{
-    return d_info.maxUnconfirmedBytes();
-}
-
-inline
-int
-QueueOptions::consumerPriority() const
-{
-    return d_info.consumerPriority();
-}
-
-inline
-bool
-QueueOptions::suspendsOnBadHostHealth() const
-{
-    return d_suspendsOnBadHostHealth.value_or(
-                                        k_DEFAULT_SUSPENDS_ON_BAD_HOST_HEALTH);
-}
-
-inline
-bool
-QueueOptions::hasMaxUnconfirmedMessages() const
-{
-    return d_info.hasMaxUnconfirmedMessages();
-}
-
-inline
-bool
-QueueOptions::hasMaxUnconfirmedBytes() const
-{
-    return d_info.hasMaxUnconfirmedBytes();
-}
-
-inline
-bool
-QueueOptions::hasConsumerPriority() const
-{
-    return d_info.hasConsumerPriority();
-}
-
-inline
-bool
-QueueOptions::hasSuspendsOnBadHostHealth() const
-{
-    return d_suspendsOnBadHostHealth.has_value();
-}
-
-}  // close package namespace
-
-
-                             // ------------------
-                             // class QueueOptions
-                             // ------------------
-
-inline
-bool
-bmqt::operator==(const bmqt::QueueOptions& lhs,
-                 const bmqt::QueueOptions& rhs)
-{
-    return    lhs.maxUnconfirmedMessages()  == rhs.maxUnconfirmedMessages()
-           && lhs.maxUnconfirmedBytes()     == rhs.maxUnconfirmedBytes()
-           && lhs.consumerPriority()        == rhs.consumerPriority()
-           && lhs.suspendsOnBadHostHealth() == rhs.suspendsOnBadHostHealth();
-}
-
-inline
-bool
-bmqt::operator!=(const bmqt::QueueOptions& lhs,
-                 const bmqt::QueueOptions& rhs)
-{
-    return    lhs.maxUnconfirmedMessages()  != rhs.maxUnconfirmedMessages()
-           || lhs.maxUnconfirmedBytes()     != rhs.maxUnconfirmedBytes()
-           || lhs.consumerPriority()        != rhs.consumerPriority()
-           || lhs.suspendsOnBadHostHealth() != rhs.suspendsOnBadHostHealth();
-}
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&             stream,
-                 const bmqt::QueueOptions& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__resultcode_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__resultcode_8h.html deleted file mode 100644 index 9b6d75226..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__resultcode_8h.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -bmqt_resultcode.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_resultcode.h File Reference

-
-
- -

Provide enums for various publicly exposed result code. -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - -

-Classes

struct  bmqt::GenericResult
struct  bmqt::OpenQueueResult
struct  bmqt::ConfigureQueueResult
struct  bmqt::CloseQueueResult
struct  bmqt::EventBuilderResult
struct  bmqt::AckResult
struct  bmqt::PostResult

-Namespaces

namespace  bmqt

-Functions

bsl::ostream & bmqt::operator<< (bsl::ostream &stream, GenericResult::Enum value)
bsl::ostream & bmqt::operator<< (bsl::ostream &stream, OpenQueueResult::Enum value)
bsl::ostream & bmqt::operator<< (bsl::ostream &stream, ConfigureQueueResult::Enum value)
bsl::ostream & bmqt::operator<< (bsl::ostream &stream, CloseQueueResult::Enum value)
bsl::ostream & bmqt::operator<< (bsl::ostream &stream, EventBuilderResult::Enum value)
bsl::ostream & bmqt::operator<< (bsl::ostream &stream, AckResult::Enum value)
bsl::ostream & bmqt::operator<< (bsl::ostream &stream, PostResult::Enum value)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__resultcode_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__resultcode_8h_source.html deleted file mode 100644 index df4975fcd..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__resultcode_8h_source.html +++ /dev/null @@ -1,670 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_resultcode.h                                                  -*-C++-*-
-#ifndef INCLUDED_BMQT_RESULTCODE
-#define INCLUDED_BMQT_RESULTCODE
-
-//@PURPOSE: Provide enums for various publicly exposed result code.
-//
-//@CLASSES:
-//  bmqt::GenericResult:        generic common result values
-//  bmqt::AckResult:            result code status of an ack message
-//  bmqt::CloseQueueResult:     result of a close queue operation
-//  bmqt::EventBuilderResult:   result of eventBuilder pack operation
-//  bmqt::OpenQueueResult:      result of an open queue operation
-//  bmqt::ConfigureQueueResult: result of a configure queue operation
-//  bmqt::PostResult:           result of a post operation
-//
-//@DESCRIPTION: This file contains a list of Enums ('bmqt::GenericResult',
-// 'bmqt::AckResult', 'bmqt::CloseQueueResult', 'bmqt::EventBuilderResult',
-// 'bmqt::OpenQueueResult', 'bmqt::ConfigureQueueResult', and
-// 'bmqt::PostResult') that are publicly exposed to Application (via bmqa), but
-// whose value comes from the internal implementation (bmqimp).  Having them
-// defined in bmqt allows bmqa to return the enum returned by bmqimp with no
-// transformation.
-//
-// All enums are using the convention that < 0 values are errors, while > 0 are
-// warnings.
-//
-// The 'GenericStatus' enum contains values that are common for most or all of
-// the other status enums, such as 'success', 'timeout', ...  The values of its
-// members can range from -99 to 99.
-//
-// Each other enum should duplicate any values from the 'GenericStatus' one
-// that it intends to be able to represent (aliasing the values to the ones
-// from the 'GenericStatus' enum) and extend with specialized values in the
-// ']..., -99[' or ']99, ...[' ranges.
-//
-
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <bsl_iosfwd.h>
-#include <bsl_string.h>
-
-namespace BloombergLP {
-namespace bmqt {
-
-                            // ====================
-                            // struct GenericResult
-                            // ====================
-
-struct GenericResult {
-    // This enum represents generic common status
-
-    // TYPES
-    enum Enum {
-        e_SUCCESS          =  0 // Operation was success
-      , e_UNKNOWN          = -1 // Operation failed for unknown reason
-      , e_TIMEOUT          = -2 // Operation timedout
-      , e_NOT_CONNECTED    = -3 // Cant process, not connected to the broker
-      , e_CANCELED         = -4 // Operation was canceled
-      , e_NOT_SUPPORTED    = -5 // Operation is not supported
-      , e_REFUSED          = -6 // Operation was refused
-      , e_INVALID_ARGUMENT = -7 // An invalid argument was provided
-      , e_NOT_READY        = -8 // Not ready to process the request
-      , e_LAST             = e_NOT_READY
-                                // Used in test driver only, to validate
-                                // consistency between this enum and the
-                                // 'bmqp_ctrlmsg.xsd::StatusCategory' one
-    };
-
-    // CLASS METHODS
-    static bsl::ostream& print(bsl::ostream&       stream,
-                               GenericResult::Enum value,
-                               int                 level = 0,
-                               int                 spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'GenericResult::Enum' value.
-
-    static const char *toAscii(GenericResult::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the 'e_' prefix elided.  Note
-        // that specifying a 'value' that does not match any of the enumerators
-        // will result in a string representation that is distinct from any of
-        // those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(GenericResult::Enum      *out,
-                          const bslstl::StringRef&  str);
-        // Return true and fills the specified 'out' with the enum value
-        // corresponding to the specified 'str', if valid, or return false and
-        // leave 'out' untouched if 'str' doesn't correspond to any value of
-        // the enum.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream&       stream,
-                         GenericResult::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-
-                           // ======================
-                           // struct OpenQueueResult
-                           // ======================
-
-struct OpenQueueResult {
-    // This enum represents the result of an openQueue operation
-
-    // TYPES
-    enum Enum {
-      // GENERIC
-        e_SUCCESS          = GenericResult::e_SUCCESS
-      , e_UNKNOWN          = GenericResult::e_UNKNOWN
-      , e_TIMEOUT          = GenericResult::e_TIMEOUT
-      , e_NOT_CONNECTED    = GenericResult::e_NOT_CONNECTED
-      , e_CANCELED         = GenericResult::e_CANCELED
-      , e_NOT_SUPPORTED    = GenericResult::e_NOT_SUPPORTED
-      , e_REFUSED          = GenericResult::e_REFUSED
-      , e_INVALID_ARGUMENT = GenericResult::e_INVALID_ARGUMENT
-      , e_NOT_READY        = GenericResult::e_NOT_READY
-
-      // SPECIALIZED
-      // WARNINGS
-      , e_ALREADY_OPENED      = 100 // The queue is already opened
-      , e_ALREADY_IN_PROGRESS = 101 // The queue is already being opened
-
-      // ERRORS
-      , e_INVALID_URI              = -100 // The queue uri is invalid
-      , e_INVALID_FLAGS            = -101 // The flags provided are invalid
-      , e_CORRELATIONID_NOT_UNIQUE = -102 // The correlationdId is not unique
-    };
-
-    // CLASS METHODS
-    static bsl::ostream& print(bsl::ostream&         stream,
-                               OpenQueueResult::Enum value,
-                               int                   level          = 0,
-                               int                   spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'OpenQueueResult::Enum' value.
-
-    static const char *toAscii(OpenQueueResult::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the 'e_' prefix elided.  Note
-        // that specifying a 'value' that does not match any of the enumerators
-        // will result in a string representation that is distinct from any of
-        // those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(OpenQueueResult::Enum    *out,
-                          const bslstl::StringRef&  str);
-        // Return true and fills the specified 'out' with the enum value
-        // corresponding to the specified 'str', if valid, or return false and
-        // leave 'out' untouched if 'str' doesn't correspond to any value of
-        // the enum.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream&         stream,
-                         OpenQueueResult::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-
-                        // ===========================
-                        // struct ConfigureQueueResult
-                        // ===========================
-
-struct ConfigureQueueResult {
-    // This enum represents the result of a configureQueue operation
-
-    // TYPES
-    enum Enum {
-      // GENERIC
-        e_SUCCESS          = GenericResult::e_SUCCESS
-      , e_UNKNOWN          = GenericResult::e_UNKNOWN
-      , e_TIMEOUT          = GenericResult::e_TIMEOUT
-      , e_NOT_CONNECTED    = GenericResult::e_NOT_CONNECTED
-      , e_CANCELED         = GenericResult::e_CANCELED
-      , e_NOT_SUPPORTED    = GenericResult::e_NOT_SUPPORTED
-      , e_REFUSED          = GenericResult::e_REFUSED
-      , e_INVALID_ARGUMENT = GenericResult::e_INVALID_ARGUMENT
-      , e_NOT_READY        = GenericResult::e_NOT_READY
-
-      // SPECIALIZED WARNINGS
-      , e_ALREADY_IN_PROGRESS = 100 // The queue is already being configured
-
-      // ERRORS
-      , e_INVALID_QUEUE = -101
-    };
-
-    // CLASS METHODS
-    static bsl::ostream& print(bsl::ostream&              stream,
-                               ConfigureQueueResult::Enum value,
-                               int                        level = 0,
-                               int                        spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'ConfigureQueueResult::Enum' value.
-
-    static const char *toAscii(ConfigureQueueResult::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the 'e_' prefix elided.  Note
-        // that specifying a 'value' that does not match any of the enumerators
-        // will result in a string representation that is distinct from any of
-        // those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(ConfigureQueueResult::Enum *out,
-                          const bslstl::StringRef&    str);
-        // Return true and fills the specified 'out' with the enum value
-        // corresponding to the specified 'str', if valid, or return false and
-        // leave 'out' untouched if 'str' doesn't correspond to any value of
-        // the enum.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream&              stream,
-                         ConfigureQueueResult::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-
-                          // =======================
-                          // struct CloseQueueResult
-                          // =======================
-
-struct CloseQueueResult {
-    // This enum represents the result of a closeQueue operation
-
-    // TYPES
-    enum Enum {
-      // GENERIC
-        e_SUCCESS          = GenericResult::e_SUCCESS
-      , e_UNKNOWN          = GenericResult::e_UNKNOWN
-      , e_TIMEOUT          = GenericResult::e_TIMEOUT
-      , e_NOT_CONNECTED    = GenericResult::e_NOT_CONNECTED
-      , e_CANCELED         = GenericResult::e_CANCELED
-      , e_NOT_SUPPORTED    = GenericResult::e_NOT_SUPPORTED
-      , e_REFUSED          = GenericResult::e_REFUSED
-      , e_INVALID_ARGUMENT = GenericResult::e_INVALID_ARGUMENT
-      , e_NOT_READY        = GenericResult::e_NOT_READY
-
-      // SPECIALIZED
-      // WARNINGS
-      , e_ALREADY_CLOSED      = 100 // The queue is already closed
-      , e_ALREADY_IN_PROGRESS = 101 // The queue is already being closed
-
-      // ERRORS
-      , e_UNKNOWN_QUEUE = -100 // The queue doesn't exist
-      , e_INVALID_QUEUE = -101 // The queue provided is invalid
-    };
-
-    // CLASS METHODS
-    static bsl::ostream& print(bsl::ostream&          stream,
-                               CloseQueueResult::Enum value,
-                               int                    level          = 0,
-                               int                    spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'PublishResult::Enum' value.
-
-    static const char *toAscii(CloseQueueResult::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the 'e_' prefix elided.  Note
-        // that specifying a 'value' that does not match any of the enumerators
-        // will result in a string representation that is distinct from any of
-        // those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(CloseQueueResult::Enum   *out,
-                          const bslstl::StringRef&  str);
-        // Return true and fills the specified 'out' with the enum value
-        // corresponding to the specified 'str', if valid, or return false and
-        // leave 'out' untouched if 'str' doesn't correspond to any value of
-        // the enum.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream&          stream,
-                         CloseQueueResult::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-
-                         // =========================
-                         // struct EventBuilderResult
-                         // =========================
-
-struct EventBuilderResult {
-    // This enum represents the result of an EventBuilder's packMessage()
-    // operation
-
-    // TYPES
-    enum Enum {
-      // GENERIC
-        e_SUCCESS = GenericResult::e_SUCCESS
-      , e_UNKNOWN = GenericResult::e_UNKNOWN
-
-      // SPECIALIZED
-      // ERRORS
-      , e_QUEUE_INVALID          = -100
-      , e_QUEUE_READONLY         = -101
-      , e_MISSING_CORRELATION_ID = -102
-      , e_EVENT_TOO_BIG          = -103
-      , e_PAYLOAD_TOO_BIG        = -104
-      , e_PAYLOAD_EMPTY          = -105
-      , e_OPTION_TOO_BIG         = -106
-#ifdef BMQ_ENABLE_MSG_GROUPID
-      , e_INVALID_MSG_GROUP_ID   = -107
-#endif
-      , e_QUEUE_SUSPENDED        = -108
-    };
-
-    // CLASS METHODS
-    static bsl::ostream& print(bsl::ostream&            stream,
-                               EventBuilderResult::Enum value,
-                               int                      level          = 0,
-                               int                      spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'EventBuilderResult::Enum' value.
-
-    static const char *toAscii(EventBuilderResult::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the 'e_' prefix elided.  Note
-        // that specifying a 'value' that does not match any of the enumerators
-        // will result in a string representation that is distinct from any of
-        // those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(EventBuilderResult::Enum *out,
-                          const bslstl::StringRef&  str);
-        // Return true and fills the specified 'out' with the enum value
-        // corresponding to the specified 'str', if valid, or return false and
-        // leave 'out' untouched if 'str' doesn't correspond to any value of
-        // the enum.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream&            stream,
-                         EventBuilderResult::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-
-                              // ================
-                              // struct AckResult
-                              // ================
-
-struct AckResult {
-    // This enum represents the result code status of an ack message
-
-    // TYPES
-    enum Enum {
-      // GENERIC
-        e_SUCCESS          = GenericResult::e_SUCCESS
-      , e_UNKNOWN          = GenericResult::e_UNKNOWN
-      , e_TIMEOUT          = GenericResult::e_TIMEOUT
-      , e_NOT_CONNECTED    = GenericResult::e_NOT_CONNECTED
-      , e_CANCELED         = GenericResult::e_CANCELED
-      , e_NOT_SUPPORTED    = GenericResult::e_NOT_SUPPORTED
-      , e_REFUSED          = GenericResult::e_REFUSED
-      , e_INVALID_ARGUMENT = GenericResult::e_INVALID_ARGUMENT
-      , e_NOT_READY        = GenericResult::e_NOT_READY
-
-      // SPECIALIZED
-      // ERRORS
-      , e_LIMIT_MESSAGES        = -100 // Messages limit reached
-      , e_LIMIT_BYTES           = -101 // Bytes limit reached
-
-      // TBD:DEPRECATED >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >libbmq-1.3.5
-      // The below 4 values are deprecated in favor of the above two ones
-      , e_LIMIT_DOMAIN_MESSAGES = -100 // The domain is full (messages)
-      , e_LIMIT_DOMAIN_BYTES    = -101 // The domain is full (bytes)
-      , e_LIMIT_QUEUE_MESSAGES  = -102 // The queue is full (messages)
-      , e_LIMIT_QUEUE_BYTES     = -103 // The queue is full (bytes)
-      // TBD:DEPRECATED >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >libbmq-1.3.5
-      , e_STORAGE_FAILURE       = -104 // The storage (on disk) is full
-    };
-
-    // CLASS METHODS
-    static bsl::ostream& print(bsl::ostream&   stream,
-                               AckResult::Enum value,
-                               int             level          = 0,
-                               int             spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'PublishResult::Enum' value.
-
-    static const char *toAscii(AckResult::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the 'e_' prefix elided.  Note
-        // that specifying a 'value' that does not match any of the enumerators
-        // will result in a string representation that is distinct from any of
-        // those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(AckResult::Enum          *out,
-                          const bslstl::StringRef&  str);
-        // Return true and fills the specified 'out' with the enum value
-        // corresponding to the specified 'str', if valid, or return false and
-        // leave 'out' untouched if 'str' doesn't correspond to any value of
-        // the enum.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream&   stream,
-                         AckResult::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-
-                             // =================
-                             // struct PostResult
-                             // =================
-
-struct PostResult {
-    // This enum represents the result code status of a post message
-
-    // TYPES
-    enum Enum {
-      // GENERIC
-        e_SUCCESS          = GenericResult::e_SUCCESS
-      , e_UNKNOWN          = GenericResult::e_UNKNOWN
-      , e_TIMEOUT          = GenericResult::e_TIMEOUT
-      , e_NOT_CONNECTED    = GenericResult::e_NOT_CONNECTED
-      , e_CANCELED         = GenericResult::e_CANCELED
-      , e_NOT_SUPPORTED    = GenericResult::e_NOT_SUPPORTED
-      , e_REFUSED          = GenericResult::e_REFUSED
-      , e_INVALID_ARGUMENT = GenericResult::e_INVALID_ARGUMENT
-      , e_NOT_READY        = GenericResult::e_NOT_READY
-
-      // SPECIALIZED
-      // WARNINGS
-      , e_BW_LIMIT         = 100 // The application has been posting too much
-                                 // data, and the IO or broker are temporarily
-                                 // rejecting new messages.
-    };
-
-    // CLASS METHODS
-    static bsl::ostream& print(bsl::ostream&    stream,
-                               PostResult::Enum value,
-                               int              level = 0,
-                               int              spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'PublishResult::Enum' value.
-
-    static const char *toAscii(PostResult::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the 'e_' prefix elided.  Note
-        // that specifying a 'value' that does not match any of the enumerators
-        // will result in a string representation that is distinct from any of
-        // those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(PostResult::Enum         *out,
-                          const bslstl::StringRef&  str);
-        // Return true and fills the specified 'out' with the enum value
-        // corresponding to the specified 'str', if valid, or return false and
-        // leave 'out' untouched if 'str' doesn't correspond to any value of
-        // the enum.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream&    stream,
-                         PostResult::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-}  // close package namespace
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-
-                            // --------------------
-                            // struct GenericResult
-                            // --------------------
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&             stream,
-                 bmqt::GenericResult::Enum value)
-{
-    return bmqt::GenericResult::print(stream, value, 0 , -1);
-}
-
-
-                           // ----------------------
-                           // struct OpenQueueResult
-                           // ----------------------
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&               stream,
-                 bmqt::OpenQueueResult::Enum value)
-{
-    return bmqt::OpenQueueResult::print(stream, value, 0 , -1);
-}
-
-                        // ---------------------------
-                        // struct ConfigureQueueResult
-                        // ---------------------------
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&                    stream,
-                 bmqt::ConfigureQueueResult::Enum value)
-{
-    return bmqt::ConfigureQueueResult::print(stream, value, 0 , -1);
-}
-
-                          // -----------------------
-                          // struct CloseQueueResult
-                          // -----------------------
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&                stream,
-                 bmqt::CloseQueueResult::Enum value)
-{
-    return bmqt::CloseQueueResult::print(stream, value, 0 , -1);
-}
-
-                         // -------------------------
-                         // struct EventBuilderResult
-                         // -------------------------
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&                  stream,
-                 bmqt::EventBuilderResult::Enum value)
-{
-    return bmqt::EventBuilderResult::print(stream, value, 0 , -1);
-}
-
-                              // ----------------
-                              // struct AckResult
-                              // ----------------
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&         stream,
-                 bmqt::AckResult::Enum value)
-{
-    return bmqt::AckResult::print(stream, value, 0 , -1);
-}
-
-
-                             // -----------------
-                             // struct PostResult
-                             // -----------------
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&          stream,
-                 bmqt::PostResult::Enum value)
-{
-    return bmqt::PostResult::print(stream, value, 0 , -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__sessioneventtype_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__sessioneventtype_8h.html deleted file mode 100644 index 721e662e0..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__sessioneventtype_8h.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -bmqt_sessioneventtype.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_sessioneventtype.h File Reference

-
-
- -

Provide an enumeration for the different types of session events. -More...

- -

Go to the source code of this file.

- - - - - - - -

-Classes

struct  bmqt::SessionEventType

-Namespaces

namespace  bmqt

-Functions

bsl::ostream & bmqt::operator<< (bsl::ostream &stream, SessionEventType::Enum value)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__sessioneventtype_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__sessioneventtype_8h_source.html deleted file mode 100644 index 8583e1795..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__sessioneventtype_8h_source.html +++ /dev/null @@ -1,210 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_sessioneventtype.h                                            -*-C++-*-
-#ifndef INCLUDED_BMQT_SESSIONEVENTTYPE
-#define INCLUDED_BMQT_SESSIONEVENTTYPE
-
-//@PURPOSE: Provide an enumeration for the different types of session events.
-//
-//@CLASSES:
-//  bmqt::SessionEventType: Enumeration for the types of session events.
-//
-//@DESCRIPTION: 'bmqt::SessionEventType' is an enumeration for the different
-// types of session events.
-//
-//: o !CONNECTED!: The connection with the broker is established, this event is
-//:   only fired once (if for any reason the connection gets lost and
-//:   automatically reconnected, this will emit a 'CONNECTION_RESTORED' event).
-//
-//: o !DISCONNECTED!: The connection with the broker is terminated (after the
-//:   user called stop on the session). This is the last event that will be
-//:   delivered.
-//
-//: o !CONNECTION_LOST!: The session was connected to the broker, but that
-//:   connection dropped.
-//
-//: o !RECONNECTED!: The connection to the broker has been re-established.
-//:   This event is followed by zero or more 'QUEUE_REOPEN_RESULT' events, and
-//:   one 'STATE_RESTORED' event.
-//
-//: o !STATE_RESTORED!: Session's state has been restored after connection
-//:   has been re-established with the broker. This event is preceded by one
-//:   'RECONNECTED' event, and zero or more 'QUEUE_REOPEN_RESULT' events.
-//
-//: o !CONNECTION_TIMEOUT!: The connection to the broker has timedout.
-//
-//: o !QUEUE_OPEN_RESULT!: Indicates the result of an 'openQueue' operation.
-//
-//: o !QUEUE_REOPEN_RESULT!: Indicates the result of an 'openQueue' operation,
-//:   which happens when the connection to the broker has been restored and
-//:   queues previously opened have been automatically reopened.  This event is
-//:   preceded by a 'RECONNECTED' event and followed by zero or more
-//:   'QUEUE_REOPEN_RESULT' events, and one 'STATE_RESTORED' event.
-//
-//: o !QUEUE_CLOSE_RESULT!: Indicates the result of a 'closeQueue' operation
-//
-//: o !SLOWCONSUMER_NORMAL!: Notifies that the EventQueue is back to its low
-//:   watermark level.
-//
-//: o !SLOWCONSUMER_HIGHWATERMARK!: Notifies that events are accumulating in
-//:   the EventQueue, which has now reached it's high watermark level.
-//
-//: o !QUEUE_CONFIGURE_RESULT!: Indicates the result of a 'configureQueue'
-//:   operation.
-//
-//: o !HOST_UNHEALTHY!: Indicates the host has become unhealthy. Only issued if
-//    a 'bmqpi::HostHealthMonitor' has been installed to the session, via the
-//    'bmqt::SessionOptions' object.
-//
-//: o !HOST_HEALTH_RESTORED!: Indicates the health of the host has restored,
-//    and all queues have resumed operation. Following a Host Health incident,
-//    this indicates that the application has resumed normal operation.
-//
-//: o !QUEUE_SUSPENDED!: Indicates that an open queue has suspended operation:
-//    * Consumers are configured to receive no more messages from broker
-//      (i.e., maxUnconfirmedMessages := 0, maxUnconfirmedBytes := 0,
-//      consumerPriority := INT_MIN).
-//    * Attempts to pack messages targeting queue will be rejected by
-//      'bmqa::MessageEventBuilder::pack()'. Clients may still attempt to POST
-//      existing packed events.
-//    * Attempts by client to reconfigure queue will not take effect until the
-//      queue has resumed.
-//
-//: o !QUEUE_RESUMED!: Indicates that a suspended queue has resumed normal
-//    operation (i.e., effects of QUEUE_SUSPENDED state no longer apply).
-//
-//: o !ERROR!: Indicates a generic error.
-//
-//: o !TIMEOUT! Indicates that the specified operation has timed out.
-//
-//: o !CANCELED!: Indicates that the specified operation was canceled.
-//
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <bsl_ostream.h>
-#include <bsl_string.h>
-
-namespace BloombergLP {
-namespace bmqt {
-
-                          // =======================
-                          // struct SessionEventType
-                          // =======================
-
-struct SessionEventType {
-    // Enumeration for the types of session events
-
-    // TYPES
-    enum Enum {
-        e_ERROR                      = -1 // Generic error
-      , e_TIMEOUT                    = -2 // Time out of the operation
-      , e_CANCELED                   = -3 // The operation was canceled
-      , e_UNDEFINED                  =  0
-      , e_CONNECTED                  =  1 // Session started
-      , e_DISCONNECTED               =  2 // Session terminated
-      , e_CONNECTION_LOST            =  3 // Lost connection to the broker
-      , e_RECONNECTED                =  4 // Reconnected with the broker
-      , e_STATE_RESTORED             =  5 // Client's state has been restored
-      , e_CONNECTION_TIMEOUT         =  6 // The connection to broker timedOut
-      , e_QUEUE_OPEN_RESULT          =  7 // Result of openQueue operation
-      , e_QUEUE_REOPEN_RESULT        =  8 // Result of re-openQueue operation
-      , e_QUEUE_CLOSE_RESULT         =  9 // Result of closeQueue operation
-      , e_SLOWCONSUMER_NORMAL        = 10 // EventQueue is at lowWatermark
-      , e_SLOWCONSUMER_HIGHWATERMARK = 11 // EventQueue is at highWatermark
-      , e_QUEUE_CONFIGURE_RESULT     = 12 // Result of configureQueue
-      , e_HOST_UNHEALTHY             = 13 // Host has become unhealthy
-      , e_HOST_HEALTH_RESTORED       = 14 // Host's health has been restored
-      , e_QUEUE_SUSPENDED            = 15 // Queue has suspended operation
-      , e_QUEUE_RESUMED              = 16 // Queue has resumed operation
-    };
-
-    // CLASS METHODS
-    static bsl::ostream& print(bsl::ostream&          stream,
-                               SessionEventType::Enum value,
-                               int                    level          = 0,
-                               int                    spacesPerLevel = 4);
-        // Write the string representation of the specified enumeration 'value'
-        // to the specified output 'stream', and return a reference to
-        // 'stream'.  Optionally specify an initial indentation 'level', whose
-        // absolute value is incremented recursively for nested objects.  If
-        // 'level' is specified, optionally specify 'spacesPerLevel', whose
-        // absolute value indicates the number of spaces per indentation level
-        // for this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative, format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  See 'toAscii' for
-        // what constitutes the string representation of a
-        // 'SessionEventType::Value' value.
-
-    static const char *toAscii(SessionEventType::Enum value);
-        // Return the non-modifiable string representation corresponding to the
-        // specified enumeration 'value', if it exists, and a unique (error)
-        // string otherwise.  The string representation of 'value' matches its
-        // corresponding enumerator name with the 'BMQT_' prefix elided.  Note
-        // that specifying a 'value' that does not match any of the enumerators
-        // will result in a string representation that is distinct from any of
-        // those corresponding to the enumerators, but is otherwise
-        // unspecified.
-
-    static bool fromAscii(SessionEventType::Enum   *out,
-                          const bslstl::StringRef&  str);
-        // Return true and fills the specified 'out' with the enum value
-        // corresponding to the specified 'str', if valid, or return false and
-        // leave 'out' untouched if 'str' doesn't correspond to any value of
-        // the enum.
-
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream&          stream,
-                         SessionEventType::Enum value);
-    // Format the specified 'value' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-}  // close package namespace
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-                          // -----------------------
-                          // struct SessionEventType
-                          // -----------------------
-
-// FREE OPERATORS
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&                stream,
-                 bmqt::SessionEventType::Enum value)
-{
-    return SessionEventType::print(stream, value, 0 , -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__sessionoptions_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__sessionoptions_8h.html deleted file mode 100644 index a8f8644fd..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__sessionoptions_8h.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - -bmqt_sessionoptions.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_sessionoptions.h File Reference

-
-
- -

Provide a value-semantic type to configure session with the broker. -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Classes

class  bmqt::SessionOptions

-Namespaces

namespace  bmqpi
namespace  bmqt

-Functions

bool bmqt::operator== (const SessionOptions &lhs, const SessionOptions &rhs)
bool bmqt::operator!= (const SessionOptions &lhs, const SessionOptions &rhs)
bsl::ostream & bmqt::operator<< (bsl::ostream &stream, const SessionOptions &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__sessionoptions_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__sessionoptions_8h_source.html deleted file mode 100644 index 0f7d435a7..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__sessionoptions_8h_source.html +++ /dev/null @@ -1,714 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_sessionoptions.h                                              -*-C++-*-
-#ifndef INCLUDED_BMQT_SESSIONOPTIONS
-#define INCLUDED_BMQT_SESSIONOPTIONS
-
-//@PURPOSE: Provide a value-semantic type to configure session with the broker.
-//
-//@CLASSES: bmqt::SessionOptions: options to configure a session with a
-//  BlazingMQ broker.
-//
-//@DESCRIPTION: 'bmqt::SessionOptions' provides a value-semantic type,
-// 'SessionOptions', which is used to specify session-level configuration
-// parameters.
-//
-// Most applications should not need to change the parameters for creating a
-// 'Session'; the default parameters are fine.
-//
-// The following parameters are supported:
-//: o !brokerUri!:
-//:      Address of the broker to connect to. Default is to connect to the
-//:      broker on the local host on the default port (30114).  The format is
-//:      'tcp://<host>:port'.  Host can be:
-//:      o an explicit hostname or 'localhost'
-//:      o an ip, example 10.11.12.13
-//:      o a DNS entry.  In this case, the client will resolve the list of
-//:        addresses from that entry, and try to connect to one of them.
-//:        When the connection with the host goes down, it will automatically
-//:        immediately failover and reconnects to another entry from the
-//:        address list.
-//:      If the environment variable 'BMQ_BROKER_URI' is set, then instances of
-//:      'bmqa::Session' will ignore the 'brokerUri' field from the provided
-//:      'SessionOptions' and use the value from this environment variable
-//:      instead.
-//:
-//: o !processNameOverride!:
-//:      If not empty, use this value for the processName in the identity
-//:      message (useful for scripted language bindings).  This field is used
-//:      in the broker's logs to more easily identify the client's process.
-//:
-//: o !numProcessingThreads!:
-//:      Number of threads to use for processing events. Default is 1. Note
-//:      that this setting has an effect only if providing a
-//:      'SessionEventHandler' to the session.
-//:
-//: o !blobBufferSize!:
-//:      Size (in bytes) of the blob buffers to use. Default value is 4k.
-//:
-//: o !channelHighWatermark!:
-//:      Size (in bytes) to use for write cache high watermark on the
-//:      channel. Default value is 128MB. This value is set on the
-//:      'writeCacheHiWatermark' of the 'btemt_ChannelPoolConfiguration' object
-//:      used by the session with the broker. Note that BlazingMQ reserves 4MB
-//:      of this value for control message, so the actual watermark for data
-//:      published is 'channelHighWatermark - 4MB'.
-//:
-//: o !statsDumpInterval!:
-//:      Interval (in seconds) at which to dump stats in the logs. Set to 0 to
-//:      disable recurring dump of stats (final stats are always dumped at end
-//:      of session). Default is 5min. The value must be a multiple of 30s, in
-//:      the range [0s - 60min].
-//:
-//: o !connectTimeout!,
-//: o !disconnetTimeout!,
-//: o !openQueueTimeout!,
-//: o !configureQueueTimeout!,
-//: o !closeQueueTimeout!,
-//:      Default timeout to use for various operations.
-//:
-//: o !eventQueueLowWatermark!,
-//: o !eventQueueHighWatermark!,
-//:      Parameters to configure the EventQueue notification watermarks
-//:      thresholds. The EventQueue is the buffer of all incoming events from
-//:      the broker (PUSH and ACK messages as well as session and queue
-//:      operations result) pending being processed by the application code.  A
-//:      warning ('bmqt::SessionEventType::e_SLOWCONSUMER_HIGHWATERMARK') is
-//:      emitted when the buffer reaches the 'highWatermark' value, and a
-//:      notification ('bmqt::SessionEventType::e_SLOWCONSUMER_NORMAL') is
-//:      sent when the buffer is back to the 'lowWatermark'. The
-//:      'highWatermark' typically would be reached in case of either a very
-//:      slow consumer, causing events to accumulate in the buffer, or a huge
-//:      burst of data. Setting the 'highWatermark' to a high value should be
-//:      done cautiously because it will potentially hide slowness of the
-//:      consumer because of the enqueuing of PUSH events for a consumer, ACK
-//:      events for a producer as well as all system events to the buffer
-//:      (meaning that the messages may have a huge latency). Note, it is also
-//:      recommended to have a reasonable distance between 'highWatermark' and
-//:      'lowWatermark' values to avoid a constant back and forth toggling of
-//:      state resulting from push pop of events.
-//:
-//: o !hostHealthMonitor!:
-//:      Optional instance of a class derived from 'bmqpi::HostHealthMonitor',
-//:      responsible for notifying the 'Session' when the health of the host
-//:      machine has changed. A 'hostHealthMonitor' must be specified, in order
-//:      for queues opened through the session to suspend on unhealthy hosts.
-//:
-//: o !traceOptions!:
-//:      Provides the `bmqpi::DTContext` and `bmqpi::DTTracer` objects required
-//:      for integration with a Distributed Trace framework. If these objects
-//:      are provided, then the session will use them to create "spans" to
-//:      represent requests made to the BlazingMQ broker on behalf of
-//:      operations initiated by the client. This includes session-level
-//:      operations (e.g., Session-Start, Session-Stop) as well as queue-level
-//:      operations (e.g., Queue-Open, Queue-Configure, Queue-Close).
-//
-
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <bdlt_timeunitratio.h>
-#include <bsl_iosfwd.h>
-#include <bsl_memory.h>
-#include <bsl_string.h>
-#include <bslma_allocator.h>
-#include <bslma_usesbslmaallocator.h>
-#include <bslmf_nestedtraitdeclaration.h>
-#include <bsls_annotation.h>
-#include <bsls_assert.h>
-#include <bsls_timeinterval.h>
-#include <bsls_types.h>
-
-namespace BloombergLP {
-
-// FORWARD DECLARATIONS
-namespace bmqpi { class DTContext; }
-namespace bmqpi { class DTTracer; }
-namespace bmqpi { class HostHealthMonitor; }
-
-namespace bmqt {
-
-
-                            // ====================
-                            // class SessionOptions
-                            // ====================
-
-class SessionOptions {
-    // value-semantic type for options to configure a session with a BlazingMQ
-    // broker
-
-  public:
-    // CONSTANTS
-    static const char k_BROKER_DEFAULT_URI[];
-                      // Default URI of the 'bmqbrkr' to connect to.
-
-    static const int  k_BROKER_DEFAULT_PORT = 30114;
-                      // Default port the 'bmqbrkr' is listening to for client
-                      // to connect.
-
-    static const int  k_QUEUE_OPERATION_DEFAULT_TIMEOUT =
-                                 5 * bdlt::TimeUnitRatio::k_SECONDS_PER_MINUTE;
-                      // The default, and minimum recommended, value for queue
-                      // operations (open, configure, close).
-
-  private:
-    // DATA
-    bsl::string                               d_brokerUri;
-                                        // URI of the broker to connect to (ex:
-                                        // 'tcp://localhost:30114').  Default
-                                        // is to connect to the local broker.
-
-    bsl::string                               d_processNameOverride;
-                                        // If not empty, use this value for the
-                                        // processName in the identity message
-                                        // (useful for scripted language
-                                        // bindings).
-
-    int                                       d_numProcessingThreads;
-                                        // Number of processing threads.
-                                        // Default is 1 thread.
-
-    int                                       d_blobBufferSize;
-                                        // Size of the blobs buffer.
-
-    bsls::Types::Int64                        d_channelHighWatermark;
-                                        // Write cache high watermark to use on
-                                        // the channel
-
-    bsls::TimeInterval                        d_statsDumpInterval;
-                                        // Interval at which to dump stats to
-                                        // log file (0 to disable dump)
-
-    bsls::TimeInterval                        d_connectTimeout;
-
-    bsls::TimeInterval                        d_disconnectTimeout;
-
-    bsls::TimeInterval                        d_openQueueTimeout;
-
-    bsls::TimeInterval                        d_configureQueueTimeout;
-
-    bsls::TimeInterval                        d_closeQueueTimeout;
-                                        // Timeout for operations of the
-                                        // corresponding type.
-
-    int                                       d_eventQueueLowWatermark;
-
-    int                                       d_eventQueueHighWatermark;
-                                        // Parameters to configure the
-                                        // EventQueue.
-
-    int                                       d_eventQueueSize;
-                                        // DEPRECATED: This parameter is no
-                                        // longer relevant and will be removed
-                                        // in future release of libbmq.
-
-    bsl::shared_ptr<bmqpi::HostHealthMonitor> d_hostHealthMonitor_sp;
-
-    bsl::shared_ptr<bmqpi::DTContext>         d_dtContext_sp;
-    bsl::shared_ptr<bmqpi::DTTracer>          d_dtTracer_sp;
-
-  public:
-     // TRAITS
-    BSLMF_NESTED_TRAIT_DECLARATION(SessionOptions, bslma::UsesBslmaAllocator)
-
-    // CREATORS
-    explicit SessionOptions(bslma::Allocator *allocator = 0);
-        // Create a new SessionOptions using the optionally specified
-        // 'allocator'.
-
-    SessionOptions(const SessionOptions&  other,
-                   bslma::Allocator      *allocator = 0);
-        // Create a new SessionOptions by copying values from the specified
-        // 'other', using the optionally specified 'allocator'.
-
-    // MANIPULATORS
-    SessionOptions& setBrokerUri(const bslstl::StringRef& value);
-        // Set the broker URI to the specified 'value'.
-
-    SessionOptions&
-    setProcessNameOverride(const bslstl::StringRef& value);
-        // Set an override of the proces name to the specified 'value'.
-
-    SessionOptions& setNumProcessingThreads(int value);
-        // Set the number of processing threads to the specified 'value'.
-
-    SessionOptions& setBlobBufferSize(int value);
-        // Set the specified 'value' for the size of blobs buffers.
-
-    SessionOptions& setChannelHighWatermark(bsls::Types::Int64 value);
-        // Set the specified 'value' (in bytes) for the channel high
-        // watermark.  The behavior is undefined unless
-        // '8 * 1024 * 1024 < value'.
-
-    SessionOptions& setStatsDumpInterval(const bsls::TimeInterval& value);
-        // Set the statsDumpInterval to the specified 'value'. The behavior is
-        // undefined unless 'value' is a multiple of 30s and less than 60
-        // minutes.
-
-    SessionOptions& setConnectTimeout(const bsls::TimeInterval& value);
-    SessionOptions& setDisconnectTimeout(const bsls::TimeInterval& value);
-    SessionOptions& setOpenQueueTimeout(const bsls::TimeInterval& value);
-    SessionOptions& setConfigureQueueTimeout(const bsls::TimeInterval& value);
-    SessionOptions& setCloseQueueTimeout(const bsls::TimeInterval& value);
-        // Set the timeout for operations of the corresponding type to the
-        // specified 'value'.
-
-    SessionOptions&
-    setHostHealthMonitor(
-                     const bsl::shared_ptr<bmqpi::HostHealthMonitor>& monitor);
-        // Set a 'HostHealthMonitor' object that will notify the session when
-        // the health of the host has changed.
-
-    SessionOptions&
-    setTraceOptions(const bsl::shared_ptr<bmqpi::DTContext>& dtContext,
-                    const bsl::shared_ptr<bmqpi::DTTracer>&  dtTracer);
-        // Set the 'DTContext' and 'DTTracer' objects needed to integrate with
-        // Distributed Trace frameworks. Either both arguments must point to
-        // valid instances, or both must be empty shared_ptr's; if either is an
-        // empty shared_ptr and the other is not, then behavior is undefined.
-
-    SessionOptions& configureEventQueue(int queueSize,
-                                        int lowWatermark,
-                                        int highWatermark);
-        // DEPRECATED: Use 'configureEventQueue(int lowWatermark,
-        //                                      int highWatermark)'
-        //             instead.  This method will be marked as
-        //             'BSLS_ANNOTATION_DEPRECATED' in future release of
-        //             libbmq.
-
-    SessionOptions& configureEventQueue(int lowWatermark, int highWatermark);
-        // Configure the EventQueue notification watermarks thresholds with the
-        // specified 'lowWatermark' and 'highWatermark' value.  Refer to the
-        // component level documentation for explanation of those watermarks.
-        // The behavior is undefined unless 'lowWatermark < highWatermark'.
-
-    // ACCESSORS
-    const bsl::string& brokerUri() const;
-        // Get the broker URI.
-
-    const bsl::string& processNameOverride() const;
-        // Return the process name override.
-
-    int numProcessingThreads() const;
-        // Get the number of processing threads.
-
-    int blobBufferSize() const;
-        // Get the size of the blobs buffer.
-
-    bsls::Types::Int64 channelHighWatermark() const;
-        // Get the channel high watermark.
-
-    const bsls::TimeInterval& statsDumpInterval() const;
-        // Get the stats dump interval.
-
-    const bsls::TimeInterval& connectTimeout() const;
-    const bsls::TimeInterval& disconnectTimeout() const;
-    const bsls::TimeInterval& openQueueTimeout() const;
-    const bsls::TimeInterval& configureQueueTimeout() const;
-    const bsls::TimeInterval& closeQueueTimeout() const;
-        // Get the timeout for the operations of the corresponding type.
-
-    const bsl::shared_ptr<bmqpi::HostHealthMonitor>& hostHealthMonitor() const;
-
-    const bsl::shared_ptr<bmqpi::DTContext>& traceContext() const;
-        // Get the Distributed Trace context object.
-
-    const bsl::shared_ptr<bmqpi::DTTracer>& tracer() const;
-        // Get the Distributed Trace tracer object.
-
-    int eventQueueLowWatermark() const;
-    int eventQueueHighWatermark() const;
-
-    int eventQueueSize() const;
-        // DEPRECATED: This parameter is no longer relevant and will be removed
-        // in future release of libbmq.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-bool operator==(const SessionOptions& lhs, const SessionOptions& rhs);
-    // Return 'true' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return false otherwise.
-
-bool operator!=(const SessionOptions& lhs, const SessionOptions& rhs);
-    // Return 'false' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return 'true' otherwise.
-
-bsl::ostream& operator<<(bsl::ostream& stream, const SessionOptions& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return a
-    // reference to the modifiable 'stream'.
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-
-                            // --------------------
-                            // class SessionOptions
-                            // --------------------
-
-// MANIPULATORS
-inline
-SessionOptions&
-SessionOptions::setBrokerUri(const bslstl::StringRef& value)
-{
-    d_brokerUri.assign(value.data(), value.length());
-    return *this;
-}
-
-inline
-SessionOptions&
-SessionOptions::setProcessNameOverride(const bslstl::StringRef& value)
-{
-    d_processNameOverride.assign(value.data(), value.length());
-    return *this;
-}
-
-inline
-SessionOptions&
-SessionOptions::setNumProcessingThreads(int value)
-{
-    d_numProcessingThreads = value;
-    return *this;
-}
-
-inline
-SessionOptions&
-SessionOptions::setBlobBufferSize(int value)
-{
-    d_blobBufferSize = value;
-    return *this;
-}
-
-inline
-SessionOptions&
-SessionOptions::setChannelHighWatermark(bsls::Types::Int64 value)
-{
-    // PRECONDITIONS
-    BSLS_ASSERT_OPT(8 * 1024 * 1024 < value);
-        // We reserve 4MB for control message (see
-        // 'bmqimp::BrokerSession::k_CONTROL_DATA_WATERMARK_EXTRA') so make
-        // sure the provided value is greater than it.
-
-    d_channelHighWatermark = value;
-    return *this;
-}
-
-inline
-SessionOptions&
-SessionOptions::setStatsDumpInterval(const bsls::TimeInterval& value)
-{
-    // PRECONDITIONS
-    BSLS_ASSERT_OPT(    value.seconds() % 30 == 0
-                    && "value must be a multiple of 30s");
-    BSLS_ASSERT_OPT(     value.seconds()
-                       < bdlt::TimeUnitRatio::k_SECONDS_PER_HOUR
-                    && "value must be < 10 min");
-
-    d_statsDumpInterval = value;
-    return *this;
-}
-
-inline
-SessionOptions&
-SessionOptions::setConnectTimeout(const bsls::TimeInterval& value)
-{
-    d_connectTimeout = value;
-    return *this;
-}
-
-inline
-SessionOptions&
-SessionOptions::setDisconnectTimeout(const bsls::TimeInterval& value)
-{
-    d_disconnectTimeout = value;
-    return *this;
-}
-
-inline
-SessionOptions&
-SessionOptions::setOpenQueueTimeout(const bsls::TimeInterval& value)
-{
-    d_openQueueTimeout = value;
-    return *this;
-}
-
-inline
-SessionOptions&
-SessionOptions::setConfigureQueueTimeout(const bsls::TimeInterval& value)
-{
-    d_configureQueueTimeout = value;
-    return *this;
-}
-
-inline
-SessionOptions&
-SessionOptions::setCloseQueueTimeout(const bsls::TimeInterval& value)
-{
-    d_closeQueueTimeout = value;
-    return *this;
-}
-
-inline
-SessionOptions&
-SessionOptions::setHostHealthMonitor(
-                      const bsl::shared_ptr<bmqpi::HostHealthMonitor>& monitor)
-{
-    d_hostHealthMonitor_sp = monitor;
-    return *this;
-}
-
-inline
-SessionOptions&
-SessionOptions::setTraceOptions(
-                              const bsl::shared_ptr<bmqpi::DTContext>& context,
-                              const bsl::shared_ptr<bmqpi::DTTracer>&  tracer)
-{
-    BSLS_ASSERT_OPT((context && tracer) || (!context && !tracer));
-
-    d_dtContext_sp = context;
-    d_dtTracer_sp  = tracer;
-    return *this;
-}
-
-inline
-SessionOptions&
-SessionOptions::configureEventQueue(int queueSize,
-                                    int lowWatermark,
-                                    int highWatermark)
-{
-    d_eventQueueSize = queueSize;
-    return configureEventQueue(lowWatermark, highWatermark);
-}
-
-inline
-SessionOptions&
-SessionOptions::configureEventQueue(int lowWatermark,
-                                    int highWatermark)
-{
-    // PRECONDITIONS
-    BSLS_ASSERT_OPT(lowWatermark < highWatermark);
-
-    d_eventQueueLowWatermark  = lowWatermark;
-    d_eventQueueHighWatermark = highWatermark;
-
-    return *this;
-}
-
-// ACCESSORS
-inline
-const bsl::string&
-SessionOptions::brokerUri() const
-{
-    return d_brokerUri;
-}
-
-inline
-const bsl::string&
-SessionOptions::processNameOverride() const
-{
-    return d_processNameOverride;
-}
-
-inline
-int
-SessionOptions::numProcessingThreads() const
-{
-    return d_numProcessingThreads;
-}
-
-inline
-int
-SessionOptions::blobBufferSize() const
-{
-    return d_blobBufferSize;
-}
-
-inline
-bsls::Types::Int64
-SessionOptions::channelHighWatermark() const
-{
-    return d_channelHighWatermark;
-}
-
-inline
-const bsls::TimeInterval&
-SessionOptions::statsDumpInterval() const
-{
-    return d_statsDumpInterval;
-}
-
-inline
-const bsls::TimeInterval&
-SessionOptions::connectTimeout() const
-{
-    return d_connectTimeout;
-}
-
-inline
-const bsls::TimeInterval&
-SessionOptions::disconnectTimeout() const
-{
-    return d_disconnectTimeout;
-}
-
-inline
-const bsls::TimeInterval&
-SessionOptions::openQueueTimeout() const
-{
-    return d_openQueueTimeout;
-}
-
-inline
-const bsls::TimeInterval&
-SessionOptions::configureQueueTimeout() const
-{
-    return d_configureQueueTimeout;
-}
-
-inline
-const bsls::TimeInterval&
-SessionOptions::closeQueueTimeout() const
-{
-    return d_closeQueueTimeout;
-}
-
-inline
-const bsl::shared_ptr<bmqpi::HostHealthMonitor>&
-SessionOptions::hostHealthMonitor() const
-{
-    return d_hostHealthMonitor_sp;
-}
-
-inline
-const bsl::shared_ptr<bmqpi::DTContext>&
-SessionOptions::traceContext() const
-{
-    return d_dtContext_sp;
-}
-
-inline
-const bsl::shared_ptr<bmqpi::DTTracer>&
-SessionOptions::tracer() const
-{
-    return d_dtTracer_sp;
-}
-
-inline
-int
-SessionOptions::eventQueueLowWatermark() const
-{
-    return d_eventQueueLowWatermark;
-}
-
-inline
-int
-SessionOptions::eventQueueHighWatermark() const
-{
-    return d_eventQueueHighWatermark;
-}
-
-inline
-int
-SessionOptions::eventQueueSize() const
-{
-    return d_eventQueueSize;
-}
-
-}  // close package namespace
-
-                            // --------------------
-                            // class SessionOptions
-                            // --------------------
-
-inline
-bool
-bmqt::operator==(const bmqt::SessionOptions& lhs,
-                 const bmqt::SessionOptions& rhs)
-{
-    return    lhs.brokerUri()               == rhs.brokerUri()
-           && lhs.numProcessingThreads()    == rhs.numProcessingThreads()
-           && lhs.blobBufferSize()          == rhs.blobBufferSize()
-           && lhs.channelHighWatermark()    == rhs.channelHighWatermark()
-           && lhs.statsDumpInterval()       == rhs.statsDumpInterval()
-           && lhs.connectTimeout()          == rhs.connectTimeout()
-           && lhs.openQueueTimeout()        == rhs.openQueueTimeout()
-           && lhs.configureQueueTimeout()   == rhs.configureQueueTimeout()
-           && lhs.closeQueueTimeout()       == rhs.closeQueueTimeout()
-           && lhs.eventQueueLowWatermark()  == rhs.eventQueueLowWatermark()
-           && lhs.eventQueueHighWatermark() == rhs.eventQueueHighWatermark()
-           && lhs.hostHealthMonitor()       == rhs.hostHealthMonitor()
-           && lhs.traceContext()            == rhs.traceContext()
-           && lhs.tracer()                  == rhs.tracer();
-}
-
-inline
-bool
-bmqt::operator!=(const bmqt::SessionOptions& lhs,
-                 const bmqt::SessionOptions& rhs)
-{
-    return    lhs.brokerUri()               != rhs.brokerUri()
-           || lhs.numProcessingThreads()    != rhs.numProcessingThreads()
-           || lhs.blobBufferSize()          != rhs.blobBufferSize()
-           || lhs.channelHighWatermark()    != rhs.channelHighWatermark()
-           || lhs.statsDumpInterval()       != rhs.statsDumpInterval()
-           || lhs.connectTimeout()          != rhs.connectTimeout()
-           || lhs.openQueueTimeout()        != rhs.openQueueTimeout()
-           || lhs.configureQueueTimeout()   != rhs.configureQueueTimeout()
-           || lhs.closeQueueTimeout()       != rhs.closeQueueTimeout()
-           || lhs.eventQueueLowWatermark()  != rhs.eventQueueLowWatermark()
-           || lhs.eventQueueHighWatermark() != rhs.eventQueueHighWatermark()
-           || lhs.hostHealthMonitor()       != rhs.hostHealthMonitor()
-           || lhs.traceContext()            != rhs.traceContext()
-           || lhs.tracer()                  != rhs.tracer();
-}
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&               stream,
-                 const bmqt::SessionOptions& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__subscription_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__subscription_8h.html deleted file mode 100644 index 22bea0739..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__subscription_8h.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - -bmqt_subscription.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_subscription.h File Reference

-
-
- -

Provide a value-semantic types for subscription related API. -More...

- -

Go to the source code of this file.

- - - - - - - - - -

-Classes

class  bmqt::SubscriptionHandle
class  bmqt::SubscriptionExpression
class  bmqt::Subscription

-Namespaces

namespace  bmqt

-Functions

bsl::ostream & bmqt::operator<< (bsl::ostream &stream, const Subscription &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__subscription_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__subscription_8h_source.html deleted file mode 100644 index 88d778282..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__subscription_8h_source.html +++ /dev/null @@ -1,565 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2022-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_subscription.h                                                -*-C++-*-
-#ifndef INCLUDED_BMQT_SUBSCRIPTION
-#define INCLUDED_BMQT_SUBSCRIPTION
-
-//@PURPOSE: Provide a value-semantic types for subscription related API.
-//
-//@CLASSES:
-//  bmqt::Subscription_Handle:      uniquely identifies Subscription
-//  bmqt::Subscription_Expression:  Subscription criteria
-//  bmqt::Subscription:             Subscription parameters
-//
-//@DESCRIPTION: 'bmqt::Subscription' provides a value-semantic type carried
-// by 'bmqt::QueueOptions', when opening and configuring a queue.
-//
-//@NOTE: Experimental.  Do not use until this feature is announced.
-//
-
-
-// BMQ
-#include <bmqscm_version.h>
-#include <bmqt_correlationid.h>
-
-//BDE
-#include <bsl_optional.h>
-#include <bsl_ostream.h>
-#include <bsl_string.h>
-#include <bslim_printer.h>
-#include <bslma_allocator.h>
-#include <bsls_types.h>
-
-
-namespace BloombergLP {
-
-namespace bmqt {
-
-class QueueOptions;
-                            // =========================
-                            // class Subscription_Handle
-                            // =========================
-
-class SubscriptionHandle {
-    // Value-semantic type for unique Subscription id.
-  private:
-    // PRIVATE DATA
-    unsigned int                d_id;
-                                    // Internal, unique key
-
-    const bmqt::CorrelationId   d_correlationId;
-                                    // User-specified, not required to be
-                                    // unique
-  private:
-    // PRIVATE CLASS METHODS
-    static unsigned int nextId();
-
-  public:
-    // CREATORS
-    SubscriptionHandle(const bmqt::CorrelationId& cid);
-    SubscriptionHandle(const SubscriptionHandle& other);
-
-    // ACCESSORS
-    const bmqt::CorrelationId& correlationId() const;
-
-    unsigned int id() const;
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-
-    // FRIENDS
-    friend bool operator<(const SubscriptionHandle& lhs,
-                          const SubscriptionHandle& rhs);
-    friend bool operator==(const SubscriptionHandle& lhs,
-                           const SubscriptionHandle& rhs);
-    friend bool operator!=(const SubscriptionHandle& lhs,
-                           const SubscriptionHandle& rhs);
-
-    template <class HASH_ALGORITHM>
-    friend void hashAppend(HASH_ALGORITHM&            hashAlgo,
-                           const SubscriptionHandle& id);
-
-        // Will only consider 'd_id' field when comparing 'lhs' and 'rhs'
-};
-
-class SubscriptionExpression {
-    // Value-semantic type to carry Subscription criteria.
-
- public:
-    // TYPES
-    enum Enum {
-        // Enum representing criteria format
-          e_NONE        = 0     // EMPTY
-        , e_VERSION_1   = 1     // Simple Evaluator
-    };
-
- private:
-    bsl::string     d_expression;   // e.g., "firmId == foo"
-
-    Enum            d_version;      // Required to support newer style
-                                    // of expressions in future
-
-  public:
-    // CREATORS
-    SubscriptionExpression();
-    SubscriptionExpression(const bsl::string&  expression, Enum version);
-
-    // ACCESSORS
-    const bsl::string& text() const;
-
-    Enum version() const;
-
-    bool isValid() const;
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-class Subscription {
-    // Value-semantic type to carry Subscription parameters.
-
-  public:
-    // PUBLIC CONSTANTS
-    static const int k_CONSUMER_PRIORITY_MIN;
-                                        // Constant representing the minimum
-                                        // valid consumer priority
-
-    static const int k_CONSUMER_PRIORITY_MAX;
-                                        // Constant representing the maximum
-                                        // valid consumer priority
-
-    static const int  k_DEFAULT_MAX_UNCONFIRMED_MESSAGES;
-    static const int  k_DEFAULT_MAX_UNCONFIRMED_BYTES;
-    static const int  k_DEFAULT_CONSUMER_PRIORITY;
-
-  private:
-    // PRIVATE DATA
-    bsl::optional<int>      d_maxUnconfirmedMessages;
-                                        // Maximum number of outstanding
-                                        // messages that can be sent by the
-                                        // broker without being confirmed.
-
-    bsl::optional<int>      d_maxUnconfirmedBytes;
-                                        // Maximum accumulated bytes of all
-                                        // outstanding messages that can be
-                                        // sent by the broker without being
-                                        // confirmed.
-
-    bsl::optional<int>      d_consumerPriority;
-                                        // Priority of a consumer with respect
-                                        // to delivery of messages
-
-    SubscriptionExpression  d_expression;
-
-  public:
-    // CREATORS
-    Subscription();
-
-        // Create a new Subscription
-    Subscription(const Subscription&  other);
-        // Create a new Subscription by copying values from the specified
-        // 'other'.
-
-    // MANIPULATORS
-    Subscription& setMaxUnconfirmedMessages(int value);
-        // Set the maxUnconfirmedMessages to the specified 'value'.  The
-        // behavior is undefined unless 'value >= 0'. If the specified 'value'
-        // is set to 0, it means that the consumer does not receive any
-        // messages.  This might be useful when the consumer is shutting down
-        // and wants to process only pending messages, or when it is unable to
-        // process new messages because of transient issues.
-
-    Subscription& setMaxUnconfirmedBytes(int value);
-        // Set the maxUnconfirmedBytes to the specified 'value'.  The behavior
-        // is undefined unless 'value >= 0'.
-
-    Subscription& setConsumerPriority(int value);
-        // Set the consumerPriority to the specified 'value'.  The behavior is
-        // undefined unless 'k_CONSUMER_PRIORITY_MIN <= value <=
-        // k_CONSUMER_PRIORITY_MAX'
-
-    Subscription& setExpression(const SubscriptionExpression& value);
-
-    // ACCESSORS
-    int maxUnconfirmedMessages() const;
-        // Get the number for the maxUnconfirmedMessages parameter.
-
-    int maxUnconfirmedBytes() const;
-        // Get the number for the maxUnconfirmedBytes parameter.
-
-    int consumerPriority() const;
-        // Get the number for the consumerPriority parameter.
-
-    const SubscriptionExpression& expression() const;
-
-    bool hasMaxUnconfirmedMessages() const;
-        // Returns whether 'maxUnconfirmedMessages' has been set for this
-        // object, or whether it implicitly holds
-        // 'k_DEFAULT_MAX_UNCONFIRMED_MESSAGES'.
-
-    bool hasMaxUnconfirmedBytes() const;
-        // Returns whether 'maxUnconfirmedBytes' has been set for this object,
-        // or whether it implicitly holds 'k_DEFAULT_MAX_UNCONFIRMED_BYTES'.
-
-    bool hasConsumerPriority() const;
-        // Returns whether 'consumerPriority' has been set for this object, or
-        // whether it implicitly holds 'k_DEFAULT_CONSUMER_PRIORITY'.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream& stream, const Subscription& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return a
-    // reference to the modifiable 'stream'.
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-                             // ----------------------
-                             // class Subscription_Handle
-                             // ----------------------
-
-inline
-SubscriptionHandle::SubscriptionHandle(const bmqt::CorrelationId& cid)
-: d_id(nextId())
-, d_correlationId(cid)
-{
-    // NOTHING
-}
-
-inline
-SubscriptionHandle::SubscriptionHandle(const SubscriptionHandle& other)
-: d_id(other.d_id)
-, d_correlationId(other.d_correlationId)
-{
-    // NOTHING
-}
-
-// ACCESSORS
-inline
-const bmqt::CorrelationId&
-SubscriptionHandle::correlationId() const
-{
-    return d_correlationId;
-}
-
-inline
-unsigned int
-SubscriptionHandle::id() const
-{
-    return d_id;
-}
-
-inline
-bsl::ostream&
-SubscriptionHandle::print(bsl::ostream& stream,
-                          int           level,
-                          int           spacesPerLevel) const
-{
-    if (stream.bad()) {
-        return stream;                                                // RETURN
-    }
-
-    bslim::Printer printer(&stream, level, spacesPerLevel);
-    printer.start();
-
-    printer.printAttribute("id", d_id);
-    printer.printAttribute("CorrelationId", d_correlationId);
-
-    printer.end();
-
-    return stream;
-}
-                             // ----------------------------
-                             // class SubscriptionExpression
-                             // ----------------------------
-inline
-SubscriptionExpression::SubscriptionExpression()
-: d_expression()
-, d_version(e_NONE)
-{
-    // NOTHING
-}
-
-inline
-SubscriptionExpression::SubscriptionExpression(const bsl::string&  expression,
-                                               Enum                version)
-: d_expression(expression)
-, d_version(version)
-{
-    // NOTHING
-}
-
-inline
-const bsl::string&
-SubscriptionExpression::text() const
-{
-    return d_expression;
-}
-
-inline
-SubscriptionExpression::Enum
-SubscriptionExpression::version() const
-{
-    return d_version;
-}
-
-inline
-bool
-SubscriptionExpression::isValid() const
-{
-    return
-        d_expression.length() == 0 ? d_version == e_NONE : d_version > e_NONE;
-}
-
-inline
-bsl::ostream&
-SubscriptionExpression::print(bsl::ostream& stream,
-                              int           level,
-                              int           spacesPerLevel) const
-{
-    if (stream.bad()) {
-        return stream;                                                // RETURN
-    }
-
-    bslim::Printer printer(&stream, level, spacesPerLevel);
-    printer.start();
-
-    printer.printAttribute("Expression", d_expression);
-    printer.printAttribute("Version", d_version);
-
-    printer.end();
-
-    return stream;
-}
-
-                             // ----------------------
-                             // class Subscription
-                             // ----------------------
-
-inline
-Subscription::Subscription()
-: d_maxUnconfirmedMessages()
-, d_maxUnconfirmedBytes()
-, d_consumerPriority()
-, d_expression()
-{
-    // NOTHING
-}
-
-inline
-Subscription::Subscription(const Subscription& other)
-: d_maxUnconfirmedMessages(other.d_maxUnconfirmedMessages)
-, d_maxUnconfirmedBytes(other.d_maxUnconfirmedBytes)
-, d_consumerPriority(other.d_consumerPriority)
-, d_expression(other.d_expression)
-{
-    // NOTHING
-}
-
-inline
-bsl::ostream&
-Subscription::print(bsl::ostream& stream,
-                        int           level,
-                        int           spacesPerLevel) const
-{
-    if (stream.bad()) {
-        return stream;                                                // RETURN
-    }
-
-    bslim::Printer printer(&stream, level, spacesPerLevel);
-    printer.start();
-    printer.printAttribute("maxUnconfirmedMessages", maxUnconfirmedMessages());
-    printer.printAttribute("maxUnconfirmedBytes",    maxUnconfirmedBytes());
-    printer.printAttribute("consumerPriority",       consumerPriority());
-
-    d_expression.print(stream, level, spacesPerLevel);
-
-    printer.end();
-
-    return stream;
-}
-
-// MANIPULATORS
-inline
-Subscription&
-Subscription::setMaxUnconfirmedMessages(int value)
-{
-    d_maxUnconfirmedMessages.emplace(value);
-    return *this;
-}
-
-inline
-Subscription&
-Subscription::setMaxUnconfirmedBytes(int value)
-{
-    d_maxUnconfirmedBytes.emplace(value);
-    return *this;
-}
-
-inline
-Subscription&
-Subscription::setConsumerPriority(int value)
-{
-    d_consumerPriority.emplace(value);
-    return *this;
-}
-
-inline
-Subscription&
-Subscription::setExpression(const SubscriptionExpression& value)
-{
-    d_expression = value;
-    return *this;
-}
-
-// ACCESSORS
-inline
-int
-Subscription::maxUnconfirmedMessages() const
-{
-    return d_maxUnconfirmedMessages.value_or(
-                                           k_DEFAULT_MAX_UNCONFIRMED_MESSAGES);
-}
-
-inline
-int
-Subscription::maxUnconfirmedBytes() const
-{
-    return d_maxUnconfirmedBytes.value_or(k_DEFAULT_MAX_UNCONFIRMED_BYTES);
-}
-
-inline
-int
-Subscription::consumerPriority() const
-{
-    return d_consumerPriority.value_or(k_DEFAULT_CONSUMER_PRIORITY);
-}
-
-inline
-const SubscriptionExpression&
-Subscription::expression() const
-{
-    return d_expression;
-}
-
-inline
-bool
-Subscription::hasMaxUnconfirmedMessages() const
-{
-    return d_maxUnconfirmedMessages.has_value();
-}
-
-inline
-bool
-Subscription::hasMaxUnconfirmedBytes() const
-{
-    return d_maxUnconfirmedBytes.has_value();
-}
-
-inline
-bool
-Subscription::hasConsumerPriority() const
-{
-    return d_consumerPriority.has_value();
-}
-
-// FREE FUNCTIONS
-template <class HASH_ALGORITHM>
-void
-hashAppend(HASH_ALGORITHM& hashAlgo, const SubscriptionHandle& id)
-    // Apply the specified 'hashAlgo' to the specified 'id'.
-{
-    using bslh::hashAppend; // for ADL
-    hashAppend(hashAlgo, id.d_id);
-}
-
-inline
-bool
-operator<(const SubscriptionHandle& lhs, const SubscriptionHandle& rhs)
-{
-    return lhs.d_id < rhs.d_id;
-}
-
-inline
-bool
-operator==(const SubscriptionHandle& lhs, const SubscriptionHandle& rhs)
-{
-    return lhs.d_id == rhs.d_id;
-}
-
-inline
-bool
-operator!=(const SubscriptionHandle& lhs, const SubscriptionHandle& rhs)
-{
-    return lhs.d_id != rhs.d_id;
-}
-
-inline
-bsl::ostream&
-operator<<(bsl::ostream&stream, const Subscription& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-
-}  // close package namespace
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__uri_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__uri_8h.html deleted file mode 100644 index 9064256dc..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__uri_8h.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - -bmqt_uri.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_uri.h File Reference

-
-
- -

Provide value-semantic type and utilities for a BlazingMQ queue. -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Classes

class  bmqt::Uri
struct  bmqt::UriParser
class  bmqt::UriBuilder

-Namespaces

namespace  bmqt

-Functions

bool bmqt::operator== (const Uri &lhs, const Uri &rhs)
bool bmqt::operator!= (const Uri &lhs, const Uri &rhs)
bool bmqt::operator< (const Uri &lhs, const Uri &rhs)
bsl::ostream & bmqt::operator<< (bsl::ostream &stream, const Uri &rhs)

-Variables

*< ul > *< li > *< code >
- bmqt::UriBuilder</code > is
-NOT thread safe *</li > *< li > *
-< code > bmqt::UriParser</code >
- should be thread 
safe
-

Detailed Description

-

Variable Documentation

- -
-
- - - - -
*<ul> *<li> *<code> bmqt::UriBuilder</code> is NOT thread safe*</li> *<li> *<code> bmqt::UriParser</code> should be thread safe
-
-
- -
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__uri_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__uri_8h_source.html deleted file mode 100644 index 3f1707d9f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__uri_8h_source.html +++ /dev/null @@ -1,604 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_uri.h                                                         -*-C++-*-
-#ifndef INCLUDED_BMQT_URI
-#define INCLUDED_BMQT_URI
-
-//@PURPOSE: Provide value-semantic type and utilities for a BlazingMQ queue
-//URI.
-//
-//@CLASSES:
-//  bmqt::Uri        : value-semantic type representing a URI
-//  bmqt::UriParser  : utility to parse a string into a URI
-//  bmqt::UriBuilder : builder mechanism to create a URI
-//
-//@DESCRIPTION: This component provides a value-semantic type, 'bmqt::Uri'
-// representing a URI for a BlazingMQ queue.  A 'bmqt:Uri' can be built by
-// parsing from a string representation, using the 'bmqt::UriParser', or built
-// using the 'bmqt::UriBuilder'.
-//
-//@SEE_ALSO:
-//----------
-// https://tools.ietf.org/html/rfc3986
-//
-///URI format
-///----------
-// In a nutshell, a URI representing an application queue managed by a
-// BlazingMQ broker on a given machine looks like one of the following:
-//..
-//  bmq://ts.trades.myapp/my.queue
-//  bmq://ts.trades.myapp.~bt/my.queue
-//  bmq://ts.trades.myapp/my.queue?id=foo
-//..
-// where:
-//
-//: o The URI scheme is always "bmq".
-//
-//: o The URI authority is the name of BlazingMQ domain (such as
-//    "ts.trades.myapp")
-//:   as registered with the BlazingMQ infrastructure.  The domain name may
-//:   contain alphanumeric characters, dots and dashes (it has to match the
-//:   following regular expression: '[-a-zA-Z0-9\\._]+').  The domain may be
-//:   followed by an optional tier, introduced by the ".~" sequence and
-//:   consisting of alphanumeric characters and dashes.  The ".~" sequence is
-//:   not part of the tier.
-//
-//: o The URI path is the name of the queue ("my.queue" above) and may contain
-//:   alphanumeric characters, dashes, underscores and tild (it has to match
-//:   the following regular expression: '[-a-zA-Z0-9_~\\.]+').  The queue name
-//:   must be less than 'bmqt::Uri::k_QUEUENAME_MAX_LENGTH' characters long.
-//
-//: o The name of the queue ("my.queue" above) may contain alphanumeric
-//:   characters and dots.
-//
-//: o The URI may contain an optional query with a key-value pair.  Currently
-//:   supported keys are:
-//:   o !id!: the corresponding value represents a name that will be used by
-//:     BlazingMQ broker to uniquely identify the client.
-//
-//: o The URI fragment part is currently unused.
-//
-///Usage Example 1
-///---------------
-// First, call the 'initialize' method of the 'UriParser'.  This call is only
-// needed one time; you can call it when your task starts.
-//
-// Note that the 'bmq' library takes care of that, so users of 'bmq' don't
-// have to explicitly do it themselves.
-//..
-//  bmqt::UriParser::initialize();
-//..
-// Then, parse a URI string created on the stack to populate a 'Uri' object.
-// The parse function takes an optional error string which is populated with a
-// short error message if the URI is not formatted correctly.
-//..
-//   bsl::string input = "bmq://my.domain/queue";
-//   bmqt::Uri   uri(allocator);
-//   bsl::string errorDescription;
-//
-//   int         rc = bmqt::UriParser::parse(&uri, &errorDescription, input);
-//   if (rc != 0) {
-//      BALL_LOG_ERROR << "Invalid URI [error: " << errorDescription << "]";
-//   }
-//   assert(rc == 0);
-//   assert(error == "");
-//   assert(uri.scheme()    == "bmq");
-//   assert(uri.domain()    == "my.domain");
-//   assert(uri.queue()     == "queue");
-//..
-//
-/// Usage Example 2
-///----------------
-// Instantiate a 'Uri' object with a string representation of the URI and an
-// allocator.
-//..
-//  bmqt::Uri uri("bmq://my.domain/queue", allocator);
-//  assert(uri.scheme() == "bmq");
-//  assert(uri.domain() == "my.domain");
-//  assert(uri.queue()  == "queue");
-//..
-
-///Thread Safety
-///-------------
-//: o 'bmqt::UriBuilder' is NOT thread safe
-//: o 'bmqt::UriParser' should be thread safe: the component depends on
-//:   'bdepcre_regex' that is a wrapper around "pcre.h".  See
-//:    http://www.pcre.org/pcre.txt.
-
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <ball_log.h>
-#include <bsl_cstddef.h>
-#include <bsl_iosfwd.h>
-#include <bsl_string.h>
-#include <bslh_hash.h>
-#include <bslma_usesbslmaallocator.h>
-#include <bslmf_nestedtraitdeclaration.h>
-
-
-namespace BloombergLP {
-
-// FORWARD DECLARATION
-namespace bmqt { class UriBuilder; }
-namespace bmqt { struct UriParser; }
-
-namespace bmqt {
-
-
-                                 // =========
-                                 // class Uri
-                                 // =========
-
-class Uri {
-    // Value semantic type representing a URI
-
-  public:
-    // PUBLIC CONSTANTS
-    static const int k_QUEUENAME_MAX_LENGTH = 64;
-        // The maximum authorized length for the queue name part of the URI.
-
-  private:
-    // CLASS-SCOPE CATEGORY
-    BALL_LOG_SET_CLASS_CATEGORY("BMQT.URI");
-
-  private:
-    // FRIENDS
-    friend struct UriParser;
-    friend class UriBuilder;
-    template <class HASH_ALGORITHM>
-    friend void hashAppend(HASH_ALGORITHM& hashAlgo, const Uri& uri);
-
-  private:
-    // DATA
-    bsl::string       d_uri;            // The full URI
-
-    bslstl::StringRef d_scheme;         // URI scheme (must be "bmq").
-
-    bslstl::StringRef d_authority;      // URI authority (domain + optional
-                                        // tier)
-
-    bslstl::StringRef d_domain;         // URI domain
-
-    bslstl::StringRef d_tier;           // URI tier
-
-    bslstl::StringRef d_path;           // URI path (i.e queue name).
-
-    bslstl::StringRef d_query_id;       // Optional application id, part of the
-                                        // URI query if present.
-
-    bool              d_wasParserInitialized;
-                                        // Flag indicating whether the URI
-                                        // parser was initialized (and whether
-                                        // shutdown should be called on it at
-                                        // destruction)
-
-  private:
-    // PRIVATE MANIPULATORS
-    void reset();
-        // Reset this object to the default value.
-
-    void copyImpl(const Uri& src);
-        // Implementation of the copy of the specified 'src' URI into this
-        // object.
-
-  public:
-    // TRAITS
-    BSLMF_NESTED_TRAIT_DECLARATION(Uri, bslma::UsesBslmaAllocator)
-
-    // CREATORS
-    explicit Uri(bslma::Allocator *allocator = 0);
-        // Constructor of an invalid Uri with all fields empty, using the
-        // optionally specified 'allocator'.
-
-    Uri(const Uri&        original,
-        bslma::Allocator *allocator = 0); // IMPLICIT
-        // Copy constructor, create a new Uri having the same values as the
-        // specified 'original', and using the optionally specified
-        // 'allocator'.
-
-    Uri(const bsl::string&  uri,
-        bslma::Allocator   *allocator = 0);                         // IMPLICIT
-    Uri(const bslstl::StringRef&  uri,
-        bslma::Allocator         *allocator = 0);                   // IMPLICIT
-    Uri(const char       *uri,
-        bslma::Allocator *allocator = 0);                           // IMPLICIT
-        // Implicit constructor of this object from the specified 'uri' string
-        // using the optionally specified 'allocator'.  If the 'uri' input
-        // string doesn't not represent a valid URI, this object is left in an
-        // invalid state (isValid() will return false).
-
-    ~Uri();
-        // Destructor.
-
-    // MANIPULATORS
-    Uri& operator=(const Uri& rhs);
-        // Set the value of this object to the specified 'rhs'.
-
-    // ACCESSORS
-    const bsl::string& asString() const;
-        // Return the string representation of this URI.
-
-    bool isValid() const;
-        // Return true if this object represents a valid URI.
-
-    bool isCanonical() const;
-        // Return true if this object represents a canonical URI.
-
-    const bslstl::StringRef& scheme() const;
-    const bslstl::StringRef& authority() const;
-    const bslstl::StringRef& path() const;
-        // Return the corresponding (raw) part of the URI, matching to the URI
-        // RFC terminology.
-
-    const bslstl::StringRef& qualifiedDomain() const;
-    const bslstl::StringRef& domain() const;
-    const bslstl::StringRef& tier() const;
-    const bslstl::StringRef& queue() const;
-    const bslstl::StringRef& id() const;
-        // Return the corresponding (extracted) part of the URI, provided as
-        // convenient accessors using the BlazingMQ terminology.
-
-    bslstl::StringRef canonical() const;
-        // Return the canonical form of the URI. Note that canonical form
-        // includes everything except the query part of the URI.
-
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the (absolute
-        // value of) the optionally specified indentation 'level' and return a
-        // reference to 'stream'.  If 'level' is specified, optionally specify
-        // 'spacesPerLevel', the number of spaces per indentation level for
-        // this and all of its nested objects.  If 'level' is negative,
-        // suppress indentation of the first line.  If 'spacesPerLevel' is
-        // negative format the entire output on one line, suppressing all but
-        // the initial indentation (as governed by 'level').  If 'stream' is
-        // not valid on entry, this operation has no effect.
-};
-
-// FREE OPERATORS
-bool operator==(const Uri& lhs,
-                const Uri& rhs);
-    // Return 'true' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return false otherwise.
-
-bool operator!=(const Uri& lhs,
-                const Uri& rhs);
-    // Return 'false' if the specified 'rhs' object contains the value of the
-    // same type as contained in the specified 'lhs' object and the value
-    // itself is the same in both objects, return 'true' otherwise.
-
-bool operator<(const Uri& lhs,
-               const Uri& rhs);
-    // Return 'true' if the specified 'lhs' object compares less than the
-    // specified 'rhs' object.
-
-
-bsl::ostream& operator<<(bsl::ostream& stream,
-                         const Uri&    rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-
-                              // ================
-                              // struct UriParser
-                              // ================
-
-struct UriParser {
-    // Utility namespace of methods for parsing URI strings into 'Uri' objects.
-
-    // CLASS METHODS
-    static void initialize(bslma::Allocator *allocator = 0);
-        // Initialize the 'UriParser'.  Note that this will compile the regular
-        // expression used by 'parseUri'.  This method only needs to be called
-        // once before any other method, but can be called multiple times
-        // provided that for each call to 'initialize' there is a corresponding
-        // call to 'shutdown'.  Use the optionally specified 'allocator' for
-        // any memory allocation, or the 'global' allocator if none is
-        // provided.  Note that specifying the allocator is provided for test
-        // drivers only, and therefore users should let it default to the
-        // global allocator.
-
-    static void shutdown();
-        // Pendant operation of the 'initialize' one.  Note that behaviour
-        // after calling the '.parse()' method of the 'UriParser' after
-        // 'shutdown' has been called is undefined.  The number of calls to
-        // 'shutdown' must equal the number of calls to 'initialize', without
-        // corresponding 'shutdown' calls, to fully destroy the parser.  It is
-        // safe to call 'initialize' after calling 'shutdown'.  Behaviour is
-        // undefined if 'shutdown' is called without 'initialize' first being
-        // called.
-
-    static int parse(Uri                      *result,
-                     bsl::string              *errorDescription,
-                     const bslstl::StringRef&  uriString);
-        // Parse the specified 'uriString' into the specified 'result' object
-        // if 'uriString' is a valid URI, otherwise load the specified
-        // 'errorDescription' with a description of the syntax error present in
-        // 'uriString'.  Return 0 on success and non-zero if 'uriString' does
-        // not have a valid syntax.  Note that 'errorDescription' may be null
-        // if the caller does not care about getting error messages.  The
-        // behavior is undefined unless 'initialize' has been called
-        // previously.
-
-  private:
-    // CLASS-SCOPE CATEGORY
-    BALL_LOG_SET_CLASS_CATEGORY("BMQT.URI");
-};
-
-
-                              // ================
-                              // class UriBuilder
-                              // ================
-
-class UriBuilder {
-    // This component implements a mechanism, 'bmqt::UriBuilder', that can be
-    // used for creating queue URI for BMQ.
-
-  private:
-    // DATA
-    Uri d_uri; // Placeholder object for URI object being built.
-
-  private:
-    // NOT IMPLEMENTED
-    UriBuilder(const UriBuilder&);
-    UriBuilder& operator=(const UriBuilder&);
-        // Copy constructor and assignment operator not implemented.
-
-  public:
-    // TRAITS
-    BSLMF_NESTED_TRAIT_DECLARATION(UriBuilder, bslma::UsesBslmaAllocator)
-
-    // CREATORS
-    explicit UriBuilder(bslma::Allocator *allocator = 0);
-        // Create a new UriBuilder using the optionally specified 'allocator'.
-
-    explicit UriBuilder(const bmqt::Uri&  uri,
-                        bslma::Allocator *allocator = 0);
-        // Create a new UriBuilder initialized with the specified 'uri' and
-        // using the optionally specified 'allocator'.
-
-    // MANIPULATORS
-    UriBuilder& setDomain(const bslstl::StringRef& value);
-    UriBuilder& setTier(const bslstl::StringRef& value);
-    UriBuilder& setQualifiedDomain(const bslstl::StringRef& value);
-    UriBuilder& setQueue(const bslstl::StringRef& value);
-    UriBuilder& setId(const bslstl::StringRef& value);
-        // Set the corresponding field of the URI to the specified 'value'.
-        // The behavior is undefined unless 'value' remains valid until URI has
-        // been built by invoking 'uri()'.  'setDomain()' and 'setTier()'
-        // should be preferred over 'setQualifiedDomain()' whenever possible.
-
-    void reset();
-        // Reset all fields of this builder.
-
-    // ACCESSORS
-    int uri(Uri         *result,
-            bsl::string *errorDescription = 0) const;
-        // Build and populate the specified 'result' with the built URI,
-        // returning 0 on success, or return non-zero on error, populating the
-        // optionally specified 'errorDescription' if provided.
-};
-
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-
-                                 // ---------
-                                 // class Uri
-                                 // ---------
-
-inline
-Uri&
-Uri::operator=(const Uri& rhs)
-{
-    copyImpl(rhs);
-
-    return *this;
-}
-
-inline
-const bsl::string&
-Uri::asString() const
-{
-    return d_uri;
-}
-
-inline
-bool
-Uri::isValid() const
-{
-    // URI can only be set using either 'UriBuilder' or 'UriParser', which are
-    // resetting the d_uri on failure.
-    return !d_uri.empty();
-}
-
-inline
-bool
-Uri::isCanonical() const
-{
-    return d_query_id.isEmpty();
-}
-
-inline
-const bslstl::StringRef&
-Uri::scheme() const
-{
-    return d_scheme;
-}
-
-inline
-const bslstl::StringRef&
-Uri::authority() const
-{
-    return d_authority;
-}
-
-inline
-const bslstl::StringRef&
-Uri::path() const
-{
-    return d_path;
-}
-
-inline
-const bslstl::StringRef&
-Uri::domain() const
-{
-    return d_domain;
-}
-
-inline
-const bslstl::StringRef&
-Uri::qualifiedDomain() const
-{
-    return d_authority;
-}
-
-inline
-const bslstl::StringRef&
-Uri::tier() const
-{
-    return d_tier;
-}
-
-inline
-const bslstl::StringRef&
-Uri::queue() const
-{
-    return d_path;
-}
-
-inline
-const bslstl::StringRef&
-Uri::id() const
-{
-    return d_query_id;
-}
-
-inline
-bslstl::StringRef
-Uri::canonical() const
-{
-    size_t queryBeginPos = d_uri.find_first_of('?');
-    if (bsl::string::npos == queryBeginPos) {
-        return d_uri;                                                 // RETURN
-    }
-
-    return bslstl::StringRef(d_uri.c_str(), queryBeginPos);
-}
-
-// FREE FUNCTIONS
-template <class HASH_ALGORITHM>
-void
-hashAppend(HASH_ALGORITHM& hashAlgo,
-           const Uri&      uri)
-{
-    using bslh::hashAppend;  // for ADL
-    hashAppend(hashAlgo, uri.d_uri);  // hashes full uri string
-}
-
-
-                              // ----------------
-                              // class UriBuilder
-                              // ----------------
-
-inline
-UriBuilder&
-UriBuilder::setDomain(const bslstl::StringRef& value)
-{
-    d_uri.d_domain = value;
-    return *this;
-}
-
-inline
-UriBuilder&
-UriBuilder::setTier(const bslstl::StringRef& value)
-{
-    d_uri.d_tier = value;
-    return *this;
-}
-
-inline
-UriBuilder&
-UriBuilder::setQueue(const bslstl::StringRef& value)
-{
-    d_uri.d_path = value;
-    return *this;
-}
-
-inline
-UriBuilder&
-UriBuilder::setId(const bslstl::StringRef& value)
-{
-    d_uri.d_query_id = value;
-    return *this;
-}
-
-
-}  // close package namespace
-
-// FREE OPERATORS
-
-inline
-bool
-bmqt::operator==(const bmqt::Uri& lhs,
-                 const bmqt::Uri& rhs)
-{
-    return (lhs.asString() == rhs.asString());
-}
-
-inline
-bool
-bmqt::operator!=(const bmqt::Uri& lhs,
-                 const bmqt::Uri& rhs)
-{
-    return (lhs.asString() != rhs.asString());
-}
-
-inline
-bool
-bmqt::operator<(const bmqt::Uri& lhs,
-                const bmqt::Uri& rhs)
-{
-    return (lhs.asString() < rhs.asString());
-}
-
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&    stream,
-                 const bmqt::Uri& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__version_8h.html b/docs/docs/apidocs/cpp_apidocs/bmqt__version_8h.html deleted file mode 100644 index 3faa7ba73..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__version_8h.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - -bmqt_version.h Reference - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt_version.h File Reference

-
-
- -

Provide a value-semantic type representing a version (major minor). -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Classes

class  bmqt::Version

-Namespaces

namespace  bmqt

-Functions

bsl::ostream & bmqt::operator<< (bsl::ostream &stream, const Version &rhs)
bool bmqt::operator== (const Version &lhs, const Version &rhs)
bool bmqt::operator!= (const Version &lhs, const Version &rhs)
bool bmqt::operator< (const Version &lhs, const Version &rhs)
-

Detailed Description

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/bmqt__version_8h_source.html b/docs/docs/apidocs/cpp_apidocs/bmqt__version_8h_source.html deleted file mode 100644 index 19e09c7bd..000000000 --- a/docs/docs/apidocs/cpp_apidocs/bmqt__version_8h_source.html +++ /dev/null @@ -1,234 +0,0 @@ - - -Bloomberg Development Environment - -
-// Copyright 2014-2023 Bloomberg Finance L.P.
-// SPDX-License-Identifier: Apache-2.0
-//
-// Licensed 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.
-
-// bmqt_version.h                                                     -*-C++-*-
-#ifndef INCLUDED_BMQT_VERSION
-#define INCLUDED_BMQT_VERSION
-
-//@PURPOSE: Provide a value-semantic type representing a version (major minor).
-//
-//@CLASSES:
-//  bmqt::Version: version with major and minor parts.
-//
-//@DESCRIPTION: This component implements a simple value-semantic type,
-// 'bmqt::Version' representing the version of an object.  It is used in
-// particular to attach a version attribute to a 'bmqa::Message', so that a
-// consuming application receiving a message knows the version of the schema
-// that was used for publishing.
-//
-// A version is represented by two numbers: a major and a minor version.  Both
-// are positive integers within the range [0-255].
-//
-///Usage Example
-///-------------
-//..
-//  bmqt::Version version(1, 3);
-//  BSLS_ASSERT(version.major() == 1);
-//  BSLS_ASSERT(version.minor() == 3);
-//  version.setMajor(2).setMinor(4);
-//  BSLS_ASSERT(version.major() == 2);
-//  BSLS_ASSERT(version.minor() == 4);
-//..
-
-
-// BMQ
-#include <bmqscm_version.h>
-
-// BDE
-#include <bsl_iosfwd.h>
-
-namespace BloombergLP {
-namespace bmqt {
-
-                               // =============
-                               // class Version
-                               // =============
-
-class Version {
-    // A version consisting of a major and minor version number.
-
-  private:
-    // DATA
-    unsigned char d_major; // Major part of the version
-    unsigned char d_minor; // Minor part of the version
-
-  public:
-    // CREATORS
-    Version();
-        // Create an object of type 'Version' having the default value.  Note
-        // that major is set to zero and minor is set to zero.
-
-    Version(unsigned char major, unsigned char minor);
-        // Create an object of type 'Version' initialized with the specified
-        // 'major' and 'minor' versions.
-
-    // MANIPULATORS
-    Version& setMajor(unsigned char value);
-        // Set the major part of the version to the specified 'value' and
-        // return a reference to this object.
-
-    Version& setMinor(unsigned char value);
-        // Set the minor part of the version to the specified 'value' and
-        // return a reference to this object.
-
-    // ACCESSORS
-    bsl::ostream& print(bsl::ostream& stream,
-                        int           level          = 0,
-                        int           spacesPerLevel = 4) const;
-        // Format this object to the specified output 'stream' at the
-        // optionally specified indentation 'level' and return a reference to
-        // the modifiable 'stream'.  If 'level' is specified, optionally
-        // specify 'spacesPerLevel', the number of spaces per indentation level
-        // for this and all of its nested objects.  Each line is indented by
-        // the absolute value of 'level * spacesPerLevel'.  If 'level' is
-        // negative, suppress indentation of the first line.  If
-        // 'spacesPerLevel' is negative, suppress line breaks and format the
-        // entire output on one line.  If 'stream' is initially invalid, this
-        // operation has no effect.  Note that a trailing newline is provided
-        // in multiline mode only.
-
-    unsigned char major() const;
-        // Return the major part of the version.
-
-    unsigned char minor() const;
-        // Return the minor part of the version.
-};
-
-// FREE OPERATORS
-bsl::ostream& operator<<(bsl::ostream& stream, const Version& rhs);
-    // Format the specified 'rhs' to the specified output 'stream' and return
-    // a reference to the modifiable 'stream'.
-
-bool operator==(const Version& lhs, const Version& rhs);
-    // Return 'true' if the object in the specified 'lhs' represents the same
-    // version as the the one in the specified 'rhs', return false otherwise.
-
-bool operator!=(const Version& lhs, const Version& rhs);
-    // Return 'true' if the object in the specified 'lhs' represents a
-    // different version than the the one in the specified 'rhs', return false
-    // otherwise.
-
-bool operator<(const Version& lhs, const Version& rhs);
-    // Return 'true' if the version represented by the specified 'lhs' is less
-    // than the version represented by the specified 'rhs'.
-
-// ============================================================================
-//                             INLINE DEFINITIONS
-// ============================================================================
-
-                               // -------------
-                               // class Version
-                               // -------------
-
-// CREATORS
-inline
-Version::Version()
-: d_major(0)
-, d_minor(0)
-{
-    // NOTHING
-}
-
-inline
-Version::Version(unsigned char major,
-                 unsigned char minor)
-: d_major(major)
-, d_minor(minor)
-{
-    // NOTHING
-}
-
-// MANIPULATORS
-inline
-Version&
-Version::setMajor(unsigned char value)
-{
-    d_major = value;
-    return *this;
-}
-
-inline
-Version&
-Version::setMinor(unsigned char value)
-{
-    d_minor = value;
-    return *this;
-}
-
-// ACCESSORS
-inline
-unsigned char
-Version::major() const
-{
-    return d_major;
-}
-
-inline
-unsigned char
-Version::minor() const
-{
-    return d_minor;
-}
-
-}  // close package namespace
-
-
-// FREE OPERATORS
-inline
-bsl::ostream&
-bmqt::operator<<(bsl::ostream&        stream,
-                 const bmqt::Version& rhs)
-{
-    return rhs.print(stream, 0, -1);
-}
-
-inline
-bool
-bmqt::operator==(const bmqt::Version& lhs,
-                 const bmqt::Version& rhs)
-{
-    return    lhs.major() == rhs.major()
-           && lhs.minor() == rhs.minor();
-}
-
-inline
-bool
-bmqt::operator!=(const bmqt::Version& lhs,
-                 const bmqt::Version& rhs)
-{
-    return    lhs.major() != rhs.major()
-           || lhs.minor() != rhs.minor();
-}
-
-inline
-bool
-bmqt::operator<(const bmqt::Version& lhs,
-                const bmqt::Version& rhs)
-{
-    return    lhs.major() < rhs.major()
-           || (lhs.major() == rhs.major() && lhs.minor() < rhs.minor());
-}
-
-}  // close enterprise namespace
-
-#endif
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1AbstractSession-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1AbstractSession-members.html deleted file mode 100644 index bb7a5dc74..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1AbstractSession-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - -Class bmqa::AbstractSession Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::AbstractSession Member List

-
-
-This is the complete list of members for bmqa::AbstractSession, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
closeQueue(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
closeQueueAsync(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
closeQueueAsync(const QueueId *queueId, const CloseQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
CloseQueueCallback typedefbmqa::AbstractSession
closeQueueSync(const QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
configureMessageDumping(const bslstl::StringRef &command)bmqa::AbstractSession [virtual]
configureQueue(QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
configureQueueAsync(QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
configureQueueAsync(const QueueId *queueId, const bmqt::QueueOptions &options, const ConfigureQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
ConfigureQueueCallback typedefbmqa::AbstractSession
configureQueueSync(const QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
confirmMessage(const Message &message)bmqa::AbstractSession [virtual]
confirmMessage(const MessageConfirmationCookie &cookie)bmqa::AbstractSession [virtual]
confirmMessages(ConfirmEventBuilder *builder)bmqa::AbstractSession [virtual]
finalizeStop()bmqa::AbstractSession [virtual]
getQueueId(QueueId *queueId, const bmqt::Uri &uri) const bmqa::AbstractSession [virtual]
getQueueId(QueueId *queueId, const bmqt::CorrelationId &correlationId) const bmqa::AbstractSession [virtual]
loadConfirmEventBuilder(ConfirmEventBuilder *builder)bmqa::AbstractSession [virtual]
loadMessageEventBuilder(MessageEventBuilder *builder)bmqa::AbstractSession [virtual]
loadMessageProperties(MessageProperties *buffer)bmqa::AbstractSession [virtual]
nextEvent(const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
openQueue(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
openQueueAsync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
openQueueAsync(bmqa::QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const OpenQueueCallback &callback, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
OpenQueueCallback typedefbmqa::AbstractSession
openQueueSync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
post(const MessageEvent &event)bmqa::AbstractSession [virtual]
start(const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
startAsync(const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::AbstractSession [virtual]
stop()bmqa::AbstractSession [virtual]
stopAsync()bmqa::AbstractSession [virtual]
~AbstractSession()bmqa::AbstractSession [virtual]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1AbstractSession.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1AbstractSession.html deleted file mode 100644 index b9550fc1f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1AbstractSession.html +++ /dev/null @@ -1,1058 +0,0 @@ - - - - -Class bmqa::AbstractSession - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::AbstractSession Class Reference

-
-
- -

#include <bmqa_abstractsession.h>

-
-Inheritance diagram for bmqa::AbstractSession:
-
-
- - -bmqa::MockSession -bmqa::Session - -
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

typedef bsl::function< void(const
-bmqa::OpenQueueStatus &result)> 
OpenQueueCallback
typedef bsl::function< void(const
-bmqa::ConfigureQueueStatus
-&result)> 
ConfigureQueueCallback
typedef bsl::function< void(const
-bmqa::CloseQueueStatus &result)> 
CloseQueueCallback

-Public Member Functions

virtual ~AbstractSession ()
virtual int start (const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual int startAsync (const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual void stop ()
virtual void stopAsync ()
virtual void finalizeStop ()
virtual void loadMessageEventBuilder (MessageEventBuilder *builder)
virtual void loadConfirmEventBuilder (ConfirmEventBuilder *builder)
virtual void loadMessageProperties (MessageProperties *buffer)
virtual int getQueueId (QueueId *queueId, const bmqt::Uri &uri) const
virtual int getQueueId (QueueId *queueId, const bmqt::CorrelationId &correlationId) const
virtual int openQueue (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual OpenQueueStatus openQueueSync (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual int openQueueAsync (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual void openQueueAsync (bmqa::QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const OpenQueueCallback &callback, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual int configureQueue (QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual ConfigureQueueStatus configureQueueSync (const QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual int configureQueueAsync (QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual void configureQueueAsync (const QueueId *queueId, const bmqt::QueueOptions &options, const ConfigureQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual int closeQueue (QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual CloseQueueStatus closeQueueSync (const QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual int closeQueueAsync (QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual void closeQueueAsync (const QueueId *queueId, const CloseQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual Event nextEvent (const bsls::TimeInterval &timeout=bsls::TimeInterval())
virtual int post (const MessageEvent &event)
virtual int confirmMessage (const Message &message)
virtual int confirmMessage (const MessageConfirmationCookie &cookie)
virtual int confirmMessages (ConfirmEventBuilder *builder)
virtual int configureMessageDumping (const bslstl::StringRef &command)
-

Detailed Description

-

A pure protocol for a session.

-

See Component bmqa_abstractsession

-

Member Typedef Documentation

- -
-
- - - - -
typedef bsl::function<void(const bmqa::OpenQueueStatus& result)> bmqa::AbstractSession::OpenQueueCallback
-
-
-

Invoked as a response to an asynchronous open queue operation, OpenQueueCallback is an alias for a callback function object (functor) that takes as an argument the specified result, providing the result and context of the requested operation.

- -

Reimplemented in bmqa::Session.

- -
-
- -
-
- - - - -
typedef bsl::function<void(const bmqa::ConfigureQueueStatus& result)> bmqa::AbstractSession::ConfigureQueueCallback
-
-
-

Invoked as a response to an asynchronous configure queue operation, ConfigureQueueCallback is an alias for a callback function object (functor) that takes as an argument the specified result, providing the result and context of the requested operation.

- -

Reimplemented in bmqa::Session.

- -
-
- -
-
- - - - -
typedef bsl::function<void(const bmqa::CloseQueueStatus& result)> bmqa::AbstractSession::CloseQueueCallback
-
-
-

Invoked as a response to an asynchronous close queue operation, CloseQueueCallback is an alias for a callback function object (functor) that takes as an argument the specified result, providing the result and context of the requested operation.

- -

Reimplemented in bmqa::Session.

- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
virtual bmqa::AbstractSession::~AbstractSession ( )  [virtual]
-
-
-

Destructor

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
virtual int bmqa::AbstractSession::start (const bsls::TimeInterval &  timeout = bsls::TimeInterval() )  [virtual]
-
-
-

Connect to the BlazingMQ broker and start the message processing for this Session. This method blocks until either the Session is connected to the broker, fails to connect, or the operation times out. If the optionally specified timeout is not populated, use the one defined in the session options. Return 0 on success, or a non-zero value corresponding to the bmqt::GenericResult::Enum enum values otherwise. The behavior is undefined if this method is called on an already started Session.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - -
virtual int bmqa::AbstractSession::startAsync (const bsls::TimeInterval &  timeout = bsls::TimeInterval() )  [virtual]
-
-
-

Connect to the BlazingMQ broker and start the message processing for this Session. This method returns without blocking. The result of the operation is communicated with a session event. If the optionally specified timeout is not populated, use the one defined in the session options. Return 0 on success (this doesn't imply the session is connected !), or a non-zero value corresponding to the bmqt::GenericResult::Enum enum values otherwise. The behavior is undefined if this method is called on an already started Session.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - -
virtual void bmqa::AbstractSession::stop ( )  [virtual]
-
-
-

Gracefully disconnect from the BlazingMQ broker and stop the operation of this Session. This method blocks waiting for all already invoked event handlers to exit and all session-related operations to be finished. No other method but start() may be used after this method returns. This method must NOT be called if the session is in synchronous mode (i.e., not using the EventHandler), stopAsync() should be called in this case.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - -
virtual void bmqa::AbstractSession::stopAsync ( )  [virtual]
-
-
-

Disconnect from the BlazingMQ broker and stop the operation of this Session. This method returns without blocking and neither enforce nor waits for any already started session-related operation to be finished. No method may be used after this method returns.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - -
virtual void bmqa::AbstractSession::finalizeStop ( )  [virtual]
-
-
-

**DEPRECATED**

-

This method is only to be used if the session is in synchronous mode (i.e., not using the EventHandler): it must be called once all threads getting events with nextEvent() have been joined.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - -
virtual void bmqa::AbstractSession::loadMessageEventBuilder (MessageEventBuilder builder )  [virtual]
-
-
-

Load into the specified builder an instance of bmqa::MessageEventBuilder that can be used to build message event for posting on this session. The behavior is undefined unless the session has been successfully started and builder is non-null. Note that lifetime of the loaded object is bound by the lifetime of this session instance (i.e., loaded instance cannot outlive this session instance). Also note that the MessageEventBuilder objects are pooled, so this operation is cheap, and MessageEventBuilder can be obtained on demand and kept on the stack.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - -
virtual void bmqa::AbstractSession::loadConfirmEventBuilder (ConfirmEventBuilder builder )  [virtual]
-
-
-

Load into the specified builder an instance of bmqa::ConfirmEventBuilder that can be used to build a batch of CONFIRM messages for sending to the broker. The behavior is undefined unless the session has been successfully started and builder is non-null. Note that the lifetime of the loaded object is bound by the lifetime of this session instance (i.e., loaded instance cannot outlive this session instance).

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - -
virtual void bmqa::AbstractSession::loadMessageProperties (MessageProperties buffer )  [virtual]
-
-
-

Load into the specified buffer an instance of MessageProperties that can be used to specify and associate properties while building a bmqa::Message. The behavior is undefined unless the session has been successfully started and buffer is non-null. Note that lifetime of the loaded object is bound by the lifetime of this session instance (i.e., loaded instance cannot outlive this session instance).

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual int bmqa::AbstractSession::getQueueId (QueueId queueId,
const bmqt::Uri uri 
) const [virtual]
-
-
-

Load in the specified queueId the queue corresponding to the specified uri and return 0 if such a queue was found, or leave queueId untouched and return a non-zero value if no queue corresponding to uri is currently open.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual int bmqa::AbstractSession::getQueueId (QueueId queueId,
const bmqt::CorrelationId correlationId 
) const [virtual]
-
-
-

Load in the specified queueId the queue corresponding to the specified correlationId and return 0 if such a queue was found, or leave queueId untouched and return a non-zero value if no queue corresponding to correlationId is currently open.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual int bmqa::AbstractSession::openQueue (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the openQueueSync(QueueId *queueId...) instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual OpenQueueStatus bmqa::AbstractSession::openQueueSync (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Open the queue having the specified uri with the specified flags (a combination of the values defined in bmqt::QueueFlags::Enum), using the specified queueId to correlate events related to that queue. The object queueId referring to is modified, so the queueId represents the actual queue uri, flags and options. Return a result providing the status and context of the operation. Use the optionally specified options to configure some advanced settings. Note that this operation fails if queueId is non-unique. If the optionally specified timeout is not populated, use the one defined in the session options. This operation will block until either success, failure, or timing out happens.

-

THREAD: Note that calling this method from the event processing thread(s) (i.e., from the EventHandler callback, if provided) WILL lead to a DEADLOCK.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual int bmqa::AbstractSession::openQueueAsync (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the openQueueAsync(...) with callback flavor instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual void bmqa::AbstractSession::openQueueAsync (bmqa::QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const OpenQueueCallback callback,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Asynchronously open the queue having the specified uri with the specified flags (a combination of the values defined in bmqt::QueueFlags::Enum), using the specified queueId to correlate events related to that queue and the optionally specified options to configure some advanced settings. The object queueId referring to is modified, so the queueId represents the actual queue uri, flags and options. The result of the operation is communicated to the specified callback via a bmqa::OpenQueueStatus, providing the status and context of the requested operation. Note that this operation fails if queueId is non-unique. If the optionally specified timeout is not populated, use the one defined in the session options.

-

THREAD: The callback will ALWAYS be invoked from the EventHandler thread(s) (or if a SessionEventHandler was not specified, from the thread invoking nextEvent).

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual int bmqa::AbstractSession::configureQueue (QueueId queueId,
const bmqt::QueueOptions options,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the 'configureQueueSync(QueueId *queueId...) instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual ConfigureQueueStatus bmqa::AbstractSession::configureQueueSync (const QueueId queueId,
const bmqt::QueueOptions options,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Configure the queue identified by the specified queueId using the specified options and return a result providing the status and context of the operation. Fields from options that have not been explicitly set will not be modified. If the optionally specified timeout is not populated, use the one defined in the session options. This operation returns error if there is a pending configure for the same queue. This operation will block until either success, failure, or timing out happens.

-

THREAD: Note that calling this method from the event processing thread(s) (i.e., from the EventHandler callback, if provided) WILL lead to a DEADLOCK.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual int bmqa::AbstractSession::configureQueueAsync (QueueId queueId,
const bmqt::QueueOptions options,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the configureQueueAsync(...) with callback flavor instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual void bmqa::AbstractSession::configureQueueAsync (const QueueId queueId,
const bmqt::QueueOptions options,
const ConfigureQueueCallback callback,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual int bmqa::AbstractSession::closeQueue (QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the 'closeQueueSync(QueueId *queueId...) instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual CloseQueueStatus bmqa::AbstractSession::closeQueueSync (const QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Close the queue identified by the specified queueId and return a result providing the status and context of the operation. If the optionally specified timeout is not populated, use the one defined in the session options. Any outstanding configureQueue request for this queueId will be canceled. This operation will block until either success, failure, or timing out happens. Once this method returns, there is guarantee that no more messages and events for this queueId will be received. Note that successful processing of this request in the broker closes this session's view of the queue; the underlying queue may not be deleted in the broker. When this method returns, the correlationId associated to the queue is cleared.

-

THREAD: Note that calling this method from the event processing thread(s) (i.e., from the EventHandler callback, if provided) WILL lead to a DEADLOCK.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual int bmqa::AbstractSession::closeQueueAsync (QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the closeQueueAsync(...) with callback flavor instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual void bmqa::AbstractSession::closeQueueAsync (const QueueId queueId,
const CloseQueueCallback callback,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Asynchronously close the queue identified by the specified queueId. Any outstanding configureQueue requests will be canceled. The result of the operation is communicated to the specified callback via a bmqa::CloseQueueStatus, providing the status and context of the operation. If the optionally specified timeout is not populated, use the one defined in the session options. Note that successful processing of this request in the broker closes this session's view of the queue; the underlying queue may not be deleted in the broker. The correlationId associated to the queue remains valid until the bmqa::CloseQueueStatus result has been received and processed by the callback, after which it will be cleared and no more messages and events for this queueId will be received.

-

THREAD: The callback will ALWAYS be invoked from the EventHandler thread(s) (or if a SessionEventHandler was not specified, from the thread invoking nextEvent).

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - -
virtual Event bmqa::AbstractSession::nextEvent (const bsls::TimeInterval &  timeout = bsls::TimeInterval() )  [virtual]
-
-
-

Return the next available event received for this session. If there is no event available, this method blocks for up to the optionally specified timeout time interval for an event to arrive. An empty time interval for timeout (the default) indicates that the method should not timeout (the method will not return until the next event is available). Return a bmqa::SessionEvent of type bmqt::SessionEventType::e_TIMEOUT if a timeout was specified and that timeout expired before any event was received. Note that this method can only be used if the session is in synchronous mode (ie not using the EventHandler). The behavior is undefined unless the session was started.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - -
virtual int bmqa::AbstractSession::post (const MessageEvent event )  [virtual]
-
-
-

Asynchronously post the specified event that must contain one or more Messages. The return value is one of the values defined in the bmqt::PostResult::Enum enum. Return zero on success and a non-zero value otherwise. Note that success implies that SDK has accepted the event and will eventually deliver it to the broker. The behavior is undefined unless the session was started.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - -
virtual int bmqa::AbstractSession::confirmMessage (const Message message )  [virtual]
-
-
-

Asynchronously confirm the receipt of the specified message. This indicates that the application is done processing the message and that the broker can safely discard it from the queue according to the retention policy set up for that queue. Return 0 on success, and a non-zero value otherwise. Note that success implies that SDK has accepted the message and will eventually send confirmation notification to the broker.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - -
virtual int bmqa::AbstractSession::confirmMessage (const MessageConfirmationCookie cookie )  [virtual]
-
-
-

Asynchronously confirm the receipt of the message with which the specified cookie is associated. This indicates that the application is done processing the message and that the broker can safely discard it from the queue according to the retention policy set up for that queue. Return 0 on success, and a non-zero value otherwise. Note that success implies that SDK has accepted the message and will eventually send confirmation notification to the broker.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - -
virtual int bmqa::AbstractSession::confirmMessages (ConfirmEventBuilder builder )  [virtual]
-
-
-

Asynchronously confirm the receipt of the batch of CONFIRM messages contained in the specified builder. This indicates that the application is done processing all of the messages and that the broker can safely discard them from the queue according to the retention policy set up for that queue. Return 0 on success, and a non-zero value otherwise. Note that in case of success, the instance pointed by the builder will be reset. Also note that success implies that SDK has accepted all of the messages in builder and will eventually send confirmation notification to the broker. Behavior is undefined unless builder is non-null.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
- -
-
- - - - - - - - - -
virtual int bmqa::AbstractSession::configureMessageDumping (const bslstl::StringRef &  command )  [virtual]
-
-
-

Configure this session instance to dump messages to the installed logger at ball::Severity::INFO level according to the specified command that should adhere to the following pattern:

-
           IN|OUT ON|OFF|100|10s
-

where each token has a specific meaning:

-
    -
  • -IN : incoming (PUSH and ACK) events
  • -
  • -OUT : outgoing (PUT and CONFIRM) events
  • -
  • -ON : turn on message dumping until explicitly turned off
  • -
  • -OFF : turn off message dumping
  • -
  • -100 : turn on message dumping for the next 100 messages
  • -
  • -10s : turn on message dumping for the next 10 seconds
  • -
-

Note that above, 100 and 10 numerical values are for just for illustration purposes, and application can choose an appropriate value for them. Also note that pattern is case-insensitive. Return zero if command is valid and message dumping has been configured, non-zero value otherwise. The behavior is undefined unless the session has been started.

- -

Reimplemented in bmqa::MockSession, and bmqa::Session.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1AbstractSession.png b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1AbstractSession.png deleted file mode 100644 index 03eb9d9a2..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1AbstractSession.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1CloseQueueStatus-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1CloseQueueStatus-members.html deleted file mode 100644 index 67e5248dc..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1CloseQueueStatus-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - -Class bmqa::CloseQueueStatus Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- -
- - -
-
-

bmqa::CloseQueueStatus Member List

-
-
-This is the complete list of members for bmqa::CloseQueueStatus, including all inherited members. - - - - - - - - - -
CloseQueueStatus(bslma::Allocator *allocator=0)bmqa::CloseQueueStatus [explicit]
CloseQueueStatus(const bmqa::CloseQueueStatus &other, bslma::Allocator *allocator=0)bmqa::CloseQueueStatus
CloseQueueStatus(const QueueId &queueId, bmqt::CloseQueueResult::Enum result, const bsl::string &errorDescription, bslma::Allocator *allocator=0)bmqa::CloseQueueStatus
errorDescription() const bmqa::CloseQueueStatus
operator bool() const bmqa::CloseQueueStatus
operator=(const CloseQueueStatus &rhs)bmqa::CloseQueueStatus
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqa::CloseQueueStatus
queueId() const bmqa::CloseQueueStatus
result() const bmqa::CloseQueueStatus
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1CloseQueueStatus.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1CloseQueueStatus.html deleted file mode 100644 index 24e54bbfd..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1CloseQueueStatus.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - -Class bmqa::CloseQueueStatus - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::CloseQueueStatus Class Reference

-
-
- -

#include <bmqa_closequeuestatus.h>

- -

List of all members.

- - - - - - - - - - - -

-Public Member Functions

 CloseQueueStatus (bslma::Allocator *allocator=0)
 CloseQueueStatus (const bmqa::CloseQueueStatus &other, bslma::Allocator *allocator=0)
 CloseQueueStatus (const QueueId &queueId, bmqt::CloseQueueResult::Enum result, const bsl::string &errorDescription, bslma::Allocator *allocator=0)
CloseQueueStatusoperator= (const CloseQueueStatus &rhs)
 operator bool () const
const QueueIdqueueId () const
bmqt::CloseQueueResult::Enum result () const
const bsl::string & errorDescription () const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
-

Detailed Description

-

A value-semantic type for a close queue operation with the message queue broker.

-

See Component bmqa_closequeuestatus

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
bmqa::CloseQueueStatus::CloseQueueStatus (bslma::Allocator *  allocator = 0 )  [explicit]
-
-
-

Default constructor, use the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqa::CloseQueueStatus::CloseQueueStatus (const bmqa::CloseQueueStatus other,
bslma::Allocator *  allocator = 0 
)
-
-
-

Create a new bmqa::CloseQueueStatus using the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bmqa::CloseQueueStatus::CloseQueueStatus (const QueueId queueId,
bmqt::CloseQueueResult::Enum  result,
const bsl::string &  errorDescription,
bslma::Allocator *  allocator = 0 
)
-
-
-

Create a new bmqa::CloseQueueStatus object having the specified queueId, result, and errorDescription, using the optionally specified allocator to supply memory.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
CloseQueueStatus& bmqa::CloseQueueStatus::operator= (const CloseQueueStatus rhs ) 
-
-
-

Assign to this CloseQueueStatus the same values as the one from the specified rhs.

- -
-
- -
-
- - - - - - - - -
bmqa::CloseQueueStatus::operator bool ( )  const
-
-
-

Return true if this result indicates success, and false otherwise.

- -
-
- -
-
- - - - - - - - -
const QueueId& bmqa::CloseQueueStatus::queueId ( )  const
-
-
-

Return the queueId associated to this operation result, if any.

- -
-
- -
-
- - - - - - - - -
bmqt::CloseQueueResult::Enum bmqa::CloseQueueStatus::result ( )  const
-
-
-

Return the status code that indicates success or the cause of a failure.

- -
-
- -
-
- - - - - - - - -
const bsl::string& bmqa::CloseQueueStatus::errorDescription ( )  const
-
-
-

Return a printable description of the error, if result indicates failure. Return an empty string otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::CloseQueueStatus::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ConfigureQueueStatus-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ConfigureQueueStatus-members.html deleted file mode 100644 index 3c5ffd6d3..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ConfigureQueueStatus-members.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - -Class bmqa::ConfigureQueueStatus Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::ConfigureQueueStatus Member List

-
-
-This is the complete list of members for bmqa::ConfigureQueueStatus, including all inherited members. - - - - - - - - -
ConfigureQueueStatus(const bmqa::ConfigureQueueStatus &other, bslma::Allocator *allocator=0)bmqa::ConfigureQueueStatus
ConfigureQueueStatus(const QueueId &queueId, bmqt::ConfigureQueueResult::Enum result, const bsl::string &errorDescription, bslma::Allocator *allocator=0)bmqa::ConfigureQueueStatus
errorDescription() const bmqa::ConfigureQueueStatus
operator bool() const bmqa::ConfigureQueueStatus
operator=(const ConfigureQueueStatus &rhs)bmqa::ConfigureQueueStatus
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqa::ConfigureQueueStatus
queueId() const bmqa::ConfigureQueueStatus
result() const bmqa::ConfigureQueueStatus
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ConfigureQueueStatus.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ConfigureQueueStatus.html deleted file mode 100644 index 1907b5e25..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ConfigureQueueStatus.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - -Class bmqa::ConfigureQueueStatus - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::ConfigureQueueStatus Class Reference

-
-
- -

#include <bmqa_configurequeuestatus.h>

- -

List of all members.

- - - - - - - - - - -

-Public Member Functions

BSLMF_NESTED_TRAIT_DECLARATION(ConfigureQueueStatus,
-bslma::UsesBslmaAllocator)
-explicit ConfigureQueueStatus(bslma 
ConfigureQueueStatus (const bmqa::ConfigureQueueStatus &other, bslma::Allocator *allocator=0)
 ConfigureQueueStatus (const QueueId &queueId, bmqt::ConfigureQueueResult::Enum result, const bsl::string &errorDescription, bslma::Allocator *allocator=0)
ConfigureQueueStatusoperator= (const ConfigureQueueStatus &rhs)
 operator bool () const
const QueueIdqueueId () const
bmqt::ConfigureQueueResult::Enum result () const
const bsl::string & errorDescription () const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
-

Detailed Description

-

A value-semantic type for a configure queue operation with the message queue broker.

-

See Component bmqa_configurequeuestatus

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
BSLMF_NESTED_TRAIT_DECLARATION (ConfigureQueueStatus, bslma::UsesBslmaAllocator) explicit ConfigureQueueStatus(bslma bmqa::ConfigureQueueStatus::ConfigureQueueStatus (const bmqa::ConfigureQueueStatus other,
bslma::Allocator *  allocator = 0 
)
-
-
-

< Default constructor, use the optionally specified allocator. Create a new bmqa::ConfigureQueueStatus using the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bmqa::ConfigureQueueStatus::ConfigureQueueStatus (const QueueId queueId,
bmqt::ConfigureQueueResult::Enum  result,
const bsl::string &  errorDescription,
bslma::Allocator *  allocator = 0 
)
-
-
-

Create a new bmqa::ConfigureQueueStatus object having the specified queueId, result, and errorDescription, using the optionally specified allocator to supply memory.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
ConfigureQueueStatus& bmqa::ConfigureQueueStatus::operator= (const ConfigureQueueStatus rhs ) 
-
-
-

Assign to this ConfigureQueueStatus the same values as the one from the specified rhs.

- -
-
- -
-
- - - - - - - - -
bmqa::ConfigureQueueStatus::operator bool ( )  const
-
-
-

Return true if this result indicates success, and false otherwise.

- -
-
- -
-
- - - - - - - - -
const QueueId& bmqa::ConfigureQueueStatus::queueId ( )  const
-
-
-

Return the queueId associated to this operation result, if any.

- -
-
- -
-
- - - - - - - - -
bmqt::ConfigureQueueResult::Enum bmqa::ConfigureQueueStatus::result ( )  const
-
-
-

Return the result code that indicates success or the cause of a failure.

- -
-
- -
-
- - - - - - - - -
const bsl::string& bmqa::ConfigureQueueStatus::errorDescription ( )  const
-
-
-

Return a printable description of the error, if result indicates failure. Return an empty string otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::ConfigureQueueStatus::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ConfirmEventBuilder-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ConfirmEventBuilder-members.html deleted file mode 100644 index 10ab0ec50..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ConfirmEventBuilder-members.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - -Class bmqa::ConfirmEventBuilder Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::ConfirmEventBuilder Member List

-
- - - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ConfirmEventBuilder.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ConfirmEventBuilder.html deleted file mode 100644 index 111dfeb5e..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ConfirmEventBuilder.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - -Class bmqa::ConfirmEventBuilder - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::ConfirmEventBuilder Class Reference

-
-
- -

#include <bmqa_confirmeventbuilder.h>

- -

List of all members.

- - - - - - - - - -

-Public Member Functions

 ConfirmEventBuilder ()
 ~ConfirmEventBuilder ()
bmqt::EventBuilderResult::Enum addMessageConfirmation (const Message &message)
bmqt::EventBuilderResult::Enum addMessageConfirmation (const MessageConfirmationCookie &cookie)
void reset ()
int messageCount () const
const bdlbb::Blob & blob () const
-

Detailed Description

-

Mechanism to build a batch of CONFIRM messages.

-

See Component bmqa_confirmeventbuilder

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqa::ConfirmEventBuilder::ConfirmEventBuilder ( ) 
-
-
-

Create an invalid instance. Application should not create ConfirmEventBuilder themselves, but ask the bmqa::Session to give them one, by using bmqa::Session::loadConfirmEventBuilder.

- -
-
- -
-
- - - - - - - - -
bmqa::ConfirmEventBuilder::~ConfirmEventBuilder ( ) 
-
-
-

Destroy this instance.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
bmqt::EventBuilderResult::Enum bmqa::ConfirmEventBuilder::addMessageConfirmation (const Message message ) 
-
-
-

Append a confirmation message for the specified message. Return zero on success, and a non-zero value otherwise. Behavior is undefined unless this instance was obtained using bmqa::Session::loadConfirmEventBuilder.

- -
-
- -
-
- - - - - - - - - -
bmqt::EventBuilderResult::Enum bmqa::ConfirmEventBuilder::addMessageConfirmation (const MessageConfirmationCookie cookie ) 
-
-
-

Append a confirmation message for the specified MessageConfirmationCookie cookie. Return zero on success, and a non-zero value otherwise. Behavior is undefined unless this instance was obtained using bmqa::Session::loadConfirmEventBuilder.

- -
-
- -
-
- - - - - - - - -
void bmqa::ConfirmEventBuilder::reset ( ) 
-
-
-

Reset the builder, effectively discarding the batch of confirmation messages under construction.

- -
-
- -
-
- - - - - - - - -
int bmqa::ConfirmEventBuilder::messageCount ( )  const
-
-
-

Return the number of messages currently in the ConfirmEvent being built. Behavior is undefined unless this instance was obtained using bmqa::Session::loadConfirmEventBuilder.

- -
-
- -
-
- - - - - - - - -
const bdlbb::Blob& bmqa::ConfirmEventBuilder::blob ( )  const
-
-
-

Return a reference not offering modifiable access to the blob of confirmation messages batch built by this builder. If no messages were added, this will return an empty blob, i.e., a blob with length == 0. Behavior is undefined unless this instance was obtained using bmqa::Session::loadConfirmEventBuilder.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Event-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Event-members.html deleted file mode 100644 index 20f9372c4..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Event-members.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - -Class bmqa::Event Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::Event Member List

-
-
-This is the complete list of members for bmqa::Event, including all inherited members. - - - - - - - - -
Event()bmqa::Event [explicit]
Event(const Event &other)bmqa::Event
isMessageEvent() const bmqa::Event
isSessionEvent() const bmqa::Event
messageEvent() const bmqa::Event
operator=(const Event &rhs)bmqa::Event
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqa::Event
sessionEvent() const bmqa::Event
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Event.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Event.html deleted file mode 100644 index c09985967..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Event.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - -Class bmqa::Event - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::Event Class Reference

-
-
- -

#include <bmqa_event.h>

- -

List of all members.

- - - - - - - - - - -

-Public Member Functions

 Event ()
 Event (const Event &other)
Eventoperator= (const Event &rhs)
SessionEvent sessionEvent () const
MessageEvent messageEvent () const
bool isSessionEvent () const
bool isMessageEvent () const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
-

Detailed Description

-

A variant type encompassing all types of events

-

See Component bmqa_event

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqa::Event::Event ( )  [explicit]
-
-
-

Default constructor

- -
-
- -
-
- - - - - - - - - -
bmqa::Event::Event (const Event other ) 
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
Event& bmqa::Event::operator= (const Event rhs ) 
-
-
- -
-
- -
-
- - - - - - - - -
SessionEvent bmqa::Event::sessionEvent ( )  const
-
-
-

Return the SessionEvent variant. The behavior is undefined unless isSessionEvent returns true.

- -
-
- -
-
- - - - - - - - -
MessageEvent bmqa::Event::messageEvent ( )  const
-
-
-

Return the MessageEvent variant. The behavior is undefined unless isMessageEvent returns true.

- -
-
- -
-
- - - - - - - - -
bool bmqa::Event::isSessionEvent ( )  const
-
-
-

Return true if the event is a session event.

- -
-
- -
-
- - - - - - - - -
bool bmqa::Event::isMessageEvent ( )  const
-
-
-

Return true if the event is a message event.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::Event::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ManualHostHealthMonitor-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ManualHostHealthMonitor-members.html deleted file mode 100644 index a68636b69..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ManualHostHealthMonitor-members.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - -Class bmqa::ManualHostHealthMonitor Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::ManualHostHealthMonitor Member List

-
-
-This is the complete list of members for bmqa::ManualHostHealthMonitor, including all inherited members. - - - - - - - -
HostHealthChangeFn typedefbmqpi::HostHealthMonitor
hostState() const BSLS_KEYWORD_OVERRIDEbmqa::ManualHostHealthMonitor [virtual]
ManualHostHealthMonitor(bmqt::HostHealthState::Enum initialState, bslma::Allocator *allocator=0)bmqa::ManualHostHealthMonitor
observeHostHealth(const HostHealthChangeFn &cb) BSLS_KEYWORD_OVERRIDEbmqa::ManualHostHealthMonitor [virtual]
setState(bmqt::HostHealthState::Enum newState)bmqa::ManualHostHealthMonitor
~HostHealthMonitor()bmqpi::HostHealthMonitor [virtual]
~ManualHostHealthMonitor() BSLS_KEYWORD_OVERRIDEbmqa::ManualHostHealthMonitor
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ManualHostHealthMonitor.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ManualHostHealthMonitor.html deleted file mode 100644 index 26ed0a8c0..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ManualHostHealthMonitor.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - -Class bmqa::ManualHostHealthMonitor - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::ManualHostHealthMonitor Class Reference

-
-
- -

#include <bmqa_manualhosthealthmonitor.h>

-
-Inheritance diagram for bmqa::ManualHostHealthMonitor:
-
-
- - -bmqpi::HostHealthMonitor - -
- -

List of all members.

- - - - - - - - - -

-Public Types

typedef bsl::function< void(bmqt::HostHealthState::Enum)> HostHealthChangeFn

-Public Member Functions

 ManualHostHealthMonitor (bmqt::HostHealthState::Enum initialState, bslma::Allocator *allocator=0)
 ~ManualHostHealthMonitor () BSLS_KEYWORD_OVERRIDE
bdlmt::SignalerConnection observeHostHealth (const HostHealthChangeFn &cb) BSLS_KEYWORD_OVERRIDE
void setState (bmqt::HostHealthState::Enum newState)
bmqt::HostHealthState::Enum hostState () const BSLS_KEYWORD_OVERRIDE
-

Member Typedef Documentation

- -
-
- - - - -
typedef bsl::function<void(bmqt::HostHealthState::Enum)> bmqpi::HostHealthMonitor::HostHealthChangeFn [inherited]
-
-
-

Invoked as a response to the HostHealthMonitor detecting a change in the state of the host health.

- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
bmqa::ManualHostHealthMonitor::ManualHostHealthMonitor (bmqt::HostHealthState::Enum  initialState,
bslma::Allocator *  allocator = 0 
)
-
-
-

Constructs a ManualHostHealthMonitor with the given initial state. Optionally specify an allocator to supply memory. If allocator is 0, the currently installed default allocator is used.

- -
-
- -
-
- - - - - - - - -
bmqa::ManualHostHealthMonitor::~ManualHostHealthMonitor ( ) 
-
-
-

Destructor.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
bdlmt::SignalerConnection bmqa::ManualHostHealthMonitor::observeHostHealth (const HostHealthChangeFn cb )  [virtual]
-
-
-

Registers the specified `cb` to be invoked each time the health of the host changes.

- -

Implements bmqpi::HostHealthMonitor.

- -
-
- -
-
- - - - - - - - - -
void bmqa::ManualHostHealthMonitor::setState (bmqt::HostHealthState::Enum  newState ) 
-
-
- -
-
- -
-
- - - - - - - - -
bmqt::HostHealthState::Enum bmqa::ManualHostHealthMonitor::hostState ( )  const [virtual]
-
-
-

Queries the current health of the host.

- -

Implements bmqpi::HostHealthMonitor.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ManualHostHealthMonitor.png b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ManualHostHealthMonitor.png deleted file mode 100644 index 318dbc811..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1ManualHostHealthMonitor.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Message-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Message-members.html deleted file mode 100644 index 7072bbc35..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Message-members.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - -Class bmqa::Message Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- -
- - -
-
-

bmqa::Message Member List

-
-
-This is the complete list of members for bmqa::Message, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - -
ackStatus() const bmqa::Message
clearPropertiesRef()bmqa::Message
clone(bslma::Allocator *basicAllocator=0) const bmqa::Message
compressionAlgorithmType() const bmqa::Message
confirmationCookie() const bmqa::Message
correlationId() const bmqa::Message
dataSize() const bmqa::Message
getData(bdlbb::Blob *blob) const bmqa::Message
hasProperties() const bmqa::Message
isValid() const bmqa::Message
loadProperties(MessageProperties *buffer) const bmqa::Message
Message()bmqa::Message [explicit]
Message(const Message &other)bmqa::Message
messageGUID() const bmqa::Message
operator bool() const bmqa::Message
operator=(const Message &other)bmqa::Message
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqa::Message
queueId() const bmqa::Message
setCompressionAlgorithmType(bmqt::CompressionAlgorithmType::Enum value)bmqa::Message
setCorrelationId(const bmqt::CorrelationId &correlationId)bmqa::Message
setData(const bdlbb::Blob *data) BSLS_ANNOTATION_DEPRECATEDbmqa::Message
setData(const char *data, size_t length) BSLS_ANNOTATION_DEPRECATEDbmqa::Message
setDataRef(const bdlbb::Blob *data)bmqa::Message
setDataRef(const char *data, size_t length)bmqa::Message
setPropertiesRef(const MessageProperties *properties)bmqa::Message
~Message()bmqa::Message
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Message.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Message.html deleted file mode 100644 index 71567fa79..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Message.html +++ /dev/null @@ -1,637 +0,0 @@ - - - - -Class bmqa::Message - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::Message Class Reference

-
-
- -

#include <bmqa_message.h>

- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Message ()
 Message (const Message &other)
 ~Message ()
Messageoperator= (const Message &other)
MessagesetData (const bdlbb::Blob *data) BSLS_ANNOTATION_DEPRECATED
MessagesetData (const char *data, size_t length) BSLS_ANNOTATION_DEPRECATED
MessagesetDataRef (const bdlbb::Blob *data)
MessagesetDataRef (const char *data, size_t length)
MessagesetPropertiesRef (const MessageProperties *properties)
MessageclearPropertiesRef ()
MessagesetCorrelationId (const bmqt::CorrelationId &correlationId)
MessagesetCompressionAlgorithmType (bmqt::CompressionAlgorithmType::Enum value)
bool isValid () const
 operator bool () const
Message clone (bslma::Allocator *basicAllocator=0) const
const bmqa::QueueIdqueueId () const
const bmqt::CorrelationIdcorrelationId () const
bmqt::CompressionAlgorithmType::Enum compressionAlgorithmType () const
const bmqt::MessageGUIDmessageGUID () const
MessageConfirmationCookie confirmationCookie () const
int ackStatus () const
int getData (bdlbb::Blob *blob) const
int dataSize () const
bool hasProperties () const
int loadProperties (MessageProperties *buffer) const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
-

Detailed Description

-

A message sent/received to/from the BlazingMQ broker.

-

See Component bmqa_message

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqa::Message::Message ( )  [explicit]
-
-
-

Create an invalid message having no content. Only valid operations on an invalid message instance are assignment and destruction.

- -
-
- -
-
- - - - - - - - - -
bmqa::Message::Message (const Message other ) 
-
-
-

Create a message from the specified other instance.

- -
-
- -
-
- - - - - - - - -
bmqa::Message::~Message ( ) 
-
-
-

Destructor

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
Message& bmqa::Message::operator= (const Message other ) 
-
-
-

Assign to this object the value of the specified other instance and return a reference to this object.

- -
-
- -
-
- - - - - - - - - -
Message& bmqa::Message::setData (const bdlbb::Blob *  data ) 
-
-
-

Set the payload of this message to the blob pointed to by the specified data. Behavior is undefined unless data is non-null and payload's length is greater than zero. Note that payload pointed to by data is not copied right away, and should not be destroyed or modified until this message has been packed (see bmqa::MessageEventBuilder component level documentation for correct usage).

-

This method is deprecated, please use setDataRef() instead.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
Message& bmqa::Message::setData (const char *  data,
size_t  length 
)
-
-
-

Set the payload of this message to the specified length bytes starting at the specified data address. The behavior is undefined unless data is non-null and length is greater than zero. Note that payload pointed to by data is not copied right away, and should not be destroyed or modified until this message has been packed (see bmqa::MessageEventBuilder component level documentation for correct usage).

-

This method is deprecated, please use setDataRef() instead.

- -
-
- -
-
- - - - - - - - - -
Message& bmqa::Message::setDataRef (const bdlbb::Blob *  data ) 
-
-
-

Set the payload of this message to the blob pointed to by the specified data. Behavior is undefined unless data is non-null and payload's length is greater than zero. Note that payload pointed to by data is not copied right away, and should not be destroyed or modified until this message has been packed (see bmqa::MessageEventBuilder component level documentation for correct usage).

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
Message& bmqa::Message::setDataRef (const char *  data,
size_t  length 
)
-
-
-

Set the payload of this message to the specified length bytes starting at the specified data address. The behavior is undefined unless data is non-null and length is greater than zero. Note that payload pointed to by data is not copied right away, and should not be destroyed or modified until this message has been packed (see bmqa::MessageEventBuilder component level documentation for correct usage).

- -
-
- -
-
- - - - - - - - - -
Message& bmqa::Message::setPropertiesRef (const MessageProperties properties ) 
-
-
-

Set the properties of this message to the MessageProperties instance pointed by the specified properties. Behavior is undefined unless properties is non-null. Note that properties are not copied right away, and should not be destroyed or modified until this message has been packed (see bmqa::MessageEventBuilder component level documentation for correct usage).

- -
-
- -
-
- - - - - - - - -
Message& bmqa::Message::clearPropertiesRef ( ) 
-
-
-

Clear out and properties associated with this message. Note that if there are no properties associated with this message, this method has no effect. Also note that the associated MessageProperties instance, if any, is not modified; it's simply dissociated from this message.

- -
-
- -
-
- - - - - - - - - -
Message& bmqa::Message::setCorrelationId (const bmqt::CorrelationId correlationId ) 
-
-
-

Set correlation ID of this message to the specified correlationId.

- -
-
- -
-
- - - - - - - - - -
Message& bmqa::Message::setCompressionAlgorithmType (bmqt::CompressionAlgorithmType::Enum  value ) 
-
-
-

Set the Compression algorithm type of the current message to the specified value and return a reference offering modifiable access to this object.

- -
-
- -
-
- - - - - - - - -
bool bmqa::Message::isValid ( )  const
-
-
-

TBD:BSLS_ANNOTATION_DEPRECATED

- -
-
- -
-
- - - - - - - - -
bmqa::Message::operator bool ( )  const
-
-
-

TBD:BSLS_ANNOTATION_DEPRECATED

- -
-
- -
-
- - - - - - - - - -
Message bmqa::Message::clone (bslma::Allocator *  basicAllocator = 0 )  const
-
-
-

Return a copy of this message, using the optionally specified basicAllocator with the copy holding all the data of this instance and not backed by any MessageEvent. Note that this operation does not copy underlying data.

- -
-
- -
-
- - - - - - - - -
const bmqa::QueueId& bmqa::Message::queueId ( )  const
-
-
-

Return the queue ID indicating the queue for which this message has been received from. The behavior is undefined unless this instance represents a PUT, PUSH or ACK message.

- -
-
- -
-
- - - - - - - - -
const bmqt::CorrelationId& bmqa::Message::correlationId ( )  const
-
-
-

Return the correlation Id associated with this message. The behavior is undefined unless this instance represents a PUT or an ACK, or a PUSH message. Note that in case of failure to accept a PUT message, BlazingMQ sends an ACK message with failed status, even if an ACK message was not requested by the application (i.e., no correlationId was specified when posting the message). In such cases, correlationId associated with the ACK message will be unset, and as such, application must check for that by invoking isUnset on the returned correlationId object. In the case of a PUSH message, the return value is the one specified as the correlation id of the corresponding Subscription. Invoking thePointer, theNumeric or theSharedPtr on an unset correlationId instance will lead to undefined behavior.

- -
-
- -
-
- - - - - - - - -
bmqt::CompressionAlgorithmType::Enum bmqa::Message::compressionAlgorithmType ( )  const
-
-
-

Return Compression algorithm type of the current message. Behavior is undefined unless this instance represents a PUT or PUSH message.

- -
-
- -
-
- - - - - - - - -
const bmqt::MessageGUID& bmqa::Message::messageGUID ( )  const
-
-
-

Return the unique message Id generated by the SDK for this message. The behavior is undefined unless this instance represents a PUT, a PUSH or an ACK message.

- -
-
- -
-
- - - - - - - - -
MessageConfirmationCookie bmqa::Message::confirmationCookie ( )  const
-
-
-

Return a cookie which can be used to confirm this message. The behavior is undefined unless this instance represents a PUSH message.

- -
-
- -
-
- - - - - - - - -
int bmqa::Message::ackStatus ( )  const
-
-
-

Return the status of the ACK message. The behavior is undefined unless this instance represents an ACK message. This value correspond to the bmqt::AckResult::Enum enum.

- -
-
- -
-
- - - - - - - - - -
int bmqa::Message::getData (bdlbb::Blob *  blob )  const
-
-
-

Load into the specified blob the payload of the message, if any. Return zero if the message has a payload and non-zero value otherwise. The behaviour is undefined unless this instance represents a PUT or PUSH message. Note that for efficiency, application should fetch payload once and cache the value, instead of invoking this method multiple times on a message.

- -
-
- -
-
- - - - - - - - -
int bmqa::Message::dataSize ( )  const
-
-
-

Return the number of bytes in the payload. The behaviour is undefined unless this instance represents a PUT or a PUSH message. Note that for efficiency, application should fetch payload size once and cache the value, instead of invoking this method multiple times on a message.

- -
-
- -
-
- - - - - - - - -
bool bmqa::Message::hasProperties ( )  const
-
-
-

Return true if this instance has at least one message property associated with it, false otherwise. Behavior is undefined unless this instance represents a PUT or a PUSH message.

- -
-
- -
-
- - - - - - - - - -
int bmqa::Message::loadProperties (MessageProperties buffer )  const
-
-
-

Load into the specified buffer the properties associated with this message. Return zero on success, and a non-zero value otherwise. Behavior is undefined unless this instance represents a PUT or a PUSH message, and unless buffer is non-null. Note that if there are no properties associated with this message, zero will be returned and the MessageProperties instance pointed by buffer will be cleared. Also note that for efficiency, application should fetch properties once and cache the value, instead of invoking this method multiple times on a message.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::Message::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageConfirmationCookie-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageConfirmationCookie-members.html deleted file mode 100644 index 39b142ce1..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageConfirmationCookie-members.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - -Class bmqa::MessageConfirmationCookie Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::MessageConfirmationCookie Member List

-
-
-This is the complete list of members for bmqa::MessageConfirmationCookie, including all inherited members. - - - - -
MessageConfirmationCookie()bmqa::MessageConfirmationCookie
MessageConfirmationCookie(const QueueId &queueId, const bmqt::MessageGUID &messageGUID)bmqa::MessageConfirmationCookie
messageGUID() const bmqa::MessageConfirmationCookie
queueId() const bmqa::MessageConfirmationCookie
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageConfirmationCookie.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageConfirmationCookie.html deleted file mode 100644 index 85b456e86..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageConfirmationCookie.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - -Class bmqa::MessageConfirmationCookie - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::MessageConfirmationCookie Class Reference

-
-
- -

#include <bmqa_message.h>

- -

List of all members.

- - - - - - -

-Public Member Functions

 MessageConfirmationCookie ()
 MessageConfirmationCookie (const QueueId &queueId, const bmqt::MessageGUID &messageGUID)
const QueueIdqueueId () const
const bmqt::MessageGUIDmessageGUID () const
-

Detailed Description

-

Cookie for async message confirmation.

-

See Component bmqa_message

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqa::MessageConfirmationCookie::MessageConfirmationCookie ( ) 
-
-
-

Create an unset instance of this class.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqa::MessageConfirmationCookie::MessageConfirmationCookie (const QueueId queueId,
const bmqt::MessageGUID messageGUID 
)
-
-
-

Create an instance with the specified queueId and messageGUID. Users should not use that constructor directly, but rather load the message cookie from an existing bmqa::Message with the bmqa::Message::confirmationCookie accessor.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
const QueueId& bmqa::MessageConfirmationCookie::queueId ( )  const
-
-
-

Return the queue ID of the message with which this confirmation cookie is associated.

- -
-
- -
-
- - - - - - - - -
const bmqt::MessageGUID& bmqa::MessageConfirmationCookie::messageGUID ( )  const
-
-
-

Return message GUID of the message with which this confirmation cookie is associated.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageEvent-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageEvent-members.html deleted file mode 100644 index 18e3b8644..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageEvent-members.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -Class bmqa::MessageEvent Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::MessageEvent Member List

-
-
-This is the complete list of members for bmqa::MessageEvent, including all inherited members. - - - - - - -
MessageEvent()bmqa::MessageEvent [explicit]
MessageEvent(const MessageEvent &other)bmqa::MessageEvent
messageIterator() const bmqa::MessageEvent
operator=(const MessageEvent &rhs)bmqa::MessageEvent
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqa::MessageEvent
type() const bmqa::MessageEvent
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageEvent.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageEvent.html deleted file mode 100644 index be5e6e4e9..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageEvent.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - -Class bmqa::MessageEvent - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::MessageEvent Class Reference

-
-
- -

#include <bmqa_messageevent.h>

- -

List of all members.

- - - - - - - - -

-Public Member Functions

 MessageEvent ()
 MessageEvent (const MessageEvent &other)
MessageEventoperator= (const MessageEvent &rhs)
MessageIterator messageIterator () const
bmqt::MessageEventType::Enum type () const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
-

Detailed Description

-

An event containing messages received from a queue. The application can consume messages using the message iterator.

-

See Component bmqa_messageevent

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqa::MessageEvent::MessageEvent ( )  [explicit]
-
-
-

Create an unset instance. Note that type() will return bmqt::MessageEventType::UNDEFINED.

- -
-
- -
-
- - - - - - - - - -
bmqa::MessageEvent::MessageEvent (const MessageEvent other ) 
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
MessageEvent& bmqa::MessageEvent::operator= (const MessageEvent rhs ) 
-
-
- -
-
- -
-
- - - - - - - - -
MessageIterator bmqa::MessageEvent::messageIterator ( )  const
-
-
-

Return a MessageIterator object usable for iterating over the Message objects contained in this MessageEvent. Note that obtaining an iterator invalidates (resets) any previously obtained iterator. The behavior is undefined if type() returns bmqt::MessageEventType::UNDEFINED.

- -
-
- -
-
- - - - - - - - -
bmqt::MessageEventType::Enum bmqa::MessageEvent::type ( )  const
-
-
-

Return the type of messages contained in this MessageEvent.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::MessageEvent::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageEventBuilder-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageEventBuilder-members.html deleted file mode 100644 index a0bceda04..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageEventBuilder-members.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -Class bmqa::MessageEventBuilder Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::MessageEventBuilder Member List

-
- - - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageEventBuilder.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageEventBuilder.html deleted file mode 100644 index e6fc92393..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageEventBuilder.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - -Class bmqa::MessageEventBuilder - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::MessageEventBuilder Class Reference

-
-
- -

#include <bmqa_messageeventbuilder.h>

- -

List of all members.

- - - - - - - - - - - - - -

-Public Member Functions

 MessageEventBuilder ()
 ~MessageEventBuilder ()
 MessageEventBuilder (const MessageEventBuilder &)
MessageEventBuilderoperator= (const MessageEventBuilder &)
MessagestartMessage ()
bmqt::EventBuilderResult::Enum packMessage (const bmqa::QueueId &queueId)
void reset ()
const MessageEventmessageEvent ()
MessagecurrentMessage ()
int messageCount () const
int messageEventSize () const
-

Detailed Description

-

A builder for MessageEvent objects.

-

See Component bmqa_messageeventbuilder

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqa::MessageEventBuilder::MessageEventBuilder ( )  [explicit]
-
-
-

Create an invalid instance. Application should not create MessageEventBuilder themselves, but ask the bmqa::Session to give them one, by using bmqa::Session::loadMessageEventBuilder.

- -
-
- -
-
- - - - - - - - -
bmqa::MessageEventBuilder::~MessageEventBuilder ( ) 
-
-
-

Destructor

- -
-
- -
-
- - - - - - - - - -
bmqa::MessageEventBuilder::MessageEventBuilder (const MessageEventBuilder ) 
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
MessageEventBuilder& bmqa::MessageEventBuilder::operator= (const MessageEventBuilder ) 
-
-
-

Copy constructor and assignment operator

- -
-
- -
-
- - - - - - - - -
Message& bmqa::MessageEventBuilder::startMessage ( ) 
-
-
-

Reset the current message being built, and return a reference to the current message. Note that returned Message is valid until this builder is reset or destroyed. Behavior is undefined if this builder was earlier used to build an event and has not been reset since then.

- -
-
- -
-
- - - - - - - - - -
bmqt::EventBuilderResult::Enum bmqa::MessageEventBuilder::packMessage (const bmqa::QueueId queueId ) 
-
-
-

Add the current message into the message event under construction, setting the destination queue of the current message to match the specified queueId. Return zero on success, non-zero value otherwise. In case of failure, this method has no effect on the underlying message event being built. The behavior is undefined unless all mandatory attributes of the current Message have been set, and queueId is valid and has been opened in WRITE mode. The result is one of the values from the bmqt::EventBuilderResult::Enum enum. Note that this method can be called multiple times in a row with different queueId if the application desires to post the same bmqa::Message to multiple queues: all attributes on the message are unchanged, exception for the correlationId which is cleared.

- -
-
- -
-
- - - - - - - - -
void bmqa::MessageEventBuilder::reset ( ) 
-
-
-

Reset the builder, effectively discarding the MessageEvent under construction.

- -
-
- -
-
- - - - - - - - -
const MessageEvent& bmqa::MessageEventBuilder::messageEvent ( ) 
-
-
-

Return the MessageEvent that was built. Note that returned MessageEvent is valid until this builder is reset or destroyed, calling this method multiple times in a row will return the same bmqa::MessageEvent instance. Also note that this builder must be reset before calling startMessage again.

- -
-
- -
-
- - - - - - - - -
Message& bmqa::MessageEventBuilder::currentMessage ( ) 
-
-
-

Return a reference to the current message.

- -
-
- -
-
- - - - - - - - -
int bmqa::MessageEventBuilder::messageCount ( )  const
-
-
-

Return the number of messages currently in the MessageEvent being built.

- -
-
- -
-
- - - - - - - - -
int bmqa::MessageEventBuilder::messageEventSize ( )  const
-
-
-

Return the size in bytes of the event built after last successful call to packMessage(), otherwise return zero. Note that returned value represents the length of entire message event, including BlazingMQ wire protocol overhead.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageIterator-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageIterator-members.html deleted file mode 100644 index 54c9b5824..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageIterator-members.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -Class bmqa::MessageIterator Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::MessageIterator Member List

-
-
-This is the complete list of members for bmqa::MessageIterator, including all inherited members. - - - - - - -
message() const bmqa::MessageIterator
MessageIterator()bmqa::MessageIterator [explicit]
MessageIterator(const MessageIterator &)bmqa::MessageIterator
nextMessage()bmqa::MessageIterator
operator=(const MessageIterator &)bmqa::MessageIterator
~MessageIterator()bmqa::MessageIterator
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageIterator.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageIterator.html deleted file mode 100644 index a3a086a05..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageIterator.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - -Class bmqa::MessageIterator - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::MessageIterator Class Reference

-
-
- -

#include <bmqa_messageiterator.h>

- -

List of all members.

- - - - - - - - -

-Public Member Functions

 MessageIterator ()
 MessageIterator (const MessageIterator &)
 ~MessageIterator ()
MessageIteratoroperator= (const MessageIterator &)
bool nextMessage ()
const Messagemessage () const
-

Detailed Description

-

An iterator providing read-only sequential access to messages contained into a MesssageEvent.

-

See Component bmqa_messageiterator

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqa::MessageIterator::MessageIterator ( )  [explicit]
-
-
-

Default constructor

- -
-
- -
-
- - - - - - - - - -
bmqa::MessageIterator::MessageIterator (const MessageIterator ) 
-
-
- -
-
- -
-
- - - - - - - - -
bmqa::MessageIterator::~MessageIterator ( ) 
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
MessageIterator& bmqa::MessageIterator::operator= (const MessageIterator ) 
-
-
- -
-
- -
-
- - - - - - - - -
bool bmqa::MessageIterator::nextMessage ( ) 
-
-
-

Advance the position of the iterator to the next message in the event. Return true if there is a next message and false otherwise. Note that advancing to the next message will invalidate any previously returned bmqa::Message retrieved from the message() call.

- -
-
- -
-
- - - - - - - - -
const Message& bmqa::MessageIterator::message ( )  const
-
-
-

Return the message to which the iterator is pointing, if any; otherwise return an invalid message. Note that nextMessage must be called before message in order to advance the iterators position to the first message in the event.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageProperties-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageProperties-members.html deleted file mode 100644 index e564e5c31..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageProperties-members.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - -Class bmqa::MessageProperties Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::MessageProperties Member List

-
-
-This is the complete list of members for bmqa::MessageProperties, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
clear()bmqa::MessageProperties
getPropertyAsBinary(const bsl::string &name) const bmqa::MessageProperties
getPropertyAsBinaryOr(const bsl::string &name, const bsl::vector< char > &value) const bmqa::MessageProperties
getPropertyAsBool(const bsl::string &name) const bmqa::MessageProperties
getPropertyAsBoolOr(const bsl::string &name, bool value) const bmqa::MessageProperties
getPropertyAsChar(const bsl::string &name) const bmqa::MessageProperties
getPropertyAsCharOr(const bsl::string &name, char value) const bmqa::MessageProperties
getPropertyAsInt32(const bsl::string &name) const bmqa::MessageProperties
getPropertyAsInt32Or(const bsl::string &name, bsl::int32_t value) const bmqa::MessageProperties
getPropertyAsInt64(const bsl::string &name) const bmqa::MessageProperties
getPropertyAsInt64Or(const bsl::string &name, bsls::Types::Int64 value) const bmqa::MessageProperties
getPropertyAsShort(const bsl::string &name) const bmqa::MessageProperties
getPropertyAsShortOr(const bsl::string &name, short value) const bmqa::MessageProperties
getPropertyAsString(const bsl::string &name) const bmqa::MessageProperties
getPropertyAsStringOr(const bsl::string &name, const bsl::string &value) const bmqa::MessageProperties
hasProperty(const bsl::string &name, bmqt::PropertyType::Enum *type=0) const bmqa::MessageProperties
k_MAX_NUM_PROPERTIESbmqa::MessageProperties [static]
k_MAX_PROPERTIES_AREA_LENGTHbmqa::MessageProperties [static]
k_MAX_PROPERTY_NAME_LENGTHbmqa::MessageProperties [static]
k_MAX_PROPERTY_VALUE_LENGTHbmqa::MessageProperties [static]
MessageProperties(const MessageProperties &other, bslma::Allocator *basicAllocator=0)bmqa::MessageProperties
MessagePropertiesIterator classbmqa::MessageProperties [friend]
numProperties() const bmqa::MessageProperties
operator=(const MessageProperties &rhs)bmqa::MessageProperties
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqa::MessageProperties
propertyType(const bsl::string &name) const bmqa::MessageProperties
remove(const bsl::string &name, bmqt::PropertyType::Enum *buffer=0)bmqa::MessageProperties
setPropertyAsBinary(const bsl::string &name, const bsl::vector< char > &value)bmqa::MessageProperties
setPropertyAsBool(const bsl::string &name, bool value)bmqa::MessageProperties
setPropertyAsChar(const bsl::string &name, char value)bmqa::MessageProperties
setPropertyAsInt32(const bsl::string &name, bsl::int32_t value)bmqa::MessageProperties
setPropertyAsInt64(const bsl::string &name, bsls::Types::Int64 value)bmqa::MessageProperties
setPropertyAsShort(const bsl::string &name, short value)bmqa::MessageProperties
setPropertyAsString(const bsl::string &name, const bsl::string &value)bmqa::MessageProperties
streamIn(const bdlbb::Blob &blob)bmqa::MessageProperties
streamOut(bdlbb::BlobBufferFactory *bufferFactory) const bmqa::MessageProperties
totalSize() const bmqa::MessageProperties
~MessageProperties()bmqa::MessageProperties
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageProperties.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageProperties.html deleted file mode 100644 index 0a118a599..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessageProperties.html +++ /dev/null @@ -1,983 +0,0 @@ - - - - -Class bmqa::MessageProperties - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::MessageProperties Class Reference

-
-
- -

#include <bmqa_messageproperties.h>

- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

BSLMF_NESTED_TRAIT_DECLARATION(MessageProperties,
-bslma::UsesBslmaAllocator)
-explicit MessageProperties(bslma 
MessageProperties (const MessageProperties &other, bslma::Allocator *basicAllocator=0)
 ~MessageProperties ()
MessagePropertiesoperator= (const MessageProperties &rhs)
bool remove (const bsl::string &name, bmqt::PropertyType::Enum *buffer=0)
void clear ()
int setPropertyAsBool (const bsl::string &name, bool value)
int setPropertyAsChar (const bsl::string &name, char value)
int setPropertyAsShort (const bsl::string &name, short value)
int setPropertyAsInt32 (const bsl::string &name, bsl::int32_t value)
int setPropertyAsInt64 (const bsl::string &name, bsls::Types::Int64 value)
int setPropertyAsString (const bsl::string &name, const bsl::string &value)
int setPropertyAsBinary (const bsl::string &name, const bsl::vector< char > &value)
int streamIn (const bdlbb::Blob &blob)
int numProperties () const
int totalSize () const
bool hasProperty (const bsl::string &name, bmqt::PropertyType::Enum *type=0) const
bmqt::PropertyType::Enum propertyType (const bsl::string &name) const
bool getPropertyAsBool (const bsl::string &name) const
char getPropertyAsChar (const bsl::string &name) const
short getPropertyAsShort (const bsl::string &name) const
bsl::int32_t getPropertyAsInt32 (const bsl::string &name) const
bsls::Types::Int64 getPropertyAsInt64 (const bsl::string &name) const
const bsl::string & getPropertyAsString (const bsl::string &name) const
const bsl::vector< char > & getPropertyAsBinary (const bsl::string &name) const
bool getPropertyAsBoolOr (const bsl::string &name, bool value) const
char getPropertyAsCharOr (const bsl::string &name, char value) const
short getPropertyAsShortOr (const bsl::string &name, short value) const
bsl::int32_t getPropertyAsInt32Or (const bsl::string &name, bsl::int32_t value) const
bsls::Types::Int64 getPropertyAsInt64Or (const bsl::string &name, bsls::Types::Int64 value) const
const bsl::string & getPropertyAsStringOr (const bsl::string &name, const bsl::string &value) const
const bsl::vector< char > & getPropertyAsBinaryOr (const bsl::string &name, const bsl::vector< char > &value) const
const bdlbb::Blob & streamOut (bdlbb::BlobBufferFactory *bufferFactory) const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const

-Static Public Attributes

static const int k_MAX_NUM_PROPERTIES = 255
static const int k_MAX_PROPERTIES_AREA_LENGTH = (64 * 1024 * 1024) - 8
static const int k_MAX_PROPERTY_NAME_LENGTH = 4095
static const int k_MAX_PROPERTY_VALUE_LENGTH = 67104745

-Friends

class MessagePropertiesIterator
-

Detailed Description

-

Provide a VST representing message properties.

-

See Component bmqa_messageproperties

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
BSLMF_NESTED_TRAIT_DECLARATION (MessageProperties, bslma::UsesBslmaAllocator) explicit MessageProperties(bslma bmqa::MessageProperties::MessageProperties (const MessageProperties other,
bslma::Allocator *  basicAllocator = 0 
)
-
-
-

< Create an empty instance of MessageProperties. Optionally specify a basicAllocator used to supply memory. Note that it is more efficient to use a MessageProperties object retrieved via Session::loadMessageProperties, instead of creating it via this constructor. Create an instance of MessageProperties having the same value as the specified other, that will use the optionally specified basicAllocator to supply memory.

- -
-
- -
-
- - - - - - - - -
bmqa::MessageProperties::~MessageProperties ( ) 
-
-
-

Destroy this object.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
MessageProperties& bmqa::MessageProperties::operator= (const MessageProperties rhs ) 
-
-
-

Assign to this object the value of the specified rhs object.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::MessageProperties::remove (const bsl::string &  name,
bmqt::PropertyType::Enum buffer = 0 
)
-
-
-

Remove the property with the specified name if one exists and return true and load into the optionally specified buffer the data type of the property. Return false if the name property does not exist, and leave the buffer unchanged.

- -
-
- -
-
- - - - - - - - -
void bmqa::MessageProperties::clear ( ) 
-
-
-

Remove all properties from this instance. Note that numProperties will return zero after invoking this method.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::MessageProperties::setPropertyAsBool (const bsl::string &  name,
bool  value 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::MessageProperties::setPropertyAsChar (const bsl::string &  name,
char  value 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::MessageProperties::setPropertyAsShort (const bsl::string &  name,
short  value 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::MessageProperties::setPropertyAsInt32 (const bsl::string &  name,
bsl::int32_t  value 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::MessageProperties::setPropertyAsInt64 (const bsl::string &  name,
bsls::Types::Int64  value 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::MessageProperties::setPropertyAsString (const bsl::string &  name,
const bsl::string &  value 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::MessageProperties::setPropertyAsBinary (const bsl::string &  name,
const bsl::vector< char > &  value 
)
-
-
-

Set a property with the specified name having the specified value with the corresponding data type. Return zero on success, and a non-zero value in case of failure. Note that if a property with name and the same type exists, it will be updated with the provided value, however if the data type of the existing property differs, an error will be returned.

- -
-
- -
-
- - - - - - - - - -
int bmqa::MessageProperties::streamIn (const bdlbb::Blob &  blob ) 
-
-
-

Populate this instance with its BlazingMQ wire protocol representation from the specified blob. Return zero on success, and a non-zero value otherwise.

- -
-
- -
-
- - - - - - - - -
int bmqa::MessageProperties::numProperties ( )  const
-
-
-

Return the total number of properties set in this instance.

- -
-
- -
-
- - - - - - - - -
int bmqa::MessageProperties::totalSize ( )  const
-
-
-

Return the total size (in bytes) of the wire representation of this instance. Note that returned value includes the BlazingMQ wire protocol overhead as well.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::MessageProperties::hasProperty (const bsl::string &  name,
bmqt::PropertyType::Enum type = 0 
) const
-
-
-

Return true if a property with the specified name exists and load into the optionally specified type the type of the property. Return false otherwise.

- -
-
- -
-
- - - - - - - - - -
bmqt::PropertyType::Enum bmqa::MessageProperties::propertyType (const bsl::string &  name )  const
-
-
-

Return the type of property having the specified name. Behavior is undefined unless hasProperty returns true for the property name.

- -
-
- -
-
- - - - - - - - - -
bool bmqa::MessageProperties::getPropertyAsBool (const bsl::string &  name )  const
-
-
- -
-
- -
-
- - - - - - - - - -
char bmqa::MessageProperties::getPropertyAsChar (const bsl::string &  name )  const
-
-
- -
-
- -
-
- - - - - - - - - -
short bmqa::MessageProperties::getPropertyAsShort (const bsl::string &  name )  const
-
-
- -
-
- -
-
- - - - - - - - - -
bsl::int32_t bmqa::MessageProperties::getPropertyAsInt32 (const bsl::string &  name )  const
-
-
- -
-
- -
-
- - - - - - - - - -
bsls::Types::Int64 bmqa::MessageProperties::getPropertyAsInt64 (const bsl::string &  name )  const
-
-
- -
-
- -
-
- - - - - - - - - -
const bsl::string& bmqa::MessageProperties::getPropertyAsString (const bsl::string &  name )  const
-
-
- -
-
- -
-
- - - - - - - - - -
const bsl::vector<char>& bmqa::MessageProperties::getPropertyAsBinary (const bsl::string &  name )  const
-
-
-

Return the property having the corresponding type and the specified name. Behavior is undefined unless property with name exists.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::MessageProperties::getPropertyAsBoolOr (const bsl::string &  name,
bool  value 
) const
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
char bmqa::MessageProperties::getPropertyAsCharOr (const bsl::string &  name,
char  value 
) const
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
short bmqa::MessageProperties::getPropertyAsShortOr (const bsl::string &  name,
short  value 
) const
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::int32_t bmqa::MessageProperties::getPropertyAsInt32Or (const bsl::string &  name,
bsl::int32_t  value 
) const
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsls::Types::Int64 bmqa::MessageProperties::getPropertyAsInt64Or (const bsl::string &  name,
bsls::Types::Int64  value 
) const
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
const bsl::string& bmqa::MessageProperties::getPropertyAsStringOr (const bsl::string &  name,
const bsl::string &  value 
) const
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
const bsl::vector<char>& bmqa::MessageProperties::getPropertyAsBinaryOr (const bsl::string &  name,
const bsl::vector< char > &  value 
) const
-
-
-

Return the property having the corresponding type and the specified name if property with such a name exists. Return the specified value if property with name does not exist.

- -
-
- -
-
- - - - - - - - - -
const bdlbb::Blob& bmqa::MessageProperties::streamOut (bdlbb::BlobBufferFactory *  bufferFactory )  const
-
-
-

Return a blob having the BlazingMQ wire protocol representation of this instance, using the specified bufferFactory to build the blob. Behavior is undefined unless bufferFactory is non-null. Note that if this instance is empty (i.e., numProperties() == 0), returned blob will be empty. In other words, an empty instance has no wire representation.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::MessageProperties::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-

Friends And Related Function Documentation

- -
-
- - - - -
friend class MessagePropertiesIterator [friend]
-
-
- -
-
-

Member Data Documentation

- -
-
- - - - -
const int bmqa::MessageProperties::k_MAX_NUM_PROPERTIES = 255 [static]
-
-
- -
-
- -
-
- - - - -
const int bmqa::MessageProperties::k_MAX_PROPERTIES_AREA_LENGTH = (64 * 1024 * 1024) - 8 [static]
-
-
-

Maximum length of all the properties (including their names, values and the wire protocol overhead). Note that this value is just under 64 MB.

- -
-
- -
-
- - - - -
const int bmqa::MessageProperties::k_MAX_PROPERTY_NAME_LENGTH = 4095 [static]
-
-
- -
-
- -
-
- - - - -
const int bmqa::MessageProperties::k_MAX_PROPERTY_VALUE_LENGTH = 67104745 [static]
-
-
-

~64 MB

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessagePropertiesIterator-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessagePropertiesIterator-members.html deleted file mode 100644 index 24898a65e..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessagePropertiesIterator-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - -Class bmqa::MessagePropertiesIterator Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::MessagePropertiesIterator Member List

-
- - - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessagePropertiesIterator.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessagePropertiesIterator.html deleted file mode 100644 index 034d60d9c..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MessagePropertiesIterator.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - -Class bmqa::MessagePropertiesIterator - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::MessagePropertiesIterator Class Reference

-
-
- -

#include <bmqa_messageproperties.h>

- -

List of all members.

- - - - - - - - - - - - - - - - - -

-Public Member Functions

 MessagePropertiesIterator ()
 MessagePropertiesIterator (const MessageProperties *properties)
 MessagePropertiesIterator (const MessagePropertiesIterator &other)
 ~MessagePropertiesIterator ()
MessagePropertiesIteratoroperator= (const MessagePropertiesIterator &rhs)
bool hasNext ()
const bsl::string & name () const
bmqt::PropertyType::Enum type () const
bool getAsBool () const
char getAsChar () const
short getAsShort () const
bsl::int32_t getAsInt32 () const
bsls::Types::Int64 getAsInt64 () const
const bsl::string & getAsString () const
const bsl::vector< char > & getAsBinary () const
-

Detailed Description

-

Provide a mechanism to iterator over all the properties in an instance of bmqa::MessageProperties. The order of the iteration is implementation defined. An iterator is valid if it is associated with a property , otherwise it is invalid. Behavior is undefined if the underlying instance of bmqa::MessageProperties is modified during the lifetime of this iterator.

-

See Component bmqa_messageproperties

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqa::MessagePropertiesIterator::MessagePropertiesIterator ( ) 
-
-
-

Create an empty iterator instance. The only valid operations that can be invoked on an empty instance are copying, assignment and destruction.

- -
-
- -
-
- - - - - - - - - -
bmqa::MessagePropertiesIterator::MessagePropertiesIterator (const MessageProperties properties )  [explicit]
-
-
-

Create an iterator for the specified properties. Behavior is undefined unless properties is not null.

- -
-
- -
-
- - - - - - - - - -
bmqa::MessagePropertiesIterator::MessagePropertiesIterator (const MessagePropertiesIterator other ) 
-
-
-

Copy constructor from the specified other.

- -
-
- -
-
- - - - - - - - -
bmqa::MessagePropertiesIterator::~MessagePropertiesIterator ( ) 
-
-
-

Destroy this iterator.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
MessagePropertiesIterator& bmqa::MessagePropertiesIterator::operator= (const MessagePropertiesIterator rhs ) 
-
-
-

Assignment operator from the specified rhs.

- -
-
- -
-
- - - - - - - - -
bool bmqa::MessagePropertiesIterator::hasNext ( ) 
-
-
-

Advance this iterator to refer to the next property of the associated MessageProperties instance, if there is one and return true, return false otherwise. Behavior is undefined unless this method is being invoked for the first time on this object or previous call to hasNext returned true. Note that the order of the iteration is not specified.

- -
-
- -
-
- - - - - - - - -
const bsl::string& bmqa::MessagePropertiesIterator::name ( )  const
-
-
-

Return a reference offering non-modifiable access to the name of the property being pointed by the iterator. Behavior is undefined unless last call to hasNext returned true.

- -
-
- -
-
- - - - - - - - -
bmqt::PropertyType::Enum bmqa::MessagePropertiesIterator::type ( )  const
-
-
-

Return the data type of property being pointed by the iterator. Behavior is undefined unless last call to hasNext returned true;

- -
-
- -
-
- - - - - - - - -
bool bmqa::MessagePropertiesIterator::getAsBool ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
char bmqa::MessagePropertiesIterator::getAsChar ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
short bmqa::MessagePropertiesIterator::getAsShort ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
bsl::int32_t bmqa::MessagePropertiesIterator::getAsInt32 ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
bsls::Types::Int64 bmqa::MessagePropertiesIterator::getAsInt64 ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
const bsl::string& bmqa::MessagePropertiesIterator::getAsString ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
const bsl::vector<char>& bmqa::MessagePropertiesIterator::getAsBinary ( )  const
-
-
-

Return property value having the corresponding type being currently being pointed by this iterator instance. Behavior is undefined unless last call to hasNext returned true. Behavior is also undefined unless property's data type matches the requested type.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MockSession-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MockSession-members.html deleted file mode 100644 index ca2291111..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MockSession-members.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - -Class bmqa::MockSession Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::MockSession Member List

-
-
-This is the complete list of members for bmqa::MockSession, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
closeQueue(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
closeQueueAsync(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
closeQueueAsync(const QueueId *queueId, const CloseQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
CloseQueueCallback typedefbmqa::AbstractSession
closeQueueSync(const QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
configureMessageDumping(const bslstl::StringRef &command) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
configureQueue(QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
configureQueueAsync(QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
configureQueueAsync(const QueueId *queueId, const bmqt::QueueOptions &options, const ConfigureQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
ConfigureQueueCallback typedefbmqa::AbstractSession
configureQueueSync(const QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
confirmMessage(const Message &message) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
confirmMessage(const MessageConfirmationCookie &cookie) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
confirmMessages(ConfirmEventBuilder *builder) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
emitEvent(int numEvents=1)bmqa::MockSession
enqueueEvent(const bmqa::Event &event)bmqa::MockSession
expect_closeQueue(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_closeQueueAsync(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_closeQueueAsync(QueueId *queueId, const CloseQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_closeQueueSync(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_configureQueue(QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_configureQueueAsync(QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_configureQueueAsync(QueueId *queueId, const bmqt::QueueOptions &options, const ConfigureQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_configureQueueSync(QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_confirmMessage(const Message &message)bmqa::MockSession
expect_confirmMessage(const MessageConfirmationCookie &cookie)bmqa::MockSession
expect_confirmMessages(ConfirmEventBuilder *builder)bmqa::MockSession
expect_finalizeStop()bmqa::MockSession
expect_nextEvent(const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_openQueue(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_openQueueAsync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_openQueueAsync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const OpenQueueCallback &callback, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_openQueueSync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_post(const MessageEvent &messageEvent)bmqa::MockSession
expect_start(const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_startAsync(const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::MockSession
expect_stop()bmqa::MockSession
expect_stopAsync()bmqa::MockSession
FailureCb typedefbmqa::MockSession
finalizeStop() BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
getQueueId(QueueId *queueId, const bmqt::Uri &uri) const BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
getQueueId(QueueId *queueId, const bmqt::CorrelationId &correlationId) const BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
initialize(bslma::Allocator *allocator=0)bmqa::MockSession [static]
loadConfirmEventBuilder(ConfirmEventBuilder *builder) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
loadMessageEventBuilder(MessageEventBuilder *builder) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
loadMessageProperties(MessageProperties *buffer) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
MockSession(const bmqt::SessionOptions &options=bmqt::SessionOptions(), bslma::Allocator *allocator=0)bmqa::MockSession [explicit]
MockSession(bslma::ManagedPtr< SessionEventHandler > eventHandler, const bmqt::SessionOptions &options=bmqt::SessionOptions(), bslma::Allocator *allocator=0)bmqa::MockSession [explicit]
nextEvent(const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
openQueue(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
openQueueAsync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
openQueueAsync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const OpenQueueCallback &callback, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
OpenQueueCallback typedefbmqa::AbstractSession
openQueueSync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
popPostedEvent(bmqa::MessageEvent *event)bmqa::MockSession
post(const MessageEvent &messageEvent) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
setFailureCallback(const FailureCb &failureCb)bmqa::MockSession
shutdown()bmqa::MockSession [static]
start(const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
startAsync(const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
stop() BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
stopAsync() BSLS_KEYWORD_OVERRIDEbmqa::MockSession [virtual]
unconfirmedMessages() const bmqa::MockSession
~AbstractSession()bmqa::AbstractSession [virtual]
~MockSession() BSLS_KEYWORD_OVERRIDEbmqa::MockSession
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MockSession.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MockSession.html deleted file mode 100644 index 75e7ee7a2..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MockSession.html +++ /dev/null @@ -1,1920 +0,0 @@ - - - - -Class bmqa::MockSession - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::MockSession Class Reference

-
-
- -

#include <bmqa_mocksession.h>

-
-Inheritance diagram for bmqa::MockSession:
-
-
- - -bmqa::AbstractSession - -
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

struct  Call
struct  Job

-Public Types

typedef bsl::function< void(const
-char *description, const char
-*file, int line) 
FailureCb )
typedef bsl::function< void(const
-bmqa::OpenQueueStatus &result)> 
OpenQueueCallback
typedef bsl::function< void(const
-bmqa::ConfigureQueueStatus
-&result)> 
ConfigureQueueCallback
typedef bsl::function< void(const
-bmqa::CloseQueueStatus &result)> 
CloseQueueCallback

-Public Member Functions

 MockSession (const bmqt::SessionOptions &options=bmqt::SessionOptions(), bslma::Allocator *allocator=0)
 MockSession (bslma::ManagedPtr< SessionEventHandler > eventHandler, const bmqt::SessionOptions &options=bmqt::SessionOptions(), bslma::Allocator *allocator=0)
 ~MockSession () BSLS_KEYWORD_OVERRIDE
void enqueueEvent (const bmqa::Event &event)
bool emitEvent (int numEvents=1)
Call & expect_start (const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_startAsync (const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_stop ()
Call & expect_stopAsync ()
Call & expect_finalizeStop ()
Call & expect_openQueue (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_openQueueSync (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_openQueueAsync (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_openQueueAsync (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const OpenQueueCallback &callback, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_closeQueue (QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_closeQueueSync (QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_closeQueueAsync (QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_closeQueueAsync (QueueId *queueId, const CloseQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_configureQueue (QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_configureQueueSync (QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_configureQueueAsync (QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_configureQueueAsync (QueueId *queueId, const bmqt::QueueOptions &options, const ConfigureQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_nextEvent (const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_post (const MessageEvent &messageEvent)
Call & expect_confirmMessage (const Message &message)
Call & expect_confirmMessage (const MessageConfirmationCookie &cookie)
Call & expect_confirmMessages (ConfirmEventBuilder *builder)
int start (const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int startAsync (const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
void stop () BSLS_KEYWORD_OVERRIDE
void stopAsync () BSLS_KEYWORD_OVERRIDE
void finalizeStop () BSLS_KEYWORD_OVERRIDE
void loadMessageEventBuilder (MessageEventBuilder *builder) BSLS_KEYWORD_OVERRIDE
void loadConfirmEventBuilder (ConfirmEventBuilder *builder) BSLS_KEYWORD_OVERRIDE
void loadMessageProperties (MessageProperties *buffer) BSLS_KEYWORD_OVERRIDE
int getQueueId (QueueId *queueId, const bmqt::Uri &uri) const BSLS_KEYWORD_OVERRIDE
int getQueueId (QueueId *queueId, const bmqt::CorrelationId &correlationId) const BSLS_KEYWORD_OVERRIDE
int openQueue (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
OpenQueueStatus openQueueSync (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int openQueueAsync (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
void openQueueAsync (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const OpenQueueCallback &callback, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int configureQueue (QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
ConfigureQueueStatus configureQueueSync (const QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout) BSLS_KEYWORD_OVERRIDE
int configureQueueAsync (QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
void configureQueueAsync (const QueueId *queueId, const bmqt::QueueOptions &options, const ConfigureQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int closeQueue (QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
CloseQueueStatus closeQueueSync (const QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int closeQueueAsync (QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
void closeQueueAsync (const QueueId *queueId, const CloseQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
Event nextEvent (const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int post (const MessageEvent &messageEvent) BSLS_KEYWORD_OVERRIDE
int confirmMessage (const Message &message) BSLS_KEYWORD_OVERRIDE
int confirmMessage (const MessageConfirmationCookie &cookie) BSLS_KEYWORD_OVERRIDE
int confirmMessages (ConfirmEventBuilder *builder) BSLS_KEYWORD_OVERRIDE
int configureMessageDumping (const bslstl::StringRef &command) BSLS_KEYWORD_OVERRIDE
void setFailureCallback (const FailureCb &failureCb)
bool popPostedEvent (bmqa::MessageEvent *event)
size_t unconfirmedMessages () const

-Static Public Member Functions

static void initialize (bslma::Allocator *allocator=0)
static void shutdown ()
-

Detailed Description

-

Mechanism to mock a bmqa::Session

-

See Component bmqa_mocksession

-

Member Typedef Documentation

- -
-
- - - - -
typedef bsl::function<void (const char *description, const char *file, int line) bmqa::MockSession::FailureCb)
-
-
-

Callback used to inform the test driver of an assertion failure. The application test driver using the MockSession may provide an implementation that makes the test driver fail (for instance, calling BDE's test driver ASSERT macro).

- -
-
- -
-
- - - - -
typedef bsl::function<void(const bmqa::OpenQueueStatus& result)> bmqa::AbstractSession::OpenQueueCallback [inherited]
-
-
-

Invoked as a response to an asynchronous open queue operation, OpenQueueCallback is an alias for a callback function object (functor) that takes as an argument the specified result, providing the result and context of the requested operation.

- -

Reimplemented in bmqa::Session.

- -
-
- -
-
- - - - -
typedef bsl::function<void(const bmqa::ConfigureQueueStatus& result)> bmqa::AbstractSession::ConfigureQueueCallback [inherited]
-
-
-

Invoked as a response to an asynchronous configure queue operation, ConfigureQueueCallback is an alias for a callback function object (functor) that takes as an argument the specified result, providing the result and context of the requested operation.

- -

Reimplemented in bmqa::Session.

- -
-
- -
-
- - - - -
typedef bsl::function<void(const bmqa::CloseQueueStatus& result)> bmqa::AbstractSession::CloseQueueCallback [inherited]
-
-
-

Invoked as a response to an asynchronous close queue operation, CloseQueueCallback is an alias for a callback function object (functor) that takes as an argument the specified result, providing the result and context of the requested operation.

- -

Reimplemented in bmqa::Session.

- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
bmqa::MockSession::MockSession (const bmqt::SessionOptions options = bmqt::SessionOptions(),
bslma::Allocator *  allocator = 0 
) [explicit]
-
-
-

Create a new MockSession in synchronous mode using the optionally specified options. In such mode, events have to be fetched by the application using the nextEvent() method. Optionally specify an allocator used to supply memory. If allocator is 0, the currently installed default allocator is used.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bmqa::MockSession::MockSession (bslma::ManagedPtr< SessionEventHandler eventHandler,
const bmqt::SessionOptions options = bmqt::SessionOptions(),
bslma::Allocator *  allocator = 0 
) [explicit]
-
-
-

Create a MockSession in asynchronous mode using the specified eventHandler as callback for event processing and the optionally specified options. Optionally specify an allocator used to supply memory. If the optionally specified allocator is 0, the currently installed default allocator is used.

- -
-
- -
-
- - - - - - - - -
bmqa::MockSession::~MockSession ( ) 
-
-
-

Stop the MockSession and destroy this object.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
static void bmqa::MockSession::initialize (bslma::Allocator *  allocator = 0 )  [static]
-
-
-

Perform a one time initialization needed by components used in MockSession and MockSessionUtil. This method only needs to be called once before any other method, but can be called multiple times provided that for each call to initialize there is a corresponding call to shutdown. Use the optionally specified allocator for any memory allocation, or the global allocator if none is provided. Note that specifying the allocator is provided for test drivers only, and therefore users should let it default to the global allocator. NOTE: This method will need to be invoked only if the application needs to use MockSessionUtil outside the scope of MockSession.

- -
-
- -
-
- - - - - - - - -
static void bmqa::MockSession::shutdown ( )  [static]
-
-
-

Pendant operation of the initialize one. The number of calls to shutdown must equal the number of calls to initialize, without corresponding shutdown calls, to fully destroy the objects. It is safe to call initialize after calling shutdown. The behaviour is undefined if shutdown is called without initialize first being called.

- -
-
- -
-
- - - - - - - - - -
void bmqa::MockSession::enqueueEvent (const bmqa::Event event ) 
-
-
-

Enqueue the specified event in the queue of events to be emitted. NOTE: This method is unique to MockSession and is valid only in unit tests.

- -
-
- -
-
- - - - - - - - - -
bool bmqa::MockSession::emitEvent (int  numEvents = 1 ) 
-
-
-

Emit the specified number of numEvents from the queue of events to be emitted. Return true if at least one event was emitted, and false otherwise. NOTE: This method is unique to MockSession and is valid only in unit tests.

- -
-
- -
-
- - - - - - - - - -
Call& bmqa::MockSession::expect_start (const bsls::TimeInterval &  timeout = bsls::TimeInterval() ) 
-
-
- -
-
- -
-
- - - - - - - - - -
Call& bmqa::MockSession::expect_startAsync (const bsls::TimeInterval &  timeout = bsls::TimeInterval() ) 
-
-
- -
-
- -
-
- - - - - - - - -
Call& bmqa::MockSession::expect_stop ( ) 
-
-
- -
-
- -
-
- - - - - - - - -
Call& bmqa::MockSession::expect_stopAsync ( ) 
-
-
- -
-
- -
-
- - - - - - - - -
Call& bmqa::MockSession::expect_finalizeStop ( ) 
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Call& bmqa::MockSession::expect_openQueue (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Call& bmqa::MockSession::expect_openQueueSync (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Call& bmqa::MockSession::expect_openQueueAsync (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Call& bmqa::MockSession::expect_openQueueAsync (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const OpenQueueCallback callback,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
Call& bmqa::MockSession::expect_closeQueue (QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
Call& bmqa::MockSession::expect_closeQueueSync (QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
Call& bmqa::MockSession::expect_closeQueueAsync (QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
Call& bmqa::MockSession::expect_closeQueueAsync (QueueId queueId,
const CloseQueueCallback callback,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
Call& bmqa::MockSession::expect_configureQueue (QueueId queueId,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
Call& bmqa::MockSession::expect_configureQueueSync (QueueId queueId,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
Call& bmqa::MockSession::expect_configureQueueAsync (QueueId queueId,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Call& bmqa::MockSession::expect_configureQueueAsync (QueueId queueId,
const bmqt::QueueOptions options,
const ConfigureQueueCallback callback,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
)
-
-
- -
-
- -
-
- - - - - - - - - -
Call& bmqa::MockSession::expect_nextEvent (const bsls::TimeInterval &  timeout = bsls::TimeInterval() ) 
-
-
- -
-
- -
-
- - - - - - - - - -
Call& bmqa::MockSession::expect_post (const MessageEvent messageEvent ) 
-
-
- -
-
- -
-
- - - - - - - - - -
Call& bmqa::MockSession::expect_confirmMessage (const Message message ) 
-
-
- -
-
- -
-
- - - - - - - - - -
Call& bmqa::MockSession::expect_confirmMessage (const MessageConfirmationCookie cookie ) 
-
-
- -
-
- -
-
- - - - - - - - - -
Call& bmqa::MockSession::expect_confirmMessages (ConfirmEventBuilder builder ) 
-
-
-

Expect a call to the function and return a reference offering modifiable access to the corresponding Call object.

-

NOTE: Do not use these method directly, use the macro BMQA_EXPECT_CALL instead.

- -
-
- -
-
- - - - - - - - - -
int bmqa::MockSession::start (const bsls::TimeInterval &  timeout = bsls::TimeInterval() )  [virtual]
-
-
-

Connect to the BlazingMQ broker and start the message processing for this Session. This method blocks until either the Session is connected to the broker, fails to connect, or the operation times out. If the optionally specified timeout is not populated, use the one defined in the session options. Return 0 on success, or a non-zero value corresponding to the bmqt::GenericResult::Enum enum values otherwise. The behavior is undefined if this method is called on an already started Session.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
int bmqa::MockSession::startAsync (const bsls::TimeInterval &  timeout = bsls::TimeInterval() )  [virtual]
-
-
-

Start the MockSession with an optionally specified timeout. The return values are elucidated in bmqt::GenericResult. In general a call to start or startAsync emits a SessionEvent of type e_CONNECTED or e_CONNECTION_TIMEOUT.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - -
void bmqa::MockSession::stop ( )  [virtual]
-
-
-

Gracefully disconnect from the BlazingMQ broker and stop the operation of this Session. This method blocks waiting for all already invoked event handlers to exit and all session-related operations to be finished. No other method but start() may be used after this method returns. This method must NOT be called if the session is in synchronous mode (i.e., not using the EventHandler), stopAsync() should be called in this case.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - -
void bmqa::MockSession::stopAsync ( )  [virtual]
-
-
-

Stop the MockSession. In general a call to start or startAsync emits a SessionEvent of type e_DISCONNECTED or e_CONNECTION_TIMEOUT.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - -
void bmqa::MockSession::finalizeStop ( )  [virtual]
-
-
-

This method is only to be used if the session is in synchronous mode (i.e., not using the EventHandler): it must be called once all threads getting events with nextEvent() have been joined.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
void bmqa::MockSession::loadMessageEventBuilder (MessageEventBuilder builder )  [virtual]
-
-
-

Load the MessageEventBuilder into the specified builder output parameter.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
void bmqa::MockSession::loadConfirmEventBuilder (ConfirmEventBuilder builder )  [virtual]
-
-
-

Load the ConfirmEventBuilder into the specified builder output parameter.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
void bmqa::MockSession::loadMessageProperties (MessageProperties buffer )  [virtual]
-
-
-

Load the MessageProperties into the specified buffer output parameter.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::MockSession::getQueueId (QueueId queueId,
const bmqt::Uri uri 
) const [virtual]
-
-
-

Load QueueId object associated with the specified uri into the specified queueId output parameter.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::MockSession::getQueueId (QueueId queueId,
const bmqt::CorrelationId correlationId 
) const [virtual]
-
-
-

Load QueueId object associated with the specified correlationId into the specified queueId output parameter.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int bmqa::MockSession::openQueue (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the openQueueSync(QueueId *queueId...) instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OpenQueueStatus bmqa::MockSession::openQueueSync (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Open the queue having the specified uri with the specified flags (a combination of the values defined in bmqt::QueueFlags::Enum), using the specified queueId to correlate events related to that queue. The object queueId referring to is modified, so the queueId represents the actual queue uri, flags and options. Return a result providing the status and context of the operation. Use the optionally specified options to configure some advanced settings. In general, a call to openQueueSync emits nothing.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int bmqa::MockSession::openQueueAsync (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the openQueueAsync(...) with callback flavor instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void bmqa::MockSession::openQueueAsync (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const OpenQueueCallback callback,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Asynchronously open the queue having the specified uri with the specified flags (a combination of the values defined in bmqt::QueueFlags::Enum). The object queueId referring to is modified, so the queueId represents the actual queue uri, flags and options. The result of the operation is communicated to the specified callback via a bmqa::OpenQueueStatus, providing an automatically generated correlation queueId and the status and context of the requested operation. Use the optionally specified options to configure some advanced settings. In general, a call to openQueueAsync does not emit a SessionEvent, but rather invokes the callback (if provided) instead when the corresponding emitEvent is called.

-

NOTE: openQueueAsync updates the queue state to e_OPENING which is further updated upon invocation of the callback (if provided) with a successful bmqa::OpenQueueStatus.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int bmqa::MockSession::configureQueue (QueueId queueId,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the 'configureQueueSync(QueueId *queueId...) instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
ConfigureQueueStatus bmqa::MockSession::configureQueueSync (const QueueId queueId,
const bmqt::QueueOptions options,
const bsls::TimeInterval &  timeout 
) [virtual]
-
-
-

Configure the queue identified by the specified queueId using the specified options to configure some advanced settings and return a result providing the status and context of the operation. In general, a call to configureQueueSync emits nothing.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int bmqa::MockSession::configureQueueAsync (QueueId queueId,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the configureQueueAsync(...) with callback flavor instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void bmqa::MockSession::configureQueueAsync (const QueueId queueId,
const bmqt::QueueOptions options,
const ConfigureQueueCallback callback,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Asynchronously configure the queue identified by the specified queueId using the specified options to configure some advanced settings. The result of the operation is communicated to the specified callback via a bmqa::ConfigureQueueStatus, providing the status and context of the requested operation. In general, a call to configureQueueAsync does not emit a SessionEvent, but rather invokes the callback (if provided) instead when the corresponding emitEvent is called.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::MockSession::closeQueue (QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the closeQueueSync(QueueId *queueId...) instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
CloseQueueStatus bmqa::MockSession::closeQueueSync (const QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Close the queue identified by the specified queueId using the specified timeout. Populate the optionally specified result with the status and context of the operation and return a value providing the status of the operation. In general, a call to closeQueueSync emits nothing.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::MockSession::closeQueueAsync (QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the closeQueueAsync(...) with callback flavor instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void bmqa::MockSession::closeQueueAsync (const QueueId queueId,
const CloseQueueCallback callback,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Asynchronously close the queue identified by the specified queueId using the specified timeout. The result of the operation is communicated to the specified callback via a bmqa::CloseQueueStatus, providing the status and context of the requested operation. In general, a call to closeQueueAsync does not emit a SessionEvent, but rather invokes the callback (if provided) instead when the corresponding emitEvent is called.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
Event bmqa::MockSession::nextEvent (const bsls::TimeInterval &  timeout = bsls::TimeInterval() )  [virtual]
-
-
-

Returns the nextEvent emitted.

-

NOTE: This method should only be used when the MockSession has been created in synchronous mode. It is invalid if used in asynchronous mode and your test case is likely to be faulty if used with such a set up.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
int bmqa::MockSession::post (const MessageEvent messageEvent )  [virtual]
-
-
-

Post the specified messageEvent. Return values are defined as per bmqt::PostResult. In general a call to post emits a MessageEvent of type e_ACK or no response if acks are not requested.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
int bmqa::MockSession::confirmMessage (const Message message )  [virtual]
-
-
-

Asynchronously confirm the receipt of the specified message. This indicates that the application is done processing the message and that the broker can safely discard it from the queue according to the retention policy set up for that queue. Return 0 on success, and a non-zero value otherwise. Note that success implies that SDK has accepted the message and will eventually send confirmation notification to the broker.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
int bmqa::MockSession::confirmMessage (const MessageConfirmationCookie cookie )  [virtual]
-
-
-

Asynchronously confirm the receipt of the message with which the specified cookie is associated. This indicates that the application is done processing the message and that the broker can safely discard it from the queue according to the retention policy set up for that queue. Return 0 on success, and a non-zero value otherwise. Note that success implies that SDK has accepted the message and will eventually send confirmation notification to the broker.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
int bmqa::MockSession::confirmMessages (ConfirmEventBuilder builder )  [virtual]
-
-
-

Confirm messages specified by the message, cookie or builder. Return values are defined as per bmqt::GenericResult. No event is emitted for calls to confirmMessage.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
int bmqa::MockSession::configureMessageDumping (const bslstl::StringRef &  command )  [virtual]
-
-
-

Configure this session instance to dump messages to the installed logger at ball::Severity::INFO level according to the specified command that should adhere to the following pattern:

-
           IN|OUT ON|OFF|100|10s
-

where each token has a specific meaning:

-
    -
  • -IN : incoming (PUSH and ACK) events
  • -
  • -OUT : outgoing (PUT and CONFIRM) events
  • -
  • -ON : turn on message dumping until explicitly turned off
  • -
  • -OFF : turn off message dumping
  • -
  • -100 : turn on message dumping for the next 100 messages
  • -
  • -10s : turn on message dumping for the next 10 seconds
  • -
-

Note that above, 100 and 10 numerical values are for just for illustration purposes, and application can choose an appropriate value for them. Also note that pattern is case-insensitive. Return zero if command is valid and message dumping has been configured, non-zero value otherwise. The behavior is undefined unless the session has been started.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
void bmqa::MockSession::setFailureCallback (const FailureCb failureCb ) 
-
-
-

Set the failure callback of to be the specified failureCb. This callback is invoked whenever an expectation set by the test driver is not met.

- -
-
- -
-
- - - - - - - - - -
bool bmqa::MockSession::popPostedEvent (bmqa::MessageEvent event ) 
-
-
-

Load into the specified event the next posted event on this session, if any, and return true; leave event unchanged and return false otherwise.

- -
-
- -
-
- - - - - - - - -
size_t bmqa::MockSession::unconfirmedMessages ( )  const
-
-
-

Get the number of unconfirmed messages. This corresponds to the number of push messages enqueued to the session object but not yet confirmed by the application.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MockSession.png b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MockSession.png deleted file mode 100644 index 7e08b4bc6..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1MockSession.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1OpenQueueStatus-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1OpenQueueStatus-members.html deleted file mode 100644 index 84e77c71d..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1OpenQueueStatus-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - -Class bmqa::OpenQueueStatus Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- -
- - -
-
-

bmqa::OpenQueueStatus Member List

-
-
-This is the complete list of members for bmqa::OpenQueueStatus, including all inherited members. - - - - - - - - - -
errorDescription() const bmqa::OpenQueueStatus
OpenQueueStatus(bslma::Allocator *allocator=0)bmqa::OpenQueueStatus [explicit]
OpenQueueStatus(const bmqa::OpenQueueStatus &other, bslma::Allocator *allocator=0)bmqa::OpenQueueStatus
OpenQueueStatus(const QueueId &queueId, bmqt::OpenQueueResult::Enum result, const bsl::string &errorDescription, bslma::Allocator *allocator=0)bmqa::OpenQueueStatus
operator bool() const bmqa::OpenQueueStatus
operator=(const OpenQueueStatus &rhs)bmqa::OpenQueueStatus
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqa::OpenQueueStatus
queueId() const bmqa::OpenQueueStatus
result() const bmqa::OpenQueueStatus
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1OpenQueueStatus.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1OpenQueueStatus.html deleted file mode 100644 index 2eb1efa55..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1OpenQueueStatus.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - -Class bmqa::OpenQueueStatus - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::OpenQueueStatus Class Reference

-
-
- -

#include <bmqa_openqueuestatus.h>

- -

List of all members.

- - - - - - - - - - - -

-Public Member Functions

 OpenQueueStatus (bslma::Allocator *allocator=0)
 OpenQueueStatus (const bmqa::OpenQueueStatus &other, bslma::Allocator *allocator=0)
 OpenQueueStatus (const QueueId &queueId, bmqt::OpenQueueResult::Enum result, const bsl::string &errorDescription, bslma::Allocator *allocator=0)
OpenQueueStatusoperator= (const OpenQueueStatus &rhs)
 operator bool () const
const QueueIdqueueId () const
bmqt::OpenQueueResult::Enum result () const
const bsl::string & errorDescription () const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
-

Detailed Description

-

A value-semantic type for an open queue operation with the message queue broker.

-

See Component bmqa_openqueuestatus

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
bmqa::OpenQueueStatus::OpenQueueStatus (bslma::Allocator *  allocator = 0 )  [explicit]
-
-
-

Default constructor, use the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqa::OpenQueueStatus::OpenQueueStatus (const bmqa::OpenQueueStatus other,
bslma::Allocator *  allocator = 0 
)
-
-
-

Create a new bmqa::OpenQueueStatus using the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bmqa::OpenQueueStatus::OpenQueueStatus (const QueueId queueId,
bmqt::OpenQueueResult::Enum  result,
const bsl::string &  errorDescription,
bslma::Allocator *  allocator = 0 
)
-
-
-

Create a new bmqa::OpenQueueStatus object having the specified queueId, result, and errorDescription, using the optionally specified allocator to supply memory.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
OpenQueueStatus& bmqa::OpenQueueStatus::operator= (const OpenQueueStatus rhs ) 
-
-
-

Assignment operator from the specified rhs.

- -
-
- -
-
- - - - - - - - -
bmqa::OpenQueueStatus::operator bool ( )  const
-
-
-

Return true if this result indicates success, and false otherwise.

- -
-
- -
-
- - - - - - - - -
const QueueId& bmqa::OpenQueueStatus::queueId ( )  const
-
-
-

Return the queueId associated to this operation result, if any.

- -
-
- -
-
- - - - - - - - -
bmqt::OpenQueueResult::Enum bmqa::OpenQueueStatus::result ( )  const
-
-
-

Return the result code that indicates success or the cause of a failure.

- -
-
- -
-
- - - - - - - - -
const bsl::string& bmqa::OpenQueueStatus::errorDescription ( )  const
-
-
-

Return a printable description of the error, if result indicates failure. Return an empty string otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::OpenQueueStatus::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1QueueId-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1QueueId-members.html deleted file mode 100644 index a1fcab2e5..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1QueueId-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - -Class bmqa::QueueId Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::QueueId Member List

-
-
-This is the complete list of members for bmqa::QueueId, including all inherited members. - - - - - - - - - - - - - - - - -
correlationId() const bmqa::QueueId
flags() const bmqa::QueueId
isValid() const bmqa::QueueId
operator!=(const QueueId &lhs, const QueueId &rhs)bmqa::QueueId [friend]
operator<(const QueueId &lhs, const QueueId &rhs)bmqa::QueueId [friend]
operator=(const QueueId &rhs)bmqa::QueueId
operator==(const QueueId &lhs, const QueueId &rhs)bmqa::QueueId [friend]
options() const bmqa::QueueId
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqa::QueueId
QueueId(bslma::Allocator *allocator=0)bmqa::QueueId [explicit]
QueueId(const QueueId &other, bslma::Allocator *allocator=0)bmqa::QueueId
QueueId(const bmqt::CorrelationId &correlationId, bslma::Allocator *allocator=0)bmqa::QueueId [explicit]
QueueId(bsls::Types::Int64 numeric, bslma::Allocator *allocator=0)bmqa::QueueId [explicit]
QueueId(void *pointer, bslma::Allocator *allocator=0)bmqa::QueueId [explicit]
QueueId(const bsl::shared_ptr< void > &sharedPtr, bslma::Allocator *allocator=0)bmqa::QueueId [explicit]
uri() const bmqa::QueueId
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1QueueId.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1QueueId.html deleted file mode 100644 index db8001572..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1QueueId.html +++ /dev/null @@ -1,501 +0,0 @@ - - - - -Class bmqa::QueueId - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::QueueId Class Reference

-
-
- -

#include <bmqa_queueid.h>

- -

List of all members.

- - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 QueueId (bslma::Allocator *allocator=0)
 QueueId (const QueueId &other, bslma::Allocator *allocator=0)
 QueueId (const bmqt::CorrelationId &correlationId, bslma::Allocator *allocator=0)
 QueueId (bsls::Types::Int64 numeric, bslma::Allocator *allocator=0)
 QueueId (void *pointer, bslma::Allocator *allocator=0)
 QueueId (const bsl::shared_ptr< void > &sharedPtr, bslma::Allocator *allocator=0)
QueueIdoperator= (const QueueId &rhs)
const bmqt::CorrelationIdcorrelationId () const
bsls::Types::Uint64 flags () const
const bmqt::Uriuri () const
const bmqt::QueueOptionsoptions () const
bool isValid () const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const

-Friends

bool operator== (const QueueId &lhs, const QueueId &rhs)
bool operator!= (const QueueId &lhs, const QueueId &rhs)
bool operator< (const QueueId &lhs, const QueueId &rhs)
-

Detailed Description

-

Value-semantic efficient identifier for a queue

-

See Component bmqa_queueid

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
bmqa::QueueId::QueueId (bslma::Allocator *  allocator = 0 )  [explicit]
-
-
-

Default constructor. Create a new QueueId associated with an automatically generated correlation Id, using the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqa::QueueId::QueueId (const QueueId other,
bslma::Allocator *  allocator = 0 
)
-
-
-

Copy constructor, create a new queueId having the same values as the specified other, and using the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqa::QueueId::QueueId (const bmqt::CorrelationId correlationId,
bslma::Allocator *  allocator = 0 
) [explicit]
-
-
-

Create a new QueueId associated to the correlation Id having the specified correlationId value, using the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqa::QueueId::QueueId (bsls::Types::Int64  numeric,
bslma::Allocator *  allocator = 0 
) [explicit]
-
-
-

Create a new QueueId associated to the correlation Id having the specified numeric correlationId value, using the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqa::QueueId::QueueId (void *  pointer,
bslma::Allocator *  allocator = 0 
) [explicit]
-
-
-

Create a new QueueId associated to the correlation Id having the specified pointer correlationId value, using the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqa::QueueId::QueueId (const bsl::shared_ptr< void > &  sharedPtr,
bslma::Allocator *  allocator = 0 
) [explicit]
-
-
-

Create a new QueueId associated to the correlation Id having the specified sharedPtr correlationId value, using the optionally specified allocator. The lifetime of sharedPtr is tied to this object, and it is the responsibility of the user to manage it accordingly.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
QueueId& bmqa::QueueId::operator= (const QueueId rhs ) 
-
-
-

Assignment operator, from the specified rhs using the specified allocator.

- -
-
- -
-
- - - - - - - - -
const bmqt::CorrelationId& bmqa::QueueId::correlationId ( )  const
-
-
-

Return the correlationId associated to this QueueId. The behavior is undefined unless this QueueId is valid.

- -
-
- -
-
- - - - - - - - -
bsls::Types::Uint64 bmqa::QueueId::flags ( )  const
-
-
-

Return the flags used when opening this queue.

- -
-
- -
-
- - - - - - - - -
const bmqt::Uri& bmqa::QueueId::uri ( )  const
-
-
-

Return the URI associated to this QueueId. The behavior is undefined unless this QueueId is valid.

- -
-
- -
-
- - - - - - - - -
const bmqt::QueueOptions& bmqa::QueueId::options ( )  const
-
-
-

Return the options used when opening this queue.

- -
-
- -
-
- - - - - - - - -
bool bmqa::QueueId::isValid ( )  const
-
-
-

Return whether this QueueId is valid, i.e., is associated to an opened queue.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::QueueId::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-

Friends And Related Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
bool operator== (const QueueId lhs,
const QueueId rhs 
) [friend]
-
-
-

Return true if rhs object contains the value of the same type as contained in lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool operator!= (const QueueId lhs,
const QueueId rhs 
) [friend]
-
-
-

Return false if rhs object contains the value of the same type as contained in lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool operator< (const QueueId lhs,
const QueueId rhs 
) [friend]
-
-
-

Operator used to allow comparison between the specified lhs and rhs CorrelationId objects so that CorrelationId can be used as key in a map.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Session-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Session-members.html deleted file mode 100644 index 2629ee580..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Session-members.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -Class bmqa::Session Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::Session Member List

-
-
-This is the complete list of members for bmqa::Session, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
closeQueue(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
closeQueue(const QueueId &queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::Session [virtual]
closeQueueAsync(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
closeQueueAsync(const QueueId *queueId, const CloseQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
closeQueueAsync(const QueueId &queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::Session [virtual]
CloseQueueCallback typedefbmqa::Session
closeQueueSync(const QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
configureMessageDumping(const bslstl::StringRef &command) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
configureQueue(QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
configureQueueAsync(QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
configureQueueAsync(const QueueId *queueId, const bmqt::QueueOptions &options, const ConfigureQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
ConfigureQueueCallback typedefbmqa::Session
configureQueueSync(const QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
confirmMessage(const Message &message) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
confirmMessage(const MessageConfirmationCookie &cookie) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
confirmMessages(ConfirmEventBuilder *builder) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
createMessageEventBuilder()bmqa::Session [virtual]
finalizeStop() BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
getQueueId(QueueId *queueId, const bmqt::Uri &uri) const BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
getQueueId(QueueId *queueId, const bmqt::CorrelationId &correlationId) const BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
impl()bmqa::Session
loadConfirmEventBuilder(ConfirmEventBuilder *builder) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
loadMessageEventBuilder(MessageEventBuilder *builder) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
loadMessageProperties(MessageProperties *buffer) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
nextEvent(const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
openQueue(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
openQueue(const QueueId &queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())bmqa::Session [virtual]
openQueueAsync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
openQueueAsync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const OpenQueueCallback &callback, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
OpenQueueCallback typedefbmqa::Session
openQueueSync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
post(const MessageEvent &event) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
Session(const bmqt::SessionOptions &options=bmqt::SessionOptions(), bslma::Allocator *allocator=0)bmqa::Session [explicit]
Session(bslma::ManagedPtr< SessionEventHandler > eventHandler, const bmqt::SessionOptions &options=bmqt::SessionOptions(), bslma::Allocator *allocator=0)bmqa::Session [explicit]
start(const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
startAsync(const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
stop() BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
stopAsync() BSLS_KEYWORD_OVERRIDEbmqa::Session [virtual]
~AbstractSession()bmqa::AbstractSession [virtual]
~Session() BSLS_KEYWORD_OVERRIDEbmqa::Session
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Session.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Session.html deleted file mode 100644 index 13137f1a0..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Session.html +++ /dev/null @@ -1,1282 +0,0 @@ - - - - -Class bmqa::Session - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::Session Class Reference

-
-
- -

#include <bmqa_session.h>

-
-Inheritance diagram for bmqa::Session:
-
-
- - -bmqa::AbstractSession - -
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

typedef
-AbstractSession::OpenQueueCallback 
OpenQueueCallback
typedef
-AbstractSession::ConfigureQueueCallback 
ConfigureQueueCallback
typedef
-AbstractSession::CloseQueueCallback 
CloseQueueCallback

-Public Member Functions

 Session (const bmqt::SessionOptions &options=bmqt::SessionOptions(), bslma::Allocator *allocator=0)
 Session (bslma::ManagedPtr< SessionEventHandler > eventHandler, const bmqt::SessionOptions &options=bmqt::SessionOptions(), bslma::Allocator *allocator=0)
 ~Session () BSLS_KEYWORD_OVERRIDE
int start (const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int startAsync (const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
void stop () BSLS_KEYWORD_OVERRIDE
void stopAsync () BSLS_KEYWORD_OVERRIDE
void finalizeStop () BSLS_KEYWORD_OVERRIDE
virtual MessageEventBuilder createMessageEventBuilder ()
void loadMessageEventBuilder (MessageEventBuilder *builder) BSLS_KEYWORD_OVERRIDE
void loadConfirmEventBuilder (ConfirmEventBuilder *builder) BSLS_KEYWORD_OVERRIDE
void loadMessageProperties (MessageProperties *buffer) BSLS_KEYWORD_OVERRIDE
int getQueueId (QueueId *queueId, const bmqt::Uri &uri) const BSLS_KEYWORD_OVERRIDE
int getQueueId (QueueId *queueId, const bmqt::CorrelationId &correlationId) const BSLS_KEYWORD_OVERRIDE
int openQueue (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
OpenQueueStatus openQueueSync (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
virtual int openQueue (const QueueId &queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
int openQueueAsync (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
void openQueueAsync (QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const OpenQueueCallback &callback, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int configureQueue (QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
ConfigureQueueStatus configureQueueSync (const QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int configureQueueAsync (QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
void configureQueueAsync (const QueueId *queueId, const bmqt::QueueOptions &options, const ConfigureQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int closeQueue (QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
CloseQueueStatus closeQueueSync (const QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
virtual int closeQueue (const QueueId &queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())
int closeQueueAsync (QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
void closeQueueAsync (const QueueId *queueId, const CloseQueueCallback &callback, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
virtual int closeQueueAsync (const QueueId &queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())
Event nextEvent (const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int post (const MessageEvent &event) BSLS_KEYWORD_OVERRIDE
int confirmMessage (const Message &message) BSLS_KEYWORD_OVERRIDE
int confirmMessage (const MessageConfirmationCookie &cookie) BSLS_KEYWORD_OVERRIDE
int confirmMessages (ConfirmEventBuilder *builder) BSLS_KEYWORD_OVERRIDE
int configureMessageDumping (const bslstl::StringRef &command) BSLS_KEYWORD_OVERRIDE
void * impl ()
-

Detailed Description

-

A session with a BlazingMQ broker.

-

See Component bmqa_session

-

Member Typedef Documentation

- -
- -
-

Invoked as a response to an asynchronous open queue operation, OpenQueueCallback is an alias for a callback function object (functor) that takes as an argument the specified result, providing the result and context of the requested operation.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
- -
-

Invoked as a response to an asynchronous configure queue operation, ConfigureQueueCallback is an alias for a callback function object (functor) that takes as an argument the specified result, providing the result and context of the requested operation.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
- -
-

Invoked as a response to an asynchronous close queue operation, CloseQueueCallback is an alias for a callback function object (functor) that takes as an argument the specified result, providing the result and context of the requested operation.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
bmqa::Session::Session (const bmqt::SessionOptions options = bmqt::SessionOptions(),
bslma::Allocator *  allocator = 0 
) [explicit]
-
-
-

Create a new Session in synchronous mode using the optionally specified options. In such mode, events have to be fetched by the application using the nextEvent() method. Optionally specify an allocator used to supply memory. If allocator is 0, the currently installed default allocator is used.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bmqa::Session::Session (bslma::ManagedPtr< SessionEventHandler eventHandler,
const bmqt::SessionOptions options = bmqt::SessionOptions(),
bslma::Allocator *  allocator = 0 
) [explicit]
-
-
-

Create a Session in asynchronous mode using the specified eventHandler as callback for event processing and the optionally specified options. Optionally specify an allocator used to supply memory. If the optionally specified allocator is 0, the currently installed default allocator is used.

- -
-
- -
-
- - - - - - - - -
bmqa::Session::~Session ( ) 
-
-
-

Stop the Session and destroy this object.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
int bmqa::Session::start (const bsls::TimeInterval &  timeout = bsls::TimeInterval() )  [virtual]
-
-
-

Connect to the BlazingMQ broker and start the message processing for this Session. This method blocks until either the Session is connected to the broker, fails to connect, or the operation times out. If the optionally specified timeout is not populated, use the one defined in the session options. Return 0 on success, or a non-zero value corresponding to the bmqt::GenericResult::Enum enum values otherwise. The behavior is undefined if this method is called on an already started Session.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
int bmqa::Session::startAsync (const bsls::TimeInterval &  timeout = bsls::TimeInterval() )  [virtual]
-
-
-

Connect to the BlazingMQ broker and start the message processing for this Session. This method returns without blocking. The result of the operation is communicated with a session event. If the optionally specified timeout is not populated, use the one defined in the session options. Return 0 on success (this doesn't imply the session is connected !), or a non-zero value corresponding to the bmqt::GenericResult::Enum enum values otherwise. The behavior is undefined if this method is called on an already started Session.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - -
void bmqa::Session::stop ( )  [virtual]
-
-
-

Gracefully disconnect from the BlazingMQ broker and stop the operation of this Session. This method blocks waiting for all already invoked event handlers to exit and all session-related operations to be finished. No other method but start() may be used after this method returns. This method must NOT be called if the session is in synchronous mode (i.e., not using the EventHandler), stopAsync() should be called in this case.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - -
void bmqa::Session::stopAsync ( )  [virtual]
-
-
-

Disconnect from the BlazingMQ broker and stop the operation of this Session. This method returns without blocking and neither enforce nor waits for any already started session-related operation to be finished. No method may be used after this method returns.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - -
void bmqa::Session::finalizeStop ( )  [virtual]
-
-
-

**DEPRECATED**

-

This method is only to be used if the session is in synchronous mode (i.e., not using the EventHandler): it must be called once all threads getting events with nextEvent() have been joined.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - -
virtual MessageEventBuilder bmqa::Session::createMessageEventBuilder ( )  [virtual]
-
-
-

Return a MessageEventBuilder that can be used to build message event for posting on this session. The behavior is undefined unless the session has been successfully started. Note that lifetime of the returned object is bound by the lifetime of this session instance (i.e., returned instance cannot outlive this session instance). Also note that the MessageEventBuilder objects are pooled, so this operation is cheap, and MessageEventBuilder can be obtained on demand and kept on the stack.

-

DEPRECATED: Use the 'loadMessageEventBuilder instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -
-
- -
-
- - - - - - - - - -
void bmqa::Session::loadMessageEventBuilder (MessageEventBuilder builder )  [virtual]
-
-
-

Load into the specified builder an instance of bmqa::MessageEventBuilder that can be used to build message event for posting on this session. The behavior is undefined unless the session has been successfully started and builder is non-null. Note that lifetime of the loaded object is bound by the lifetime of this session instance (i.e., loaded instance cannot outlive this session instance). Also note that the MessageEventBuilder objects are pooled, so this operation is cheap, and MessageEventBuilder can be obtained on demand and kept on the stack.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
void bmqa::Session::loadConfirmEventBuilder (ConfirmEventBuilder builder )  [virtual]
-
-
-

Load into the specified builder an instance of bmqa::ConfirmEventBuilder that can be used to build a batch of CONFIRM messages for sending to the broker. The behavior is undefined unless the session has been successfully started and builder is non-null. Note that the lifetime of the loaded object is bound by the lifetime of this session instance (i.e., loaded instance cannot outlive this session instance).

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
void bmqa::Session::loadMessageProperties (MessageProperties buffer )  [virtual]
-
-
-

Load into the specified buffer an instance of MessageProperties that can be used to specify and associate properties while building a bmqa::Message. The behavior is undefined unless the session has been successfully started and buffer is non-null. Note that lifetime of the loaded object is bound by the lifetime of this session instance (i.e., loaded instance cannot outlive this session instance).

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::Session::getQueueId (QueueId queueId,
const bmqt::Uri uri 
) const [virtual]
-
-
-

Load in the specified queueId the queue corresponding to the specified uri and return 0 if such a queue was found, or leave queueId untouched and return a non-zero value if no queue corresponding to uri is currently open.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::Session::getQueueId (QueueId queueId,
const bmqt::CorrelationId correlationId 
) const [virtual]
-
-
-

Load in the specified queueId the queue corresponding to the specified correlationId and return 0 if such a queue was found, or leave queueId untouched and return a non-zero value if no queue corresponding to correlationId is currently open.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int bmqa::Session::openQueue (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the openQueueSync(QueueId *queueId...) instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OpenQueueStatus bmqa::Session::openQueueSync (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Open the queue having the specified uri with the specified flags (a combination of the values defined in bmqt::QueueFlags::Enum), using the specified queueId to correlate events related to that queue. The object queueId referring to is modified, so the queueId represents the actual queue uri, flags and options. Return a result providing the status and context of the operation. Use the optionally specified options to configure some advanced settings. Note that this operation fails if queueId is non-unique. If the optionally specified timeout is not populated, use the one defined in the session options. This operation will block until either success, failure, or timing out happens.

-

THREAD: Note that calling this method from the event processing thread(s) (i.e., from the EventHandler callback, if provided) WILL lead to a DEADLOCK.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual int bmqa::Session::openQueue (const QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the openQueue(QueueId *queueId...) instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int bmqa::Session::openQueueAsync (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the openQueueAsync(...) with callback flavor instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void bmqa::Session::openQueueAsync (QueueId queueId,
const bmqt::Uri uri,
bsls::Types::Uint64  flags,
const OpenQueueCallback callback,
const bmqt::QueueOptions options = bmqt::QueueOptions(),
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Asynchronously open the queue having the specified uri with the specified flags (a combination of the values defined in bmqt::QueueFlags::Enum), using the specified queueId to correlate events related to that queue and the optionally specified options to configure some advanced settings. The object queueId referring to is modified, so the queueId represents the actual queue uri, flags and options. The result of the operation is communicated to the specified callback via a bmqa::OpenQueueStatus, providing the status and context of the requested operation. Note that this operation fails if queueId is non-unique. If the optionally specified timeout is not populated, use the one defined in the session options.

-

THREAD: The callback will ALWAYS be invoked from the EventHandler thread(s) (or if a SessionEventHandler was not specified, from the thread invoking nextEvent).

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int bmqa::Session::configureQueue (QueueId queueId,
const bmqt::QueueOptions options,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the 'configureQueueSync(QueueId *queueId...) instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
ConfigureQueueStatus bmqa::Session::configureQueueSync (const QueueId queueId,
const bmqt::QueueOptions options,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Configure the queue identified by the specified queueId using the specified options and return a result providing the status and context of the operation. If the optionally specified timeout is not populated, use the one defined in the session options. This operation returns error if there is a pending configure for the same queue. This operation will block until either success, failure, or timing out happens.

-

Note that the following bmqt::QueueOptions fields cannot be reconfigured after the queue has been opened:

-
    -
  • suspendsOnBadHostHealth Attempts to reconfigure these fields will yield an e_NOT_SUPPORTED error code.
  • -
-

THREAD: Note that calling this method from the event processing thread(s) (i.e., from the EventHandler callback, if provided) WILL lead to a DEADLOCK.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int bmqa::Session::configureQueueAsync (QueueId queueId,
const bmqt::QueueOptions options,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the configureQueueAsync(...) with callback flavor instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void bmqa::Session::configureQueueAsync (const QueueId queueId,
const bmqt::QueueOptions options,
const ConfigureQueueCallback callback,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Asynchronously configure the queue identified by the specified queueId using the specified options to configure some advanced settings. The result of the operation is communicated to the specified callback via a bmqa::ConfigureQueueStatus, providing the status and context of the requested operation. If the optionally specified timeout is not populated, use the one defined in the session options.

-

Note that the following bmqt::QueueOptions fields cannot be reconfigured after the queue has been opened:

-
    -
  • suspendsOnBadHostHealth Attempts to reconfigure these fields will yield an e_NOT_SUPPORTED error code.
  • -
-

THREAD: The callback will ALWAYS be invoked from the EventHandler thread(s) (or if a SessionEventHandler was not specified, from the thread invoking nextEvent).

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::Session::closeQueue (QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the 'closeQueueSync(QueueId *queueId...) instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
CloseQueueStatus bmqa::Session::closeQueueSync (const QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Close the queue identified by the specified queueId and return a result providing the status and context of the operation. If the optionally specified timeout is not populated, use the one defined in the session options. Any outstanding configureQueue request for this queueId will be canceled. This operation will block until either success, failure, or timing out happens. Once this method returns, there is guarantee that no more messages and events for this queueId will be received. Note that successful processing of this request in the broker closes this session's view of the queue; the underlying queue may not be deleted in the broker. When this method returns, the correlationId associated to the queue is cleared.

-

THREAD: Note that calling this method from the event processing thread(s) (i.e., from the EventHandler callback, if provided) WILL lead to a DEADLOCK.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual int bmqa::Session::closeQueue (const QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the 'closeQueue(QueueId *queueId...) instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqa::Session::closeQueueAsync (QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the closeQueueAsync(...) with callback flavor instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void bmqa::Session::closeQueueAsync (const QueueId queueId,
const CloseQueueCallback callback,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

Asynchronously close the queue identified by the specified queueId. Any outstanding configureQueue requests will be canceled. The result of the operation is communicated to the specified callback via a bmqa::CloseQueueStatus, providing the status and context of the operation. If the optionally specified timeout is not populated, use the one defined in the session options. Note that successful processing of this request in the broker closes this session's view of the queue; the underlying queue may not be deleted in the broker. The correlationId associated to the queue remains valid until the bmqa::CloseQueueStatus result has been received and processed by the callback, after which it will be cleared and no more messages and events for this queueId will be received.

-

THREAD: The callback will ALWAYS be invoked from the EventHandler thread(s) (or if a SessionEventHandler was not specified, from the thread invoking nextEvent).

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual int bmqa::Session::closeQueueAsync (const QueueId queueId,
const bsls::TimeInterval &  timeout = bsls::TimeInterval() 
) [virtual]
-
-
-

DEPRECATED: Use the closeQueueAsync(...) with callback flavor instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -
-
- -
-
- - - - - - - - - -
Event bmqa::Session::nextEvent (const bsls::TimeInterval &  timeout = bsls::TimeInterval() )  [virtual]
-
-
-

Return the next available event received for this session. If there is no event available, this method blocks for up to the optionally specified timeout time interval for an event to arrive. An empty time interval for timeout (the default) indicates that the method should not timeout (the method will not return until the next event is available). Return a bmqa::SessionEvent of type bmqt::SessionEventType::e_TIMEOUT if a timeout was specified and that timeout expired before any event was received. Note that this method can only be used if the session is in synchronous mode (ie not using the EventHandler). The behavior is undefined unless the session was started.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
int bmqa::Session::post (const MessageEvent event )  [virtual]
-
-
-

Asynchronously post the specified event that must contain one or more Messages. The return value is one of the values defined in the bmqt::PostResult::Enum enum. Return zero on success and a non-zero value otherwise. Note that success implies that SDK has accepted the event and will eventually deliver it to the broker. The behavior is undefined unless the session was started.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
int bmqa::Session::confirmMessage (const Message message )  [virtual]
-
-
-

Asynchronously confirm the receipt of the specified message. This indicates that the application is done processing the message and that the broker can safely discard it from the queue according to the retention policy set up for that queue. Return 0 on success, and a non-zero value otherwise. Note that success implies that SDK has accepted the message and will eventually send confirmation notification to the broker.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
int bmqa::Session::confirmMessage (const MessageConfirmationCookie cookie )  [virtual]
-
-
-

Asynchronously confirm the receipt of the message with which the specified cookie is associated. This indicates that the application is done processing the message and that the broker can safely discard it from the queue according to the retention policy set up for that queue. Return 0 on success, and a non-zero value otherwise. Note that success implies that SDK has accepted the message and will eventually send confirmation notification to the broker.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
int bmqa::Session::confirmMessages (ConfirmEventBuilder builder )  [virtual]
-
-
-

Asynchronously confirm the receipt of the batch of CONFIRM messages contained in the specified builder. This indicates that the application is done processing all of the messages and that the broker can safely discard them from the queue according to the retention policy set up for that queue. The return value is one of the values defined in the bmqt::GenericResult::Enum enum. Note that in case of success, the instance pointed by the builder will be reset. Also note that success implies that SDK has accepted all of the messages in builder and will eventually send confirmation notification to the broker, whereas failure implies that none of the messages in builder were accepted. Behavior is undefined unless builder is non-null.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - - -
int bmqa::Session::configureMessageDumping (const bslstl::StringRef &  command )  [virtual]
-
-
-

Configure this session instance to dump messages to the installed logger at ball::Severity::INFO level according to the specified command that should adhere to the following pattern:

-
           IN|OUT|PUSH|ACK|PUT|CONFIRM ON|OFF|100|10s
-

where each token has a specific meaning:

-
    -
  • -IN : incoming (PUSH and ACK) events
  • -
  • -OUT : outgoing (PUT and CONFIRM) events
  • -
  • -PUSH : incoming PUSH events
  • -
  • -ACK : incoming ACK events
  • -
  • -PUT : outgoing PUT events
  • -
  • -CONFIRM : outgoing CONFIRM events
  • -
  • -ON : turn on message dumping until explicitly turned off
  • -
  • -OFF : turn off message dumping
  • -
  • -100 : turn on message dumping for the next 100 messages
  • -
  • -10s : turn on message dumping for the next 10 seconds
  • -
-

Above, the numerical values 100 and 10 are just for illustration purposes, and application can choose an appropriate positive numeric value for them. Also, pattern is case-insensitive. Return zero if command is valid and message dumping has been configured, non-zero value otherwise. The behavior is undefined unless the session has been started.

- -

Reimplemented from bmqa::AbstractSession.

- -
-
- -
-
- - - - - - - - -
void* bmqa::Session::impl ( ) 
-
-
-

Do NOT use. Internal function, reserved for BlazingMQ internal usage.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Session.png b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Session.png deleted file mode 100644 index 1fdc1788a..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1Session.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1SessionEvent-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1SessionEvent-members.html deleted file mode 100644 index 3bc0180f0..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1SessionEvent-members.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -Class bmqa::SessionEvent Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- -
- - -
-
-

bmqa::SessionEvent Member List

-
-
-This is the complete list of members for bmqa::SessionEvent, including all inherited members. - - - - - - - - - - - -
correlationId() const bmqa::SessionEvent
errorDescription() const bmqa::SessionEvent
operator!=(const SessionEvent &lhs, const SessionEvent &rhs)bmqa::SessionEvent [friend]
operator=(const SessionEvent &rhs)bmqa::SessionEvent
operator==(const SessionEvent &lhs, const SessionEvent &rhs)bmqa::SessionEvent [friend]
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqa::SessionEvent
queueId() const bmqa::SessionEvent
SessionEvent()bmqa::SessionEvent [explicit]
SessionEvent(const SessionEvent &other)bmqa::SessionEvent
statusCode() const bmqa::SessionEvent
type() const bmqa::SessionEvent
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1SessionEvent.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1SessionEvent.html deleted file mode 100644 index 50dad33f3..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1SessionEvent.html +++ /dev/null @@ -1,346 +0,0 @@ - - - - -Class bmqa::SessionEvent - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::SessionEvent Class Reference

-
-
- -

#include <bmqa_sessionevent.h>

- -

List of all members.

- - - - - - - - - - - - - - -

-Public Member Functions

 SessionEvent ()
 SessionEvent (const SessionEvent &other)
SessionEventoperator= (const SessionEvent &rhs)
bmqt::SessionEventType::Enum type () const
const bmqt::CorrelationIdcorrelationId () const
QueueId queueId () const
int statusCode () const
const bsl::string & errorDescription () const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const

-Friends

bool operator== (const SessionEvent &lhs, const SessionEvent &rhs)
bool operator!= (const SessionEvent &lhs, const SessionEvent &rhs)
-

Detailed Description

-

An event related to the operation of a Session.

-

See Component bmqa_sessionevent

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqa::SessionEvent::SessionEvent ( )  [explicit]
-
-
-

Default constructor

- -
-
- -
-
- - - - - - - - - -
bmqa::SessionEvent::SessionEvent (const SessionEvent other ) 
-
-
-

Create a new SessionEvent having the same values (pointing to the same pimpl) as the specified other.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
SessionEvent& bmqa::SessionEvent::operator= (const SessionEvent rhs ) 
-
-
-

Assign to this SessionEvent the same values as the one from the specified rhs (i.e., reference the same pimpl).

- -
-
- -
-
- - - - - - - - -
bmqt::SessionEventType::Enum bmqa::SessionEvent::type ( )  const
-
-
-

Return the session event type.

- -
-
- -
-
- - - - - - - - -
const bmqt::CorrelationId& bmqa::SessionEvent::correlationId ( )  const
-
-
-

Return the correlationId associated to this event, if any.

- -
-
- -
-
- - - - - - - - -
QueueId bmqa::SessionEvent::queueId ( )  const
-
-
-

Return the queueId associated to this event, if any. The behavior is undefined unless this event corresponds to a queue related event (i.e. OPEN, CONFIGURE, CLOSE, REOPEN).

- -
-
- -
-
- - - - - - - - -
int bmqa::SessionEvent::statusCode ( )  const
-
-
-

Return the status code that indicates success or the cause of a failure.

- -
-
- -
-
- - - - - - - - -
const bsl::string& bmqa::SessionEvent::errorDescription ( )  const
-
-
-

Return a printable description of the error, if statusCode returns non-zero. Return an empty string otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::SessionEvent::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-

Friends And Related Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
bool operator== (const SessionEvent lhs,
const SessionEvent rhs 
) [friend]
-
-
-

Return true if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool operator!= (const SessionEvent lhs,
const SessionEvent rhs 
) [friend]
-
-
-

Return false if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1SessionEventHandler-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1SessionEventHandler-members.html deleted file mode 100644 index ddc8ad94d..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1SessionEventHandler-members.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - -Class bmqa::SessionEventHandler Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::SessionEventHandler Member List

-
-
-This is the complete list of members for bmqa::SessionEventHandler, including all inherited members. - - - -
onMessageEvent(const MessageEvent &event)=0bmqa::SessionEventHandler [pure virtual]
onSessionEvent(const SessionEvent &event)=0bmqa::SessionEventHandler [pure virtual]
~SessionEventHandler()bmqa::SessionEventHandler [virtual]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1SessionEventHandler.html b/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1SessionEventHandler.html deleted file mode 100644 index 6d0a54665..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqa_1_1SessionEventHandler.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - -Class bmqa::SessionEventHandler - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::SessionEventHandler Class Reference

-
-
- -

#include <bmqa_session.h>

- -

List of all members.

- - - - - -

-Public Member Functions

virtual ~SessionEventHandler ()
virtual void onSessionEvent (const SessionEvent &event)=0
virtual void onMessageEvent (const MessageEvent &event)=0
-

Detailed Description

-

Pure protocol for an asynchronous event handler. The implementation must be thread safe if the Session is configured to use multiple threads.

-

See Component bmqa_session

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
virtual bmqa::SessionEventHandler::~SessionEventHandler ( )  [virtual]
-
-
-

Destroy this object.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
virtual void bmqa::SessionEventHandler::onSessionEvent (const SessionEvent event )  [pure virtual]
-
-
-

Process the specified session event (connected, disconnected, queue opened, queue closed, etc.).

- -
-
- -
-
- - - - - - - - - -
virtual void bmqa::SessionEventHandler::onMessageEvent (const MessageEvent event )  [pure virtual]
-
-
-

Process the specified message event containing one or more messages.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTContext-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTContext-members.html deleted file mode 100644 index 4c4af1edd..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTContext-members.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - -Class bmqpi::DTContext Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqpi::DTContext Member List

-
-
-This is the complete list of members for bmqpi::DTContext, including all inherited members. - - - -
scope(const bsl::shared_ptr< DTSpan > &newSpan)=0bmqpi::DTContext [pure virtual]
span() const =0bmqpi::DTContext [pure virtual]
~DTContext()bmqpi::DTContext [virtual]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTContext.html b/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTContext.html deleted file mode 100644 index c78b58c6d..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTContext.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - -Class bmqpi::DTContext - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqpi::DTContext Class Reference

-
-
- -

#include <bmqpi_dtcontext.h>

- -

List of all members.

- - - - - -

-Public Member Functions

virtual ~DTContext ()
virtual bsl::shared_ptr
-< bmqpi::DTSpan
span () const =0
virtual bslma::ManagedPtr< void > scope (const bsl::shared_ptr< DTSpan > &newSpan)=0
-

Detailed Description

-

A pure interface for a context with a notion of a current span.

-

See Component bmqpi_dtcontext

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
virtual bmqpi::DTContext::~DTContext ( )  [virtual]
-
-
-

Destructor

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual bsl::shared_ptr<bmqpi::DTSpan> bmqpi::DTContext::span ( )  const [pure virtual]
-
-
-

Returns the current DTSpan for the calling thread according to this DTContext, or an empty shared_ptr if no span is currently set.

- -
-
- -
-
- - - - - - - - - -
virtual bslma::ManagedPtr<void> bmqpi::DTContext::scope (const bsl::shared_ptr< DTSpan > &  newSpan )  [pure virtual]
-
-
-

Letting previous = span() on some thread T, returns an object token which promises:

-
    -
  • -span() will return newSpan when called on thread T, following the construction of token.
  • -
  • -span() will return previous when called on thread T, following the destruction of token.
  • -
-

Note that if token2 = scope(otherSpan) is called on thread T during the lifetime of token, then span() will return otherSpan. After token2 is destroyed, it will again return newSpan.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTSpan-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTSpan-members.html deleted file mode 100644 index 666f68fc8..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTSpan-members.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - -Class bmqpi::DTSpan Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqpi::DTSpan Member List

-
-
-This is the complete list of members for bmqpi::DTSpan, including all inherited members. - - -
operation() const =0bmqpi::DTSpan [pure virtual]
~DTSpan()bmqpi::DTSpan [virtual]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTSpan.html b/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTSpan.html deleted file mode 100644 index 338fa2f84..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTSpan.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - -Class bmqpi::DTSpan - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqpi::DTSpan Class Reference

-
-
- -

#include <bmqpi_dtspan.h>

- -

List of all members.

- - - - - - -

-Classes

class  BSLS_KEYWORD_FINAL

-Public Member Functions

virtual ~DTSpan ()
virtual bsl::string_view operation () const =0
-

Detailed Description

-

A pure interface for representing a span of a distributed trace.

-

See Component bmqpi_dtspan

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
virtual bmqpi::DTSpan::~DTSpan ( )  [virtual]
-
-
-

Destructor

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual bsl::string_view bmqpi::DTSpan::operation ( )  const [pure virtual]
-
-
-

Returns the name of the operation that this DTSpan represents.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTSpan_1_1BSLS__KEYWORD__FINAL-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTSpan_1_1BSLS__KEYWORD__FINAL-members.html deleted file mode 100644 index 3e1a08806..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTSpan_1_1BSLS__KEYWORD__FINAL-members.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - -Class bmqpi::DTSpan::BSLS_KEYWORD_FINAL Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqpi::DTSpan::BSLS_KEYWORD_FINAL Member List

-
-
-This is the complete list of members for bmqpi::DTSpan::BSLS_KEYWORD_FINAL, including all inherited members. - - - - - - - - -
Baggage(bslma::Allocator *allocator=0)bmqpi::DTSpan::BSLS_KEYWORD_FINAL
begin() const bmqpi::DTSpan::BSLS_KEYWORD_FINAL
const_iterator typedefbmqpi::DTSpan::BSLS_KEYWORD_FINAL
end() const bmqpi::DTSpan::BSLS_KEYWORD_FINAL
erase(const bsl::string &key)bmqpi::DTSpan::BSLS_KEYWORD_FINAL
get(const bsl::string &key, const bsl::string_view &dflt="") const bmqpi::DTSpan::BSLS_KEYWORD_FINAL
has(const bsl::string &key) const bmqpi::DTSpan::BSLS_KEYWORD_FINAL
put(const bsl::string_view &key, const bsl::string_view &value)bmqpi::DTSpan::BSLS_KEYWORD_FINAL
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTSpan_1_1BSLS__KEYWORD__FINAL.html b/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTSpan_1_1BSLS__KEYWORD__FINAL.html deleted file mode 100644 index a4c1d931e..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTSpan_1_1BSLS__KEYWORD__FINAL.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - -Class bmqpi::DTSpan::BSLS_KEYWORD_FINAL - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqpi::DTSpan::BSLS_KEYWORD_FINAL Class Reference

-
-
- -

#include <bmqpi_dtspan.h>

- -

List of all members.

- - - - - - - - - - - -

-Public Types

typedef MapType::const_iterator const_iterator

-Public Member Functions

 Baggage (bslma::Allocator *allocator=0)
const_iterator begin () const
const_iterator end () const
bool has (const bsl::string &key) const
bsl::string_view get (const bsl::string &key, const bsl::string_view &dflt="") const
void put (const bsl::string_view &key, const bsl::string_view &value)
bool erase (const bsl::string &key)
-

Detailed Description

-

A set of key-values used to describe a DTSpan.

-

See Component bmqpi_dtspan

-

Member Typedef Documentation

- -
-
- - - - -
typedef MapType::const_iterator bmqpi::DTSpan::BSLS_KEYWORD_FINAL::const_iterator
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
bmqpi::DTSpan::BSLS_KEYWORD_FINAL::Baggage (bslma::Allocator *  allocator = 0 ) 
-
-
- -
-
- -
-
- - - - - - - - -
const_iterator bmqpi::DTSpan::BSLS_KEYWORD_FINAL::begin ( )  const
-
-
-

Returns a const-iterator used to iterate over key-values.

- -
-
- -
-
- - - - - - - - -
const_iterator bmqpi::DTSpan::BSLS_KEYWORD_FINAL::end ( )  const
-
-
-

Returns a const-iterator representing the end of key-values.

- -
-
- -
-
- - - - - - - - - -
bool bmqpi::DTSpan::BSLS_KEYWORD_FINAL::has (const bsl::string &  key )  const
-
-
-

Returns whether this object holds a value associated with the specified key.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::string_view bmqpi::DTSpan::BSLS_KEYWORD_FINAL::get (const bsl::string &  key,
const bsl::string_view &  dflt = "" 
) const
-
-
-

Returns the value currently associated with key, or dflt if no associated value is currently held.

-

Beware that if key is not found and the returned string_view outlives dflt, then the string_view will reference a deallocated address.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void bmqpi::DTSpan::BSLS_KEYWORD_FINAL::put (const bsl::string_view &  key,
const bsl::string_view &  value 
)
-
-
-

Stores the specified value associated with the specified key. Note that if such a key was already stored, then its associated value will be replaced by the supplied one.

- -
-
- -
-
- - - - - - - - - -
bool bmqpi::DTSpan::BSLS_KEYWORD_FINAL::erase (const bsl::string &  key ) 
-
-
-

Erases any value currently associated with key, and returns whether any such value was previously held.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTTracer-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTTracer-members.html deleted file mode 100644 index b6773dba2..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTTracer-members.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - -Class bmqpi::DTTracer Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqpi::DTTracer Member List

-
-
-This is the complete list of members for bmqpi::DTTracer, including all inherited members. - - -
createChildSpan(const bsl::shared_ptr< DTSpan > &parent, const bsl::string_view &operation, const DTSpan::Baggage &baggage=DTSpan::Baggage()) const =0bmqpi::DTTracer [pure virtual]
~DTTracer()bmqpi::DTTracer [virtual]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTTracer.html b/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTTracer.html deleted file mode 100644 index e65f3731b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1DTTracer.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - -Class bmqpi::DTTracer - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqpi::DTTracer Class Reference

-
-
- -

#include <bmqpi_dttracer.h>

- -

List of all members.

- - - - -

-Public Member Functions

virtual ~DTTracer ()
virtual bsl::shared_ptr< DTSpancreateChildSpan (const bsl::shared_ptr< DTSpan > &parent, const bsl::string_view &operation, const DTSpan::Baggage &baggage=DTSpan::Baggage()) const =0
-

Detailed Description

-

A pure interface for creators of DTSpan objects.

-

See Component bmqpi_dttracer

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
virtual bmqpi::DTTracer::~DTTracer ( )  [virtual]
-
-
-

Destructor

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual bsl::shared_ptr<DTSpan> bmqpi::DTTracer::createChildSpan (const bsl::shared_ptr< DTSpan > &  parent,
const bsl::string_view &  operation,
const DTSpan::Baggage &  baggage = DTSpan::Baggage() 
) const [pure virtual]
-
-
-

Creates and returns a new DTSpan representing operation as a child of parent, having the key-value tags defined by baggage.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1HostHealthMonitor-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1HostHealthMonitor-members.html deleted file mode 100644 index fd6c0d66e..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1HostHealthMonitor-members.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - -Class bmqpi::HostHealthMonitor Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqpi::HostHealthMonitor Member List

-
-
-This is the complete list of members for bmqpi::HostHealthMonitor, including all inherited members. - - - - -
HostHealthChangeFn typedefbmqpi::HostHealthMonitor
hostState() const =0bmqpi::HostHealthMonitor [pure virtual]
observeHostHealth(const HostHealthChangeFn &cb)=0bmqpi::HostHealthMonitor [pure virtual]
~HostHealthMonitor()bmqpi::HostHealthMonitor [virtual]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1HostHealthMonitor.html b/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1HostHealthMonitor.html deleted file mode 100644 index 518651008..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1HostHealthMonitor.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - -Class bmqpi::HostHealthMonitor - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqpi::HostHealthMonitor Class Reference

-
-
- -

#include <bmqpi_hosthealthmonitor.h>

-
-Inheritance diagram for bmqpi::HostHealthMonitor:
-
-
- - -bmqa::ManualHostHealthMonitor - -
- -

List of all members.

- - - - - - - -

-Public Types

typedef bsl::function< void(bmqt::HostHealthState::Enum)> HostHealthChangeFn

-Public Member Functions

virtual ~HostHealthMonitor ()
virtual bdlmt::SignalerConnection observeHostHealth (const HostHealthChangeFn &cb)=0
virtual bmqt::HostHealthState::Enum hostState () const =0
-

Detailed Description

-

A pure interface for monitoring the health of the host.

-

See Component bmqpi_hosthealthmonitor

-

Member Typedef Documentation

- -
- -
-

Invoked as a response to the HostHealthMonitor detecting a change in the state of the host health.

- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
virtual bmqpi::HostHealthMonitor::~HostHealthMonitor ( )  [virtual]
-
-
-

Destructor

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
virtual bdlmt::SignalerConnection bmqpi::HostHealthMonitor::observeHostHealth (const HostHealthChangeFn cb )  [pure virtual]
-
-
-

Registers the specified `cb` to be invoked each time the health of the host changes.

- -

Implemented in bmqa::ManualHostHealthMonitor.

- -
-
- -
-
- - - - - - - - -
virtual bmqt::HostHealthState::Enum bmqpi::HostHealthMonitor::hostState ( )  const [pure virtual]
-
-
-

Queries the current health of the host.

- -

Implemented in bmqa::ManualHostHealthMonitor.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1HostHealthMonitor.png b/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1HostHealthMonitor.png deleted file mode 100644 index dc91f896c..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/classbmqpi_1_1HostHealthMonitor.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1CorrelationId-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1CorrelationId-members.html deleted file mode 100644 index 427a6c204..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1CorrelationId-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - -Class bmqt::CorrelationId Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- -
- - -
-
-

bmqt::CorrelationId Member List

-
-
-This is the complete list of members for bmqt::CorrelationId, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
autoValue()bmqt::CorrelationId [static]
CorrelationId()bmqt::CorrelationId [explicit]
CorrelationId(bsls::Types::Int64 numeric)bmqt::CorrelationId [explicit]
CorrelationId(void *pointer)bmqt::CorrelationId [explicit]
CorrelationId(const bsl::shared_ptr< void > &sharedPtr)bmqt::CorrelationId [explicit]
CorrelationIdLessbmqt::CorrelationId [friend]
e_AUTO_VALUE enum valuebmqt::CorrelationId
e_NUMERIC enum valuebmqt::CorrelationId
e_POINTER enum valuebmqt::CorrelationId
e_SHARED_PTR enum valuebmqt::CorrelationId
e_UNSET enum valuebmqt::CorrelationId
hashAppend(HASH_ALGORITHM &hashAlgo, const CorrelationId &value)bmqt::CorrelationId [friend]
isAutoValue() const bmqt::CorrelationId
isNumeric() const bmqt::CorrelationId
isPointer() const bmqt::CorrelationId
isSharedPtr() const bmqt::CorrelationId
isUnset() const bmqt::CorrelationId
makeUnset()bmqt::CorrelationId
operator!=(const CorrelationId &lhs, const CorrelationId &rhs)bmqt::CorrelationId [friend]
operator<<(bsl::ostream &stream, const CorrelationId &rhs)bmqt::CorrelationId [friend]
operator==(const CorrelationId &lhs, const CorrelationId &rhs)bmqt::CorrelationId [friend]
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqt::CorrelationId
setNumeric(bsls::Types::Int64 numeric)bmqt::CorrelationId
setPointer(void *pointer)bmqt::CorrelationId
setSharedPointer(const bsl::shared_ptr< void > &sharedPtr)bmqt::CorrelationId
theNumeric() const bmqt::CorrelationId
thePointer() const bmqt::CorrelationId
theSharedPtr() const bmqt::CorrelationId
type() const bmqt::CorrelationId
Type enum namebmqt::CorrelationId
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1CorrelationId.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1CorrelationId.html deleted file mode 100644 index ddb39db8b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1CorrelationId.html +++ /dev/null @@ -1,662 +0,0 @@ - - - - -Class bmqt::CorrelationId - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::CorrelationId Class Reference

-
-
- -

#include <bmqt_correlationid.h>

- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

enum  Type {
-  e_NUMERIC, -e_POINTER, -e_SHARED_PTR, -e_AUTO_VALUE, -
-  e_UNSET -
- }

-Public Member Functions

 CorrelationId ()
 CorrelationId (bsls::Types::Int64 numeric)
 CorrelationId (void *pointer)
 CorrelationId (const bsl::shared_ptr< void > &sharedPtr)
CorrelationIdmakeUnset ()
CorrelationIdsetNumeric (bsls::Types::Int64 numeric)
CorrelationIdsetPointer (void *pointer)
CorrelationIdsetSharedPointer (const bsl::shared_ptr< void > &sharedPtr)
bool isUnset () const
bool isNumeric () const
bool isPointer () const
bool isSharedPtr () const
bool isAutoValue () const
bsls::Types::Int64 theNumeric () const
void * thePointer () const
const bsl::shared_ptr< void > & theSharedPtr () const
Type type () const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const

-Static Public Member Functions

static CorrelationId autoValue ()

-Friends

struct CorrelationIdLess
bool operator== (const CorrelationId &lhs, const CorrelationId &rhs)
bool operator!= (const CorrelationId &lhs, const CorrelationId &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const CorrelationId &rhs)
template<class HASH_ALGORITHM >
void hashAppend (HASH_ALGORITHM &hashAlgo, const CorrelationId &value)
-

Detailed Description

-

This class implements an in-core value-semantic type for correlating an asynchronous result with the original operation.

-

See Component bmqt_correlationid

-

Member Enumeration Documentation

- -
-
- - - - -
enum bmqt::CorrelationId::Type
-
-
-
Enumerator:
- - - - - -
e_NUMERIC  -

the CorrelationId holds a 64-bit integer

-
e_POINTER  -

the CorrelationId holds a raw pointer

-
e_SHARED_PTR  -

the CorrelationId holds a shared pointer

-
e_AUTO_VALUE  -

the CorrelationId holds an auto value

-
e_UNSET  -

the CorrelationId is not set

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqt::CorrelationId::CorrelationId ( )  [explicit]
-
-
-

Create a CorrelationId having the default, unset, value.

- -
-
- -
-
- - - - - - - - - -
bmqt::CorrelationId::CorrelationId (bsls::Types::Int64  numeric )  [explicit]
-
-
-

Create a CorrelationId object initialized with the specified numeric integer value.

- -
-
- -
-
- - - - - - - - - -
bmqt::CorrelationId::CorrelationId (void *  pointer )  [explicit]
-
-
-

Create a CorrelationId object initialized with the specified pointer value.

- -
-
- -
-
- - - - - - - - - -
bmqt::CorrelationId::CorrelationId (const bsl::shared_ptr< void > &  sharedPtr )  [explicit]
-
-
-

Create a CorrelationId object initialized with the specified sharedPtr shared pointer value.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
static CorrelationId bmqt::CorrelationId::autoValue ( )  [static]
-
-
-

Return a CorrelationId having a unique, automatically assigned opaque value.

- -
-
- -
-
- - - - - - - - -
CorrelationId& bmqt::CorrelationId::makeUnset ( ) 
-
-
-

Unset the value of this object.

- -
-
- -
-
- - - - - - - - - -
CorrelationId& bmqt::CorrelationId::setNumeric (bsls::Types::Int64  numeric ) 
-
-
-

Set the value of this object value to the specified numeric. Return a reference to this object.

- -
-
- -
-
- - - - - - - - - -
CorrelationId& bmqt::CorrelationId::setPointer (void *  pointer ) 
-
-
-

Set the value of this object value to the specified pointer. Return a reference to this object.

- -
-
- -
-
- - - - - - - - - -
CorrelationId& bmqt::CorrelationId::setSharedPointer (const bsl::shared_ptr< void > &  sharedPtr ) 
-
-
-

Set the value of this object value to the specified sharedPtr. Return a reference to this object.

- -
-
- -
-
- - - - - - - - -
bool bmqt::CorrelationId::isUnset ( )  const
-
-
-

Return true if the value of this object is unset;

- -
-
- -
-
- - - - - - - - -
bool bmqt::CorrelationId::isNumeric ( )  const
-
-
-

Return true if the value of this object is an integer value, and otherwise return false.

- -
-
- -
-
- - - - - - - - -
bool bmqt::CorrelationId::isPointer ( )  const
-
-
-

Return true if the value of this object is a pointer value, and otherwise return false.

- -
-
- -
-
- - - - - - - - -
bool bmqt::CorrelationId::isSharedPtr ( )  const
-
-
-

Return true if the value of this object is a shared pointer value, and otherwise return false.

- -
-
- -
-
- - - - - - - - -
bool bmqt::CorrelationId::isAutoValue ( )  const
-
-
-

Return true if the value of this object is an auto correlation value, and otherwise return false.

- -
-
- -
-
- - - - - - - - -
bsls::Types::Int64 bmqt::CorrelationId::theNumeric ( )  const
-
-
-

Return the 64-bit integer value of this object. The behavior is undefined unless method isNumeric returns true.

- -
-
- -
-
- - - - - - - - -
void* bmqt::CorrelationId::thePointer ( )  const
-
-
-

Return the pointer value of this object. The behavior is undefined unless method isPointer returns true.

- -
-
- -
-
- - - - - - - - -
const bsl::shared_ptr<void>& bmqt::CorrelationId::theSharedPtr ( )  const
-
-
-

Return the pointer value of this object. The behavior is undefined unless method isSharedPtr returns true.

- -
-
- -
-
- - - - - - - - -
Type bmqt::CorrelationId::type ( )  const
-
-
-

Return the type of the value of this object.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::CorrelationId::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-

Friends And Related Function Documentation

- -
-
- - - - -
friend struct CorrelationIdLess [friend]
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool operator== (const CorrelationId lhs,
const CorrelationId rhs 
) [friend]
-
-
-

Return true if rhs object contains the value of the same type as contained in lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool operator!= (const CorrelationId lhs,
const CorrelationId rhs 
) [friend]
-
-
-

Return false if rhs object contains the value of the same type as contained in lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& operator<< (bsl::ostream &  stream,
const CorrelationId rhs 
) [friend]
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
-
-template<class HASH_ALGORITHM >
- - - - - - - - - - - - - - - - - - -
void hashAppend (HASH_ALGORITHM &  hashAlgo,
const CorrelationId value 
) [friend]
-
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1MessageGUID-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1MessageGUID-members.html deleted file mode 100644 index dd5c56146..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1MessageGUID-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - -Class bmqt::MessageGUID Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::MessageGUID Member List

-
-
-This is the complete list of members for bmqt::MessageGUID, including all inherited members. - - - - - - - - - - - - - - - - -
e_SIZE_BINARY enum valuebmqt::MessageGUID
e_SIZE_HEX enum valuebmqt::MessageGUID
Enum enum namebmqt::MessageGUID
fromBinary(const unsigned char *buffer)bmqt::MessageGUID
fromHex(const char *buffer)bmqt::MessageGUID
hashAppend(HASH_ALGORITHM &hashAlgo, const MessageGUID &guid)bmqt::MessageGUID [friend]
isUnset() const bmqt::MessageGUID
isValidHexRepresentation(const char *buffer)bmqt::MessageGUID [static]
MessageGUID()bmqt::MessageGUID
MessageGUIDLessbmqt::MessageGUID [friend]
operator!=(const MessageGUID &lhs, const MessageGUID &rhs)bmqt::MessageGUID [friend]
operator==(const MessageGUID &lhs, const MessageGUID &rhs)bmqt::MessageGUID [friend]
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqt::MessageGUID
toBinary(unsigned char *destination) const bmqt::MessageGUID
toHex(char *destination) const bmqt::MessageGUID
~MessageGUID()bmqt::MessageGUID
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1MessageGUID.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1MessageGUID.html deleted file mode 100644 index 482c8b51d..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1MessageGUID.html +++ /dev/null @@ -1,429 +0,0 @@ - - - - -Class bmqt::MessageGUID - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::MessageGUID Class Reference

-
-
- -

#include <bmqt_messageguid.h>

- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - -

-Public Types

enum  Enum { e_SIZE_BINARY = 16, -e_SIZE_HEX = 2 * e_SIZE_BINARY - }
 

Enum representing the size of a buffer needed to represent a GUID.

- More...

-Public Member Functions

 MessageGUID ()
 ~MessageGUID ()
MessageGUIDfromBinary (const unsigned char *buffer)
MessageGUIDfromHex (const char *buffer)
bool isUnset () const
void toBinary (unsigned char *destination) const
void toHex (char *destination) const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const

-Static Public Member Functions

static bool isValidHexRepresentation (const char *buffer)

-Friends

struct MessageGUIDLess
bool operator== (const MessageGUID &lhs, const MessageGUID &rhs)
bool operator!= (const MessageGUID &lhs, const MessageGUID &rhs)
template<class HASH_ALGORITHM >
void hashAppend (HASH_ALGORITHM &hashAlgo, const MessageGUID &guid)
-

Detailed Description

-

This class provides a value-semantic type to represent a global unique ID for BlazingMQ messages.

-

See Component bmqt_messageguid

-

Member Enumeration Documentation

- -
-
- - - - -
enum bmqt::MessageGUID::Enum
-
-
-
Enumerator:
- - -
e_SIZE_BINARY  -

Binary format of the GUID.

-
e_SIZE_HEX  -

Hexadecimal string representation of the GUID.

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqt::MessageGUID::MessageGUID ( ) 
-
-
-

Create an un-initialized MessageGUID. Note that isUnset() would return true.

- -
-
- -
-
- - - - - - - - -
bmqt::MessageGUID::~MessageGUID ( ) 
-
-
-

Destructor.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
static bool bmqt::MessageGUID::isValidHexRepresentation (const char *  buffer )  [static]
-
-
-

Return true if the specified buffer is a valid hex representation of a MessageGUID. The behavior is undefined unless buffer is non-null and length of the buffer is equal to e_SIZE_HEX.

- -
-
- -
-
- - - - - - - - - -
MessageGUID& bmqt::MessageGUID::fromBinary (const unsigned char *  buffer ) 
-
-
-

Initialize this MessageGUID with the binary representation from the specified buffer, in binary format. Behavior is undefined unless buffer is non-null and of length e_SIZE_BINARY. Return a reference offering modifiable access to this object.

- -
-
- -
-
- - - - - - - - - -
MessageGUID& bmqt::MessageGUID::fromHex (const char *  buffer ) 
-
-
-

Initialize this MessageGUID with the hexadecimal representation from the specified buffer. Behavior is undefined unless isValidHexRepresentation() returns true for the provided buffer. Return a reference offering modifiable access to this object.

- -
-
- -
-
- - - - - - - - -
bool bmqt::MessageGUID::isUnset ( )  const
-
-
-

Return true if the value of this object is not set.

- -
-
- -
-
- - - - - - - - - -
void bmqt::MessageGUID::toBinary (unsigned char *  destination )  const
-
-
-

Write the binary representation of this object to the specified destination. Behavior is undefined unless destination is of length e_SIZE_BINARY. Note that destination can later be used to populate a MessageGUID object using fromBinary method.

- -
-
- -
-
- - - - - - - - - -
void bmqt::MessageGUID::toHex (char *  destination )  const
-
-
-

Write the hex representation of this object to the specified destination. Behavior is undefined unless destination is of length e_SIZE_HEX. Note that destination can later be used to populate a MessageGUID object using fromHex method.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::MessageGUID::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Write the value of this object to the specified output stream in a human-readable format, and return a reference to stream. Optionally specify an initial indentation level. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this object. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect. Note that this human-readable format is not fully specified, and can change without notice. Applications relying on a fixed length format must use toHex method.

- -
-
-

Friends And Related Function Documentation

- -
-
- - - - -
friend struct MessageGUIDLess [friend]
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool operator== (const MessageGUID lhs,
const MessageGUID rhs 
) [friend]
-
-
-

Return true if rhs object contains the value of the same type as contained in lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool operator!= (const MessageGUID lhs,
const MessageGUID rhs 
) [friend]
-
-
-

Return false if rhs object contains the value of the same type as contained in lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
- -
-
-
-template<class HASH_ALGORITHM >
- - - - - - - - - - - - - - - - - - -
void hashAppend (HASH_ALGORITHM &  hashAlgo,
const MessageGUID guid 
) [friend]
-
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1MessageGUIDHashAlgo-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1MessageGUIDHashAlgo-members.html deleted file mode 100644 index 4a1473869..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1MessageGUIDHashAlgo-members.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - -Class bmqt::MessageGUIDHashAlgo Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::MessageGUIDHashAlgo Member List

-
-
-This is the complete list of members for bmqt::MessageGUIDHashAlgo, including all inherited members. - - - - -
computeHash()bmqt::MessageGUIDHashAlgo
MessageGUIDHashAlgo()bmqt::MessageGUIDHashAlgo
operator()(const void *data, size_t numBytes)bmqt::MessageGUIDHashAlgo
result_type typedefbmqt::MessageGUIDHashAlgo
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1MessageGUIDHashAlgo.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1MessageGUIDHashAlgo.html deleted file mode 100644 index 7282d55c3..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1MessageGUIDHashAlgo.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - -Class bmqt::MessageGUIDHashAlgo - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::MessageGUIDHashAlgo Class Reference

-
-
- -

#include <bmqt_messageguid.h>

- -

List of all members.

- - - - - - - -

-Public Types

typedef bsls::Types::Uint64 result_type

-Public Member Functions

 MessageGUIDHashAlgo ()
void operator() (const void *data, size_t numBytes)
result_type computeHash ()
-

Detailed Description

-

This class provides a hashing algorithm for bmqt::MessageGUID. At the time of writing, this algorithm was found to be approximately 4x faster than the default hashing algorithm that comes with bslh package. Performance-critical applications may want to use this hashing algorithm instead of the default one.

-

See Component bmqt_messageguid

-

Member Typedef Documentation

- -
-
- - - - -
typedef bsls::Types::Uint64 bmqt::MessageGUIDHashAlgo::result_type
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqt::MessageGUIDHashAlgo::MessageGUIDHashAlgo ( ) 
-
-
-

Constructor

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
void bmqt::MessageGUIDHashAlgo::operator() (const void *  data,
size_t  numBytes 
)
-
-
- -
-
- -
-
- - - - - - - - -
result_type bmqt::MessageGUIDHashAlgo::computeHash ( ) 
-
-
-

Compute and return the hash for the GUID.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1QueueOptions-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1QueueOptions-members.html deleted file mode 100644 index ea1547470..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1QueueOptions-members.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -Class bmqt::QueueOptions Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::QueueOptions Member List

-
-
-This is the complete list of members for bmqt::QueueOptions, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
addOrUpdateSubscription(bsl::string *errorDescription, const SubscriptionHandle &handle, const Subscription &subscription)bmqt::QueueOptions
consumerPriority() const bmqt::QueueOptions
HandleAndSubscription typedefbmqt::QueueOptions
hasConsumerPriority() const bmqt::QueueOptions
hasMaxUnconfirmedBytes() const bmqt::QueueOptions
hasMaxUnconfirmedMessages() const bmqt::QueueOptions
hasSuspendsOnBadHostHealth() const bmqt::QueueOptions
k_CONSUMER_PRIORITY_MAXbmqt::QueueOptions [static]
k_CONSUMER_PRIORITY_MINbmqt::QueueOptions [static]
k_DEFAULT_CONSUMER_PRIORITYbmqt::QueueOptions [static]
k_DEFAULT_MAX_UNCONFIRMED_BYTESbmqt::QueueOptions [static]
k_DEFAULT_MAX_UNCONFIRMED_MESSAGESbmqt::QueueOptions [static]
k_DEFAULT_SUSPENDS_ON_BAD_HOST_HEALTHbmqt::QueueOptions [static]
loadSubscription(Subscription *subscription, const SubscriptionHandle &handle) const bmqt::QueueOptions
loadSubscriptions(SubscriptionsSnapshot *snapshot) const bmqt::QueueOptions
maxUnconfirmedBytes() const bmqt::QueueOptions
maxUnconfirmedMessages() const bmqt::QueueOptions
merge(const QueueOptions &other)bmqt::QueueOptions
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqt::QueueOptions
QueueOptions(bslma::Allocator *allocator=0)bmqt::QueueOptions [explicit]
QueueOptions(const QueueOptions &other, bslma::Allocator *allocator=0)bmqt::QueueOptions
removeAllSubscriptions()bmqt::QueueOptions
removeSubscription(const SubscriptionHandle &handle)bmqt::QueueOptions
setConsumerPriority(int value)bmqt::QueueOptions
setMaxUnconfirmedBytes(int value)bmqt::QueueOptions
setMaxUnconfirmedMessages(int value)bmqt::QueueOptions
setSuspendsOnBadHostHealth(bool value)bmqt::QueueOptions
SubscriptionsSnapshot typedefbmqt::QueueOptions
suspendsOnBadHostHealth() const bmqt::QueueOptions
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1QueueOptions.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1QueueOptions.html deleted file mode 100644 index ad1c5b076..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1QueueOptions.html +++ /dev/null @@ -1,682 +0,0 @@ - - - - -Class bmqt::QueueOptions - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::QueueOptions Class Reference

-
-
- -

#include <bmqt_queueoptions.h>

- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

typedef bsl::pair
-< SubscriptionHandle,
-Subscription
HandleAndSubscription
typedef bsl::vector
-< HandleAndSubscription
SubscriptionsSnapshot

-Public Member Functions

 QueueOptions (bslma::Allocator *allocator=0)
 QueueOptions (const QueueOptions &other, bslma::Allocator *allocator=0)
QueueOptionssetMaxUnconfirmedMessages (int value)
QueueOptionssetMaxUnconfirmedBytes (int value)
QueueOptionssetConsumerPriority (int value)
QueueOptionssetSuspendsOnBadHostHealth (bool value)
QueueOptionsmerge (const QueueOptions &other)
bool addOrUpdateSubscription (bsl::string *errorDescription, const SubscriptionHandle &handle, const Subscription &subscription)
bool removeSubscription (const SubscriptionHandle &handle)
void removeAllSubscriptions ()
int maxUnconfirmedMessages () const
int maxUnconfirmedBytes () const
int consumerPriority () const
bool suspendsOnBadHostHealth () const
bool hasMaxUnconfirmedMessages () const
bool hasMaxUnconfirmedBytes () const
bool hasConsumerPriority () const
bool hasSuspendsOnBadHostHealth () const
bool loadSubscription (Subscription *subscription, const SubscriptionHandle &handle) const
void loadSubscriptions (SubscriptionsSnapshot *snapshot) const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const

-Static Public Attributes

static const int k_CONSUMER_PRIORITY_MIN
static const int k_CONSUMER_PRIORITY_MAX
static const int k_DEFAULT_MAX_UNCONFIRMED_MESSAGES
static const int k_DEFAULT_MAX_UNCONFIRMED_BYTES
static const int k_DEFAULT_CONSUMER_PRIORITY
static const bool k_DEFAULT_SUSPENDS_ON_BAD_HOST_HEALTH
-

Detailed Description

-

Value-semantic type for options related to a queue.

-

See Component bmqt_queueoptions

-

Member Typedef Documentation

- - - -
- -
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
bmqt::QueueOptions::QueueOptions (bslma::Allocator *  allocator = 0 )  [explicit]
-
-
-

Create a new QueueOptions using the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqt::QueueOptions::QueueOptions (const QueueOptions other,
bslma::Allocator *  allocator = 0 
)
-
-
-

Create a new QueueOptions by copying values from the specified other, using the optionally specified allocator.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
QueueOptions& bmqt::QueueOptions::setMaxUnconfirmedMessages (int  value ) 
-
-
-

Set the maxUnconfirmedMessages to the specified value. The behavior is undefined unless value >= 0. If the specified value is set to 0, it means that the consumer does not receive any messages. This might be useful when the consumer is shutting down and wants to process only pending messages, or when it is unable to process new messages because of transient issues.

- -
-
- -
-
- - - - - - - - - -
QueueOptions& bmqt::QueueOptions::setMaxUnconfirmedBytes (int  value ) 
-
-
-

Set the maxUnconfirmedBytes to the specified value. The behavior is undefined unless value >= 0.

- -
-
- -
-
- - - - - - - - - -
QueueOptions& bmqt::QueueOptions::setConsumerPriority (int  value ) 
-
-
-

Set the consumerPriority to the specified value. The behavior is undefined unless 'k_CONSUMER_PRIORITY_MIN <= value <= k_CONSUMER_PRIORITY_MAX'

- -
-
- -
-
- - - - - - - - - -
QueueOptions& bmqt::QueueOptions::setSuspendsOnBadHostHealth (bool  value ) 
-
-
-

Set whether the queue suspends operation while host is unhealthy.

- -
-
- -
-
- - - - - - - - - -
QueueOptions& bmqt::QueueOptions::merge (const QueueOptions other ) 
-
-
-

"Merges" another QueueOptions into this one, by invoking setF(other.F()) for all fields F for which other.hasF() is true. Returns the instance on which the method was invoked.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool bmqt::QueueOptions::addOrUpdateSubscription (bsl::string *  errorDescription,
const SubscriptionHandle handle,
const Subscription subscription 
)
-
-
-

Add, or update if it exists, the specified subscription for the specified handle. Return true on success, otherwise return false and load the specified errorDescription with a description of the error. Note that errorDescription may be null if the caller does not care about getting error messages, but users are strongly encouraged to log error string if this API returns failure.

-

EXPERIMENTAL. Do not use until this feature is announced.

- -
-
- -
-
- - - - - - - - - -
bool bmqt::QueueOptions::removeSubscription (const SubscriptionHandle handle ) 
-
-
-

Return false if subscription does not exist.

-

EXPERIMENTAL. Do not use until this feature is announced.

- -
-
- -
-
- - - - - - - - -
void bmqt::QueueOptions::removeAllSubscriptions ( ) 
-
-
-

Remove all subscriptions.

-

EXPERIMENTAL. Do not use until this feature is announced.

- -
-
- -
-
- - - - - - - - -
int bmqt::QueueOptions::maxUnconfirmedMessages ( )  const
-
-
-

Get the number for the maxUnconfirmedMessages parameter.

- -
-
- -
-
- - - - - - - - -
int bmqt::QueueOptions::maxUnconfirmedBytes ( )  const
-
-
-

Get the number for the maxUnconfirmedBytes parameter.

- -
-
- -
-
- - - - - - - - -
int bmqt::QueueOptions::consumerPriority ( )  const
-
-
-

Get the number for the consumerPriority parameter.

- -
-
- -
-
- - - - - - - - -
bool bmqt::QueueOptions::suspendsOnBadHostHealth ( )  const
-
-
-

Get whether the queue suspends operation while host is unhealthy.

- -
-
- -
-
- - - - - - - - -
bool bmqt::QueueOptions::hasMaxUnconfirmedMessages ( )  const
-
-
-

Returns whether maxUnconfirmedMessages has been set for this object, or whether it implicitly holds k_DEFAULT_MAX_UNCONFIRMED_MESSAGES.

- -
-
- -
-
- - - - - - - - -
bool bmqt::QueueOptions::hasMaxUnconfirmedBytes ( )  const
-
-
-

Returns whether maxUnconfirmedBytes has been set for this object, or whether it implicitly holds k_DEFAULT_MAX_UNCONFIRMED_BYTES.

- -
-
- -
-
- - - - - - - - -
bool bmqt::QueueOptions::hasConsumerPriority ( )  const
-
-
-

Returns whether consumerPriority has been set for this object, or whether it implicitly holds k_DEFAULT_CONSUMER_PRIORITY.

- -
-
- -
-
- - - - - - - - -
bool bmqt::QueueOptions::hasSuspendsOnBadHostHealth ( )  const
-
-
-

Returns whether suspendsOnBadHostHealth has been set for this object, or whether it implicitly holds k_DEFAULT_SUSPENDS_ON_BAD_HOST_HEALTH.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::QueueOptions::loadSubscription (Subscription subscription,
const SubscriptionHandle handle 
) const
-
-
-

Return false if subscription does not exist.

-

EXPERIMENTAL. Do not use until this feature is announced.

- -
-
- -
-
- - - - - - - - - -
void bmqt::QueueOptions::loadSubscriptions (SubscriptionsSnapshot snapshot )  const
-
-
-

Load all handles and subscriptions into the specified snapshot.

-

EXPERIMENTAL. Do not use until this feature is announced.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::QueueOptions::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-

Member Data Documentation

- -
-
- - - - -
const int bmqt::QueueOptions::k_CONSUMER_PRIORITY_MIN [static]
-
-
- -
-
- -
-
- - - - -
const int bmqt::QueueOptions::k_CONSUMER_PRIORITY_MAX [static]
-
-
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-
- - - - -
const int bmqt::QueueOptions::k_DEFAULT_CONSUMER_PRIORITY [static]
-
-
- -
-
- -
- -
- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SessionOptions-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SessionOptions-members.html deleted file mode 100644 index 576ee79d2..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SessionOptions-members.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - -Class bmqt::SessionOptions Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::SessionOptions Member List

-
-
-This is the complete list of members for bmqt::SessionOptions, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blobBufferSize() const bmqt::SessionOptions
brokerUri() const bmqt::SessionOptions
channelHighWatermark() const bmqt::SessionOptions
closeQueueTimeout() const bmqt::SessionOptions
configureEventQueue(int queueSize, int lowWatermark, int highWatermark)bmqt::SessionOptions
configureEventQueue(int lowWatermark, int highWatermark)bmqt::SessionOptions
configureQueueTimeout() const bmqt::SessionOptions
connectTimeout() const bmqt::SessionOptions
disconnectTimeout() const bmqt::SessionOptions
eventQueueHighWatermark() const bmqt::SessionOptions
eventQueueLowWatermark() const bmqt::SessionOptions
eventQueueSize() const bmqt::SessionOptions
hostHealthMonitor() const bmqt::SessionOptions
k_BROKER_DEFAULT_PORTbmqt::SessionOptions [static]
k_BROKER_DEFAULT_URIbmqt::SessionOptions [static]
k_QUEUE_OPERATION_DEFAULT_TIMEOUTbmqt::SessionOptions [static]
numProcessingThreads() const bmqt::SessionOptions
openQueueTimeout() const bmqt::SessionOptions
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqt::SessionOptions
processNameOverride() const bmqt::SessionOptions
SessionOptions(bslma::Allocator *allocator=0)bmqt::SessionOptions [explicit]
SessionOptions(const SessionOptions &other, bslma::Allocator *allocator=0)bmqt::SessionOptions
setBlobBufferSize(int value)bmqt::SessionOptions
setBrokerUri(const bslstl::StringRef &value)bmqt::SessionOptions
setChannelHighWatermark(bsls::Types::Int64 value)bmqt::SessionOptions
setCloseQueueTimeout(const bsls::TimeInterval &value)bmqt::SessionOptions
setConfigureQueueTimeout(const bsls::TimeInterval &value)bmqt::SessionOptions
setConnectTimeout(const bsls::TimeInterval &value)bmqt::SessionOptions
setDisconnectTimeout(const bsls::TimeInterval &value)bmqt::SessionOptions
setHostHealthMonitor(const bsl::shared_ptr< bmqpi::HostHealthMonitor > &monitor)bmqt::SessionOptions
setNumProcessingThreads(int value)bmqt::SessionOptions
setOpenQueueTimeout(const bsls::TimeInterval &value)bmqt::SessionOptions
setProcessNameOverride(const bslstl::StringRef &value)bmqt::SessionOptions
setStatsDumpInterval(const bsls::TimeInterval &value)bmqt::SessionOptions
setTraceOptions(const bsl::shared_ptr< bmqpi::DTContext > &dtContext, const bsl::shared_ptr< bmqpi::DTTracer > &dtTracer)bmqt::SessionOptions
statsDumpInterval() const bmqt::SessionOptions
traceContext() const bmqt::SessionOptions
tracer() const bmqt::SessionOptions
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SessionOptions.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SessionOptions.html deleted file mode 100644 index 7909e1aa1..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SessionOptions.html +++ /dev/null @@ -1,875 +0,0 @@ - - - - -Class bmqt::SessionOptions - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::SessionOptions Class Reference

-
-
- -

#include <bmqt_sessionoptions.h>

- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 SessionOptions (bslma::Allocator *allocator=0)
 SessionOptions (const SessionOptions &other, bslma::Allocator *allocator=0)
SessionOptionssetBrokerUri (const bslstl::StringRef &value)
SessionOptionssetProcessNameOverride (const bslstl::StringRef &value)
SessionOptionssetNumProcessingThreads (int value)
SessionOptionssetBlobBufferSize (int value)
SessionOptionssetChannelHighWatermark (bsls::Types::Int64 value)
SessionOptionssetStatsDumpInterval (const bsls::TimeInterval &value)
SessionOptionssetConnectTimeout (const bsls::TimeInterval &value)
SessionOptionssetDisconnectTimeout (const bsls::TimeInterval &value)
SessionOptionssetOpenQueueTimeout (const bsls::TimeInterval &value)
SessionOptionssetConfigureQueueTimeout (const bsls::TimeInterval &value)
SessionOptionssetCloseQueueTimeout (const bsls::TimeInterval &value)
SessionOptionssetHostHealthMonitor (const bsl::shared_ptr< bmqpi::HostHealthMonitor > &monitor)
SessionOptionssetTraceOptions (const bsl::shared_ptr< bmqpi::DTContext > &dtContext, const bsl::shared_ptr< bmqpi::DTTracer > &dtTracer)
SessionOptionsconfigureEventQueue (int queueSize, int lowWatermark, int highWatermark)
SessionOptionsconfigureEventQueue (int lowWatermark, int highWatermark)
const bsl::string & brokerUri () const
const bsl::string & processNameOverride () const
int numProcessingThreads () const
int blobBufferSize () const
bsls::Types::Int64 channelHighWatermark () const
const bsls::TimeInterval & statsDumpInterval () const
const bsls::TimeInterval & connectTimeout () const
const bsls::TimeInterval & disconnectTimeout () const
const bsls::TimeInterval & openQueueTimeout () const
const bsls::TimeInterval & configureQueueTimeout () const
const bsls::TimeInterval & closeQueueTimeout () const
const bsl::shared_ptr
-< bmqpi::HostHealthMonitor > & 
hostHealthMonitor () const
const bsl::shared_ptr
-< bmqpi::DTContext > & 
traceContext () const
const bsl::shared_ptr
-< bmqpi::DTTracer > & 
tracer () const
int eventQueueLowWatermark () const
int eventQueueHighWatermark () const
int eventQueueSize () const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const

-Static Public Attributes

static const char k_BROKER_DEFAULT_URI []
static const int k_BROKER_DEFAULT_PORT = 30114
static const int k_QUEUE_OPERATION_DEFAULT_TIMEOUT
-

Detailed Description

-

value-semantic type for options to configure a session with a BlazingMQ broker

-

See Component bmqt_sessionoptions

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
bmqt::SessionOptions::SessionOptions (bslma::Allocator *  allocator = 0 )  [explicit]
-
-
-

Create a new SessionOptions using the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqt::SessionOptions::SessionOptions (const SessionOptions other,
bslma::Allocator *  allocator = 0 
)
-
-
-

Create a new SessionOptions by copying values from the specified other, using the optionally specified allocator.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
SessionOptions& bmqt::SessionOptions::setBrokerUri (const bslstl::StringRef &  value ) 
-
-
-

Set the broker URI to the specified value.

- -
-
- -
-
- - - - - - - - - -
SessionOptions& bmqt::SessionOptions::setProcessNameOverride (const bslstl::StringRef &  value ) 
-
-
-

Set an override of the proces name to the specified value.

- -
-
- -
-
- - - - - - - - - -
SessionOptions& bmqt::SessionOptions::setNumProcessingThreads (int  value ) 
-
-
-

Set the number of processing threads to the specified value.

- -
-
- -
-
- - - - - - - - - -
SessionOptions& bmqt::SessionOptions::setBlobBufferSize (int  value ) 
-
-
-

Set the specified value for the size of blobs buffers.

- -
-
- -
-
- - - - - - - - - -
SessionOptions& bmqt::SessionOptions::setChannelHighWatermark (bsls::Types::Int64  value ) 
-
-
-

Set the specified value (in bytes) for the channel high watermark. The behavior is undefined unless 8 * 1024 * 1024 < value.

- -
-
- -
-
- - - - - - - - - -
SessionOptions& bmqt::SessionOptions::setStatsDumpInterval (const bsls::TimeInterval &  value ) 
-
-
-

Set the statsDumpInterval to the specified value. The behavior is undefined unless value is a multiple of 30s and less than 60 minutes.

- -
-
- -
-
- - - - - - - - - -
SessionOptions& bmqt::SessionOptions::setConnectTimeout (const bsls::TimeInterval &  value ) 
-
-
- -
-
- -
-
- - - - - - - - - -
SessionOptions& bmqt::SessionOptions::setDisconnectTimeout (const bsls::TimeInterval &  value ) 
-
-
- -
-
- -
-
- - - - - - - - - -
SessionOptions& bmqt::SessionOptions::setOpenQueueTimeout (const bsls::TimeInterval &  value ) 
-
-
- -
-
- -
-
- - - - - - - - - -
SessionOptions& bmqt::SessionOptions::setConfigureQueueTimeout (const bsls::TimeInterval &  value ) 
-
-
- -
-
- -
-
- - - - - - - - - -
SessionOptions& bmqt::SessionOptions::setCloseQueueTimeout (const bsls::TimeInterval &  value ) 
-
-
-

Set the timeout for operations of the corresponding type to the specified value.

- -
-
- -
-
- - - - - - - - - -
SessionOptions& bmqt::SessionOptions::setHostHealthMonitor (const bsl::shared_ptr< bmqpi::HostHealthMonitor > &  monitor ) 
-
-
-

Set a HostHealthMonitor object that will notify the session when the health of the host has changed.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
SessionOptions& bmqt::SessionOptions::setTraceOptions (const bsl::shared_ptr< bmqpi::DTContext > &  dtContext,
const bsl::shared_ptr< bmqpi::DTTracer > &  dtTracer 
)
-
-
-

Set the DTContext and DTTracer objects needed to integrate with Distributed Trace frameworks. Either both arguments must point to valid instances, or both must be empty shared_ptr's; if either is an empty shared_ptr and the other is not, then behavior is undefined.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
SessionOptions& bmqt::SessionOptions::configureEventQueue (int  queueSize,
int  lowWatermark,
int  highWatermark 
)
-
-
-

DEPRECATED: Use 'configureEventQueue(int lowWatermark, int highWatermark)' instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
SessionOptions& bmqt::SessionOptions::configureEventQueue (int  lowWatermark,
int  highWatermark 
)
-
-
-

Configure the EventQueue notification watermarks thresholds with the specified lowWatermark and highWatermark value. Refer to the component level documentation for explanation of those watermarks. The behavior is undefined unless lowWatermark < highWatermark.

- -
-
- -
-
- - - - - - - - -
const bsl::string& bmqt::SessionOptions::brokerUri ( )  const
-
-
-

Get the broker URI.

- -
-
- -
-
- - - - - - - - -
const bsl::string& bmqt::SessionOptions::processNameOverride ( )  const
-
-
-

Return the process name override.

- -
-
- -
-
- - - - - - - - -
int bmqt::SessionOptions::numProcessingThreads ( )  const
-
-
-

Get the number of processing threads.

- -
-
- -
-
- - - - - - - - -
int bmqt::SessionOptions::blobBufferSize ( )  const
-
-
-

Get the size of the blobs buffer.

- -
-
- -
-
- - - - - - - - -
bsls::Types::Int64 bmqt::SessionOptions::channelHighWatermark ( )  const
-
-
-

Get the channel high watermark.

- -
-
- -
-
- - - - - - - - -
const bsls::TimeInterval& bmqt::SessionOptions::statsDumpInterval ( )  const
-
-
-

Get the stats dump interval.

- -
-
- -
-
- - - - - - - - -
const bsls::TimeInterval& bmqt::SessionOptions::connectTimeout ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
const bsls::TimeInterval& bmqt::SessionOptions::disconnectTimeout ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
const bsls::TimeInterval& bmqt::SessionOptions::openQueueTimeout ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
const bsls::TimeInterval& bmqt::SessionOptions::configureQueueTimeout ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
const bsls::TimeInterval& bmqt::SessionOptions::closeQueueTimeout ( )  const
-
-
-

Get the timeout for the operations of the corresponding type.

- -
-
- -
-
- - - - - - - - -
const bsl::shared_ptr<bmqpi::HostHealthMonitor>& bmqt::SessionOptions::hostHealthMonitor ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
const bsl::shared_ptr<bmqpi::DTContext>& bmqt::SessionOptions::traceContext ( )  const
-
-
-

Get the Distributed Trace context object.

- -
-
- -
-
- - - - - - - - -
const bsl::shared_ptr<bmqpi::DTTracer>& bmqt::SessionOptions::tracer ( )  const
-
-
-

Get the Distributed Trace tracer object.

- -
-
- -
-
- - - - - - - - -
int bmqt::SessionOptions::eventQueueLowWatermark ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
int bmqt::SessionOptions::eventQueueHighWatermark ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
int bmqt::SessionOptions::eventQueueSize ( )  const
-
-
-

DEPRECATED: This parameter is no longer relevant and will be removed in future release of libbmq.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::SessionOptions::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-

Member Data Documentation

- -
-
- - - - -
const char bmqt::SessionOptions::k_BROKER_DEFAULT_URI[] [static]
-
-
- -
-
- -
-
- - - - -
const int bmqt::SessionOptions::k_BROKER_DEFAULT_PORT = 30114 [static]
-
-
- -
-
- -
- -
-Initial value:
-                                 5 * bdlt::TimeUnitRatio::k_SECONDS_PER_MINUTE
-
-
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Subscription-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Subscription-members.html deleted file mode 100644 index 666718854..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Subscription-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -Class bmqt::Subscription Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::Subscription Member List

-
- - - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Subscription.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Subscription.html deleted file mode 100644 index f71d3ffdf..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Subscription.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - -Class bmqt::Subscription - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::Subscription Class Reference

-
-
- -

#include <bmqt_subscription.h>

- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Subscription ()
 Subscription (const Subscription &other)
SubscriptionsetMaxUnconfirmedMessages (int value)
SubscriptionsetMaxUnconfirmedBytes (int value)
SubscriptionsetConsumerPriority (int value)
SubscriptionsetExpression (const SubscriptionExpression &value)
int maxUnconfirmedMessages () const
int maxUnconfirmedBytes () const
int consumerPriority () const
const SubscriptionExpressionexpression () const
bool hasMaxUnconfirmedMessages () const
bool hasMaxUnconfirmedBytes () const
bool hasConsumerPriority () const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const

-Static Public Attributes

static const int k_CONSUMER_PRIORITY_MIN
static const int k_CONSUMER_PRIORITY_MAX
static const int k_DEFAULT_MAX_UNCONFIRMED_MESSAGES
static const int k_DEFAULT_MAX_UNCONFIRMED_BYTES
static const int k_DEFAULT_CONSUMER_PRIORITY
-

Detailed Description

-

Value-semantic type to carry Subscription parameters.

-

See Component bmqt_subscription

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqt::Subscription::Subscription ( ) 
-
-
- -
-
- -
-
- - - - - - - - - -
bmqt::Subscription::Subscription (const Subscription other ) 
-
-
-

Create a new Subscription by copying values from the specified other.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
Subscription& bmqt::Subscription::setMaxUnconfirmedMessages (int  value ) 
-
-
-

Set the maxUnconfirmedMessages to the specified value. The behavior is undefined unless value >= 0. If the specified value is set to 0, it means that the consumer does not receive any messages. This might be useful when the consumer is shutting down and wants to process only pending messages, or when it is unable to process new messages because of transient issues.

- -
-
- -
-
- - - - - - - - - -
Subscription& bmqt::Subscription::setMaxUnconfirmedBytes (int  value ) 
-
-
-

Set the maxUnconfirmedBytes to the specified value. The behavior is undefined unless value >= 0.

- -
-
- -
-
- - - - - - - - - -
Subscription& bmqt::Subscription::setConsumerPriority (int  value ) 
-
-
-

Set the consumerPriority to the specified value. The behavior is undefined unless 'k_CONSUMER_PRIORITY_MIN <= value <= k_CONSUMER_PRIORITY_MAX'

- -
-
- -
-
- - - - - - - - - -
Subscription& bmqt::Subscription::setExpression (const SubscriptionExpression value ) 
-
-
- -
-
- -
-
- - - - - - - - -
int bmqt::Subscription::maxUnconfirmedMessages ( )  const
-
-
-

Get the number for the maxUnconfirmedMessages parameter.

- -
-
- -
-
- - - - - - - - -
int bmqt::Subscription::maxUnconfirmedBytes ( )  const
-
-
-

Get the number for the maxUnconfirmedBytes parameter.

- -
-
- -
-
- - - - - - - - -
int bmqt::Subscription::consumerPriority ( )  const
-
-
-

Get the number for the consumerPriority parameter.

- -
-
- -
-
- - - - - - - - -
const SubscriptionExpression& bmqt::Subscription::expression ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
bool bmqt::Subscription::hasMaxUnconfirmedMessages ( )  const
-
-
-

Returns whether maxUnconfirmedMessages has been set for this object, or whether it implicitly holds k_DEFAULT_MAX_UNCONFIRMED_MESSAGES.

- -
-
- -
-
- - - - - - - - -
bool bmqt::Subscription::hasMaxUnconfirmedBytes ( )  const
-
-
-

Returns whether maxUnconfirmedBytes has been set for this object, or whether it implicitly holds k_DEFAULT_MAX_UNCONFIRMED_BYTES.

- -
-
- -
-
- - - - - - - - -
bool bmqt::Subscription::hasConsumerPriority ( )  const
-
-
-

Returns whether consumerPriority has been set for this object, or whether it implicitly holds k_DEFAULT_CONSUMER_PRIORITY.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::Subscription::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-

Member Data Documentation

- -
-
- - - - -
const int bmqt::Subscription::k_CONSUMER_PRIORITY_MIN [static]
-
-
- -
-
- -
-
- - - - -
const int bmqt::Subscription::k_CONSUMER_PRIORITY_MAX [static]
-
-
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-
- - - - -
const int bmqt::Subscription::k_DEFAULT_CONSUMER_PRIORITY [static]
-
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SubscriptionExpression-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SubscriptionExpression-members.html deleted file mode 100644 index 11bcbfe40..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SubscriptionExpression-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - -Class bmqt::SubscriptionExpression Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::SubscriptionExpression Member List

-
-
-This is the complete list of members for bmqt::SubscriptionExpression, including all inherited members. - - - - - - - - - -
e_NONE enum valuebmqt::SubscriptionExpression
e_VERSION_1 enum valuebmqt::SubscriptionExpression
Enum enum namebmqt::SubscriptionExpression
isValid() const bmqt::SubscriptionExpression
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqt::SubscriptionExpression
SubscriptionExpression()bmqt::SubscriptionExpression
SubscriptionExpression(const bsl::string &expression, Enum version)bmqt::SubscriptionExpression
text() const bmqt::SubscriptionExpression
version() const bmqt::SubscriptionExpression
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SubscriptionExpression.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SubscriptionExpression.html deleted file mode 100644 index 8a3370c34..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SubscriptionExpression.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - -Class bmqt::SubscriptionExpression - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::SubscriptionExpression Class Reference

-
-
- -

#include <bmqt_subscription.h>

- -

List of all members.

- - - - - - - - - - - -

-Public Types

enum  Enum { e_NONE = 0, -e_VERSION_1 = 1 - }
 

Enum representing criteria format.

- More...

-Public Member Functions

 SubscriptionExpression ()
 SubscriptionExpression (const bsl::string &expression, Enum version)
const bsl::string & text () const
Enum version () const
bool isValid () const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
-

Detailed Description

-

Value-semantic type to carry Subscription criteria.

-

See Component bmqt_subscription

-

Member Enumeration Documentation

- -
- -
-
Enumerator:
- - -
e_NONE  -

EMPTY.

-
e_VERSION_1  -

Simple Evaluator.

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqt::SubscriptionExpression::SubscriptionExpression ( ) 
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqt::SubscriptionExpression::SubscriptionExpression (const bsl::string &  expression,
Enum  version 
)
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
const bsl::string& bmqt::SubscriptionExpression::text ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
Enum bmqt::SubscriptionExpression::version ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
bool bmqt::SubscriptionExpression::isValid ( )  const
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::SubscriptionExpression::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SubscriptionHandle-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SubscriptionHandle-members.html deleted file mode 100644 index 7ba90dc72..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SubscriptionHandle-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - -Class bmqt::SubscriptionHandle Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::SubscriptionHandle Member List

-
-
-This is the complete list of members for bmqt::SubscriptionHandle, including all inherited members. - - - - - - - - - -
correlationId() const bmqt::SubscriptionHandle
hashAppend(HASH_ALGORITHM &hashAlgo, const SubscriptionHandle &id)bmqt::SubscriptionHandle [friend]
id() const bmqt::SubscriptionHandle
operator!=(const SubscriptionHandle &lhs, const SubscriptionHandle &rhs)bmqt::SubscriptionHandle [friend]
operator<(const SubscriptionHandle &lhs, const SubscriptionHandle &rhs)bmqt::SubscriptionHandle [friend]
operator==(const SubscriptionHandle &lhs, const SubscriptionHandle &rhs)bmqt::SubscriptionHandle [friend]
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqt::SubscriptionHandle
SubscriptionHandle(const bmqt::CorrelationId &cid)bmqt::SubscriptionHandle
SubscriptionHandle(const SubscriptionHandle &other)bmqt::SubscriptionHandle
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SubscriptionHandle.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SubscriptionHandle.html deleted file mode 100644 index 710557b24..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1SubscriptionHandle.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - -Class bmqt::SubscriptionHandle - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::SubscriptionHandle Class Reference

-
-
- -

#include <bmqt_subscription.h>

- -

List of all members.

- - - - - - - - - - - - - -

-Public Member Functions

 SubscriptionHandle (const bmqt::CorrelationId &cid)
 SubscriptionHandle (const SubscriptionHandle &other)
const bmqt::CorrelationIdcorrelationId () const
unsigned int id () const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const

-Friends

bool operator< (const SubscriptionHandle &lhs, const SubscriptionHandle &rhs)
bool operator== (const SubscriptionHandle &lhs, const SubscriptionHandle &rhs)
bool operator!= (const SubscriptionHandle &lhs, const SubscriptionHandle &rhs)
template<class HASH_ALGORITHM >
void hashAppend (HASH_ALGORITHM &hashAlgo, const SubscriptionHandle &id)
-

Detailed Description

-

Value-semantic type for unique Subscription id.

-

See Component bmqt_subscription

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
bmqt::SubscriptionHandle::SubscriptionHandle (const bmqt::CorrelationId cid ) 
-
-
- -
-
- -
-
- - - - - - - - - -
bmqt::SubscriptionHandle::SubscriptionHandle (const SubscriptionHandle other ) 
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
const bmqt::CorrelationId& bmqt::SubscriptionHandle::correlationId ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
unsigned int bmqt::SubscriptionHandle::id ( )  const
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::SubscriptionHandle::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-

Friends And Related Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
bool operator< (const SubscriptionHandle lhs,
const SubscriptionHandle rhs 
) [friend]
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool operator== (const SubscriptionHandle lhs,
const SubscriptionHandle rhs 
) [friend]
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool operator!= (const SubscriptionHandle lhs,
const SubscriptionHandle rhs 
) [friend]
-
-
- -
-
- -
-
-
-template<class HASH_ALGORITHM >
- - - - - - - - - - - - - - - - - - -
void hashAppend (HASH_ALGORITHM &  hashAlgo,
const SubscriptionHandle id 
) [friend]
-
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Uri-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Uri-members.html deleted file mode 100644 index 803e12741..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Uri-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - -Class bmqt::Uri Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::Uri Member List

-
-
-This is the complete list of members for bmqt::Uri, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - -
asString() const bmqt::Uri
authority() const bmqt::Uri
canonical() const bmqt::Uri
domain() const bmqt::Uri
hashAppend(HASH_ALGORITHM &hashAlgo, const Uri &uri)bmqt::Uri [friend]
id() const bmqt::Uri
isCanonical() const bmqt::Uri
isValid() const bmqt::Uri
k_QUEUENAME_MAX_LENGTHbmqt::Uri [static]
operator=(const Uri &rhs)bmqt::Uri
path() const bmqt::Uri
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqt::Uri
qualifiedDomain() const bmqt::Uri
queue() const bmqt::Uri
scheme() const bmqt::Uri
tier() const bmqt::Uri
Uri(bslma::Allocator *allocator=0)bmqt::Uri [explicit]
Uri(const Uri &original, bslma::Allocator *allocator=0)bmqt::Uri
Uri(const bsl::string &uri, bslma::Allocator *allocator=0)bmqt::Uri
Uri(const bslstl::StringRef &uri, bslma::Allocator *allocator=0)bmqt::Uri
Uri(const char *uri, bslma::Allocator *allocator=0)bmqt::Uri
UriBuilder classbmqt::Uri [friend]
UriParserbmqt::Uri [friend]
~Uri()bmqt::Uri
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Uri.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Uri.html deleted file mode 100644 index ab8c214da..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Uri.html +++ /dev/null @@ -1,608 +0,0 @@ - - - - -Class bmqt::Uri - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::Uri Class Reference

-
-
- -

#include <bmqt_uri.h>

- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Uri (bslma::Allocator *allocator=0)
 Uri (const Uri &original, bslma::Allocator *allocator=0)
 Uri (const bsl::string &uri, bslma::Allocator *allocator=0)
 Uri (const bslstl::StringRef &uri, bslma::Allocator *allocator=0)
 Uri (const char *uri, bslma::Allocator *allocator=0)
 ~Uri ()
Urioperator= (const Uri &rhs)
const bsl::string & asString () const
bool isValid () const
bool isCanonical () const
const bslstl::StringRef & scheme () const
const bslstl::StringRef & authority () const
const bslstl::StringRef & path () const
const bslstl::StringRef & qualifiedDomain () const
const bslstl::StringRef & domain () const
const bslstl::StringRef & tier () const
const bslstl::StringRef & queue () const
const bslstl::StringRef & id () const
bslstl::StringRef canonical () const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const

-Static Public Attributes

static const int k_QUEUENAME_MAX_LENGTH = 64

-Friends

struct UriParser
class UriBuilder
template<class HASH_ALGORITHM >
void hashAppend (HASH_ALGORITHM &hashAlgo, const Uri &uri)
-

Detailed Description

-

Value semantic type representing a URI

-

See Component bmqt_uri

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
bmqt::Uri::Uri (bslma::Allocator *  allocator = 0 )  [explicit]
-
-
-

Constructor of an invalid Uri with all fields empty, using the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqt::Uri::Uri (const Uri original,
bslma::Allocator *  allocator = 0 
)
-
-
-

IMPLICIT: Copy constructor, create a new Uri having the same values as the specified original, and using the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqt::Uri::Uri (const bsl::string &  uri,
bslma::Allocator *  allocator = 0 
)
-
-
-

IMPLICIT:

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqt::Uri::Uri (const bslstl::StringRef &  uri,
bslma::Allocator *  allocator = 0 
)
-
-
-

IMPLICIT:

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqt::Uri::Uri (const char *  uri,
bslma::Allocator *  allocator = 0 
)
-
-
-

IMPLICIT: Implicit constructor of this object from the specified uri string using the optionally specified allocator. If the uri input string doesn't not represent a valid URI, this object is left in an invalid state (isValid() will return false).

- -
-
- -
-
- - - - - - - - -
bmqt::Uri::~Uri ( ) 
-
-
-

Destructor.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
Uri& bmqt::Uri::operator= (const Uri rhs ) 
-
-
-

Set the value of this object to the specified rhs.

- -
-
- -
-
- - - - - - - - -
const bsl::string& bmqt::Uri::asString ( )  const
-
-
-

Return the string representation of this URI.

- -
-
- -
-
- - - - - - - - -
bool bmqt::Uri::isValid ( )  const
-
-
-

Return true if this object represents a valid URI.

- -
-
- -
-
- - - - - - - - -
bool bmqt::Uri::isCanonical ( )  const
-
-
-

Return true if this object represents a canonical URI.

- -
-
- -
-
- - - - - - - - -
const bslstl::StringRef& bmqt::Uri::scheme ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
const bslstl::StringRef& bmqt::Uri::authority ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
const bslstl::StringRef& bmqt::Uri::path ( )  const
-
-
-

Return the corresponding (raw) part of the URI, matching to the URI RFC terminology.

- -
-
- -
-
- - - - - - - - -
const bslstl::StringRef& bmqt::Uri::qualifiedDomain ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
const bslstl::StringRef& bmqt::Uri::domain ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
const bslstl::StringRef& bmqt::Uri::tier ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
const bslstl::StringRef& bmqt::Uri::queue ( )  const
-
-
- -
-
- -
-
- - - - - - - - -
const bslstl::StringRef& bmqt::Uri::id ( )  const
-
-
-

Return the corresponding (extracted) part of the URI, provided as convenient accessors using the BlazingMQ terminology.

- -
-
- -
-
- - - - - - - - -
bslstl::StringRef bmqt::Uri::canonical ( )  const
-
-
-

Return the canonical form of the URI. Note that canonical form includes everything except the query part of the URI.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::Uri::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

- -
-
-

Friends And Related Function Documentation

- -
-
- - - - -
friend struct UriParser [friend]
-
-
- -
-
- -
-
- - - - -
friend class UriBuilder [friend]
-
-
- -
-
- -
-
-
-template<class HASH_ALGORITHM >
- - - - - - - - - - - - - - - - - - -
void hashAppend (HASH_ALGORITHM &  hashAlgo,
const Uri uri 
) [friend]
-
-
- -
-
-

Member Data Documentation

- -
-
- - - - -
const int bmqt::Uri::k_QUEUENAME_MAX_LENGTH = 64 [static]
-
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1UriBuilder-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1UriBuilder-members.html deleted file mode 100644 index aa6eadeb3..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1UriBuilder-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - -Class bmqt::UriBuilder Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::UriBuilder Member List

-
-
-This is the complete list of members for bmqt::UriBuilder, including all inherited members. - - - - - - - - - -
reset()bmqt::UriBuilder
setDomain(const bslstl::StringRef &value)bmqt::UriBuilder
setId(const bslstl::StringRef &value)bmqt::UriBuilder
setQualifiedDomain(const bslstl::StringRef &value)bmqt::UriBuilder
setQueue(const bslstl::StringRef &value)bmqt::UriBuilder
setTier(const bslstl::StringRef &value)bmqt::UriBuilder
uri(Uri *result, bsl::string *errorDescription=0) const bmqt::UriBuilder
UriBuilder(bslma::Allocator *allocator=0)bmqt::UriBuilder [explicit]
UriBuilder(const bmqt::Uri &uri, bslma::Allocator *allocator=0)bmqt::UriBuilder [explicit]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1UriBuilder.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1UriBuilder.html deleted file mode 100644 index bbc91d08a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1UriBuilder.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - -Class bmqt::UriBuilder - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::UriBuilder Class Reference

-
-
- -

#include <bmqt_uri.h>

- -

List of all members.

- - - - - - - - - - - -

-Public Member Functions

 UriBuilder (bslma::Allocator *allocator=0)
 UriBuilder (const bmqt::Uri &uri, bslma::Allocator *allocator=0)
UriBuildersetDomain (const bslstl::StringRef &value)
UriBuildersetTier (const bslstl::StringRef &value)
UriBuildersetQualifiedDomain (const bslstl::StringRef &value)
UriBuildersetQueue (const bslstl::StringRef &value)
UriBuildersetId (const bslstl::StringRef &value)
void reset ()
int uri (Uri *result, bsl::string *errorDescription=0) const
-

Detailed Description

-

This component implements a mechanism, bmqt::UriBuilder, that can be used for creating queue URI for BMQ.

-

See Component bmqt_uri

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
bmqt::UriBuilder::UriBuilder (bslma::Allocator *  allocator = 0 )  [explicit]
-
-
-

Create a new UriBuilder using the optionally specified allocator.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqt::UriBuilder::UriBuilder (const bmqt::Uri uri,
bslma::Allocator *  allocator = 0 
) [explicit]
-
-
-

Create a new UriBuilder initialized with the specified uri and using the optionally specified allocator.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
UriBuilder& bmqt::UriBuilder::setDomain (const bslstl::StringRef &  value ) 
-
-
- -
-
- -
-
- - - - - - - - - -
UriBuilder& bmqt::UriBuilder::setTier (const bslstl::StringRef &  value ) 
-
-
- -
-
- -
-
- - - - - - - - - -
UriBuilder& bmqt::UriBuilder::setQualifiedDomain (const bslstl::StringRef &  value ) 
-
-
- -
-
- -
-
- - - - - - - - - -
UriBuilder& bmqt::UriBuilder::setQueue (const bslstl::StringRef &  value ) 
-
-
- -
-
- -
-
- - - - - - - - - -
UriBuilder& bmqt::UriBuilder::setId (const bslstl::StringRef &  value ) 
-
-
-

Set the corresponding field of the URI to the specified value. The behavior is undefined unless value remains valid until URI has been built by invoking uri(). setDomain() and setTier() should be preferred over setQualifiedDomain() whenever possible.

- -
-
- -
-
- - - - - - - - -
void bmqt::UriBuilder::reset ( ) 
-
-
-

Reset all fields of this builder.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int bmqt::UriBuilder::uri (Uri result,
bsl::string *  errorDescription = 0 
) const
-
-
-

Build and populate the specified result with the built URI, returning 0 on success, or return non-zero on error, populating the optionally specified errorDescription if provided.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Version-members.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Version-members.html deleted file mode 100644 index 42c0d3b65..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Version-members.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - -Class bmqt::Version Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::Version Member List

-
-
-This is the complete list of members for bmqt::Version, including all inherited members. - - - - - - - -
major() const bmqt::Version
minor() const bmqt::Version
print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const bmqt::Version
setMajor(unsigned char value)bmqt::Version
setMinor(unsigned char value)bmqt::Version
Version()bmqt::Version
Version(unsigned char major, unsigned char minor)bmqt::Version
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Version.html b/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Version.html deleted file mode 100644 index 6d0455e1b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classbmqt_1_1Version.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - -Class bmqt::Version - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::Version Class Reference

-
-
- -

#include <bmqt_version.h>

- -

List of all members.

- - - - - - - - - -

-Public Member Functions

 Version ()
 Version (unsigned char major, unsigned char minor)
VersionsetMajor (unsigned char value)
VersionsetMinor (unsigned char value)
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
unsigned char major () const
unsigned char minor () const
-

Detailed Description

-

A version consisting of a major and minor version number.

-

See Component bmqt_version

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqt::Version::Version ( ) 
-
-
-

Create an object of type Version having the default value. Note that major is set to zero and minor is set to zero.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bmqt::Version::Version (unsigned char  major,
unsigned char  minor 
)
-
-
-

Create an object of type Version initialized with the specified major and minor versions.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
Version& bmqt::Version::setMajor (unsigned char  value ) 
-
-
-

Set the major part of the version to the specified value and return a reference to this object.

- -
-
- -
-
- - - - - - - - - -
Version& bmqt::Version::setMinor (unsigned char  value ) 
-
-
-

Set the minor part of the version to the specified value and return a reference to this object.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::Version::print (bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const
-
-
-

Format this object to the specified output stream at the optionally specified indentation level and return a reference to the modifiable stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. Each line is indented by the absolute value of level * spacesPerLevel. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, suppress line breaks and format the entire output on one line. If stream is initially invalid, this operation has no effect. Note that a trailing newline is provided in multiline mode only.

- -
-
- -
-
- - - - - - - - -
unsigned char bmqt::Version::major ( )  const
-
-
-

Return the major part of the version.

- -
-
- -
-
- - - - - - - - -
unsigned char bmqt::Version::minor ( )  const
-
-
-

Return the minor part of the version.

- -
-
-
The documentation for this class was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/classes.html b/docs/docs/apidocs/cpp_apidocs/classes.html deleted file mode 100644 index 2084e8b8b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/classes.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - -Class es - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

Class Index

-
-
-
A | B | C | D | E | G | H | M | O | P | Q | S | U | V
- -
  A  
-
CorrelationIdLess (bmqt)   ManualHostHealthMonitor (bmqa)   MockSession (bmqa)   Session (bmqa)   
AbstractSession (bmqa)   
  D  
-
Message (bmqa)   MockSessionUtil (bmqa)   SessionEvent (bmqa)   
MockSessionUtil::AckParams (bmqa)   DTContext (bmqpi)   MessageConfirmationCookie (bmqa)   
  O  
-
SessionEventHandler (bmqa)   
AckResult (bmqt)   DTSpan (bmqpi)   MessageEvent (bmqa)   OpenQueueResult (bmqt)   SessionEventType (bmqt)   
  B  
-
DTTracer (bmqpi)   MessageEventBuilder (bmqa)   OpenQueueStatus (bmqa)   SessionImpl (bmqa)   
DTSpan::BSLS_KEYWORD_FINAL (bmqpi)   
  E  
-
MessageEventBuilderImpl (bmqa)   
  P  
-
SessionOptions (bmqt)   
  C  
-
EncodingType (bmqt)   MessageEventType (bmqt)   PostResult (bmqt)   Subscription (bmqt)   
CloseQueueResult (bmqt)   Event (bmqa)   MessageGUID (bmqt)   PropertyType (bmqt)   SubscriptionExpression (bmqt)   
CloseQueueStatus (bmqa)   EventBuilderResult (bmqt)   MessageGUIDHashAlgo (bmqt)   MockSessionUtil::PushMessageParams (bmqa)   SubscriptionHandle (bmqt)   
CompressionAlgorithmType (bmqt)   
  G  
-
MessageGUIDLess (bmqt)   
  Q  
-
  U  
-
ConfigureQueueResult (bmqt)   GenericResult (bmqt)   MessageImpl (bmqa)   QueueFlags (bmqt)   Uri (bmqt)   
ConfigureQueueStatus (bmqa)   
  H  
-
MessageIterator (bmqa)   QueueFlagsUtil (bmqt)   UriBuilder (bmqt)   
ConfirmEventBuilder (bmqa)   HostHealthMonitor (bmqpi)   MessageIteratorImpl (bmqa)   QueueId (bmqa)   UriParser (bmqt)   
ConfirmEventBuilderImpl (bmqa)   HostHealthState (bmqt)   MessageProperties (bmqa)   QueueOptions (bmqt)   
  V  
-
CorrelationId (bmqt)   
  M  
-
MessagePropertiesIterator (bmqa)   
  S  
-
Version (bmqt)   
A | B | C | D | E | G | H | M | O | P | Q | S | U | V
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/closed.png b/docs/docs/apidocs/cpp_apidocs/closed.png deleted file mode 100644 index b7d4bd9fe..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/closed.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/components.html b/docs/docs/apidocs/cpp_apidocs/components.html deleted file mode 100644 index f373b7773..000000000 --- a/docs/docs/apidocs/cpp_apidocs/components.html +++ /dev/null @@ -1,617 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

Components

-
-
-

Here is a table of all package groups (a.k.a., groups), packages, and components:

- - - - - - - - - -
- - - -
-

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  Group   Package Mnemonic/Component Purpose
bmq  BlazingMQPublic SDK API for the BlazingMQ framework
  bmqaBlazingMQ APIProvide applications public API for the BlazingMQ SDK
    bmqa_abstractsessionProvide a pure protocol for a BlazingMQ session
    bmqa_closequeuestatusProvide Value-Semantic Type for a close queue operation status
    bmqa_configurequeuestatusProvide Value-Semantic Type for a configure queue operation status
    bmqa_confirmeventbuilderProvide a builder for batching confirmation messages
    bmqa_eventProvide a generic variant encompassing all types of events
    bmqa_manualhosthealthmonitorProvide a minimal implementation of bmqpi::HostHealthMonitor
    bmqa_messageProvide the application with a message data object
    bmqa_messageeventProvide the application with data event notifications
    bmqa_messageeventbuilderProvide a builder for MessageEvent objects
    bmqa_messageiteratorProvide a mechanism to iterate over the messages of a MessageEvent
    bmqa_messagepropertiesProvide a VST representing message properties
    bmqa_mocksessionProvide a mock session, implementing bmqa::AbstractSession
    bmqa_openqueuestatusProvide Value-Semantic Type for an open queue operation status
    bmqa_queueidProvide a value-semantic efficient identifier for a queue
    bmqa_sessionProvide access to the BlazingMQ broker
    bmqa_sessioneventProvide value-semantic type for system event session notifications
  bmqpiBlazingMQ Public InterfacesProvide an interface for monitoring the health of the host
    bmqpi_dtcontextProvide an interface for a context with a notion of a current span
    bmqpi_dtspanProvide an interface representing a span of a distributed trace
    bmqpi_dttracerProvide an interface that can create new DTSpan objects
    bmqpi_hosthealthmonitorProvide an interface for monitoring the health of the host
  bmqtBlazingMQ (vocabulary) TypesProvide value-semantic vocabulary types
    bmqt_compressionalgorithmtypeProvide an enumeration for different compression algorithm types
    bmqt_correlationidProvide a value-semantic type usable as an efficient identifier
    bmqt_encodingtypeProvide an enumeration for different message encoding types
    bmqt_hosthealthstateProvide an enumeration for different host health states
    bmqt_messageeventtypeProvide an enumeration for the different types of message events
    bmqt_messageguidProvide a value-semantic global unique identifier for BlazingMQ
    bmqt_propertytypeProvide enum for the supported data types for a message property
    bmqt_queueflagsProvide enumerators for flags to use at Queue open
    bmqt_queueoptionsProvide a value-semantic type for options related to a queue
    bmqt_resultcodeProvide enums for various publicly exposed result code
    bmqt_sessioneventtypeProvide an enumeration for the different types of session events
    bmqt_sessionoptionsProvide a value-semantic type to configure session with the broker
    bmqt_subscriptionProvide a value-semantic types for subscription related API
    bmqt_uriProvide value-semantic type and utilities for a BlazingMQ queue
    bmqt_versionProvide a value-semantic type representing a version (major minor)
-

 

- - - - - - - - - -
- - - -
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/doxygen.png b/docs/docs/apidocs/cpp_apidocs/doxygen.png deleted file mode 100644 index 635ed52fc..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/doxygen.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/files.html b/docs/docs/apidocs/cpp_apidocs/files.html deleted file mode 100644 index 6c4265d42..000000000 --- a/docs/docs/apidocs/cpp_apidocs/files.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

File List

-
-
-Here is a list of all files with brief descriptions: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bmq.txt [text]Public SDK API for the BlazingMQ framework
bmqa.txt [text]Provide applications public API for the BlazingMQ SDK
bmqa_abstractsession.h [code]Provide a pure protocol for a BlazingMQ session
bmqa_closequeuestatus.h [code]Provide Value-Semantic Type for a close queue operation status
bmqa_configurequeuestatus.h [code]Provide Value-Semantic Type for a configure queue operation status
bmqa_confirmeventbuilder.h [code]Provide a builder for batching confirmation messages
bmqa_event.h [code]Provide a generic variant encompassing all types of events
bmqa_manualhosthealthmonitor.h [code]Provide a minimal implementation of bmqpi::HostHealthMonitor
bmqa_message.h [code]Provide the application with a message data object
bmqa_messageevent.h [code]Provide the application with data event notifications
bmqa_messageeventbuilder.h [code]Provide a builder for MessageEvent objects
bmqa_messageiterator.h [code]Provide a mechanism to iterate over the messages of a MessageEvent
bmqa_messageproperties.h [code]Provide a VST representing message properties
bmqa_mocksession.h [code]Provide a mock session, implementing bmqa::AbstractSession
bmqa_openqueuestatus.h [code]Provide Value-Semantic Type for an open queue operation status
bmqa_queueid.h [code]Provide a value-semantic efficient identifier for a queue
bmqa_session.h [code]Provide access to the BlazingMQ broker
bmqa_sessionevent.h [code]Provide value-semantic type for system event session notifications
bmqpi.txt [text]Provide an interface for monitoring the health of the host
bmqpi_dtcontext.h [code]Provide an interface for a context with a notion of a current span
bmqpi_dtspan.h [code]Provide an interface representing a span of a distributed trace
bmqpi_dttracer.h [code]Provide an interface that can create new DTSpan objects
bmqpi_hosthealthmonitor.h [code]Provide an interface for monitoring the health of the host
bmqt.txt [text]Provide value-semantic vocabulary types
bmqt_compressionalgorithmtype.h [code]Provide an enumeration for different compression algorithm types
bmqt_correlationid.h [code]Provide a value-semantic type usable as an efficient identifier
bmqt_encodingtype.h [code]Provide an enumeration for different message encoding types
bmqt_hosthealthstate.h [code]Provide an enumeration for different host health states
bmqt_messageeventtype.h [code]Provide an enumeration for the different types of message events
bmqt_messageguid.h [code]Provide a value-semantic global unique identifier for BlazingMQ
bmqt_propertytype.h [code]Provide enum for the supported data types for a message property
bmqt_queueflags.h [code]Provide enumerators for flags to use at Queue open
bmqt_queueoptions.h [code]Provide a value-semantic type for options related to a queue
bmqt_resultcode.h [code]Provide enums for various publicly exposed result code
bmqt_sessioneventtype.h [code]Provide an enumeration for the different types of session events
bmqt_sessionoptions.h [code]Provide a value-semantic type to configure session with the broker
bmqt_subscription.h [code]Provide a value-semantic types for subscription related API
bmqt_uri.h [code]Provide value-semantic type and utilities for a BlazingMQ queue
bmqt_version.h [code]Provide a value-semantic type representing a version (major minor)
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/filesORIG.html b/docs/docs/apidocs/cpp_apidocs/filesORIG.html deleted file mode 100644 index 4e8dce46f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/filesORIG.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

File List

-
-
-Here is a list of all files with brief descriptions: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bmq.h [code]Public SDK API for the BlazingMQ framework
bmqa.h [code]Provide applications public API for the BlazingMQ SDK
bmqa_abstractsession.h [code]Provide a pure protocol for a BlazingMQ session
bmqa_closequeuestatus.h [code]Provide Value-Semantic Type for a close queue operation status
bmqa_configurequeuestatus.h [code]Provide Value-Semantic Type for a configure queue operation status
bmqa_confirmeventbuilder.h [code]Provide a builder for batching confirmation messages
bmqa_event.h [code]Provide a generic variant encompassing all types of events
bmqa_manualhosthealthmonitor.h [code]Provide a minimal implementation of bmqpi::HostHealthMonitor
bmqa_message.h [code]Provide the application with a message data object
bmqa_messageevent.h [code]Provide the application with data event notifications
bmqa_messageeventbuilder.h [code]Provide a builder for MessageEvent objects
bmqa_messageiterator.h [code]Provide a mechanism to iterate over the messages of a MessageEvent
bmqa_messageproperties.h [code]Provide a VST representing message properties
bmqa_mocksession.h [code]Provide a mock session, implementing bmqa::AbstractSession
bmqa_openqueuestatus.h [code]Provide Value-Semantic Type for an open queue operation status
bmqa_queueid.h [code]Provide a value-semantic efficient identifier for a queue
bmqa_session.h [code]Provide access to the BlazingMQ broker
bmqa_sessionevent.h [code]Provide value-semantic type for system event session notifications
bmqpi.h [code]Provide an interface for monitoring the health of the host
bmqpi_dtcontext.h [code]Provide an interface for a context with a notion of a current span
bmqpi_dtspan.h [code]Provide an interface representing a span of a distributed trace
bmqpi_dttracer.h [code]Provide an interface that can create new DTSpan objects
bmqpi_hosthealthmonitor.h [code]Provide an interface for monitoring the health of the host
bmqt.h [code]Provide value-semantic vocabulary types
bmqt_compressionalgorithmtype.h [code]Provide an enumeration for different compression algorithm types
bmqt_correlationid.h [code]Provide a value-semantic type usable as an efficient identifier
bmqt_encodingtype.h [code]Provide an enumeration for different message encoding types
bmqt_hosthealthstate.h [code]Provide an enumeration for different host health states
bmqt_messageeventtype.h [code]Provide an enumeration for the different types of message events
bmqt_messageguid.h [code]Provide a value-semantic global unique identifier for BlazingMQ
bmqt_propertytype.h [code]Provide enum for the supported data types for a message property
bmqt_queueflags.h [code]Provide enumerators for flags to use at Queue open
bmqt_queueoptions.h [code]Provide a value-semantic type for options related to a queue
bmqt_resultcode.h [code]Provide enums for various publicly exposed result code
bmqt_sessioneventtype.h [code]Provide an enumeration for the different types of session events
bmqt_sessionoptions.h [code]Provide a value-semantic type to configure session with the broker
bmqt_subscription.h [code]Provide a value-semantic types for subscription related API
bmqt_uri.h [code]Provide value-semantic type and utilities for a BlazingMQ queue
bmqt_version.h [code]Provide a value-semantic type representing a version (major minor)
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/ftv2blank.png b/docs/docs/apidocs/cpp_apidocs/ftv2blank.png deleted file mode 100644 index 493c3c0b6..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/ftv2blank.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/ftv2doc.png b/docs/docs/apidocs/cpp_apidocs/ftv2doc.png deleted file mode 100644 index f72999f92..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/ftv2doc.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/ftv2folderclosed.png b/docs/docs/apidocs/cpp_apidocs/ftv2folderclosed.png deleted file mode 100644 index d6d063440..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/ftv2folderclosed.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/ftv2folderopen.png b/docs/docs/apidocs/cpp_apidocs/ftv2folderopen.png deleted file mode 100644 index bbe2c913c..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/ftv2folderopen.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/ftv2lastnode.png b/docs/docs/apidocs/cpp_apidocs/ftv2lastnode.png deleted file mode 100644 index e7b9ba90c..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/ftv2lastnode.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/ftv2link.png b/docs/docs/apidocs/cpp_apidocs/ftv2link.png deleted file mode 100644 index 14f3fed00..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/ftv2link.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/ftv2mlastnode.png b/docs/docs/apidocs/cpp_apidocs/ftv2mlastnode.png deleted file mode 100644 index 09ceb6adb..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/ftv2mlastnode.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/ftv2mnode.png b/docs/docs/apidocs/cpp_apidocs/ftv2mnode.png deleted file mode 100644 index 3254c0511..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/ftv2mnode.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/ftv2node.png b/docs/docs/apidocs/cpp_apidocs/ftv2node.png deleted file mode 100644 index c9f06a57f..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/ftv2node.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/ftv2plastnode.png b/docs/docs/apidocs/cpp_apidocs/ftv2plastnode.png deleted file mode 100644 index 0b07e0091..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/ftv2plastnode.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/ftv2pnode.png b/docs/docs/apidocs/cpp_apidocs/ftv2pnode.png deleted file mode 100644 index 2001b797b..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/ftv2pnode.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/ftv2vertline.png b/docs/docs/apidocs/cpp_apidocs/ftv2vertline.png deleted file mode 100644 index b330f3a33..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/ftv2vertline.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/functions.html b/docs/docs/apidocs/cpp_apidocs/functions.html deleted file mode 100644 index 47d6809dd..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- a -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x62.html b/docs/docs/apidocs/cpp_apidocs/functions_0x62.html deleted file mode 100644 index a755615c2..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x62.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- b -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x63.html b/docs/docs/apidocs/cpp_apidocs/functions_0x63.html deleted file mode 100644 index 98e1fc5f0..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x63.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- c -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x64.html b/docs/docs/apidocs/cpp_apidocs/functions_0x64.html deleted file mode 100644 index 5737591a6..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x64.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- d -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x65.html b/docs/docs/apidocs/cpp_apidocs/functions_0x65.html deleted file mode 100644 index f3bd9adf7..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x65.html +++ /dev/null @@ -1,525 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- e -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x66.html b/docs/docs/apidocs/cpp_apidocs/functions_0x66.html deleted file mode 100644 index 17869ec1e..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x66.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - - - - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x67.html b/docs/docs/apidocs/cpp_apidocs/functions_0x67.html deleted file mode 100644 index 4b54b3d62..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x67.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- g -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x68.html b/docs/docs/apidocs/cpp_apidocs/functions_0x68.html deleted file mode 100644 index 53a390615..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x68.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- h -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x69.html b/docs/docs/apidocs/cpp_apidocs/functions_0x69.html deleted file mode 100644 index 03cb78a36..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x69.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- i -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x6b.html b/docs/docs/apidocs/cpp_apidocs/functions_0x6b.html deleted file mode 100644 index 3560226e2..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x6b.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- k -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x6c.html b/docs/docs/apidocs/cpp_apidocs/functions_0x6c.html deleted file mode 100644 index ba66f581f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x6c.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- l -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x6d.html b/docs/docs/apidocs/cpp_apidocs/functions_0x6d.html deleted file mode 100644 index a117fdb06..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x6d.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- m -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x6e.html b/docs/docs/apidocs/cpp_apidocs/functions_0x6e.html deleted file mode 100644 index d1dee8de7..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x6e.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- n -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x6f.html b/docs/docs/apidocs/cpp_apidocs/functions_0x6f.html deleted file mode 100644 index 2408af76a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x6f.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- o -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x70.html b/docs/docs/apidocs/cpp_apidocs/functions_0x70.html deleted file mode 100644 index cacb501a8..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x70.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - - - - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x71.html b/docs/docs/apidocs/cpp_apidocs/functions_0x71.html deleted file mode 100644 index 5d95fd5e1..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x71.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- q -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x72.html b/docs/docs/apidocs/cpp_apidocs/functions_0x72.html deleted file mode 100644 index 026155478..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x72.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- r -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x73.html b/docs/docs/apidocs/cpp_apidocs/functions_0x73.html deleted file mode 100644 index 5a9ecec35..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x73.html +++ /dev/null @@ -1,327 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- s -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x74.html b/docs/docs/apidocs/cpp_apidocs/functions_0x74.html deleted file mode 100644 index f0d0b28a3..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x74.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - - - - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x75.html b/docs/docs/apidocs/cpp_apidocs/functions_0x75.html deleted file mode 100644 index d97f6ae7b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x75.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- u -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x76.html b/docs/docs/apidocs/cpp_apidocs/functions_0x76.html deleted file mode 100644 index 2d71c1807..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x76.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- v -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_0x7e.html b/docs/docs/apidocs/cpp_apidocs/functions_0x7e.html deleted file mode 100644 index 5f0e3e16d..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_0x7e.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all class members with links to the classes they belong to: - -

- ~ -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_enum.html b/docs/docs/apidocs/cpp_apidocs/functions_enum.html deleted file mode 100644 index 7bb84a3c7..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_enum.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - - - - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_eval.html b/docs/docs/apidocs/cpp_apidocs/functions_eval.html deleted file mode 100644 index 3d76e9f69..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_eval.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- e -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func.html b/docs/docs/apidocs/cpp_apidocs/functions_func.html deleted file mode 100644 index ab6db5b2c..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- a -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x62.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x62.html deleted file mode 100644 index 5db4b90ad..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x62.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- b -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x63.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x63.html deleted file mode 100644 index f0dcd5254..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x63.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- c -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x64.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x64.html deleted file mode 100644 index 92f8f60c1..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x64.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- d -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x65.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x65.html deleted file mode 100644 index 185d7ba9c..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x65.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- e -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x66.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x66.html deleted file mode 100644 index 5ac673b7c..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x66.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - - - - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x67.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x67.html deleted file mode 100644 index f64c27145..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x67.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- g -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x68.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x68.html deleted file mode 100644 index 8991a3490..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x68.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- h -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x69.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x69.html deleted file mode 100644 index f3098fb22..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x69.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- i -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x6c.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x6c.html deleted file mode 100644 index eec6afb54..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x6c.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- l -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x6d.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x6d.html deleted file mode 100644 index f1493811b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x6d.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- m -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x6e.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x6e.html deleted file mode 100644 index e1d71c4d8..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x6e.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- n -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x6f.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x6f.html deleted file mode 100644 index a782134a4..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x6f.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - - - - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x70.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x70.html deleted file mode 100644 index 87f627813..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x70.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - - - - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x71.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x71.html deleted file mode 100644 index 4c8bc4d2e..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x71.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- q -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x72.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x72.html deleted file mode 100644 index 020f34988..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x72.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- r -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x73.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x73.html deleted file mode 100644 index 5b01a3a7f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x73.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- s -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x74.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x74.html deleted file mode 100644 index 49c837837..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x74.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - - - - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x75.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x75.html deleted file mode 100644 index 72ae71b5b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x75.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- u -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x76.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x76.html deleted file mode 100644 index ffb5bf92b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x76.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- v -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_func_0x7e.html b/docs/docs/apidocs/cpp_apidocs/functions_func_0x7e.html deleted file mode 100644 index 9762e5311..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_func_0x7e.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- ~ -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_rela.html b/docs/docs/apidocs/cpp_apidocs/functions_rela.html deleted file mode 100644 index 05d2a0cf8..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_rela.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_type.html b/docs/docs/apidocs/cpp_apidocs/functions_type.html deleted file mode 100644 index 714605a67..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_type.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/functions_vars.html b/docs/docs/apidocs/cpp_apidocs/functions_vars.html deleted file mode 100644 index d259fc40a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/functions_vars.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- d -

- - -

- k -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/globals.html b/docs/docs/apidocs/cpp_apidocs/globals.html deleted file mode 100644 index 250dce106..000000000 --- a/docs/docs/apidocs/cpp_apidocs/globals.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all file members with links to the files they belong to: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/globals_defs.html b/docs/docs/apidocs/cpp_apidocs/globals_defs.html deleted file mode 100644 index 623f93ed7..000000000 --- a/docs/docs/apidocs/cpp_apidocs/globals_defs.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/globals_vars.html b/docs/docs/apidocs/cpp_apidocs/globals_vars.html deleted file mode 100644 index 96c618d80..000000000 --- a/docs/docs/apidocs/cpp_apidocs/globals_vars.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmq.html b/docs/docs/apidocs/cpp_apidocs/group__bmq.html deleted file mode 100644 index f5dde1f7f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmq.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - -bmq Package Group - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Package Group bmq

-
-
- -

Public SDK API for the BlazingMQ framework. -More...

- - - - -

-

- - -

-

- - -

-

-

-Packages

 Package bmqa
 

Provide applications public API for the BlazingMQ SDK.

-
 Package bmqpi
 

Provide an interface for monitoring the health of the host.

-
 Package bmqt
 

Provide value-semantic vocabulary types.

-
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Public SDK API for the BlazingMQ framework.
-
-
-
MNEMONIC: BlazingMQ (bmq):
-
-
-
-
Description:
BlazingmQ (package group bmq) is a message-queue framework allowing application developers to use reliable distributed queues.
-
The bmqa and bmqt packages contain all components that constitute the public API for BlazingmQ users to use. A client should only use the components in these packages, and should not use any other package under the bmq package group since they are implementation components that may change at any time.
-
-
-
Hierarchical Synopsis:
The bmq group library currently has 5 packages forming 5 levels of physical dependency.
  5. bmqa
-
-  4. bmqimp
-
-  3. bmqp
-
-  2. bmqt
-
-  1. bmqscm
-
-
-
-
Package Synopsis:
-
bmqa:
- Provide applications public API for the BlazingmQ SDK.
-
bmqimp:
- [INTERNAL] Provide implementation for the API of the BlazingMQ SDK.
-
bmqp:
- [INTERNAL] Provide BlazingMQ protocol definition, builders and parsers.
-
bmqscm:
- Provide versioning information for library components in bmq.
-
bmqt:
- Provide value-semantic vocabulary types.
-
-
-
-
Package Overview:
The following provides a brief overview of several of the packages within the bmq package group, arranged in alphabetical order. The descriptions here are still very brief; see the respective Package Level documents for more details and usage examples.
-
-
-
bmqa:
bmqa provides the top-level public APIs application can use to interact with BlazingMQ framework in their applications.
-
-
-
bmqt:
bmqt provides value-semantic vocabulary types used in the bmqa APIs.
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa.html deleted file mode 100644 index f842a623c..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - -bmqa Package - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Package bmqa
- -[Package Group bmq] -

-
-
- -

Provide applications public API for the BlazingMQ SDK. -More...

- - - - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

-

-Components

 Component bmqa_abstractsession
 

Provide a pure protocol for a BlazingMQ session.

-
 Component bmqa_closequeuestatus
 

Provide Value-Semantic Type for a close queue operation status.

-
 Component bmqa_configurequeuestatus
 

Provide Value-Semantic Type for a configure queue operation status.

-
 Component bmqa_confirmeventbuilder
 

Provide a builder for batching confirmation messages.

-
 Component bmqa_event
 

Provide a generic variant encompassing all types of events.

-
 Component bmqa_manualhosthealthmonitor
 

Provide a minimal implementation of bmqpi::HostHealthMonitor.

-
 Component bmqa_message
 

Provide the application with a message data object.

-
 Component bmqa_messageevent
 

Provide the application with data event notifications.

-
 Component bmqa_messageeventbuilder
 

Provide a builder for MessageEvent objects.

-
 Component bmqa_messageiterator
 

Provide a mechanism to iterate over the messages of a MessageEvent.

-
 Component bmqa_messageproperties
 

Provide a VST representing message properties.

-
 Component bmqa_mocksession
 

Provide a mock session, implementing bmqa::AbstractSession.

-
 Component bmqa_openqueuestatus
 

Provide Value-Semantic Type for an open queue operation status.

-
 Component bmqa_queueid
 

Provide a value-semantic efficient identifier for a queue.

-
 Component bmqa_session
 

Provide access to the BlazingMQ broker.

-
 Component bmqa_sessionevent
 

Provide value-semantic type for system event session notifications.

-
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide applications public API for the BlazingMQ SDK.
-
-
-
MNEMONIC: BlazingMQ API (bmqa):
-
-
-
-
Description:
The bmqa package provides the public API of the BlazingMQ SDK for applications to use.
-
-
-
Hierarchical Synopsis:
The bmqa package currently has 8 components having 6 levels of physical dependency. The list below shows the hierarchical ordering of the components.
  6. bmqa_session
-
-  5. bmqa_event
-     bmqa_messageeventbuilder
-
-  4. bmqa_messageevent
-
-  3. bmqa_messageiterator
-
-  2. bmqa_message
-     bmqa_openqueuestatus
-     bmqa_closequeuestatus
-     bmqa_configurequeuestatus
-     bmqa_sessionevent
-
-  1. bmqa_queueid
-
-
-
-
Component Synopsis:
-
bmqa_event:
- Provide a generic variant encompassing all types of events.
-
bmqa_message:
- Provide the application with a message data object.
-
bmqa_messageevent:
- Provide the application with data event notifications.
-
bmqa_messageeventbuilder:
- Provide a builder for MessageEvent objects.
-
bmqa_messageiterator:
- Provide a mechanism to iterate over the messages of a MessageEvent.
-
bmqa_openqueuestatus:
- Provide value-semantic type for an open queue operation
-
bmqa_closequeuestatus:
- Provide value-semantic type for a close queue operation
-
bmqa_configurequeuestatus:
- Provide value-semantic type for a configure queue operation
-
bmqa_queueid:
- Provide a value-semantic efficient identifier for a queue.
-
bmqa_session:
- Provide access to the BlazingMQ broker.
-
bmqa_sessionevent:
- Provide value-semantic type for system event session notifications.
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__abstractsession.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__abstractsession.html deleted file mode 100644 index 2178c5a1b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__abstractsession.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -bmqa_abstractsession Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_abstractsession
- -[Package bmqa] -

-
-
- -

Provide a pure protocol for a BlazingMQ session. -More...

- - - -

-Namespaces

namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a pure protocol for a BlazingMQ session.
-
-
-
Classes:
- - -
bmqa::AbstractSession Interface for a BlazingMQ session.
-
-
-
-
Description:
-

bmqa::AbstractSession is a pure protocol for a BlazingMQ session.

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__closequeuestatus.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__closequeuestatus.html deleted file mode 100644 index 191b47ad5..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__closequeuestatus.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - -bmqa_closequeuestatus Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_closequeuestatus
- -[Package bmqa] -

-
-
- -

Provide Value-Semantic Type for a close queue operation status. -More...

- - - -

-Namespaces

namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide Value-Semantic Type for a close queue operation status
-
-
-
Classes:
- - -
bmqa::CloseQueueStatus value-semantic type for a closeQueue result
-
-
-
-
Description:
This component provides a specific value-semantic type for the result of a close queue operation with the BlazingMQ broker, providing applications with the result and context of the requested operation.
-
A bmqa::CloseQueueStatus type is composed of 3 attributes:
    -
  • -result: indicates the status of the operation (success, failure, etc.) as specified in the corresponding result code enum, bmqt::CloseQueueResult::Enum
  • -
  • -queueId: queueId associated with the close queue operation
  • -
  • -errorDescription: optional string with a human readable description of the error, if any
  • -
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__configurequeuestatus.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__configurequeuestatus.html deleted file mode 100644 index 67c0aa894..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__configurequeuestatus.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - -bmqa_configurequeuestatus Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_configurequeuestatus
- -[Package bmqa] -

-
-
- -

Provide Value-Semantic Type for a configure queue operation status. -More...

- - - -

-Namespaces

namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide Value-Semantic Type for a configure queue operation status
-
-
-
Classes:
- - -
bmqa::ConfigureQueueStatus value-semantic type for a configureQueue result
-
-
-
-
Description:
This component provides a specific value-semantic type for the result of a configure queue operation with the BlazingMQ broker, providing applications with the result and context of the requested operation.
-
A bmqa::ConfigureQueueStatus type is composed of 3 attributes:
    -
  • -result: indicates the status of the operation (success, failure, etc.) as specified in the corresponding result code enum, bmqt::ConfigureQueueResult::Enum
  • -
  • -queueId: queueId associated with the configure queue operation
  • -
  • -errorDescription: optional string with a human readable description of the error, if any
  • -
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__confirmeventbuilder.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__confirmeventbuilder.html deleted file mode 100644 index b3ceb50cc..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__confirmeventbuilder.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - -bmqa_confirmeventbuilder Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_confirmeventbuilder
- -[Package bmqa] -

-
-
- -

Provide a builder for batching confirmation messages. -More...

- - - - -

-Namespaces

namespace  bmqp
namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a builder for batching confirmation messages.
-
-
-
Classes:
- - -
bmqa::ConfirmEventBuilder builder for batching confirmation messages.
-
-
-
-
Description:
This component implements a mechanism, bmqa::ConfirmEventBuilder, that can be used for batching CONFIRM messages. The resulting batch can be sent to the BlazingMQ broker using the bmqa::Session (refer to bmqa_session for details). Wherever possible, a BlazingMQ consumer should try to send a batch of CONFIRM messages, which is more efficient than confirming messages individually.
-
The builder holds a batch of CONFIRM messages under construction, and provides two flavors of addMessageConfirmation method to add a CONFIRM message to the batch. It also provides a routine to retrieve number of CONFIRM messages added to the batch. Once application is done creating the batch, it can retrieve the blob (wire-representation) of the batch and send it via bmqa::Session. See Usage section for more details.
-
-
-
Usage:
    -
  • -An instance of bmqa::ConfirmEventBuilder (the builder) can be used to create multiple batches of CONFIRM messages. The recommended approach is to create one instance of the builder and use it throughout the lifetime of the task (if the task is multi-threaded, an instance per thread must be created and maintained). See usage example #1 for an illustration.
  • -
  • -The lifetime of an instance of the builder is bound by the bmqa::Session from which it was created. In other words, bmqa::Session instance must outlive the builder instance.
  • -
-
-
-
-
Example 1 - Basic Usage:
   // In this snippet, we will send a batch of CONFIRMs for all the
-   // 'bmqa::Message' messages received in a 'bmqa::MessageEvent'.
-
-   // Note that error handling is omitted from the snippet for the sake of
-   // brevity.
-
-   bmqa::Session session;
-       // Session start up logic elided.
-
-   // Create and load an instance of the ConfirmEventBuilder.  Note that in
-   // this example, we are creating the builder on the stack everytime a
-   // message event is received.  Another approach can be to maintain the
-   // builder as a data member and use it everytime.
-
-   bmqa::ConfirmEventBuilder builder;
-   session.loadConfirmEventBuilder(&builder);
-
-   // Assuming that a 'bmqa::MessageEvent' is received.
-
-   bmqa::MessageIterator iter = messageEvent.messageIterator();
-   while (iter.nextMessage()) {
-       const bmqa::Message& msg = iter.message();
-
-       // Business logic for processing 'msg' elided.
-
-       int rc = builder.addMessageConfirmation(msg);
-           // Error handling elided.
-   }
-
-   // All messages in the event have been processed and their corresponding
-   // CONFIRM messages have been batched.  Now its time to send the batch to
-   // the BlazingMQ broker.
-
-   int rc = session.confirmMessages(&builder);
-       // Error handling elided.  Note that in case of success, above method
-       // will also reset the 'builder'.
-
-
-
-
Thread Safety:
This component is NOT thread safe. If it is desired to create a batch of CONFIRM messages from multiple threads, an instance of the builder must be created and maintained per thread.
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__event.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__event.html deleted file mode 100644 index e4f255057..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__event.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - -bmqa_event Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_event
- -[Package bmqa] -

-
-
- -

Provide a generic variant encompassing all types of events. -More...

- - - - -

-Namespaces

namespace  bmqimp
namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a generic variant encompassing all types of events.
-
-
-
Classes:
- - -
bmqa::Event variant encompassing all types of events.
-
-
-
See also:
bmqa::MessageEvent : Data event notification. bmqa::SessionEvent : Session and queue status event notification.
-
-
-
Description:
This component provides a generic bmqa::Event notification object used by the bmqa::Session to provide BlazingMQ applications with information regarding the status of the session or data coming from queues. This bmqa::Event object is only used when user wants to process messages from the EventQueue using its own thread, by calling the bmqa::Session::nextEvent method.
-
A bmqa::Event can either be a bmqa::SessionEvent or a bmqa::MessageEvent. The former describes notifications such as the result of a session start or the opening of a queue. The latter carries application messages retrieved from a queue.
-
Note that event is implemented using the pimpl idiom, so copying an event is very cheap (a pointer copy). All copies of this bmqa::Event, as well as any SessionEvent or MessageEvent extracted from it will share the same underlying implementation.
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__manualhosthealthmonitor.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__manualhosthealthmonitor.html deleted file mode 100644 index 9acba2e73..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__manualhosthealthmonitor.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -bmqa_manualhosthealthmonitor Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_manualhosthealthmonitor
- -[Package bmqa] -

-
-
- -

Provide a minimal implementation of bmqpi::HostHealthMonitor. -More...

- - - -

-Namespaces

namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a minimal implementation of bmqpi::HostHealthMonitor.
-
-
-
Classes:
- - -
bmqa::ManualHostHealthMonitor A HostHealthMonitor that derives its host
-health state from a value explicitly set through a setter method.
-
-
-
Description:
-

bmqa::ManualHostHealthMonitor is a minimal implementation of bmqpi::HostHealthMonitor, which is primarily useful for unit-testing, and for integrating with other systems for determining host health.

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__message.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__message.html deleted file mode 100644 index 73775798b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__message.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - -bmqa_message Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_message
- -[Package bmqa] -

-
-
- -

Provide the application with a message data object. -More...

- - - - -

-Namespaces

namespace  bmqimp
namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide the application with a message data object.
-
-
-
Classes:
- - - - -
bmqa::Message message received from/sent to a queue
bmqa::MessageConfirmationCookie cookie for async message confirmation
-
-
-
See also:
bmqa::MessageEvent : Mechanism for data event notification. bmqa::MessageEventBuilder: Builder for bmqa::MessageEvent
-
-
-
Description:
A bmqa::Message represents the data message to put on a queue, or retrieved from a queue. It is composed of the following fields:
-
    -
  • -A message GUID, which is a printable string generated by the broker to uniquely identify this message.
  • -
  • -A correlation Id, which is a user-provided identifier for the message.
  • -
  • -A queue Id, to map with the queue this message is associated with.
  • -
  • -The payload, which is opaque to the framework. At some point, framework may provide utilities to encode and decode schema messages using various CODECs. For example, a JavaScript publisher may publish a message into a queue using a JSON object as payload, and the consumer may be receiving that payload as a BER-encoded schema object.
  • -
  • -At some point, system properties such as version, encoding, timestamp, priority, message group and "reply-to" will be supported. System properties will be used by the broker; for example to deliver high-priority messages first or to filter based on a minimum version.
  • -
  • -At some point, application-defined message properties will also be supported, where properties are a list of name-value pairs.
  • -
-
-
A bmqa::MessageConfirmationCookie is a small object which allows to confirm a bmqa::Message asynchronously without having to hold on to the entire message. This can be useful when, for example, the message is decoded in the event handler, and the resulting object is enqueued for asynchronous processing, along with that small cookie object for confirming the message once successfully processed.
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__messageevent.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__messageevent.html deleted file mode 100644 index 525041b12..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__messageevent.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - -bmqa_messageevent Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_messageevent
- -[Package bmqa] -

-
-
- -

Provide the application with data event notifications. -More...

- - - - -

-Namespaces

namespace  bmqimp
namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide the application with data event notifications.
-
-
-
Classes:
- - -
bmqa::MessageEvent Mechanism for data event notification.
-
-
-
See also:
bmqa::MessageIterator: iterator over the messages in this event bmqa::Message: type of the Message
-
-
-
Description:
This component provides a bmqa::MessageEvent notification object used by the bmqa::Session to provide BlazingMQ applications with data messages received from the broker. The application can consume the messages by asking this MessageEvent for a MessageIterator.
-
Note that MessageEvent is implemented using the pimpl idiom, so copying a MessageEvent is very cheap (a pointer copy). All copies of this MessageEvent will share the same underlying implementation.
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__messageeventbuilder.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__messageeventbuilder.html deleted file mode 100644 index f105816f3..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__messageeventbuilder.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - -bmqa_messageeventbuilder Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_messageeventbuilder
- -[Package bmqa] -

-
-
- -

Provide a builder for MessageEvent objects. -More...

- - - - -

-Namespaces

namespace  bmqa
namespace  bmqp
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a builder for MessageEvent objects.
-
-
-
Classes:
- - -
bmqa::MessageEventBuilder a builder for MessageEvent.
-
-
-
-
Description:
This component implements a mechanism, bmqa::MessageEventBuilder, that can be used for creating message events containing one or multiple messages. The resulting MessageEvent can be sent to the BlazingMQ broker using the bmqa::Session (refer to bmqa_session for details).
-
The builder holds a MessageEvent under construction, and provides methods to return a reference to the current message (in order to set its various members), as well as to append a new message. Once the application is done, the builder provides a method to get the message event that has been constructed. See Usage section for more details.
-
Note that publishing events containing multiple messages may be more efficient than events limited to a single message for applications that send large volume of small messages.
-
-
-
Usage:
    -
  • -An instance of bmqa::MessageEventBuilder (the builder) can be used to create multiple bmqa::MessageEvent's, as long as the instance is reset in between. This reset is preferably to do right after sending the event to guarantee that all user resources bound to the bmqa::MessageEvent (e.g. CorrelationIds with user's shared_ptr) are kept no longer than expected (e.g. until related ACK event is received). The recommended approach is to create one instance of the builder and use that throughout the lifetime of the task (if the task is multi-threaded, an instance per thread must be created and maintained). See usage example #1 for an illustration.
  • -
  • -The lifetime of an instance of the builder is bound by the bmqa::Session from which it was created. In other words, bmqa::Session instance must outlive the builder instance.
  • -
  • -If it is desired to post the same bmqa::Message to different queues, packMessage can be called multiple times in a row with different queue IDs. The builder will append the previously packed message with the new queue ID to the underlying message event. Note that after calling packMessage, the message keeps all the attributes (payload, properties, etc) that were previously set (except for the correlationId which must be set explicitly for each individual message). If desired, any attribute can be tweaked before being packing the message again. Refer to usage example #2 for an illustration.
  • -
-
-
-
-
Example 1 - Basic Usage:
   // Note that error handling is omitted below for the sake of brevity
-
-   bmqa::Session session;
-       // Session start up logic omitted for brevity.
-
-   // Obtain a valid instance of message properties.
-   bmqt::MessageProperties properties;
-   session.loadMessageProperties(&properties);
-
-   // Set common properties that will be applicable to all messages sent by
-   // this application.
-   int rc = properties.setPropertyAsChar(
-                                   "encoding",
-                                   static_cast<char>(MyEncodingEnum::e_BER));
-
-   rc = properties.setPropertyAsString("producerId", "MyUniqueId");
-
-   // Obtain a valid instance of message event builder.
-   bmqa::MessageEventBuilder builder;
-   session.loadMessageEventBuilder(&builder);
-
-   // Create and post a message event containing 1 message.  Associate
-   // properties with this message.
-   bmqa::Message& msg = builder.startMessage();
-
-   msg.setCorrelationId(myCorrelationId);
-
-   // Set payload (where 'myPayload' is of type 'bdlbb::Blob')
-   msg.setDataRef(&myPayload);
-
-   // Set current timestamp as one of the properties.
-   rc = properties.setPropertyAsInt64(
-                "timestamp",
-                bdlt::EpochUtil::convertToTimeT64(bdlt::CurrentTime::now()));
-
-   // Set properties.
-   msg.setPropertiesRef(&properties);
-
-   // Pack the message.
-   rc = builder.packMessage(myQueueId);
-
-   // Post message event
-   rc = session.post(builder.messageEvent());
-
-
-   // Create and post another message event containing 1 message.
-
-   // bmqa::MessageEventBuilder must be reset before reuse.
-   builder.reset();
-
-   // Start a new message.
-   bmqa::Message& msg = builder.startMessage();
-
-   msg.setCorrelationId(myAnotherCorrelationId);
-   msg.setDataRef(&myAnotherPayload);
-
-   // It's okay (and recommended) to use same properties instance.
-   rc = properties.setPropertyAsInt64(
-                "timestamp",
-                bdlt::EpochUtil::convertToTimeT64(bdlt::CurrentTime::now()));
-
-   msg.setPropertiesRef(&properties);
-   rc = builder.packMessage(myAnotherQueueId);
-
-   // Post second message event
-   rc = session.post(builder.messageEvent());
-
-   // Reset the builder to free resources earlier.
-   builder.reset();
-
-
-
-
Example 2 - Packing multiple messages in a message event:
   // Note that error handling is omitted below for the sake of brevity
-
-   bmqa::Session session;
-   // Session start up logic omitted for brevity.
-
-   // Obtain a valid instance of message properties.
-   bmqt::MessageProperties properties;
-   session.loadMessageProperties(&properties);
-
-   // Set common properties that will be applicable to all messages sent by
-   // this application.
-   int rc = properties.setPropertyAsChar(
-                                   "encoding",
-                                   static_cast<char>(MyEncodingEnum::e_BER));
-
-   rc = properties.setPropertyAsString("producerId", "MyUniqueId");
-
-   // Obtain a valid instance of message event builder.
-   bmqa::MessageEventBuilder builder;
-   session.loadMessageEventBuilder(&builder);
-
-   // Create and post a message event containing 4 messages.
-   bmqa::Message& msg = builder.startMessage();
-
-   // Pack message #1
-   msg.setCorrelationId(correlationId1);
-   msg.setDataRef(&payload1);  // where 'payload1' is of type 'bdlbb::Blob'
-
-   // Set current timestamp as one of the properties.
-   int rc = properties.setPropertyAsInt64(
-                "timestamp",
-                bdlt::EpochUtil::convertToTimeT64(bdlt::CurrentTime::now()));
-
-   // Pack the message.
-   rc = builder.packMessage(queueId1);
-
-   // Pack message #2
-   // We want to send message #1 to another queue.  In order to do so, we
-   // just update the correlation ID of message #1.  There is no need to set
-   // the payload or properties again.  Because 'payload1' and 'properties'
-   // objects are being reused for the second message, they should not be
-   // destroyed before packing the second message.
-
-   msg.setCorrelationId(correlationId2);
-
-   // Also note that the "timestamp" property for the second message will be
-   // updated for this message.  There is no need to invoke
-   // 'setPropertiesRef' on the message though.
-   rc = properties.setPropertyAsInt64(
-                "timestamp",
-                bdlt::EpochUtil::convertToTimeT64(bdlt::CurrentTime::now()));
-
-   rc = builder.packMessage(queueId2);
-
-   // 'payload1' can be safely destroyed at this point if it will not be
-   // reused again for another message.
-
-   // Pack message #3
-   // Message #3 has a different payload, no properties and destined to
-   // 'queueId1'.
-   msg.setCorrelationId(correlationId3);
-   msg.setDataRef(&payload2);  // where 'payload2' is of type 'bdlbb::Blob'
-
-   // We need to explicitly clear out the associated properties.
-   msg.clearProperties();
-
-   rc = builder.packMessage(queueId1);
-
-   // Pack message #4
-   // Message #4 has different payload and destined to 'queueId3'.
-   msg.setCorrelationId(correlationId4);
-   msg.setDataRef(&payload3);  // where 'payload3' is of type 'bdlbb::Blob'
-
-   // Update "timestamp" property.
-   rc = properties.setPropertyAsInt64(
-                "timestamp",
-                bdlt::EpochUtil::convertToTimeT64(bdlt::CurrentTime::now()));
-
-   // Need to associate properties with the message, since they were cleared
-   // out while packing message #3 above.
-   msg.setPropertiesRef(&properties);
-
-   rc = builder.packMessage(queueId3);
-
-   // Post second message event
-   rc = session.post(builder.messageEvent());
-
-   // Reset the builder to free resources earlier.
-   builder.reset();
-
-
-
-
Thread Safety:
This component is NOT thread safe.
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__messageiterator.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__messageiterator.html deleted file mode 100644 index d776f5982..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__messageiterator.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -bmqa_messageiterator Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_messageiterator
- -[Package bmqa] -

-
-
- -

Provide a mechanism to iterate over the messages of a MessageEvent. -More...

- - - - -

-Namespaces

namespace  bmqimp
namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a mechanism to iterate over the messages of a MessageEvent.
-
-
-
Classes:
- - -
bmqa::MessageIterator read-only sequential iterator on Message objects
-
-
-
-
Description:
bmqa::MessageIterator is an iterator-like mechanism providing read-only sequential access to messages contained into a MessageEvent.
-
-
-
Usage:
Typical usage of this iterator should follow the following pattern:
  while (messageIterator.nextMessage()) {
-    const Message& message = messageIterator.message();
-    // Do something with message
-  }
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__messageproperties.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__messageproperties.html deleted file mode 100644 index ceb15139e..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__messageproperties.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - -bmqa_messageproperties Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_messageproperties
- -[Package bmqa] -

-
-
- -

Provide a VST representing message properties. -More...

- - - - -

-Namespaces

namespace  bmqp
namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a VST representing message properties.
-
-
-
Classes:
- - - - -
bmqa::MessageProperties VST representing message properties.
bmqa::MessagePropertiesIterator Mechanism to iterate over properties.
-
-
-
See also:
bmqt::PropertyType
-
-
-
Description:
bmqa::MessageProperties provides a VST representing message properties. Message properties are a collection of name-value pairs that producer can associate with a message, and consumer can retrieve from the corresponding message. In order to keep their usage flexible, no schema is enforced for the message properties, and their format (names and data types) should be negotiated by producers and consumers. Message properties can be used for routing, pipelining or filtering messages within the application. It can be efficient to specify such message attributes in the properties instead of the message payload, because application does not have to decode entire payload to retrieve these attributes. bmqa::MessagePropertiesIterator provides a mechanism to iterate over all the properties of a bmqa::MessageProperties object.
-
-
-
Restrictions on Property Names:
-
-
-
    -
  • -First character of the property name must be alpha-numeric.
  • -
-
-
-
-
Restrictions on Property Values:
-
-
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__mocksession.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__mocksession.html deleted file mode 100644 index 1ceee7f5f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__mocksession.html +++ /dev/null @@ -1,601 +0,0 @@ - - - - -bmqa_mocksession Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_mocksession
- -[Package bmqa] -

-
-
- -

Provide a mock session, implementing bmqa::AbstractSession. -More...

- - - - -

-Namespaces

namespace  bmqimp
namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a mock session, implementing bmqa::AbstractSession.
-
-
-
Classes:
- - - - -
bmqa::MockSession mechanism to mock a bmqa::Session
bmqa::MockSessionUtil utility methods to create bmqa events
-
-
-
-
Description:
This component provides a mechanism implementing the bmqa::AbstractSession protocol, for mocking a bmqa::Session and can be used to write a test for an application that uses BMQ. The bmqa::MockSession provides all the methods that Session provides, with added methods to specify return codes and emitted events and expected calls. This can be used to test BlazingMQ application code without a connection to the broker. bmqa::MockSessionUtil is a utility namespace providing useful methods to build bmqa::Event objects that are typically only emitted from the broker.
-
The following documentation elucidates the API that this component provides and some simple use cases to get you started.
-
-
-
-
Disclaimer:
THIS COMPONENT SHOULD ONLY BE USED IN TEST DRIVERS. IT WILL NOT WORK WITH PRODUCTION CODE.
-
-
-
-
Usable Components:
    -
  • -BMQA_EXPECT_CALL: Macro to specify an expected call to a bmqa::MockSession object. This macro is used to specify which is the next expected call on the bmqa::MockSession. If an incorrect call is invoked or incorrect parameters are used, an assert will be invoked.
  • -
-
-
    -
  • -returning : Specify a return value for the expected call. This is the value that will be returned when the method on bmqa::MockSession is invoked.
  • -
-
-
    -
  • -emitting : Specify an event to be emitted when the expected call is invoked. The events specified are enqueued to the internal event queue and are delivered to the application when emitEvent is invoked.
  • -
-
-
-
-
Static Helper Methods:
    -
  • -createAckEvent : Create an acknowledgment message event for messages posted to BMQ.
  • -
-
-
    -
  • -createPushEvent : Create a push message event for messages to be consumed from BMQ.
  • -
-
-
    -
  • -createOpenQueueStatus : Create an openQueue result (relating to an async open queue operation)
  • -
-
-
    -
  • -createConfigureQueueStatus: Create a configureQueue result (relating to an async configure queue operation)
  • -
-
-
    -
  • -createCloseQueueStatus : Create a closeQueue result (relating to an async close queue operation)
  • -
-
-
    -
  • -createSessionEvent : Create a specified type of session event except for events related to open, close and configure queue.
  • -
-
-
The static event builder specified above are typically built inside the broker but are now available to be built in the SDK. The expected use of such events is to build them and specify them to either the BMQA_EXPECT_CALL macro in the emitting parameter, or enqueued to the bmqa::MockSession directly through the enqueueEvent method. They can then be emitted by invoking the emitEvent method, which in turn would be processed through the application-provided bmqa::SessionEventHandler.
-
-
-
Additional Note:
MockSession does not check if methods have been invoked in the correct order. The user is responsible for ensuring that the methods are invoked and events enqueued in the correct order.
-
The following methods do not emit events:
    -
  • -getQueueId
  • -
  • -loadMessageEventBuilder
  • -
  • -loadConfirmEventBuilder
  • -
  • -loadMessageProperties
  • -
  • -confirmMessage
  • -
  • -confirmMessages
  • -
-
-
Calls to the following methods do not require an expect:
    -
  • -getQueueId
  • -
  • -loadMessageEventBuilder
  • -
  • -loadConfirmEventBuilder
  • -
  • -loadMessageProperties
  • -
-
-
-
-
-
Creating a mock session in asynchronous mode:
The MockSession is created in asynchronous mode when a SessionEventHandler is provided to it. If it is not provided a handler, the MockSession is started in synchronous mode, requiring the application to call nextEvent to access enqueued events. A sample handler could look like this:
-
  class MyEventHandler : public bmqa::SessionEventHandler {
-
-    private:
-      // DATA
-      bsl::deque<bmqa::SessionEvent>    d_sessionEventsQueue;
-      bsl::deque<bmqa::MessageEvents>   d_messageEventsQueue;
-      bsl::deque<bmqa::OpenQueueStatus> d_openQueueResultsQueue;
-      ...
-
-    public:
-      // MANIPULATORS
-      virtual void onSessionEvent(const bmqa::SessionEvent& event)
-      {
-          bsl::cout << "Received session event " << event << "\n";
-          // some business logic, typically a switch case on
-          // 'bmqt::SessionEventType'
-          d_sessionEventsQueue.push_back(event);
-      }
-
-      virtual void onMessageEvent(const bmqa::MessageEvent& event)
-      {
-          bsl::cout << "Received message event " << event << "\n";
-          // some business logic, typically a switch case on
-          // 'bmqt::MessageEventType'
-          d_messageEventsQueue.push_back(event);
-      }
-
-      void onOpenQueueStatus(const bmqa::OpenQueueStatus& result)
-      {
-          bsl::cout << "Received open queue result: " << result << "\n";
-          // Some business logic
-          d_openQueueResultsQueue.push_back(result);
-      }
-      ...
-
-      bmqa::SessionEvent popSessionEvent()
-      {
-          BSLS_ASSERT(d_sessionEventsQueue.size() > 0);
-          bmqa::SessionEvent ret(d_receivedSessionEvents.front());
-          d_receivedSessionEvents.pop_front();
-          return ret;
-      }
-
-      bmqa::MessageEvent popMessageEvent()
-      {
-          BSLS_ASSERT(d_messageEventsSize.size() > 0);
-          bmqa::MessageEvent ret(d_receivedMessageEvents.front());
-          d_receivedMessageEvents.erase(d_receivedMessageEvents.begin());
-          return ret;
-      }
-
-      bmqa::OpenQueueStatus popOpenQueueStatus()
-      {
-          BSLS_ASSERT(d_openQueueResultsQueue.size() > 0);
-          bmqa::OpenQueueStatus ret(d_openQueueResultsQueue.front());
-          d_openQueueResultsQueue.erase(d_openQueueResultsQueue.begin());
-          return ret;
-      }
-      ...
-  };
-
-
-
-
Usage:
This section illustrates intended use of this component.
-
-
-
Example 1:
The folowing example shows a simple producer in asynchronous mode, which will start the session, open a queue, post a message to the queue, generate an ack for that message and finally stop the session (skipping over close queue because it is analogous to opening a queue). In theory, you can use emitting on the BMQA_EXPECT_CALL macro and enqueueEvent interchangeably, but in practice it is important to note that events from the broker are generated asynchronously, which means that they are not emitted as you call the method. You can control emission of events, however, by delaying the call to emitEvent.
-
NOTE: As with bmqa::Session, calling nextEvent is meaningless in asynchronous mode.
-
  void unitTest()
-  {
-       // Create an event handler
-       EventHandler eventHandler(d_allocator_p);
-
-       // The following static initializer method calls all the appropriate
-       // static initializers of the underlying components needed for the
-       // 'MockSession'.  The constructor of 'MockSession' will call it in
-       // any case but if events need to be built outside the scope of the
-       // creation of 'MockSession' you will need to explicitly invoke this
-       // static initializer method.
-       // bmqa::MockSession::initialize(s_allocator_p);
-
-       bslma::ManagedPtr<bmqa::SessionEventHandler> handlerMp;
-       handlerMp.load(&eventHandler, 0, bslma::ManagedPtrUtil::noOpDeleter);
-
-       bmqa::MockSession mockSession(handlerMp,
-                                     bmqt::SessionOptions(d_allocator_p),
-                                     d_allocator_p);
-
-       bmqa::QueueId       queueId(bmqt::CorrelationId(1), d_allocator_p);
-       bmqt::CorrelationId corrId(1);
-
-       // Expect a call to start and the call emits an 'e_CONNECTED' event.
-       BMQA_EXPECT_CALL(mockSession, startAsync())
-           .returning(0)
-           .emitting(bmqa::MockSessionUtil::createSessionEvent(
-                         bmqt::SessionEventType::e_CONNECTED,
-                         0,   // statusCode
-                         "",  // errorDescription
-                         d_allocator_p));
-
-       // Make a call to startAsync and emit the event that is enqueued from
-       // that call.
-       ASSERT_EQ(mockSession.startAsync(), 0);
-
-       // Emit our enqueued event.  This fully sets up the session which is
-       // now ready to use.  Typically you would have some business logic on
-       // 'e_CONNECTED' that makes your application ready to use.
-       ASSERT_EQ(mockSession.emitEvent(), true);
-
-       // Our event handler internally just stores the event emitted, so pop
-       // it out and examine.
-       bmqa::SessionEvent startEvent(eventHandler.popSessionEvent());
-
-       ASSERT_EQ(startEvent.type(), bmqt::SessionEventType::e_CONNECTED);
-       ASSERT_EQ(startEvent.statusCode(), 0);
-
-       // Create the uri to your queue as you would in your application.
-       const bmqt::Uri uri("bmq://my.domain/queue");
-
-       // Initialize the queue flags for a producer with acks enabled
-       bsls::Types::Uint64 flags = 0;
-       bmqt::QueueFlagsUtil::setWriter(&flags);
-       bmqt::QueueFlagsUtil::setAck(&flags);
-
-       // We use the macro to expect a call to 'openQueueAsync', binding the
-       // 'uri' and 'queueId' objects as well as the 'flags' that we created.
-       bmqa::MockSession::OpenQueueCallback openQueueCallback =
-           bdlf::BindUtil::bind(&EventHandler::onOpenQueueStatus,
-                                &eventHandler,
-                                bdlf::PlaceHolders::_1); // result
-
-       BMQA_EXPECT_CALL(mockSession,
-                        openQueueAsync(uri1,
-                                       flags,
-                                       openQueueCallback));
-       BMQA_EXPECT_CALL(mockSession,
-                        openQueueAsync(uri, flags, openQueueCallback));
-
-       // Now that we have set our expectations we can try to open the queue.
-       mockSession.openQueueAsync(uri1, flags, openQueueCallback);
-
-       // Since the application may not have direct access to the queue, we
-       // need to get the 'queueId' from the session.  We can then bind this
-       // retrieved 'queueId' to the 'e_QUEUE_OPEN_RESULT' session event and
-       // enqueue it to the 'MockSession'.
-       // Note: You can only get the 'queueId' after 'openQueue' or
-       //       'openQueueAsync' has been invoked on the session.
-       bmqa::QueueId         queueId1(corrId1);
-       bmqa::OpenQueueStatus openQueueResult =
-           bmqa::MockSessionUtil::createOpenQueueStatus(
-                       queueId1,
-                       bmqt::OpenQueueResult::e_TIMEOUT,  // statusCode
-                       "Local Timeout",                   // errorDescription
-                       d_allocator_p);
-       mockSession.enqueueEvent(openQueueResult);
-
-       // We just enqueued a 'bmqa::OpenQueueStatus' to be emitted.  We can
-       // emit it using 'emitEvent'.
-       ASSERT_EQ(mockSession.emitEvent(), true);
-
-       //  Pop out this event from the handler and examine it.
-       bmqa::OpenQueueStatus result = eventHandler.popOpenQueueStatus();
-       ASSERT_EQ(result, openQueueResult);
-
-       // On emission of 'bmqa::OpenQueueStatus', the queue is fully open and
-       // we can now post to it.
-       bmqa::MessageEventBuilder builder;
-       mockSession.loadMessageEventBuilder(&builder);
-
-       BMQA_EXPECT_CALL(mockSession, post(builder.messageEvent()))
-           .returning(0);
-
-       // Use the builder to build a mesage event and pack it for the queue
-       // that has been opened.  If you try to pack the message for an
-       // invalid or closed queue, packing the message will fail. This has
-       // been elided for brevity.
-
-       // Now that the event has been built we can 'post' it to BMQ.
-       ASSERT_EQ(mockSession.post(builder.messageEvent()), 0);
-
-       // Simply creating a blob buffer factory on the stack to be used by
-       // 'createAckEvent'.  Typically you would have one for the component.
-       bdlbb::PooledBlobBufferFactory bufferFactory(4 * 1024, d_allocator_p);
-
-       // The method 'createAckEvent' takes a vector of 'AckParams' to
-       // specify multiple acks per event, but here we are only acknowledging
-       // 1 message.  Specify a positive ack with 'e_SUCCESS' here but you
-       // can specify any from 'bmqt::AckResult::Enum'.
-       bsl::vector<bmqa::MockSessionUtil::AckParams> acks(d_allocator_p);
-       acks.emplace_back(bmqt::AckResult::e_SUCCESS,
-                         bmqt::CorrelationId(1),
-                         bmqt::MessageGUID(), // Real GUID needed if you want
-                                              // to record ack messages.
-                         bmqa::QueueId(1));
-
-       // Enqueuing ack event to be emitted.  We use the helper function
-       // 'createAckEvent' to generate this event.
-       mockSession.enqueueEvent(bmqa::MockSessionUtil::createAckEvent(
-                                                             acks,
-                                                             &bufferFactory,
-                                                             d_allocator_p));
-
-       // Emit the enqueued ack event.
-       ASSERT_EQ(mockSession.emitEvent(), true);
-
-       // As we did earlier, pop it out and examine.
-       bmqa::MessageEvent ackEvent(eventHandler.popMessageEvent());
-       ASSERT_EQ(ackEvent.type(), bmqt::MessageEventType::e_ACK);
-       bmqa::MessageIterator mIter = ackEvent.messageIterator();
-       mIter.nextMessage();
-       ASSERT_EQ(mIter.message().ackStatus(), bmqt::AckResult::e_SUCCESS);
-
-       // This is a simple test.  After posting our message and receiving the
-       // ack, we are now shutting down our application.  Therefore we expect
-       // a 'stopAsync' call.
-       BMQA_EXPECT_CALL(mockSession, stopAsync());
-
-       // Now make a call to 'stopAsync' to stop our session.
-       mockSession.stopAsync();
-
-       // Here we are enqueuing an 'e_DISCONNECTED' event as you would
-       // receive from the broker on a successful shutdown.
-       mockSession.enqueueEvent(bmqa::MockSessionUtil::createSessionEvent(
-                                      bmqt::SessionEventType::e_DISCONNECTED,
-                                      0,   // statusCode
-                                      "",  // errorDescription
-                                      d_allocator_p));
-       ASSERT_EQ(mockSession.emitEvent(), true);
-
-       // Our event handler internally just stores the event emitted, so pop
-       // it out and examine.
-       bmqa::SessionEvent stopEvent(eventHandler.popSessionEvent());
-       ASSERT_EQ(stopEvent.type(), bmqt::SessionEventType::e_DISCONNECTED);
-       ASSERT_EQ(stopEvent.statusCode(), 0);
-
-      // The corresponding pendant operation of the 'initialize' which would
-      // need to be called only if 'initialize' was explicitly called.
-      // bmqa::MockSession::shutdown();
-   }
-
-
-
-
Example 2:
The folowing example shows a consumer in synchronous mode, which will start the session, generate a push message (simulating the broker), confirm the message and then stop the session. Additionally, this test case also sets all expectations up front before running the code, as this is the alternate way of writing your test driver.
-
NOTE: Using enqueue or emitEvent on bmqa::MockSession or emitting on the BMQA_EXPECT_CALL macro in synchronous mode is meaningless.
-
  void unitTest()
-  {
-      // MockSession created without an eventHandler.
-      bmqa::MockSession mockSession(bmqt::SessionOptions(d_allocator_p),
-                                    d_allocator_p);
-
-      // The following static initializer method calls all the appropriate
-      // static initializers of the underlying components needed for the
-      // 'MockSession'.  The constructor of 'MockSession' will call it in
-      // any case but if events need to be built outside the scope of the
-      // creation of 'MockSession' you will need to explicitly invoke this
-      // static initializer method.
-      // bmqa::MockSession::initialize(s_allocator_p);
-
-      // Create simple queueIds and corrIds
-      bmqa::QueueId       queueId(1);
-      bmqt::CorrelationId corrId(1);
-
-      // Create the uri to your queue as you would in your application.
-      bmqt::Uri uri("bmq://my.domain/queue");
-
-      // Expecting that 'startAsync' will be called on the MockSession.
-      BMQA_EXPECT_CALL(mockSession, startAsync())
-          .returning(0);
-
-      // Simply creating a blob buffer factory on the stack to be used by
-      // 'createAckEvent'.  Typically you would have one for the component.
-      bdlbb::PooledBlobBufferFactory bufferFactory(4 * 1024, d_allocator_p);
-
-      // We then expect that 'nextEvent' will be called to return the
-      // 'e_CONNECTED' event from the broker
-      BMQA_EXPECT_CALL(mockSession, nextEvent(bsls::TimeInterval()))
-          .returning(bmqa::MockSessionUtil::createSessionEvent(
-                         bmqt::SessionEventType::e_CONNECTED,
-                         bmqt::CorrelationId::autoValue(),
-                         0,   // errorCode
-                         "",  // errorDescription
-                         d_allocator_p));
-          // Note that we use an 'autoValue' for correlationId because it's
-          // irrelevant for a 'CONNECTED' event.
-
-       // Initialize the queue flags for a consumer
-       bsls::Types::Uint64 flags = 0;
-       bmqt::QueueFlagsUtil::setReader(&flags);
-
-      // We use the macro to expect a call to 'openQueueSync', binding the
-      // 'uri' and 'queueId' objects as well as the flags that we created.
-      // Note that the 'queueId' object will be modified as 'openQueueSync'
-      // takes it as an output parameter.
-      bmqa::OpenQueueStatus expectedResult =
-          bmqa::MockSessionUtil::createOpenQueueStatus(
-                       queueId,
-                       bmqt::OpenQueueResult::e_SUCCESS,  // statusCode
-                       "",                                // errorDescription
-                       d_allocator_p);
-      BMQA_EXPECT_CALL(mockSession, openQueueSync(&queueId, uri, flags))
-          .returning(expectedResult);
-
-      // Build our incoming message event.
-      bsl::vector<bmqa::MockSessionUtil::PushMessageParams> pushMsgs(
-                                                              d_allocator_p);
-      bdlbb::Blob payload(&bufferFactory, d_allocator_p);
-      bdlbb::BlobUtil::append(&payload, "hello", 6);
-
-      const char        guidHex[] = "00000000000000000000000000000001";
-      bmqt::MessageGUID guid;
-      guid.fromHex(guidHex);
-
-      bmqa::MessageProperties properties;
-      mockSession.loadMessageProperties(&properties);
-
-      // For each message that we are supposed to receive from the broker,
-      // we need to specify the payload, the queueId, a guid (the hex is
-      // random but unique within your test driver) and properties which
-      // could be empty.
-      pushMsgs.emplace_back(payload, queueId, guid, properties);
-      bmqa::Event pushMsgEvent = bmqa::MockSessionUtil::createPushEvent(
-                                                              pushMsgs,
-                                                              &bufferFactory,
-                                                              d_allocator_p);
-      BMQA_EXPECT_CALL(mockSession, nextEvent(bsls::TimeInterval()))
-          .returning(pushMsgEvent);
-
-      // Next we expect a call to 'confirmMessages', to confirm the 1 message
-      // that we received from the broker.
-      bmqa::ConfirmEventBuilder confirmBuilder;
-      mockSession.loadConfirmEventBuilder(&confirmBuilder);
-      BMQA_EXPECT_CALL(mockSession, confirmMessages(&confirmBuilder))
-          .returning(0);
-
-      // Expectations have been set up.  Now we run the code.
-      // 'startAsync' is the first call.  We expect it to return 0 and we
-      // expect 'nextEvent' to return the 'e_CONNECTED' session event.
-      int rc = mockSession.startAsync();
-      ASSERT_EQ(rc, 0);
-      bmqa::SessionEvent startEvent = mockSession.nextEvent(
-                                                        bsls::TimeInterval())
-          .sessionEvent();
-      ASSERT_EQ(startEvent.type(), bmqt::SessionEventType::e_CONNECTED);
-      ASSERT_EQ(startEvent.statusCode(),       0);
-      ASSERT_EQ(startEvent.errorDescription(), "");
-
-      // Next we expect a call to 'openQueue' to open the queue.
-      bmqa::OpenQueueStatus result = mockSession.openQueueSync(&queueId,
-                                                               uri,
-                                                               10);
-      ASSERT_EQ(result, expectedResult);
-
-      // Now our call to 'nextEvent' will generate a push message from the
-      // broker, which we will then go on to confirm.
-      bmqa::MessageEvent pushMsgEvt(mockSession.nextEvent(
-                                                        bsls::TimeInterval())
-                                                            .messageEvent());
-      ASSERT_EQ(pushMsgEvt.type(), bmqt::MessageEventType::e_PUSH);
-
-      // Now that we have received a push message which has yet to be
-      // confirmed, we can confirm that 1 unconfirmed message exists.
-      ASSERT_EQ(mockSession.unconfirmedMessages(), 1U);
-
-      // Since there is only 1 message in our message event, we dont have to
-      // iterate over the event but in reality you will want to iterate over
-      // each message and add it to the confirm builder.
-      bmqa::MessageIterator mIter = pushMsgEvt.messageIterator();
-      mIter.nextMessage();
-      confirmBuilder.addMessageConfirmation(mIter.message());
-      ASSERT_EQ(confirmBuilder.messageCount(), 1);
-
-      // Confirm the messages using the builder that has been populated.
-      rc = mockSession.confirmMessages(&confirmBuilder);
-      ASSERT_EQ(rc, 0);
-
-      // Voila! We now have no unconfirmed messages.
-      ASSERT_EQ(mockSession.unconfirmedMessages(), 0u);
-      // 'stop' has been elided for brevity and is analogous to 'start'
-
-      // The corresponding pendant operation of the 'initialize' which would
-      // need to be called only if 'initialize' was explicitly called.
-      // bmqa::MockSession::shutdown();
-  }
-
-
-
-
Thread Safety:
THREAD SAFE.
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__openqueuestatus.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__openqueuestatus.html deleted file mode 100644 index cf7dae6fe..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__openqueuestatus.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - -bmqa_openqueuestatus Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_openqueuestatus
- -[Package bmqa] -

-
-
- -

Provide Value-Semantic Type for an open queue operation status. -More...

- - - -

-Namespaces

namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide Value-Semantic Type for an open queue operation status
-
-
-
Classes:
- - -
bmqa::OpenQueueStatus value-semantic type for an openQueue result
-
-
-
-
Description:
This component provides a specific value-semantic type for the result of an open queue operation with the BlazingMQ broker, providing applications with the result and context of the requested operation.
-
A bmqa::OpenQueueStatus type is composed of 3 attributes:
    -
  • -result: indicates the status of the operation (success, failure, etc.) as specified in the corresponding result code enum, bmqt::OpenQueueResult::Enum
  • -
  • -queueId: queueId associated with the open queue operation
  • -
  • -errorDescription: optional string with a human readable description of the error, if any
  • -
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__queueid.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__queueid.html deleted file mode 100644 index 6278a7088..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__queueid.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -bmqa_queueid Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_queueid
- -[Package bmqa] -

-
-
- -

Provide a value-semantic efficient identifier for a queue. -More...

- - - - -

-Namespaces

namespace  bmqimp
namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a value-semantic efficient identifier for a queue.
-
-
-
Classes:
- - -
bmqa::QueueId Value-semantic efficient identifier for a queue.
-
-
-
-
Description:
This component implements a value-semantic class, bmqa::QueueId, which can be used to efficiently identify the queue associated with a message event. A bmqa::QueueId instance can be created with a 64-bit integer, raw pointer, shared pointer, or bmqt::CorrelationId.
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__session.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__session.html deleted file mode 100644 index 459d22c53..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__session.html +++ /dev/null @@ -1,409 +0,0 @@ - - - - -bmqa_session Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_session
- -[Package bmqa] -

-
-
- -

Provide access to the BlazingMQ broker. -More...

- - - - - - -

-Namespaces

namespace  bmqimp
namespace  bmqp
namespace  bslmt
namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide access to the BlazingMQ broker.
-
-
-
Classes:
- - - - -
bmqa::SessionEventHandler interface for receiving events asynchronously.
bmqa::Session mechanism for access to the BlazingMQ broker.
-
-
-
-
Description:
This component provides a mechanism, bmqa::Session, that provides access to a message queue broker and an interface, bmqa::SessionEventHandler for asynchronous notification of events. The broker manages named, persistent queues of messages. This broker allows a client to open queues, post messages to them, or retrieve messages from them. All of these operations take place within the context of the session opened by the client application.
-
Messages received from a broker are communicated to the application by the session associated with that broker in the form of events (see bmqa_event). Events can be of two different types: (1) Messages and message status events (bmqa::MessageEvent), or (2) Session or queue status events (bmqa::SessionEvent).
-
A Session can dispatch events to the application in either a synchronous or asynchronous mode. In synchronous mode, the application must call the nextEvent method in order to obtain events from the Session. In asynchronous mode, the application must supply a concrete SessionEventHandler object at construction time. The concrete SessionEventHandler provided by the application must implement the onSessionEvent and onMessageEvent methods, which will be called by the Session every time a session event or a message event is received. Note that by default, a session created in asynchronous mode creates only one internal thread to dispatch events, but a different value for number of threads can be specified in bmqt::SessionOptions.
-
A Session is created either in synchronous or in asynchronous mode, and it will remain in that mode until destruction. Allowing a mix between synchronous or asynchronous would make the SDK complicated. The only exceptions are the "start" and "open" operations that must be available in synchronous or asynchronous version for the convenience of the programmer.
-
By default a Session connects to the local broker, which in turn may connect to a remote cluster based on configuration.
-
After a bmqa::Session is started, the application has to open one or several queues in read and/or write mode.
-
-
-
Disclaimer:
A Session object is a heavy object representing the negotiated TCP session with the broker, and the entire associated state (opened queues, statistics, ...). Therefore, sessions should be always reused if possible, preferably with only one session per lifetime of a component/library/task. Note that at the time of this writing multiplexing of different logical sessions over the same physical connection is not supported, so in certain circumstances reuse of the same session across the whole of a single application will not be possible. For example, if an application uses two unrelated libraries both of which use BlazingMQ under the hood, they won't be able to share a session as it stands. An example of an extreme inefficiency and an abuse of resources is to create a session ad-hoc every time a message needs to be posted by the same component.
-
-
-
Thread-safety:
This session object is thread enabled, meaning that two threads can safely call any methods on the same instance without external synchronization.
-
-
-
Connecting to the Broker:
A Session establishes a communication with a broker service using TCP/IP. Each Session object must be constructed with a bmqa::SessionOptions object, which provides the necessary information to connect to the broker. In particular, the SessionOptions object must specify the IP address and port needed to connect to the broker. The SessionOptions object may also provide extra parameters for tuning the TCP connection behavior (see bmqa_sessionoptions for details).
-
Note that in most cases the user does not need to explicitly construct a SessionOptions object: the default constructor for SessionOptions creates an instance that will connect to the broker service on the local machine using the standard port.
-
Some options can also be provided using environment variables.
    -
  • -BMQ_BROKER_URI: Corresponds to SessionOptions::brokerUri. If this environment variable is set, its value will override the one specified in the SessionOptions.
  • -
-
-
A Session object is created in an unconnected state. The start or startAsync method must be called to connect to the broker. Note that start method is blocking, and returns either after connection to broker has been established (success), or after specified timeout (failure). startAsync method, as the name suggests, connects to the broker asynchronously (i.e., it returns immediately), and the result of the operation is notified via bmqt::SessionEventType::CONNECTED session event.
-
When the Session is no longer needed, the application should call the stop (blocking) or stopAsync (non-blocking) method to shut down the Session and disconnect from the broker. Note that destroying a Session automatically stops it. The session can be restarted with a call to start or startAsync once it has been fully stopped.
-
-
-
Connection loss and reconnection:
If the connection between the application and the broker is lost, the Session will automatically try to reconnect periodically. The Session will also notify the application of the event of losing the connection via bmqt::SessionEventType::CONNECTION_LOST session event.
-
Once the connection has been re-established with the broker (as a result of one of the periodic reconnection attempts), the Session will notify the application via bmqt::SessionEventType::RECONNECTED session event. After the connection re-establishment, the Session will attempt to reopen the queues that were in OPEN state prior to connection loss. The Session will notify the application of the result of reopen operation via bmqt::SessionEventType::QUEUE_REOPEN_RESULT for each queue. Note that a reopen operation on a queue may fail (due to broker issue, machine issue, etc), so the application must keep track on these session events, and stop posting on a queue that failed to reopen.
-
After all reopen operations are complete and application has been notified with all bmqt::SessionEventType::QUEUE_REOPEN_RESULT events, the Session delivers a bmqt::SessionEventType::STATE_RESTORED session event to the application.
-
-
-
Example 1:
The following example illustrates how to create a Session in synchronous mode, start it, and stop it.
  void runSession()
-  {
-      bmqt::SessionOptions options;
-      options.setBrokerUri("tcp://localhost:30114");
-
-      bmqa::Session session(options);
-      int res = session.start();
-      if (0 != res) {
-          bsl::cout << "Failed to start session (" << res << ")"
-                    << bsl::endl;
-          return;
-      }
-      bsl::cout << "Session started." << bsl::endl;
-
-      // Open queue in READ or WRITE or READ/WRITE mode, and receive or
-      // post messages, etc.
-      // ...
-
-      session.stop();
-  }
-
This example can be simplified because the constructor for Session uses a default SessionOptions object that will connect to the local broker service. The example may be rewritten as follow:
  void runSession()
-  {
-      bmqa::Session session;     // using default 'SessionOptions'
-      int res = session.start();
-      if (0 != res) {
-          bsl::cout << "Failed to start session (" << res << ")"
-                    << bsl::endl;
-          return;
-      }
-      bsl::cout << "Session started." << bsl::endl;
-
-      // Open queue in READ or WRITE or READ/WRITE mode, and receive or
-      // post messages, etc.
-      // ...
-
-      session.stop();
-  }
-
-
-
-
Processing session events - synchronous mode:
If the Session is created in synchronous mode, the application needs to call the nextEvent method on a regular basis in order to receive events. This method takes an optional wait timeout as a parameter, and it will return the next available Event from the session's internal event queue or it will block the calling thread execution until new Event arrives or until the specified timeout expires. It is safe to call the nextEvent method from different threads simultaneously: the Session class provides proper synchronization logic to protect the internal event queue from corruption in this scenario.
-
-
-
Example 2:
The following example demonstrates how to write a function that queries and processes events synchronously. In this example the switch form checks the type of the Event and performs the necessary actions.
-
We first define two functions to process SessionEvent and MessageEvent. These functions return true if we should keep processing events and false otherwise (i.e., no more events are expected from the Session).
  bool processSessionEvent(const bmqa::SessionEvent& event)
-  {
-      bool result = true;
-      switch (event.type()) {
-
-        case bmqt::SessionEventType::e_CONNECTED:
-          // The connection to the broker is established (as a result
-          // of a call to the 'start' method).
-          openQueues();
-          startPostingToQueues();
-          break;
-
-        case bmqt::SessionEventType::e_DISCONNECTED:
-          // The connection to the broker is terminated (as a result
-          // of a call to the 'stop' method).
-          result = false;
-          break;
-
-        case bmqt::SessionEventType::e_CONNECTION_LOST:
-          // The connection to the broker dropped. Stop posting to the queue.
-          stopPostingToQueues();
-          break;
-
-        case bmqt::SessionEventType::e_STATE_RESTORED:
-          // The connection to the broker has been restored (i.e., all queues
-          // have been re-opened. Resume posting to the queue.
-          resumePostingToQueues();
-          break;
-
-        case bmqt::SessionEventType::e_CONNECTION_TIMEOUT:
-          // The connection to the broker has timed out.
-          result = false;
-          break;
-
-        case bmqt::SessionEventType::e_ERROR:
-          // Internal error
-          bsl::cout << "Unexpected session error: "
-                    << event.errorDescription() << bsl::endl;
-          break;
-
-      } // end switch
-
-      return result;
-  }
-
-  bool processMessageEvent(const bmqa::MessageEvent& event)
-  {
-      bool result = true;
-      switch (event.type()) {
-
-        case bmqt::MessageEventType::e_PUSH: {
-          // Received a 'PUSH' event from the broker.
-          bmqa::MessageIterator msgIter = event.messageIterator();
-          while (msgIter.nextMessage()) {
-              const bmqa::Message& msg = msgIter.message();
-              // Process 'PUSH' msg here (omitted for brevity)
-              // ...
-          }
-      } break;
-
-        case bmqt::MessageEventType::e_ACK: {
-          // Received an 'ACK' event from the broker.
-          bmqa::MessageIterator msgIter = event.messageIterator();
-          while (msgIter.nextMessage()) {
-              const bmqa::Message& msg = msgIter.message();
-              // Process 'ACK' msg here (omitted for brevity)
-              // ...
-          }
-      } break;
-
-      } // end switch
-
-      return result;
-  }
-
-
Next, we define a function that handles events synchronously using the processSessionEvent and processMessageEvent functions.
  void handleEventsSynchronously(bmqa::Session *startedSession)
-  {
-      bool more = true;
-      while (more) {
-          bmqa::Event event =
-                  startedSession->nextEvent(bsls::TimeInterval(2.0));
-          if (event.isSessionEvent()) {
-              more = processSessionEvent(event.sessionEvent());
-          }
-          else {
-              more = processMessageEvent(event.messageEvent());
-          }
-      }
-  }
-
-
-
-
Processing session events - asynchronous mode:
If application wishes to use Session in asynchronous mode, it must pass a managed pointer to an event handler implementing the SessionEventHandler. In this case, when Session is started, a thread pool owned by the Session is also started for processing events asynchronously. The Session will call event handler's onSessionEvent or onMessageEvent method every time a session event or a message event is available.
-
Note that after the Session is associated with some event handler, this association cannot be changed or canceled. The event handler will be used for processing events until the Session object is destroyed.
-
-
-
Example 3:
The following example demonstrates how to implement an event handler and how to make the Session use an instance of this event handler for processing events.
-
First, we define a concrete implementation of SessionEventHandler.
-
  class MyHandler: public bmqa::SessionEventHandler {
-  public:
-      MyHandler() { }
-      virtual ~MyHandler() { }
-      virtual void onSessionEvent(const bmqa::SessionEvent& event);
-      virtual void onMessageEvent(const bmqa::MessageEvent& event);
-  };
-
-  void MyHandler::onSessionEvent(const bmqa::SessionEvent& event)
-  {
-      // The implementation is similar to our 'processSessionEvent' function
-      // defined in the previous example.
-      processSessionEvent(event);
-  }
-
-  void MyHandler::onMessageEvent(const bmqa::MessageEvent& event)
-  {
-      // The implementation is similar to our 'processMessageEvent' function
-      // defined in the previous example.
-      processMessageEvent(event);
-  }
-
Next, we define a function that creates a Session using our implementation of SessionEventHandler.
  void runAsyncSession()
-  {
-      bslma::ManagedPtr<SessionEventHandler> handlerMp(new MyHandler());
-
-      bmqa::Session session(handlerMp);   // using default 'SessionOptions'
-      int res = session.start();
-      if (0 != res) {
-          bsl::cout << "Failed to start session (" << res << ")"
-                    << bsl::endl;
-          return;
-      }
-
-      // ...
-
-      session.stop();
-  }
-
-
-
-
Opening queues:
Once the Session has been created and started, the application can use it to open queues for producing and/or consuming messages. A queue is associated with a domain. Domain metadata must be deployed in the BlazingMQ infrastructure prior to opening queues under that domain, because opening a queue actually loads the metadata deployed for the associated domain.
-
The metadata associated with a domain defines various parameters like maximum queue size and capacity, persistent policy, routing policy, etc.
-
Queue are identified by URIs (Unified Resource Identifiers) that must follow the BlazingMQsyntax, manipulated as bmqt::Uri objects. A queue URI is typically formatted as follows:
  bmq://my.domain/my.queue
-
Note that domain names are unique in BlazingMQ infrastructure, which makes a fully qualified queue URI unique too.
-
Queues in BlazingMQ infrastructure are created by applications on demand. Broke creates a queue when it receives an open-queue request from an application for a queue that does not exist currently.
-
Application can open a queue by calling openQueue or openQueueAsync method on a started session. Application must pass appropriate flags to indicate if it wants to post messages to queue, consume messages from the queue, or both.
-
Note that openQueue is a blocking method, and returns after specified queue has been successfully opened (success) or after specified timeout has expired (failure). openQueueAsync method, as the name suggests, is non blocking, and the result of the operation is notified via bmqt::SessionEventType::QUEUE_OPEN_RESULT session event.
-
-
-
Example 4:
The following example demonstrates how to open a queue for posting messages. The code first opens the queue with appropriate flags, and then uses bmqa::MessageEventBuilder to build a message event and post to the queue.
  // Session creation and startup logic elided for brevity
-  const char *queueUri = "bmq://my.domain/my.queue";
-  bmqa::QueueId myQueueId(1);       // ID for the queue
-  int rc = session.openQueue(
-                      &myQueueId,
-                      queueUri,
-                      bmqt::QueueFlags::e_WRITE | bmqt::QueueFlags::e_ACK,
-                      bsls::TimeInterval(30, 0));
-
-  if (rc != 0) {
-      bsl::cerr << "Failed to open queue, rc: "
-                << bmqt::OpenQueueResult::Enum(rc)
-                << bsl::endl;
-      return;
-  }
-
Note that apart from WRITE flag, ACK flag has been passed to openQueue method above. This indicates that application is interested in receiving ACK notification for each message it posts to the queue, irrespective of whether or not the message was successfully received by the broker and posted to the queue.
-
Once the queue has been successfully opened for writing, messages can be posted to the queue for consumption by interested applications. We will use bmqa::MessageEventBuilder to build a message event.
  // Create a message event builder
-  bmqa::MessageEventBuilder builder;
-  session.loadMessageEventBuilder(&builder);
-
-  // Create and post a message event containing 1 message
-  bmqa::Message& msg = builder.startMessage();
-
-  msg.setCorrelationId(myCorrelationId);
-  msg.setDataRef(&myPayload);  // where 'myPayload' is of type 'bdlbb::Blob'
-  rc = builder.packMessage(myQueueId);
-  if (rc != 0) {
-      bsl::cerr << "Failed to pack message, rc: "
-                << bmqt::EventBuilderResult::Enum(rc)
-                << bsl::endl;
-      return;
-  }
-
-  // Post message event
-  rc = session.post(builder.messageEvent());
-  if (rc != 0) {
-      bsl::cerr << "Failed to post message event to the queue, rc: "
-                << bmqt::PostResult::Enum(rc)
-                << bsl::endl;
-      return;
-  }
-
-  // ... post more messages
-
-
-
-
Closing queues:
After an application no longer needs to produce or consume messages from a queue, it can be closed by closeQueue or closeQueueAsync method. Note that closing a queue closes an application's "view" on the queue, and may not lead to queue deletion in the broker. A Session does not expose any method to explicitly delete a queue.
-
Note that closeQueue is a blocking method and returns after the specified queue has been successfully closed (success) or after specified timeout has expired (failure). closeQueueAsync, as the name suggests, is a non-blocking method, and result of the operation is notified via bmqt::SessionEventType::e_QUEUE_CLOSE_RESULT session event.
-
There are 3 flavors which behave differently with regard to thread blocking and callback execution: | openQueue | openQueueSync | openQueueAsync | configureQueue | configureQueueSync | configureQueueAsync | closeQueue | closeQueueSync | closeQueueAsync | (deprecated Sync) | (Synchronous) | (Asynchronous) -----------|-------------------|----------------------|---------------------- event | unblocks in | unblocks in event | executes callback in handler | internal thread | handler thread (*) | event handler thread | | | nextEvent | unblocks in | unblocks in | executes callback | internal thread | internal thread | in nextEvent thread -----------------------------------------------------------------------------
-
(*) - guarantees unblocking after all previously enqueued events have been emitted to the eventHandler, allowing the user to have proper serialization of events for the given queue (for example no more PUSH messages will be delivered through the eventHandler for the queue after configureQueueSync(maxUnconfirmed = 0) returns).
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqa__sessionevent.html b/docs/docs/apidocs/cpp_apidocs/group__bmqa__sessionevent.html deleted file mode 100644 index 990c8a853..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqa__sessionevent.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - -bmqa_sessionevent Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqa_sessionevent
- -[Package bmqa] -

-
-
- -

Provide value-semantic type for system event session notifications. -More...

- - - - -

-Namespaces

namespace  bmqimp
namespace  bmqa
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide value-semantic type for system event session notifications.
-
-
-
Classes:
- - -
bmqa::SessionEvent type for notification events related to the Session.
-
-
-
See also:
bmqt::SessionEventType: Enum of the various type of notifications
-
-
-
Description:
This component provides a generic bmqa::SessionEvent notification object used by the bmqa::Session to provide BlazingMQ applications with information regarding changes in the session status or the result of operations with the message queue broker.
-
A SessionEvent is composed of 4 attributes:
    -
  • -type: indicate the type of the notification
  • -
  • -statusCode: indicate the status of the operation (success, failure)
  • -
  • -correlationId: optional correlationId used during async response
  • -
  • -queueId: optional queueId associated with the event, of type OPEN, CONFIGURE, CLOSE, REOPEN
  • -
  • -errorDescription: optional string with a human readable description of the error, if any
  • -
-
-
Note that SessionEvent is implemented using the pimpl idiom, so copying a SessionEvent is very cheap (a pointer copy). All copies of this SessionEvent will share the same underlying implementation.
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqpi.html b/docs/docs/apidocs/cpp_apidocs/group__bmqpi.html deleted file mode 100644 index 9a9a32e60..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqpi.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - -bmqpi Package - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Package bmqpi
- -[Package Group bmq] -

-
-
- -

Provide an interface for monitoring the health of the host. -More...

- - - - -

-

- - -

-

- - -

-

- - -

-

-

-Components

 Component bmqpi_dtcontext
 

Provide an interface for a context with a notion of a current span.

-
 Component bmqpi_dtspan
 

Provide an interface representing a span of a distributed trace.

-
 Component bmqpi_dttracer
 

Provide an interface that can create new DTSpan objects.

-
 Component bmqpi_hosthealthmonitor
 

Provide an interface for monitoring the health of the host.

-
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide an interface for monitoring the health of the host.
-
-
-
MNEMONIC: BlazingMQ Public Interfaces (bmqpi):
-
-
-
-
Description:
The bmqpi package provides pure abstract interfaces, which are intended for clients to extend in their own applications and libraries. These extension points facilitate integration with other aspects of a runtime environment (e.g. authentication, host health-checking), which may vary significantly from organization to organization.
-
-
-
Hierarchical Synopsis:
The bmqpi package currently has 1 component having 1 level of physical dependency. The list below shows the hierarchical ordering of the components.
  1. bmqpi_hosthealthmonitor
-
-
-
-
Component Synopsis:
-
bmqpi_hosthealthmonitor:
- Provide an interface for monitoring the health of the host.
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqpi__dtcontext.html b/docs/docs/apidocs/cpp_apidocs/group__bmqpi__dtcontext.html deleted file mode 100644 index 20d54e66c..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqpi__dtcontext.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -bmqpi_dtcontext Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqpi_dtcontext
- -[Package bmqpi] -

-
-
- -

Provide an interface for a context with a notion of a current span. -More...

- - - -

-Namespaces

namespace  bmqpi
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide an interface for a context with a notion of a current span.
-
-
-
Classes:
- - -
bmqpi::DTContext Interface for a context with a notion of a current span.
-
-
-
-
Description:
-

bmqpi::DTContext is a pure interface representing a context which defines a "current" bmqpi::DTSpan for the calling thread. Implementations may return different spans for each thread, or return a single span shared by all calling threads.

-
Many distributed trace libraries provide a well-defined thread-local storage slot for the span currently under execution, which allows a function to obtain a reference to its caller across library boundaries, without changes to its API to facilitate dependency injection. This storage slot is set by instantiating an RAII "Span Guard" that writes a span to the TLS at construction, and reverts its state on destruction (emulating the semantics of a call-stack). The API of bmqpi::DTContext aims to make it easy to wrap these common patterns in a library-agnostic manner, while also facilitating test double implementations.
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqpi__dtspan.html b/docs/docs/apidocs/cpp_apidocs/group__bmqpi__dtspan.html deleted file mode 100644 index 54b8a3619..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqpi__dtspan.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - -bmqpi_dtspan Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqpi_dtspan
- -[Package bmqpi] -

-
-
- -

Provide an interface representing a span of a distributed trace. -More...

- - - -

-Namespaces

namespace  bmqpi
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide an interface representing a span of a distributed trace.
-
-
-
Classes:
- - - - -
bmqpi::DTSpan Interface for a span of a distributed trace.
bmqpi::DTSpan::Baggage A set of key-values used to describe a DTSpan.
-
-
-
-
Description:
-

bmqpi::DTSpan is a pure interface representing a node within a distributed trace graph (which forms a DAG with edges as invocations).

-
bmqpi::DTSpan::Baggage represents a set of key-values used to describe metadata belonging to a DTSpan. The phrase "baggage" is borrowed from the OpenTelemetry standard's terminology.
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqpi__dttracer.html b/docs/docs/apidocs/cpp_apidocs/group__bmqpi__dttracer.html deleted file mode 100644 index 44965737b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqpi__dttracer.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -bmqpi_dttracer Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqpi_dttracer
- -[Package bmqpi] -

-
-
- -

Provide an interface that can create new DTSpan objects. -More...

- - - -

-Namespaces

namespace  bmqpi
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide an interface that can create new DTSpan objects.
-
-
-
Classes:
- - -
bmqpi::DTTracer Interface for creators of DTSpan objects.
-
-
-
-
Description:
-

bmqpi::DTTracer is a pure interface for creators of new DTSpan objects.

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqpi__hosthealthmonitor.html b/docs/docs/apidocs/cpp_apidocs/group__bmqpi__hosthealthmonitor.html deleted file mode 100644 index a7717d898..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqpi__hosthealthmonitor.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -bmqpi_hosthealthmonitor Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqpi_hosthealthmonitor
- -[Package bmqpi] -

-
-
- -

Provide an interface for monitoring the health of the host. -More...

- - - -

-Namespaces

namespace  bmqpi
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide an interface for monitoring the health of the host.
-
-
-
Classes:
- - -
bmqpi::HostHealthMonitor Interface for a monitor of host health.
-
-
-
-
Description:
-

bmqpi::HostHealthMonitor is a pure interface for a monitor of the health of the host. BlazingMQ sessions can use such objects to conditionally suspend queue activity while the host is marked unhealthy.

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt.html deleted file mode 100644 index 830c6b458..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - -bmqt Package - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Package bmqt
- -[Package Group bmq] -

-
-
- -

Provide value-semantic vocabulary types. -More...

- - - - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

-

-Components

 Component bmqt_compressionalgorithmtype
 

Provide an enumeration for different compression algorithm types.

-
 Component bmqt_correlationid
 

Provide a value-semantic type usable as an efficient identifier.

-
 Component bmqt_encodingtype
 

Provide an enumeration for different message encoding types.

-
 Component bmqt_hosthealthstate
 

Provide an enumeration for different host health states.

-
 Component bmqt_messageeventtype
 

Provide an enumeration for the different types of message events.

-
 Component bmqt_messageguid
 

Provide a value-semantic global unique identifier for BlazingMQ.

-
 Component bmqt_propertytype
 

Provide enum for the supported data types for a message property.

-
 Component bmqt_queueflags
 

Provide enumerators for flags to use at Queue open.

-
 Component bmqt_queueoptions
 

Provide a value-semantic type for options related to a queue.

-
 Component bmqt_resultcode
 

Provide enums for various publicly exposed result code.

-
 Component bmqt_sessioneventtype
 

Provide an enumeration for the different types of session events.

-
 Component bmqt_sessionoptions
 

Provide a value-semantic type to configure session with the broker.

-
 Component bmqt_subscription
 

Provide a value-semantic types for subscription related API.

-
 Component bmqt_uri
 

Provide value-semantic type and utilities for a BlazingMQ queue.

-
 Component bmqt_version
 

Provide a value-semantic type representing a version (major minor).

-
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide value-semantic vocabulary types.
-
-
-
MNEMONIC: BlazingMQ (vocabulary) Types (bmqt):
-
-
-
-
Description:
The bmqt package provides low level value-semantic vocabulary types for use by the BlazingMQ SDK.
-
-
-
Hierarchical Synopsis:
The bmqt package currently has 11 components having 1 level of physical dependency. The list below shows the hierarchical ordering of the components.
  1. bmqt_correlationid
-     bmqt_encodingtype
-     bmqt_hosthealthstate
-     bmqt_messageeventtype
-     bmqt_messageguid
-     bmqt_queueflags
-     bmqt_queueoptions
-     bmqt_resultcode
-     bmqt_sessioneventtype
-     bmqt_sessionoptions
-     bmqt_uri
-     bmqt_version
-
-
-
-
Component Synopsis:
-
bmqt_compressionalgorithmtype:
- Provide an enumeration for different compression algorithm types.
-
-
-
bmqt_correlationid:
- Provide a value-semantic type usable as an efficient identifier.
-
bmqt_encodingtype:
- Provide an enumeration for different message encoding types.
-
bmqt_hosthealthstate:
- Provide an enumeration for different host health states.
-
bmqt_messageeventtype:
- Provide an enumeration for the different types of message events.
-
bmqt_messageguid:
- Provide a value-semantic global unique identifier for BlazingMQ messages
-
bmqt_queueflags:
- Provide enums for flags to use at Queue open.
-
bmqt_queueoptions:
- Provide a value-semantic type for options related to a queue.
-
bmqt_resultcode:
- Provide enums for various publicly exposed result code.
-
bmqt_sessioneventtype:
- Provide an enumeration for the different types of session events.
-
bmqt_sessionoptions:
- Provide a value-semantic type to configure session with the broker.
-
bmqt_uri:
- Provide value-semantic type and utilities for a BlazingMQ queue URI.
-
bmqt_version:
- Provide a value-semantic type representing a version (major minor).
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__compressionalgorithmtype.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__compressionalgorithmtype.html deleted file mode 100644 index ba3c3732a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__compressionalgorithmtype.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - -bmqt_compressionalgorithmtype Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_compressionalgorithmtype
- -[Package bmqt] -

-
-
- -

Provide an enumeration for different compression algorithm types. -More...

- - - -

-Namespaces

namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide an enumeration for different compression algorithm types.
-
-
-
Classes:
- - -
bmqt::CompressionAlgorithmType Type of compression algorithm
-
-
-
-
Description:
Provide an enumeration, bmqt::CompressionAlgorithmType for different types of compression algorithm.
-
    -
  • -NONE: No compression algorithm was specified
  • -
  • -ZLIB: The compression algorithm is ZLIB
  • -
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__correlationid.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__correlationid.html deleted file mode 100644 index 6667767df..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__correlationid.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - -bmqt_correlationid Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_correlationid
- -[Package bmqt] -

-
-
- -

Provide a value-semantic type usable as an efficient identifier. -More...

- - - -

-Namespaces

namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a value-semantic type usable as an efficient identifier.
-
-
-
Classes:
- - - - - - -
bmqt::CorrelationId correlation ID class.
bmqt::CorrelationIdLess comparison functor for CorrelationId as map key
bsl::hash hash functor specialization
-
-
-
-
Description:
This component implements a value-semantic class, bmqt::CorrelationId, which can be used to identify any async operations. The correlationId contains a value (64-bit integer, raw pointer or sharedPtr) supplied by the application or uses an auto-assigned value. The type and the value of the correlationId can be set at construction time and changed later via the setNumeric(), setPointer() and setSharedPointer methods. Alternatively, a CorrelationId::AutoValue can be used to generate a unique correlationId from within the process. The bmqt::CorrelationIdLess comparison functor can be used for storing CorrelationId in a map as the key element; and a hash functor specialization is provided in the bsl::hash namespace.
-
-
-
AutoValue:
If the application doesn't care about the actual value of the correlation, AutoValue type can be used to create a unique correlationId. An AutoValue correlationId behaves exactly the same as any other type of correlation, with the exception that it's value can not be retrieved (but two correlationId can be still compared equal).
-
-
-
Usage:
This section illustrates intended use of this component.
-
-
-
Example 1: Correlating Responses:
Suppose that we have the following asynchronous messaging interface that we want to use to implement a basic request/response class.
  class Messenger {
-
-    public:
-      // TYPES
-      typedef bsl::function<
-        void(void                       *buffer,
-             int                         bufferLength,
-             const bmqt::CorrelationId&  correlationId)> MessageHandler;
-          // 'MessageHandler' is an alias for a functor that handles received
-          // messages consisting of the specified 'buffer', having the
-          // specified 'bufferLength', as well as the specified associated
-          // 'correlationId' if the message is in response to a previously
-          // transmitted message.
-
-      // MANIPULATORS
-      void sendMessage(void                       *buffer,
-                       int                         bufferLength,
-                       const bmqt::CorrelationId&  correlationId);
-          // Send a message containing the specified 'buffer' of the
-          // specified 'bufferLength', associating the specified
-          // 'correlationId' with any messages later received in response.
-
-      void setMessageHandler(const MessageHandler& handler);
-          // Set the functor to handle messages received by this object to
-          // the specified 'handler'.
-  };
-
First we declare a requester class.
  class Requester {
-
-      // DATA
-      Messenger        *d_messenger_p;  // used to send messages (held)
-      bslma::Allocator *d_allocator_p;  // memory supply (held)
-
-      // PRIVATE CLASS METHODS
-      static void handleMessage(void                       *buffer,
-                                int                         bufferLength,
-                                const bmqt::CorrelationId&  correlationId);
-          // Handle the response message consisting fo the specified 'buffer'
-          // having the specified 'bufferLength', and associated
-          // 'correlationId'.
-
-    public:
-      // TYPES
-      typedef bsl::function<void(void *buffer, int bufferLength)>
-                                                            ResponseCallback;
-          // 'ResponseCallback' is an alias for a functor that is used to
-          // process received responses consisting of the specified 'buffer'
-          // having the specified 'bufferLength'.
-
-      // CREATORS
-      explicit Requester(Messenger        *messenger,
-                         bslma::Allocator *basicAllocator);
-          // Create a 'Requester' that uses the specified 'messenger' to send
-          // requests and receive responses, and the specified
-          // 'basicAllocator' to supply memory.
-
-      // MANIPULATORS
-      void sendRequest(void                    *buffer,
-                       int                      bufferLength,
-                       const ResponseCallback&  callback);
-          // Send a request consisting of the specified 'buffer' having the
-          // specified 'bufferLength', and invoke the specified 'callback'
-          // with any asynchronous response.
-  };
-
Then, we implement the constructor, setting the message handler on the provided Messenger to our class method.
  Requester::Requester(Messenger        *messenger,
-                       bslma::Allocator *basicAllocator)
-  : d_messenger_p(messenger)
-  , d_allocator_p(basicAllocator)
-  {
-      d_messenger_p->setMessageHandler(&Requester::handleMessage);
-  }
-
Now, we implement sendRequest, copying the given callback into a correlationId that is provided to the messenger.
  void Requester::sendRequest(void                    *buffer,
-                              int                      bufferLength,
-                              const ResponseCallback&  callback)
-  {
-      bsl::shared_ptr<ResponseCallback> callbackCopy;
-      callbackCopy.createInplace(d_allocator_p, callback, d_allocator_p);
-      bmqt::CorrelationId correlationId(bsl::shared_ptr<void>(callbackCopy));
-      d_messenger_p->sendMessage(buffer, bufferLength, correlationId);
-  }
-
Finally, we implement our message handler, extracting the response callback from the correlationId, and invoking it with the received response message.
  void Requester::handleMessage(void                       *buffer,
-                                int                         bufferLength,
-                                const bmqt::CorrelationId&  correlationId)
-  {
-      assert(correlationId.isSharedPtr());
-      ResponseCallback *callback = static_cast<ResponseCallback *>(
-                                         correlationId.theSharedPtr().get());
-      (*callback)(buffer, bufferLength);
-  }
-
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__encodingtype.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__encodingtype.html deleted file mode 100644 index 1e1e4f671..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__encodingtype.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - -bmqt_encodingtype Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_encodingtype
- -[Package bmqt] -

-
-
- -

Provide an enumeration for different message encoding types. -More...

- - - -

-Namespaces

namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide an enumeration for different message encoding types.
-
-
-
Classes:
- - -
bmqt::EncodingType Enumeration for different message encoding types.
-
-
-
-
Description:
Provide an enumeration, bmqt::EncodingType for different message encoding types.
-
    -
  • -UNDEFINED: No encoding was specified
  • -
  • -RAW: The encoding is RAW, i.e., binary
  • -
  • -BER: Binary encoding using the BER codec
  • -
  • -BDEX: Binary encoding using the BDEX codec
  • -
  • -XML: Text encoding, using the XML format
  • -
  • -JSON: Text encoding, using the JSON format
  • -
  • -TEXT: Plain text encoding, using a custom user-specific format
  • -
  • -MULTIPARTS: Message is part of a multipart message
  • -
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__hosthealthstate.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__hosthealthstate.html deleted file mode 100644 index 01318961a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__hosthealthstate.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - -bmqt_hosthealthstate Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_hosthealthstate
- -[Package bmqt] -

-
-
- -

Provide an enumeration for different host health states. -More...

- - - -

-Namespaces

namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide an enumeration for different host health states.
-
-
-
Classes:
- - -
bmqt::HostHealthState Enumeration for different host health states.
-
-
-
-
Description:
Provide an enumeration, bmqt::HostHealthState for different representations of the health of a host.
-
    -
  • -UNKNOWN: Host health could not be ascertained
  • -
  • -HEALTHY: Host is considered to be healthy
  • -
  • -UNHEALTHY: Host is not considered to be healthy
  • -
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__messageeventtype.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__messageeventtype.html deleted file mode 100644 index 744f85fc5..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__messageeventtype.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -bmqt_messageeventtype Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_messageeventtype
- -[Package bmqt] -

-
-
- -

Provide an enumeration for the different types of message events. -More...

- - - -

-Namespaces

namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide an enumeration for the different types of message events.
-
-
-
Classes:
- - -
bmqt::MessageEventType Enumeration for the types of message events.
-
-
-
-
Description:
Provide an enumeration, bmqt::MessageEventType, for the different types of message events.
-
    -
  • -UNDEFINED: Unknown message type
  • -
  • -ACK: Message is an ack
  • -
  • -PUSH: Message is a push
  • -
  • -PUT: Message is a put
  • -
-
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__messageguid.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__messageguid.html deleted file mode 100644 index d11fc69c4..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__messageguid.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - -bmqt_messageguid Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_messageguid
- -[Package bmqt] -

-
-
- -

Provide a value-semantic global unique identifier for BlazingMQ. -More...

- - - -

-Namespaces

namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a value-semantic global unique identifier for BlazingMQ messages.
-
-
-
Classes:
- - -
bmqt::MessageGUID Value-semantic global unique ID for BlazingMQ
-message bmqt::MessageGUIDLess : Binary function for comparing GUIDs. bmqt::MessageGUIDHashAlgo : Provide a hashing algorithm for Message GUID.
-
-
-
Description:
bmqt::MessageGUID provides a value-semantic global unique identifier for BlazingMQ messages. Each bmqa::Message delivered to BlazingMQ client from BlazingMQ broker contains a unique MessageGUID. The binary function bmqt::MessageGUIDLess can be used for comparing GUIDs, and an optimized custom hash function is provided with bmqt::MessageGUIDHashAlgo.
-
-
-
-
Externalization:
For convenience, this class provides toHex method that can be used to externalize a bmqt::MessageGUID instance. Applications can persist the resultant buffer (on filesystem, in database) to keep track of last processed message ID across task instantiations. fromHex method can be used to convert a valid externalized buffer back to a message ID.
-
-
-
Efficient comparison and hash function:
This component also provides efficient comparison and hash functions for convenience, and thus, applications can use this component as a key in associative containers.
-
-
-
-
Example 1: Externalizing:
  // Below, 'msg' is a valid instance of 'bmqa::Message' obtained from an
-  // instance of 'bmqa::Session':
-
-  bmqt::MessageGUID g1 = msg.messageId();
-
-  char buffer[bmqt::MessageGUID::e_SIZE_HEX];
-  g1.toHex(buffer);
-
-  BSLS_ASSERT(true == bmqt::MessageGUID::isValidHexRepresentation(buffer));
-
-  bmqt::MessageGUID g2;
-  g2.fromHex(buffer);
-
-  BSLS_ASSERT(g1 == g2);
-
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__propertytype.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__propertytype.html deleted file mode 100644 index 3cba0dfe5..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__propertytype.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - -bmqt_propertytype Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_propertytype
- -[Package bmqt] -

-
-
- -

Provide enum for the supported data types for a message property. -More...

- - - -

-Namespaces

namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide enum for the supported data types for a message property.
-
-
-
Classes:
- - -
bmqt::PropertyType Enum for supported data types for a message property.
-
-
-
-
Description:
This component contains bmqt::PropertyType which describes various data types that are supported for message properties.
-
-
-
Data Types and Size:
This section describes the size of each data type:
  +----------------------------------------------------+
-  | Data Type                      | Size (in bytes)   |
-  +====================================================+
-  | BOOL                           | 1
-  | CHAR                           | 1                 |
-  +----------------------------------------------------+
-  | SHORT                          | 2                 |
-  +----------------------------------------------------+
-  | INT                            | 4                 |
-  +----------------------------------------------------+
-  | INT64                          | 8                 |
-  +----------------------------------------------------+
-  | STRING                         | variable          |
-  +----------------------------------------------------+
-  | BINARY                         | variable          |
-  +----------------------------------------------------+
-
-
Note that the difference between BINARY and STRING data types is that the former allows null (\0) character while the later does not.
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__queueflags.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__queueflags.html deleted file mode 100644 index c69cdaa61..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__queueflags.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - -bmqt_queueflags Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_queueflags
- -[Package bmqt] -

-
-
- -

Provide enumerators for flags to use at Queue open. -More...

- - - -

-Namespaces

namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide enumerators for flags to use at Queue open.
-
-
-
Classes:
- - - - -
bmqt::QueueFlags flags to use at Queue open
bmqt::QueueFlagsUtil utilities to manipulate queue flags bit-mask values
-
-
-
-
Description:
This file contains an enum, bmqt::QueueFlags of all the flags that can be used at Queue open. Each value of the enum correspond to a bit of a bit-mask integer. It also exposes a set of utilities, in the bmqt::QueueFlagsUtil namespace to manipulate such bit-mask value.
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__queueoptions.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__queueoptions.html deleted file mode 100644 index a6d664feb..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__queueoptions.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - -bmqt_queueoptions Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_queueoptions
- -[Package bmqt] -

-
-
- -

Provide a value-semantic type for options related to a queue. -More...

- - - -

-Namespaces

namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a value-semantic type for options related to a queue.
-
-
-
Classes:
- - -
bmqt::QueueOptions options related to a queue.
-
-
-
-
Description:
bmqt::QueueOptions provides a value-semantic type, QueueOptions, which is used to specify parameters for a queue.
-
-
The following parameters are supported:
    -
  • -maxUnconfirmedMessages:
    - Maximum number of outstanding messages that can be sent by the broker without being confirmed.
  • -
  • -maxUnconfirmedBytes:
    - Maximum accumulated bytes of all outstanding messages that can be sent by the broker without being confirmed.
  • -
  • -consumerPriority:
    - Priority of a consumer with respect to delivery of messages.
  • -
  • -suspendsOnBadHostHealth:
    - Sets whether the queue should suspend operation when the host machine is unhealthy.
  • -
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__resultcode.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__resultcode.html deleted file mode 100644 index 03512f912..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__resultcode.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - -bmqt_resultcode Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_resultcode
- -[Package bmqt] -

-
-
- -

Provide enums for various publicly exposed result code. -More...

- - - -

-Namespaces

namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide enums for various publicly exposed result code.
-
-
-
Classes:
- - - - - - - - - - - - - - -
bmqt::GenericResult generic common result values
bmqt::AckResult result code status of an ack message
bmqt::CloseQueueResult result of a close queue operation
bmqt::EventBuilderResult result of eventBuilder pack operation
bmqt::OpenQueueResult result of an open queue operation
bmqt::ConfigureQueueResult result of a configure queue operation
bmqt::PostResult result of a post operation
-
-
-
-
Description:
This file contains a list of Enums (bmqt::GenericResult, bmqt::AckResult, bmqt::CloseQueueResult, bmqt::EventBuilderResult, bmqt::OpenQueueResult, bmqt::ConfigureQueueResult, and bmqt::PostResult) that are publicly exposed to Application (via bmqa), but whose value comes from the internal implementation (bmqimp). Having them defined in bmqt allows bmqa to return the enum returned by bmqimp with no transformation.
-
All enums are using the convention that < 0 values are errors, while > 0 are warnings.
-
The GenericStatus enum contains values that are common for most or all of the other status enums, such as success, timeout, ... The values of its members can range from -99 to 99.
-
Each other enum should duplicate any values from the GenericStatus one that it intends to be able to represent (aliasing the values to the ones from the GenericStatus enum) and extend with specialized values in the ]..., -99[ or ]99, ...[ ranges.
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__sessioneventtype.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__sessioneventtype.html deleted file mode 100644 index 243f94f74..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__sessioneventtype.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - -bmqt_sessioneventtype Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_sessioneventtype
- -[Package bmqt] -

-
-
- -

Provide an enumeration for the different types of session events. -More...

- - - -

-Namespaces

namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide an enumeration for the different types of session events.
-
-
-
Classes:
- - -
bmqt::SessionEventType Enumeration for the types of session events.
-
-
-
-
Description:
bmqt::SessionEventType is an enumeration for the different types of session events.
-
    -
  • -CONNECTED: The connection with the broker is established, this event is only fired once (if for any reason the connection gets lost and automatically reconnected, this will emit a CONNECTION_RESTORED event).
  • -
-
-
    -
  • -DISCONNECTED: The connection with the broker is terminated (after the user called stop on the session). This is the last event that will be delivered.
  • -
-
-
    -
  • -CONNECTION_LOST: The session was connected to the broker, but that connection dropped.
  • -
-
-
    -
  • -RECONNECTED: The connection to the broker has been re-established. This event is followed by zero or more QUEUE_REOPEN_RESULT events, and one STATE_RESTORED event.
  • -
-
-
    -
  • -STATE_RESTORED: Session's state has been restored after connection has been re-established with the broker. This event is preceded by one RECONNECTED event, and zero or more QUEUE_REOPEN_RESULT events.
  • -
-
-
    -
  • -CONNECTION_TIMEOUT: The connection to the broker has timedout.
  • -
-
-
    -
  • -QUEUE_OPEN_RESULT: Indicates the result of an openQueue operation.
  • -
-
-
    -
  • -QUEUE_REOPEN_RESULT: Indicates the result of an openQueue operation, which happens when the connection to the broker has been restored and queues previously opened have been automatically reopened. This event is preceded by a RECONNECTED event and followed by zero or more QUEUE_REOPEN_RESULT events, and one STATE_RESTORED event.
  • -
-
-
    -
  • -QUEUE_CLOSE_RESULT: Indicates the result of a closeQueue operation
  • -
-
-
    -
  • -SLOWCONSUMER_NORMAL: Notifies that the EventQueue is back to its low watermark level.
  • -
-
-
    -
  • -SLOWCONSUMER_HIGHWATERMARK: Notifies that events are accumulating in the EventQueue, which has now reached it's high watermark level.
  • -
-
-
    -
  • -QUEUE_CONFIGURE_RESULT: Indicates the result of a configureQueue operation.
  • -
-
-
    -
  • -HOST_UNHEALTHY: Indicates the host has become unhealthy. Only issued if
  • -
-a bmqpi::HostHealthMonitor has been installed to the session, via the bmqt::SessionOptions object.
-
    -
  • -HOST_HEALTH_RESTORED: Indicates the health of the host has restored,
  • -
-and all queues have resumed operation. Following a Host Health incident, this indicates that the application has resumed normal operation.
-
    -
  • -QUEUE_SUSPENDED: Indicates that an open queue has suspended operation:
    -
  • -
-* Consumers are configured to receive no more messages from broker (i.e., maxUnconfirmedMessages := 0, maxUnconfirmedBytes := 0, consumerPriority := INT_MIN). * Attempts to pack messages targeting queue will be rejected by bmqa::MessageEventBuilder::pack(). Clients may still attempt to POST existing packed events. * Attempts by client to reconfigure queue will not take effect until the queue has resumed.
-
    -
  • -QUEUE_RESUMED: Indicates that a suspended queue has resumed normal
  • -
-operation (i.e., effects of QUEUE_SUSPENDED state no longer apply).
-
    -
  • -ERROR: Indicates a generic error.
  • -
-
-
    -
  • -TIMEOUT Indicates that the specified operation has timed out.
  • -
-
-
    -
  • -CANCELED: Indicates that the specified operation was canceled.
  • -
-
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__sessionoptions.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__sessionoptions.html deleted file mode 100644 index 86585e43c..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__sessionoptions.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - -bmqt_sessionoptions Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_sessionoptions
- -[Package bmqt] -

-
-
- -

Provide a value-semantic type to configure session with the broker. -More...

- - - - -

-Namespaces

namespace  bmqpi
namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a value-semantic type to configure session with the broker.
-
-
-
Classes:
BlazingMQ broker.
-
-
-
Description:
bmqt::SessionOptions provides a value-semantic type, SessionOptions, which is used to specify session-level configuration parameters.
-
Most applications should not need to change the parameters for creating a Session; the default parameters are fine.
-
The following parameters are supported:
    -
  • -brokerUri:
    - Address of the broker to connect to. Default is to connect to the broker on the local host on the default port (30114). The format is tcp://<host>:port. Host can be: o an explicit hostname or localhost o an ip, example 10.11.12.13 o a DNS entry. In this case, the client will resolve the list of addresses from that entry, and try to connect to one of them. When the connection with the host goes down, it will automatically immediately failover and reconnects to another entry from the address list. If the environment variable BMQ_BROKER_URI is set, then instances of bmqa::Session will ignore the brokerUri field from the provided SessionOptions and use the value from this environment variable instead.
  • -
  • -processNameOverride:
    - If not empty, use this value for the processName in the identity message (useful for scripted language bindings). This field is used in the broker's logs to more easily identify the client's process.
  • -
  • -numProcessingThreads:
    - Number of threads to use for processing events. Default is 1. Note that this setting has an effect only if providing a SessionEventHandler to the session.
  • -
  • -blobBufferSize:
    - Size (in bytes) of the blob buffers to use. Default value is 4k.
  • -
  • -channelHighWatermark:
    - Size (in bytes) to use for write cache high watermark on the channel. Default value is 128MB. This value is set on the writeCacheHiWatermark of the btemt_ChannelPoolConfiguration object used by the session with the broker. Note that BlazingMQ reserves 4MB of this value for control message, so the actual watermark for data published is channelHighWatermark - 4MB.
  • -
  • -statsDumpInterval:
    - Interval (in seconds) at which to dump stats in the logs. Set to 0 to disable recurring dump of stats (final stats are always dumped at end of session). Default is 5min. The value must be a multiple of 30s, in the range [0s - 60min].
  • -
  • -connectTimeout,
  • -
  • -disconnetTimeout,
  • -
  • -openQueueTimeout,
  • -
  • -configureQueueTimeout,
  • -
  • -closeQueueTimeout, Default timeout to use for various operations.
  • -
  • -eventQueueLowWatermark,
  • -
  • -eventQueueHighWatermark, Parameters to configure the EventQueue notification watermarks thresholds. The EventQueue is the buffer of all incoming events from the broker (PUSH and ACK messages as well as session and queue operations result) pending being processed by the application code. A warning (bmqt::SessionEventType::e_SLOWCONSUMER_HIGHWATERMARK) is emitted when the buffer reaches the highWatermark value, and a notification (bmqt::SessionEventType::e_SLOWCONSUMER_NORMAL) is sent when the buffer is back to the lowWatermark. The highWatermark typically would be reached in case of either a very slow consumer, causing events to accumulate in the buffer, or a huge burst of data. Setting the highWatermark to a high value should be done cautiously because it will potentially hide slowness of the consumer because of the enqueuing of PUSH events for a consumer, ACK events for a producer as well as all system events to the buffer (meaning that the messages may have a huge latency). Note, it is also recommended to have a reasonable distance between highWatermark and lowWatermark values to avoid a constant back and forth toggling of state resulting from push pop of events.
  • -
  • -hostHealthMonitor:
    - Optional instance of a class derived from bmqpi::HostHealthMonitor, responsible for notifying the Session when the health of the host machine has changed. A hostHealthMonitor must be specified, in order for queues opened through the session to suspend on unhealthy hosts.
  • -
  • -traceOptions:
    - Provides the `bmqpiDTContext` and `bmqpiDTTracer` objects required for integration with a Distributed Trace framework. If these objects are provided, then the session will use them to create "spans" to represent requests made to the BlazingMQ broker on behalf of operations initiated by the client. This includes session-level operations (e.g., Session-Start, Session-Stop) as well as queue-level operations (e.g., Queue-Open, Queue-Configure, Queue-Close).
  • -
-
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__subscription.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__subscription.html deleted file mode 100644 index d4a61b827..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__subscription.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - -bmqt_subscription Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_subscription
- -[Package bmqt] -

-
-
- -

Provide a value-semantic types for subscription related API. -More...

- - - -

-Namespaces

namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a value-semantic types for subscription related API.
-
-
-
Classes:
- - - - - - -
bmqt::Subscription_Handle uniquely identifies Subscription
bmqt::Subscription_Expression Subscription criteria
bmqt::Subscription Subscription parameters
-
-
-
-
Description:
bmqt::Subscription provides a value-semantic type carried by bmqt::QueueOptions, when opening and configuring a queue.
-
-
-
NOTE: Experimental. Do not use until this feature is announced.:
-
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__uri.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__uri.html deleted file mode 100644 index 3b6343cb7..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__uri.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - -bmqt_uri Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

Component bmqt_uri
- -[Package bmqt] -

-
-
- -

Provide value-semantic type and utilities for a BlazingMQ queue. -More...

- -
-
Outline
-
-
-
-
Purpose:
Provide value-semantic type and utilities for a BlazingMQ queue URI.
-
-
-
Classes:
- - - - - - -
bmqt::Uri value-semantic type representing a URI
bmqt::UriParser utility to parse a string into a URI
bmqt::UriBuilder builder mechanism to create a URI
-
-
-
-
Description:
This component provides a value-semantic type, bmqt::Uri representing a URI for a BlazingMQ queue. A bmqt:Uri can be built by parsing from a string representation, using the bmqt::UriParser, or built using the bmqt::UriBuilder.
-
-
See also:
---------- https://tools.ietf.org/html/rfc3986
-
-
-
URI format:
In a nutshell, a URI representing an application queue managed by a BlazingMQ broker on a given machine looks like one of the following:
  bmq://ts.trades.myapp/my.queue
-  bmq://ts.trades.myapp.~bt/my.queue
-  bmq://ts.trades.myapp/my.queue?id=foo
-
where:
-
    -
  • -The URI scheme is always "bmq".
  • -
-
-
    -
  • -The URI authority is the name of BlazingMQ domain (such as
  • -
-"ts.trades.myapp")
-
as registered with the BlazingMQ infrastructure. The domain name may
-
contain alphanumeric characters, dots and dashes (it has to match the
-
following regular expression: [-a-zA-Z0-9\\._]+). The domain may be
-
followed by an optional tier, introduced by the ".~" sequence and
-
consisting of alphanumeric characters and dashes. The ".~" sequence is
-
not part of the tier.
-
-
    -
  • -The URI path is the name of the queue ("my.queue" above) and may contain alphanumeric characters, dashes, underscores and tild (it has to match the following regular expression: [-a-zA-Z0-9_~\\.]+). The queue name must be less than bmqt::Uri::k_QUEUENAME_MAX_LENGTH characters long.
  • -
-
-
    -
  • -The name of the queue ("my.queue" above) may contain alphanumeric characters and dots.
  • -
-
-
    -
  • -

    The URI may contain an optional query with a key-value pair. Currently supported keys are:

    -
      -
    • -id: the corresponding value represents a name that will be used by BlazingMQ broker to uniquely identify the client.
    • -
    -

    -
  • -
-
-
    -
  • -The URI fragment part is currently unused.
  • -
-
-
-
-
Usage Example 1:
First, call the initialize method of the UriParser. This call is only needed one time; you can call it when your task starts.
-
Note that the bmq library takes care of that, so users of bmq don't have to explicitly do it themselves. Then, parse a URI string created on the stack to populate a Uri object. The parse function takes an optional error string which is populated with a short error message if the URI is not formatted correctly.
   bsl::string input = "bmq://my.domain/queue";
-   bmqt::Uri   uri(allocator);
-   bsl::string errorDescription;
-
-   int         rc = bmqt::UriParser::parse(&uri, &errorDescription, input);
-   if (rc != 0) {
-      BALL_LOG_ERROR << "Invalid URI [error: " << errorDescription << "]";
-   }
-   assert(rc == 0);
-   assert(error == "");
-   assert(uri.scheme()    == "bmq");
-   assert(uri.domain()    == "my.domain");
-   assert(uri.queue()     == "queue");
-
-
-
-
Usage Example 2:
Instantiate a Uri object with a string representation of the URI and an allocator.
  bmqt::Uri uri("bmq://my.domain/queue", allocator);
-  assert(uri.scheme() == "bmq");
-  assert(uri.domain() == "my.domain");
-  assert(uri.queue()  == "queue");
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/group__bmqt__version.html b/docs/docs/apidocs/cpp_apidocs/group__bmqt__version.html deleted file mode 100644 index c2f6bc0da..000000000 --- a/docs/docs/apidocs/cpp_apidocs/group__bmqt__version.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - -bmqt_version Component - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

Component bmqt_version
- -[Package bmqt] -

-
-
- -

Provide a value-semantic type representing a version (major minor). -More...

- - - -

-Namespaces

namespace  bmqt
-

Detailed Description

-
Outline
-
-
-
-
Purpose:
Provide a value-semantic type representing a version (major minor).
-
-
-
Classes:
- - -
bmqt::Version version with major and minor parts.
-
-
-
-
Description:
This component implements a simple value-semantic type, bmqt::Version representing the version of an object. It is used in particular to attach a version attribute to a bmqa::Message, so that a consuming application receiving a message knows the version of the schema that was used for publishing.
-
A version is represented by two numbers: a major and a minor version. Both are positive integers within the range [0-255].
-
-
-
Usage Example:
  bmqt::Version version(1, 3);
-  BSLS_ASSERT(version.major() == 1);
-  BSLS_ASSERT(version.minor() == 3);
-  version.setMajor(2).setMinor(4);
-  BSLS_ASSERT(version.major() == 2);
-  BSLS_ASSERT(version.minor() == 4);
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/hierarchy.html b/docs/docs/apidocs/cpp_apidocs/hierarchy.html deleted file mode 100644 index a42143fb9..000000000 --- a/docs/docs/apidocs/cpp_apidocs/hierarchy.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

Class Hierarchy

-
-
-This inheritance list is sorted roughly, but not completely, alphabetically: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/index.html b/docs/docs/apidocs/cpp_apidocs/index.html deleted file mode 100644 index 684f87d09..000000000 --- a/docs/docs/apidocs/cpp_apidocs/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - -Index of index Package - - - - - - <body> - <a href="components.html">Frames are disabled. Click here to go to the main page.</a> - </body> - - - diff --git a/docs/docs/apidocs/cpp_apidocs/main.html b/docs/docs/apidocs/cpp_apidocs/main.html deleted file mode 100644 index fbaac952f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/main.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/modules.html b/docs/docs/apidocs/cpp_apidocs/modules.html deleted file mode 100644 index 30b348b83..000000000 --- a/docs/docs/apidocs/cpp_apidocs/modules.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - -Bloomberg Development Environment - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

Components

-
- - - - diff --git a/docs/docs/apidocs/cpp_apidocs/namespacebmqa.html b/docs/docs/apidocs/cpp_apidocs/namespacebmqa.html deleted file mode 100644 index 3faf75537..000000000 --- a/docs/docs/apidocs/cpp_apidocs/namespacebmqa.html +++ /dev/null @@ -1,688 +0,0 @@ - - - - -Namespace bmqa - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

class  AbstractSession
class  CloseQueueStatus
class  ConfigureQueueStatus
struct  ConfirmEventBuilderImpl
class  ConfirmEventBuilder
class  Event
class  ManualHostHealthMonitor
struct  MessageImpl
class  MessageConfirmationCookie
class  Message
class  MessageEvent
struct  MessageEventBuilderImpl
class  MessageEventBuilder
struct  MessageIteratorImpl
class  MessageIterator
class  MessageProperties
class  MessagePropertiesIterator
struct  MockSessionUtil
class  MockSession
class  OpenQueueStatus
class  QueueId
class  SessionEventHandler
struct  SessionImpl
class  Session
class  SessionEvent

-Functions

bool operator== (const CloseQueueStatus &lhs, const CloseQueueStatus &rhs)
bool operator!= (const CloseQueueStatus &lhs, const CloseQueueStatus &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const CloseQueueStatus &rhs)
bool operator== (const ConfigureQueueStatus &lhs, const ConfigureQueueStatus &rhs)
bool operator!= (const ConfigureQueueStatus &lhs, const ConfigureQueueStatus &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const ConfigureQueueStatus &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const Event &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const Message &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const MessageEvent &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const MessageProperties &rhs)
bool operator== (const OpenQueueStatus &lhs, const OpenQueueStatus &rhs)
bool operator!= (const OpenQueueStatus &lhs, const OpenQueueStatus &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const OpenQueueStatus &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const QueueId &rhs)
bool operator== (const QueueId &lhs, const QueueId &rhs)
bool operator!= (const QueueId &lhs, const QueueId &rhs)
bool operator< (const QueueId &lhs, const QueueId &rhs)
bool operator== (const SessionEvent &lhs, const SessionEvent &rhs)
bool operator!= (const SessionEvent &lhs, const SessionEvent &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const SessionEvent &rhs)
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::operator== (const CloseQueueStatus &  lhs,
const CloseQueueStatus &  rhs 
)
-
-
-

Return true if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::operator!= (const CloseQueueStatus &  lhs,
const CloseQueueStatus &  rhs 
)
-
-
-

Return false if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::operator<< (bsl::ostream &  stream,
const CloseQueueStatus &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::operator== (const ConfigureQueueStatus &  lhs,
const ConfigureQueueStatus &  rhs 
)
-
-
-

Return true if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::operator!= (const ConfigureQueueStatus &  lhs,
const ConfigureQueueStatus &  rhs 
)
-
-
-

Return false if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::operator<< (bsl::ostream &  stream,
const ConfigureQueueStatus &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::operator<< (bsl::ostream &  stream,
const Event &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::operator<< (bsl::ostream &  stream,
const Message &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::operator<< (bsl::ostream &  stream,
const MessageEvent &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::operator<< (bsl::ostream &  stream,
const MessageProperties &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::operator== (const OpenQueueStatus &  lhs,
const OpenQueueStatus &  rhs 
)
-
-
-

Return true if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::operator!= (const OpenQueueStatus &  lhs,
const OpenQueueStatus &  rhs 
)
-
-
-

Return false if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::operator<< (bsl::ostream &  stream,
const OpenQueueStatus &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::operator<< (bsl::ostream &  stream,
const QueueId &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::operator== (const QueueId &  lhs,
const QueueId &  rhs 
)
-
-
-

Return true if rhs object contains the value of the same type as contained in lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::operator!= (const QueueId &  lhs,
const QueueId &  rhs 
)
-
-
-

Return false if rhs object contains the value of the same type as contained in lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::operator< (const QueueId &  lhs,
const QueueId &  rhs 
)
-
-
-

Operator used to allow comparison between the specified lhs and rhs CorrelationId objects so that CorrelationId can be used as key in a map.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::operator== (const SessionEvent &  lhs,
const SessionEvent &  rhs 
)
-
-
-

Return true if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqa::operator!= (const SessionEvent &  lhs,
const SessionEvent &  rhs 
)
-
-
-

Return false if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqa::operator<< (bsl::ostream &  stream,
const SessionEvent &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/namespacebmqimp.html b/docs/docs/apidocs/cpp_apidocs/namespacebmqimp.html deleted file mode 100644 index 3d04a5dbb..000000000 --- a/docs/docs/apidocs/cpp_apidocs/namespacebmqimp.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - -Namespace bmqimp - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - - -
- -
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/namespacebmqp.html b/docs/docs/apidocs/cpp_apidocs/namespacebmqp.html deleted file mode 100644 index ffece40e3..000000000 --- a/docs/docs/apidocs/cpp_apidocs/namespacebmqp.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - -Namespace bmqp - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - - -
- -
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/namespacebmqpi.html b/docs/docs/apidocs/cpp_apidocs/namespacebmqpi.html deleted file mode 100644 index 5ef1aba01..000000000 --- a/docs/docs/apidocs/cpp_apidocs/namespacebmqpi.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -Namespace bmqpi - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - - -
- - - - - - -

-Classes

class  DTContext
class  DTSpan
class  DTTracer
class  HostHealthMonitor
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/namespacebmqt.html b/docs/docs/apidocs/cpp_apidocs/namespacebmqt.html deleted file mode 100644 index 13ab5790e..000000000 --- a/docs/docs/apidocs/cpp_apidocs/namespacebmqt.html +++ /dev/null @@ -1,1185 +0,0 @@ - - - - -Namespace bmqt - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

struct  CompressionAlgorithmType
class  CorrelationId
struct  CorrelationIdLess
struct  EncodingType
struct  HostHealthState
struct  MessageEventType
class  MessageGUID
struct  MessageGUIDLess
class  MessageGUIDHashAlgo
struct  PropertyType
struct  QueueFlags
struct  QueueFlagsUtil
class  QueueOptions
struct  GenericResult
struct  OpenQueueResult
struct  ConfigureQueueResult
struct  CloseQueueResult
struct  EventBuilderResult
struct  AckResult
struct  PostResult
struct  SessionEventType
class  SessionOptions
class  SubscriptionHandle
class  SubscriptionExpression
class  Subscription
class  Uri
struct  UriParser
class  UriBuilder
class  Version

-Functions

bsl::ostream & operator<< (bsl::ostream &stream, CompressionAlgorithmType::Enum value)
bsl::ostream & operator<< (bsl::ostream &stream, const CorrelationId &rhs)
bool operator== (const CorrelationId &lhs, const CorrelationId &rhs)
bool operator!= (const CorrelationId &lhs, const CorrelationId &rhs)
bool operator< (const CorrelationId &lhs, const CorrelationId &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, EncodingType::Enum value)
bsl::ostream & operator<< (bsl::ostream &stream, HostHealthState::Enum value)
bsl::ostream & operator<< (bsl::ostream &stream, MessageEventType::Enum value)
bsl::ostream & operator<< (bsl::ostream &stream, const MessageGUID &rhs)
bool operator== (const MessageGUID &lhs, const MessageGUID &rhs)
bool operator!= (const MessageGUID &lhs, const MessageGUID &rhs)
bool operator< (const MessageGUID &lhs, const MessageGUID &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, PropertyType::Enum value)
bsl::ostream & operator<< (bsl::ostream &stream, QueueFlags::Enum value)
bool operator== (const QueueOptions &lhs, const QueueOptions &rhs)
bool operator!= (const QueueOptions &lhs, const QueueOptions &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const QueueOptions &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, GenericResult::Enum value)
bsl::ostream & operator<< (bsl::ostream &stream, OpenQueueResult::Enum value)
bsl::ostream & operator<< (bsl::ostream &stream, ConfigureQueueResult::Enum value)
bsl::ostream & operator<< (bsl::ostream &stream, CloseQueueResult::Enum value)
bsl::ostream & operator<< (bsl::ostream &stream, EventBuilderResult::Enum value)
bsl::ostream & operator<< (bsl::ostream &stream, AckResult::Enum value)
bsl::ostream & operator<< (bsl::ostream &stream, PostResult::Enum value)
bsl::ostream & operator<< (bsl::ostream &stream, SessionEventType::Enum value)
bool operator== (const SessionOptions &lhs, const SessionOptions &rhs)
bool operator!= (const SessionOptions &lhs, const SessionOptions &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const SessionOptions &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const Subscription &rhs)
bool operator== (const Uri &lhs, const Uri &rhs)
bool operator!= (const Uri &lhs, const Uri &rhs)
bool operator< (const Uri &lhs, const Uri &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const Uri &rhs)
bsl::ostream & operator<< (bsl::ostream &stream, const Version &rhs)
bool operator== (const Version &lhs, const Version &rhs)
bool operator!= (const Version &lhs, const Version &rhs)
bool operator< (const Version &lhs, const Version &rhs)
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
CompressionAlgorithmType::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
const CorrelationId &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator== (const CorrelationId &  lhs,
const CorrelationId &  rhs 
)
-
-
-

Return true if rhs object contains the value of the same type as contained in lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator!= (const CorrelationId &  lhs,
const CorrelationId &  rhs 
)
-
-
-

Return false if rhs object contains the value of the same type as contained in lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator< (const CorrelationId &  lhs,
const CorrelationId &  rhs 
)
-
-
-

Operator used to allow comparison between the specified lhs and rhs CorrelationId objects so that CorrelationId can be used as key in a map.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
EncodingType::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
HostHealthState::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
MessageEventType::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
const MessageGUID &  rhs 
)
-
-
-

Write the value of the specified rhs object to the specified output stream in a human-readable format, and return a reference to stream. Note that this human-readable format is not fully specified, and can change without notice. Applications relying on a fixed length format must use toHex method.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator== (const MessageGUID &  lhs,
const MessageGUID &  rhs 
)
-
-
-

Return true if rhs object contains the value of the same type as contained in lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator!= (const MessageGUID &  lhs,
const MessageGUID &  rhs 
)
-
-
-

Return false if rhs object contains the value of the same type as contained in lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator< (const MessageGUID &  lhs,
const MessageGUID &  rhs 
)
-
-
-

Return true if the specified lhs instance is smaller than the specified rhs instance, false otherwise. Note that criteria for comparison is implementation defined, and result of this routine does not in any way signify the order of creation/arrival/delivery of messages to which lhs and rhs instances belong. Note that this operator is provided so that MessageGUID can be used as a key in associative containers (map, set, etc).

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
PropertyType::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
QueueFlags::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator== (const QueueOptions &  lhs,
const QueueOptions &  rhs 
)
-
-
-

Return true if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator!= (const QueueOptions &  lhs,
const QueueOptions &  rhs 
)
-
-
-

Return false if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
const QueueOptions &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
GenericResult::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
OpenQueueResult::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
ConfigureQueueResult::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
CloseQueueResult::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
EventBuilderResult::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
AckResult::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
PostResult::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
SessionEventType::Enum  value 
)
-
-
-

Format the specified value to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator== (const SessionOptions &  lhs,
const SessionOptions &  rhs 
)
-
-
-

Return true if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator!= (const SessionOptions &  lhs,
const SessionOptions &  rhs 
)
-
-
-

Return false if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
const SessionOptions &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
const Subscription &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator== (const Uri &  lhs,
const Uri &  rhs 
)
-
-
-

Return true if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator!= (const Uri &  lhs,
const Uri &  rhs 
)
-
-
-

Return false if the specified rhs object contains the value of the same type as contained in the specified lhs object and the value itself is the same in both objects, return true otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator< (const Uri &  lhs,
const Uri &  rhs 
)
-
-
-

Return true if the specified lhs object compares less than the specified rhs object.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
const Uri &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bsl::ostream& bmqt::operator<< (bsl::ostream &  stream,
const Version &  rhs 
)
-
-
-

Format the specified rhs to the specified output stream and return a reference to the modifiable stream.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator== (const Version &  lhs,
const Version &  rhs 
)
-
-
-

Return true if the object in the specified lhs represents the same version as the the one in the specified rhs, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator!= (const Version &  lhs,
const Version &  rhs 
)
-
-
-

Return true if the object in the specified lhs represents a different version than the the one in the specified rhs, return false otherwise.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::operator< (const Version &  lhs,
const Version &  rhs 
)
-
-
-

Return true if the version represented by the specified lhs is less than the version represented by the specified rhs.

- -
-
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/namespacebslmt.html b/docs/docs/apidocs/cpp_apidocs/namespacebslmt.html deleted file mode 100644 index 04bb6be85..000000000 --- a/docs/docs/apidocs/cpp_apidocs/namespacebslmt.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - -Namespace bslmt - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bslmt Namespace Reference
- -[Component bmqa_session] -

-
-
- -
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/namespacemembers.html b/docs/docs/apidocs/cpp_apidocs/namespacemembers.html deleted file mode 100644 index cfb436cc6..000000000 --- a/docs/docs/apidocs/cpp_apidocs/namespacemembers.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - -Namespace members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-Here is a list of all namespace members with links to the namespace documentation for each member: - -

- o -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/namespacemembers_func.html b/docs/docs/apidocs/cpp_apidocs/namespacemembers_func.html deleted file mode 100644 index 5243332e5..000000000 --- a/docs/docs/apidocs/cpp_apidocs/namespacemembers_func.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - -Namespace members_func - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-  - -

- o -

-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/namespaces.html b/docs/docs/apidocs/cpp_apidocs/namespaces.html deleted file mode 100644 index cd4b6962e..000000000 --- a/docs/docs/apidocs/cpp_apidocs/namespaces.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -Namespace s - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

Namespace List

-
-
-Here is a list of all namespaces with brief descriptions: - - - - - - -
bmqa
bmqimp
bmqp
bmqpi
bmqt
bslmt
-
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/nav_f.png b/docs/docs/apidocs/cpp_apidocs/nav_f.png deleted file mode 100644 index 1b07a1620..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/nav_f.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/nav_h.png b/docs/docs/apidocs/cpp_apidocs/nav_h.png deleted file mode 100644 index 01f5fa6a5..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/nav_h.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/open.png b/docs/docs/apidocs/cpp_apidocs/open.png deleted file mode 100644 index 7b35d2c2c..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/open.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1ConfirmEventBuilderImpl-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1ConfirmEventBuilderImpl-members.html deleted file mode 100644 index 43d576761..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1ConfirmEventBuilderImpl-members.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - -Struct bmqa::ConfirmEventBuilderImpl Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::ConfirmEventBuilderImpl Member List

-
- - - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1ConfirmEventBuilderImpl.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1ConfirmEventBuilderImpl.html deleted file mode 100644 index de1e20151..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1ConfirmEventBuilderImpl.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - -Struct bmqa::ConfirmEventBuilderImpl - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::ConfirmEventBuilderImpl Struct Reference

-
-
- -

#include <bmqa_confirmeventbuilder.h>

- -

List of all members.

- - - - - - - - -

-Public Member Functions

 ConfirmEventBuilderImpl ()

-Public Attributes

bsls::AlignedBuffer
-< k_MAX_SIZEOF_BMQP_CONFIRMEVENTBUILDER
d_buffer
bmqp::ConfirmEventBuilder * d_builder_p

-Static Public Attributes

static const int k_MAX_SIZEOF_BMQP_CONFIRMEVENTBUILDER = 64
-

Detailed Description

-

Component-private class. Do not use.

-

See Component bmqa_confirmeventbuilder

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
bmqa::ConfirmEventBuilderImpl::ConfirmEventBuilderImpl ( ) 
-
-
- -
-
-

Member Data Documentation

- -
- -
- -
-
- - - -
-
- - - - -
bmqp::ConfirmEventBuilder* bmqa::ConfirmEventBuilderImpl::d_builder_p
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageEventBuilderImpl-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageEventBuilderImpl-members.html deleted file mode 100644 index 5ac504378..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageEventBuilderImpl-members.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - -Struct bmqa::MessageEventBuilderImpl Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::MessageEventBuilderImpl Member List

-
- - - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageEventBuilderImpl.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageEventBuilderImpl.html deleted file mode 100644 index 167b09da7..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageEventBuilderImpl.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - -Struct bmqa::MessageEventBuilderImpl - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::MessageEventBuilderImpl Struct Reference

-
-
- -

#include <bmqa_messageeventbuilder.h>

- -

List of all members.

- - - - - -

-Public Attributes

MessageEvent d_msgEvent
Message d_msg
bsl::shared_ptr
-< bmqp::MessageGUIDGenerator > 
d_guidGenerator_sp
-

Detailed Description

-

Struct containing the internal (private) members of MessageEventBuilder (That is so that bmqa::Session::loadMessageEventBuilder can access private members of MessageEventBuilder to initialize it, without having to expose them publicly).

-

See Component bmqa_messageeventbuilder

-

Member Data Documentation

- -
- -
-

This is needed so that getMessageEvent() can

- -
-
- -
- -
-

This is needed so that startMessage() can

- -
-
- -
-
- - - - -
bsl::shared_ptr<bmqp::MessageGUIDGenerator> bmqa::MessageEventBuilderImpl::d_guidGenerator_sp
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageImpl-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageImpl-members.html deleted file mode 100644 index 2d1b0e0d8..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageImpl-members.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - -Struct bmqa::MessageImpl Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::MessageImpl Member List

-
- - - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageImpl.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageImpl.html deleted file mode 100644 index 328c291df..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageImpl.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - -Struct bmqa::MessageImpl - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::MessageImpl Struct Reference

-
-
- -

#include <bmqa_message.h>

- -

List of all members.

- - - - - - -

-Public Attributes

bmqimp::Event * d_event_p
bsl::shared_ptr< bmqimp::Event > d_clonedEvent_sp
bmqa::QueueId d_queueId
bmqt::CorrelationId d_correlationId
-

Detailed Description

-

Struct containing the internal (private) members of Message (That is so that we can access private members of Message to initialize it, without having to expose them publicly).

-

IMPLEMENTATION NOTE: If adding new data members to this struct that are lazily populated (such as queueId or correlationId), then they should be reset in bmqa::MessageIterator.nextMessage().

-

See Component bmqa_message

-

Member Data Documentation

- -
-
- - - - -
bmqimp::Event* bmqa::MessageImpl::d_event_p
-
-
- -
-
- -
-
- - - - -
bsl::shared_ptr<bmqimp::Event> bmqa::MessageImpl::d_clonedEvent_sp
-
-
- -
-
- - - - -
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageIteratorImpl-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageIteratorImpl-members.html deleted file mode 100644 index f6f6c9266..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageIteratorImpl-members.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - -Struct bmqa::MessageIteratorImpl Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::MessageIteratorImpl Member List

-
- - - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageIteratorImpl.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageIteratorImpl.html deleted file mode 100644 index 2dd4f791f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MessageIteratorImpl.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - -Struct bmqa::MessageIteratorImpl - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::MessageIteratorImpl Struct Reference

-
-
- -

#include <bmqa_messageiterator.h>

- -

List of all members.

- - - - - -

-Public Attributes

bmqimp::Event * d_event_p
bmqa::Message d_message
int d_messageIndex
-

Detailed Description

-

Struct to hold the impl of the MessageIterator; that is so that we can keep the real impl private and use some special cast to manipulate it, without publicly exposing private members.

-

See Component bmqa_messageiterator

-

Member Data Documentation

- -
-
- - - - -
bmqimp::Event* bmqa::MessageIteratorImpl::d_event_p
-
-
-

Raw pointer to the event

- -
-
- -
- -
-

A Message, representing a view to the

- -
-
- - -
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil-members.html deleted file mode 100644 index 1e1dbaa12..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil-members.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - -Struct bmqa::MockSessionUtil Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::MockSessionUtil Member List

-
-
-This is the complete list of members for bmqa::MockSessionUtil, including all inherited members. - - - - - - - -
createAckEvent(const bsl::vector< AckParams > &acks, bdlbb::BlobBufferFactory *bufferFactory, bslma::Allocator *allocator)bmqa::MockSessionUtil [static]
createCloseQueueStatus(const QueueId &queueId, bmqt::CloseQueueResult::Enum statusCode, const bsl::string &errorDescription, bslma::Allocator *allocator=0)bmqa::MockSessionUtil [static]
createConfigureQueueStatus(const QueueId &queueId, bmqt::ConfigureQueueResult::Enum statusCode, const bsl::string &errorDescription, bslma::Allocator *allocator=0)bmqa::MockSessionUtil [static]
createOpenQueueStatus(const QueueId &queueId, bmqt::OpenQueueResult::Enum statusCode, const bsl::string &errorDescription, bslma::Allocator *allocator=0)bmqa::MockSessionUtil [static]
createPushEvent(const bsl::vector< PushMessageParams > &pushEventParams, bdlbb::BlobBufferFactory *bufferFactory, bslma::Allocator *allocator)bmqa::MockSessionUtil [static]
createQueueSessionEvent(bmqt::SessionEventType::Enum sessionEventType, QueueId *queueId, const bmqt::CorrelationId &correlationId, int errorCode, const bslstl::StringRef &errorDescription, bslma::Allocator *allocator)bmqa::MockSessionUtil [static]
createSessionEvent(bmqt::SessionEventType::Enum sessionEventType, const bmqt::CorrelationId &correlationId, const int errorCode, const bslstl::StringRef &errorDescription, bslma::Allocator *allocator)bmqa::MockSessionUtil [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil.html deleted file mode 100644 index e41b876d7..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - -Struct bmqa::MockSessionUtil - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::MockSessionUtil Struct Reference

-
-
- -

#include <bmqa_mocksession.h>

- -

List of all members.

- - - - - - - - - - - - -

-Classes

struct  AckParams
struct  PushMessageParams

-Static Public Member Functions

static Event createAckEvent (const bsl::vector< AckParams > &acks, bdlbb::BlobBufferFactory *bufferFactory, bslma::Allocator *allocator)
static Event createPushEvent (const bsl::vector< PushMessageParams > &pushEventParams, bdlbb::BlobBufferFactory *bufferFactory, bslma::Allocator *allocator)
static Event createQueueSessionEvent (bmqt::SessionEventType::Enum sessionEventType, QueueId *queueId, const bmqt::CorrelationId &correlationId, int errorCode, const bslstl::StringRef &errorDescription, bslma::Allocator *allocator)
static Event createSessionEvent (bmqt::SessionEventType::Enum sessionEventType, const bmqt::CorrelationId &correlationId, const int errorCode, const bslstl::StringRef &errorDescription, bslma::Allocator *allocator)
static OpenQueueStatus createOpenQueueStatus (const QueueId &queueId, bmqt::OpenQueueResult::Enum statusCode, const bsl::string &errorDescription, bslma::Allocator *allocator=0)
static ConfigureQueueStatus createConfigureQueueStatus (const QueueId &queueId, bmqt::ConfigureQueueResult::Enum statusCode, const bsl::string &errorDescription, bslma::Allocator *allocator=0)
static CloseQueueStatus createCloseQueueStatus (const QueueId &queueId, bmqt::CloseQueueResult::Enum statusCode, const bsl::string &errorDescription, bslma::Allocator *allocator=0)
-

Detailed Description

-

Utility methods to create bmqa events

-

See Component bmqa_mocksession

-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static Event bmqa::MockSessionUtil::createAckEvent (const bsl::vector< AckParams > &  acks,
bdlbb::BlobBufferFactory *  bufferFactory,
bslma::Allocator *  allocator 
) [static]
-
-
-

Create and return an Event configured as a message event of type e_ACK with the specified acks params using the specified bufferFactory and the specified allocator to supply memory.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static Event bmqa::MockSessionUtil::createPushEvent (const bsl::vector< PushMessageParams > &  pushEventParams,
bdlbb::BlobBufferFactory *  bufferFactory,
bslma::Allocator *  allocator 
) [static]
-
-
-

Create and return an Event configured as a message event of type e_PUSH and with the specified pushEventParams, using the specified bufferFactory and the specified allocator to supply memory.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static Event bmqa::MockSessionUtil::createQueueSessionEvent (bmqt::SessionEventType::Enum  sessionEventType,
QueueId queueId,
const bmqt::CorrelationId correlationId,
int  errorCode,
const bslstl::StringRef &  errorDescription,
bslma::Allocator *  allocator 
) [static]
-
-
-

DEPRECATED: Use the createOpenQueueStatus(...), createConfigureQueueStatus(...), or createCloseQueueStatus(...) methods instead. This method will be marked as BSLS_ANNOTATION_DEPRECATED in future release of libbmq.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static Event bmqa::MockSessionUtil::createSessionEvent (bmqt::SessionEventType::Enum  sessionEventType,
const bmqt::CorrelationId correlationId,
const int  errorCode,
const bslstl::StringRef &  errorDescription,
bslma::Allocator *  allocator 
) [static]
-
-
-

Create and return an Event configured as a session event with the specified sessionEventType, errorCode and errorDescription and using the specified allocator to supply memory. Note that this method will not create queue related session events.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static OpenQueueStatus bmqa::MockSessionUtil::createOpenQueueStatus (const QueueId queueId,
bmqt::OpenQueueResult::Enum  statusCode,
const bsl::string &  errorDescription,
bslma::Allocator *  allocator = 0 
) [static]
-
-
-

Create and return a bmqa::OpenQueueStatus object with the specified queueId, statusCode, and errorDescription, using the optionally specified allocator to supply memory in the result.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static ConfigureQueueStatus bmqa::MockSessionUtil::createConfigureQueueStatus (const QueueId queueId,
bmqt::ConfigureQueueResult::Enum  statusCode,
const bsl::string &  errorDescription,
bslma::Allocator *  allocator = 0 
) [static]
-
-
-

Create and return a bmqa::ConfigureQueueStatus object with the specified queueId, statusCode, and errorDescription, using the optionally specified allocator to supply memory in the result.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static CloseQueueStatus bmqa::MockSessionUtil::createCloseQueueStatus (const QueueId queueId,
bmqt::CloseQueueResult::Enum  statusCode,
const bsl::string &  errorDescription,
bslma::Allocator *  allocator = 0 
) [static]
-
-
-

Create and return a bmqa::CloseQueueStatus object with the specified queueId, statusCode, and errorDescription, using the optionally specified allocator to supply memory in the result.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil_1_1AckParams-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil_1_1AckParams-members.html deleted file mode 100644 index e1f5db7d3..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil_1_1AckParams-members.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - -Struct bmqa::MockSessionUtil::AckParams Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::MockSessionUtil::AckParams Member List

-
-
-This is the complete list of members for bmqa::MockSessionUtil::AckParams, including all inherited members. - - - - - -
AckParams(const bmqt::AckResult::Enum status, const bmqt::CorrelationId &correlationId, const bmqt::MessageGUID &guid, const bmqa::QueueId &queueId)bmqa::MockSessionUtil::AckParams
d_correlationIdbmqa::MockSessionUtil::AckParams
d_guidbmqa::MockSessionUtil::AckParams
d_queueIdbmqa::MockSessionUtil::AckParams
d_statusbmqa::MockSessionUtil::AckParams
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil_1_1AckParams.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil_1_1AckParams.html deleted file mode 100644 index 2f24843b8..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil_1_1AckParams.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - -Struct bmqa::MockSessionUtil::AckParams - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::MockSessionUtil::AckParams Struct Reference

-
-
- -

#include <bmqa_mocksession.h>

- -

List of all members.

- - - - - - - - -

-Public Member Functions

 AckParams (const bmqt::AckResult::Enum status, const bmqt::CorrelationId &correlationId, const bmqt::MessageGUID &guid, const bmqa::QueueId &queueId)

-Public Attributes

bmqt::AckResult::Enum d_status
bmqt::CorrelationId d_correlationId
bmqt::MessageGUID d_guid
QueueId d_queueId
-

Detailed Description

-

Struct representing parameters for an ack message.

-

See Component bmqa_mocksession

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bmqa::MockSessionUtil::AckParams::AckParams (const bmqt::AckResult::Enum  status,
const bmqt::CorrelationId correlationId,
const bmqt::MessageGUID guid,
const bmqa::QueueId queueId 
)
-
-
-

Create a new AckParams object with the specified status, correlationId, guid and queueId.

- -
-
-

Member Data Documentation

- - - - - -
- -
-

Message GUID of confirmed message

- -
-
- - -
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil_1_1PushMessageParams-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil_1_1PushMessageParams-members.html deleted file mode 100644 index 9bbfd6de6..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil_1_1PushMessageParams-members.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - -Struct bmqa::MockSessionUtil::PushMessageParams Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::MockSessionUtil::PushMessageParams Member List

-
-
-This is the complete list of members for bmqa::MockSessionUtil::PushMessageParams, including all inherited members. - - - - - -
d_guidbmqa::MockSessionUtil::PushMessageParams
d_payloadbmqa::MockSessionUtil::PushMessageParams
d_propertiesbmqa::MockSessionUtil::PushMessageParams
d_queueIdbmqa::MockSessionUtil::PushMessageParams
PushMessageParams(const bdlbb::Blob &payload, const bmqa::QueueId &queueId, const bmqt::MessageGUID &guid, const MessageProperties &properties)bmqa::MockSessionUtil::PushMessageParams
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil_1_1PushMessageParams.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil_1_1PushMessageParams.html deleted file mode 100644 index b5dfa015b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1MockSessionUtil_1_1PushMessageParams.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - -Struct bmqa::MockSessionUtil::PushMessageParams - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::MockSessionUtil::PushMessageParams Struct Reference

-
-
- -

#include <bmqa_mocksession.h>

- -

List of all members.

- - - - - - - - -

-Public Member Functions

 PushMessageParams (const bdlbb::Blob &payload, const bmqa::QueueId &queueId, const bmqt::MessageGUID &guid, const MessageProperties &properties)

-Public Attributes

bdlbb::Blob d_payload
QueueId d_queueId
bmqt::MessageGUID d_guid
MessageProperties d_properties
-

Detailed Description

-

Struct representing parameters for a push message.

-

See Component bmqa_mocksession

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bmqa::MockSessionUtil::PushMessageParams::PushMessageParams (const bdlbb::Blob &  payload,
const bmqa::QueueId queueId,
const bmqt::MessageGUID guid,
const MessageProperties properties 
)
-
-
-

Create a new PushMessageParams object with the specified payload, queueId, guid and properties.

- -
-
-

Member Data Documentation

- -
- -
-

Payload of message

- -
-
- -
- -
-

Queue Id for this message

- -
-
- - - -
- -
-

Optionally specified properties for

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1SessionImpl-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1SessionImpl-members.html deleted file mode 100644 index 1a013ec85..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1SessionImpl-members.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -Struct bmqa::SessionImpl Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqa::SessionImpl Member List

-
-
-This is the complete list of members for bmqa::SessionImpl, including all inherited members. - - - - - - -
d_allocator_pbmqa::SessionImpl
d_application_mpbmqa::SessionImpl
d_eventHandler_mpbmqa::SessionImpl
d_guidGenerator_spbmqa::SessionImpl
d_sessionOptionsbmqa::SessionImpl
SessionImpl(const bmqt::SessionOptions &options, bslma::ManagedPtr< SessionEventHandler > eventHandler, bslma::Allocator *allocator=0)bmqa::SessionImpl
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1SessionImpl.html b/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1SessionImpl.html deleted file mode 100644 index 694ba508a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqa_1_1SessionImpl.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - -Struct bmqa::SessionImpl - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqa::SessionImpl Struct Reference

-
-
- -

#include <bmqa_session.h>

- -

List of all members.

- - - - - - - - - -

-Public Member Functions

 SessionImpl (const bmqt::SessionOptions &options, bslma::ManagedPtr< SessionEventHandler > eventHandler, bslma::Allocator *allocator=0)

-Public Attributes

bslma::Allocator * d_allocator_p
bmqt::SessionOptions d_sessionOptions
bslma::ManagedPtr
-< SessionEventHandler
d_eventHandler_mp
bsl::shared_ptr
-< bmqp::MessageGUIDGenerator > 
d_guidGenerator_sp
bslma::ManagedPtr
-< bmqimp::Application > 
d_application_mp
-

Detailed Description

-

Impl structure for the session data members, so that special task such as bmqadm can access them by reinterpret casting a Session object. Care should be taken though since Session is a polymorphic class.

-

See Component bmqa_session

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bmqa::SessionImpl::SessionImpl (const bmqt::SessionOptions options,
bslma::ManagedPtr< SessionEventHandler eventHandler,
bslma::Allocator *  allocator = 0 
)
-
-
-

Create a new object having the specified options and eventHandler and using the optionally specified allocator.

- -
-
-

Member Data Documentation

- -
-
- - - - -
bslma::Allocator* bmqa::SessionImpl::d_allocator_p
-
-
- -
-
- - - -
- -
- -
-
- -
-
- - - - -
bsl::shared_ptr<bmqp::MessageGUIDGenerator> bmqa::SessionImpl::d_guidGenerator_sp
-
-
- -
-
- -
-
- - - - -
bslma::ManagedPtr<bmqimp::Application> bmqa::SessionImpl::d_application_mp
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1AckResult-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1AckResult-members.html deleted file mode 100644 index 234cda59d..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1AckResult-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -Struct bmqt::AckResult Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::AckResult Member List

-
-
-This is the complete list of members for bmqt::AckResult, including all inherited members. - - - - - - - - - - - - - - - - - - - - -
e_CANCELED enum valuebmqt::AckResult
e_INVALID_ARGUMENT enum valuebmqt::AckResult
e_LIMIT_BYTES enum valuebmqt::AckResult
e_LIMIT_DOMAIN_BYTES enum valuebmqt::AckResult
e_LIMIT_DOMAIN_MESSAGES enum valuebmqt::AckResult
e_LIMIT_MESSAGES enum valuebmqt::AckResult
e_LIMIT_QUEUE_BYTES enum valuebmqt::AckResult
e_LIMIT_QUEUE_MESSAGES enum valuebmqt::AckResult
e_NOT_CONNECTED enum valuebmqt::AckResult
e_NOT_READY enum valuebmqt::AckResult
e_NOT_SUPPORTED enum valuebmqt::AckResult
e_REFUSED enum valuebmqt::AckResult
e_STORAGE_FAILURE enum valuebmqt::AckResult
e_SUCCESS enum valuebmqt::AckResult
e_TIMEOUT enum valuebmqt::AckResult
e_UNKNOWN enum valuebmqt::AckResult
Enum enum namebmqt::AckResult
fromAscii(AckResult::Enum *out, const bslstl::StringRef &str)bmqt::AckResult [static]
print(bsl::ostream &stream, AckResult::Enum value, int level=0, int spacesPerLevel=4)bmqt::AckResult [static]
toAscii(AckResult::Enum value)bmqt::AckResult [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1AckResult.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1AckResult.html deleted file mode 100644 index 0966b207f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1AckResult.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - -Struct bmqt::AckResult - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::AckResult Struct Reference

-
-
- -

#include <bmqt_resultcode.h>

- -

List of all members.

- - - - - - - - -

-Public Types

enum  Enum {
-  e_SUCCESS = GenericResult::e_SUCCESS, -e_UNKNOWN = GenericResult::e_UNKNOWN, -e_TIMEOUT = GenericResult::e_TIMEOUT, -e_NOT_CONNECTED = GenericResult::e_NOT_CONNECTED, -
-  e_CANCELED = GenericResult::e_CANCELED, -e_NOT_SUPPORTED = GenericResult::e_NOT_SUPPORTED, -e_REFUSED = GenericResult::e_REFUSED, -e_INVALID_ARGUMENT = GenericResult::e_INVALID_ARGUMENT, -
-  e_NOT_READY = GenericResult::e_NOT_READY, -e_LIMIT_MESSAGES = -100, -e_LIMIT_BYTES = -101, -e_LIMIT_DOMAIN_MESSAGES = -100, -
-  e_LIMIT_DOMAIN_BYTES = -101, -e_LIMIT_QUEUE_MESSAGES = -102, -e_LIMIT_QUEUE_BYTES = -103, -e_STORAGE_FAILURE = -104 -
- }
 

GENERIC.

- More...

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, AckResult::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (AckResult::Enum value)
static bool fromAscii (AckResult::Enum *out, const bslstl::StringRef &str)
-

Detailed Description

-

This enum represents the result code status of an ack message

-

See Component bmqt_resultcode

-

Member Enumeration Documentation

- -
-
- - - - -
enum bmqt::AckResult::Enum
-
-
-
Enumerator:
- - - - - - - - - - - - - - - - -
e_SUCCESS  -
e_UNKNOWN  -
e_TIMEOUT  -
e_NOT_CONNECTED  -
e_CANCELED  -
e_NOT_SUPPORTED  -
e_REFUSED  -
e_INVALID_ARGUMENT  -
e_NOT_READY  -

SPECIALIZED ERRORS

-
e_LIMIT_MESSAGES  -

Messages limit reached.

-
e_LIMIT_BYTES  -

Bytes limit reached.

-
e_LIMIT_DOMAIN_MESSAGES  -

The domain is full (messages).

-
e_LIMIT_DOMAIN_BYTES  -

The domain is full (bytes).

-
e_LIMIT_QUEUE_MESSAGES  -

The queue is full (messages).

-
e_LIMIT_QUEUE_BYTES  -

The queue is full (bytes)

-
e_STORAGE_FAILURE  -

The storage (on disk) is full.

-
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::AckResult::print (bsl::ostream &  stream,
AckResult::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a PublishResult::Enum value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::AckResult::toAscii (AckResult::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the e_ prefix elided. Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::AckResult::fromAscii (AckResult::Enum out,
const bslstl::StringRef &  str 
) [static]
-
-
-

Return true and fills the specified out with the enum value corresponding to the specified str, if valid, or return false and leave out untouched if str doesn't correspond to any value of the enum.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CloseQueueResult-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CloseQueueResult-members.html deleted file mode 100644 index 7d66bf90a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CloseQueueResult-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -Struct bmqt::CloseQueueResult Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::CloseQueueResult Member List

-
-
-This is the complete list of members for bmqt::CloseQueueResult, including all inherited members. - - - - - - - - - - - - - - - - - -
e_ALREADY_CLOSED enum valuebmqt::CloseQueueResult
e_ALREADY_IN_PROGRESS enum valuebmqt::CloseQueueResult
e_CANCELED enum valuebmqt::CloseQueueResult
e_INVALID_ARGUMENT enum valuebmqt::CloseQueueResult
e_INVALID_QUEUE enum valuebmqt::CloseQueueResult
e_NOT_CONNECTED enum valuebmqt::CloseQueueResult
e_NOT_READY enum valuebmqt::CloseQueueResult
e_NOT_SUPPORTED enum valuebmqt::CloseQueueResult
e_REFUSED enum valuebmqt::CloseQueueResult
e_SUCCESS enum valuebmqt::CloseQueueResult
e_TIMEOUT enum valuebmqt::CloseQueueResult
e_UNKNOWN enum valuebmqt::CloseQueueResult
e_UNKNOWN_QUEUE enum valuebmqt::CloseQueueResult
Enum enum namebmqt::CloseQueueResult
fromAscii(CloseQueueResult::Enum *out, const bslstl::StringRef &str)bmqt::CloseQueueResult [static]
print(bsl::ostream &stream, CloseQueueResult::Enum value, int level=0, int spacesPerLevel=4)bmqt::CloseQueueResult [static]
toAscii(CloseQueueResult::Enum value)bmqt::CloseQueueResult [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CloseQueueResult.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CloseQueueResult.html deleted file mode 100644 index ef30faa2a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CloseQueueResult.html +++ /dev/null @@ -1,257 +0,0 @@ - - - - -Struct bmqt::CloseQueueResult - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::CloseQueueResult Struct Reference

-
-
- -

#include <bmqt_resultcode.h>

- -

List of all members.

- - - - - - - - -

-Public Types

enum  Enum {
-  e_SUCCESS = GenericResult::e_SUCCESS, -e_UNKNOWN = GenericResult::e_UNKNOWN, -e_TIMEOUT = GenericResult::e_TIMEOUT, -e_NOT_CONNECTED = GenericResult::e_NOT_CONNECTED, -
-  e_CANCELED = GenericResult::e_CANCELED, -e_NOT_SUPPORTED = GenericResult::e_NOT_SUPPORTED, -e_REFUSED = GenericResult::e_REFUSED, -e_INVALID_ARGUMENT = GenericResult::e_INVALID_ARGUMENT, -
-  e_NOT_READY = GenericResult::e_NOT_READY, -e_ALREADY_CLOSED = 100, -e_ALREADY_IN_PROGRESS = 101, -e_UNKNOWN_QUEUE = -100, -
-  e_INVALID_QUEUE = -101 -
- }
 

GENERIC.

- More...

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, CloseQueueResult::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (CloseQueueResult::Enum value)
static bool fromAscii (CloseQueueResult::Enum *out, const bslstl::StringRef &str)
-

Detailed Description

-

This enum represents the result of a closeQueue operation

-

See Component bmqt_resultcode

-

Member Enumeration Documentation

- -
- -
-
Enumerator:
- - - - - - - - - - - - - -
e_SUCCESS  -
e_UNKNOWN  -
e_TIMEOUT  -
e_NOT_CONNECTED  -
e_CANCELED  -
e_NOT_SUPPORTED  -
e_REFUSED  -
e_INVALID_ARGUMENT  -
e_NOT_READY  -

SPECIALIZED WARNINGS

-
e_ALREADY_CLOSED  -

The queue is already closed.

-
e_ALREADY_IN_PROGRESS  -

The queue is already being closed.

-
e_UNKNOWN_QUEUE  -

The queue doesn't exist.

-
e_INVALID_QUEUE  -

The queue provided is invalid.

-
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::CloseQueueResult::print (bsl::ostream &  stream,
CloseQueueResult::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a PublishResult::Enum value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::CloseQueueResult::toAscii (CloseQueueResult::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the e_ prefix elided. Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::CloseQueueResult::fromAscii (CloseQueueResult::Enum out,
const bslstl::StringRef &  str 
) [static]
-
-
-

Return true and fills the specified out with the enum value corresponding to the specified str, if valid, or return false and leave out untouched if str doesn't correspond to any value of the enum.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CompressionAlgorithmType-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CompressionAlgorithmType-members.html deleted file mode 100644 index 6e7186248..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CompressionAlgorithmType-members.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - -Struct bmqt::CompressionAlgorithmType Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::CompressionAlgorithmType Member List

-
-
-This is the complete list of members for bmqt::CompressionAlgorithmType, including all inherited members. - - - - - - - - - - -
e_NONE enum valuebmqt::CompressionAlgorithmType
e_UNKNOWN enum valuebmqt::CompressionAlgorithmType
e_ZLIB enum valuebmqt::CompressionAlgorithmType
Enum enum namebmqt::CompressionAlgorithmType
fromAscii(CompressionAlgorithmType::Enum *out, const bsl::string &str)bmqt::CompressionAlgorithmType [static]
isValid(const bsl::string *str, bsl::ostream &stream)bmqt::CompressionAlgorithmType [static]
k_HIGHEST_SUPPORTED_TYPEbmqt::CompressionAlgorithmType [static]
k_LOWEST_SUPPORTED_TYPEbmqt::CompressionAlgorithmType [static]
print(bsl::ostream &stream, CompressionAlgorithmType::Enum value, int level=0, int spacesPerLevel=4)bmqt::CompressionAlgorithmType [static]
toAscii(CompressionAlgorithmType::Enum value)bmqt::CompressionAlgorithmType [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CompressionAlgorithmType.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CompressionAlgorithmType.html deleted file mode 100644 index 0c411ac34..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CompressionAlgorithmType.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - -Struct bmqt::CompressionAlgorithmType - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::CompressionAlgorithmType Struct Reference

-
-
- -

#include <bmqt_compressionalgorithmtype.h>

- -

List of all members.

- - - - - - - - - - - -

-Public Types

enum  Enum { e_UNKNOWN = -1, -e_NONE = 0, -e_ZLIB = 1 - }

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, CompressionAlgorithmType::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (CompressionAlgorithmType::Enum value)
static bool fromAscii (CompressionAlgorithmType::Enum *out, const bsl::string &str)
static bool isValid (const bsl::string *str, bsl::ostream &stream)

-Static Public Attributes

static const int k_LOWEST_SUPPORTED_TYPE = e_NONE
static const int k_HIGHEST_SUPPORTED_TYPE = e_ZLIB
-

Detailed Description

-

This struct defines various types of compression algorithms.

-

See Component bmqt_compressionalgorithmtype

-

Member Enumeration Documentation

- -
- -
-
Enumerator:
- - - -
e_UNKNOWN  -
e_NONE  -
e_ZLIB  -
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::CompressionAlgorithmType::print (bsl::ostream &  stream,
CompressionAlgorithmType::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a CompressionAlgorithmType::Enum value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::CompressionAlgorithmType::toAscii (CompressionAlgorithmType::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the "e_" prefix eluded. For example:

-

will print the following on standard output:

-
          NONE
-

Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::CompressionAlgorithmType::fromAscii (CompressionAlgorithmType::Enum out,
const bsl::string &  str 
) [static]
-
-
-

Update the specified out with correct enum corresponding to the specified string str, if it exists, and return true. Otherwise in case of an error or unidentified string, return false. The expected str is the enumerator name with the "e_" prefix excluded. For example:

-

will return true and the value of out will be:

-
          bmqt::CompresssionAlgorithmType::e_NONE
-

Note that specifying a str that does not match any of the enumerators excluding "e_" prefix will result in the function returning false and the specified out will not be touched.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::CompressionAlgorithmType::isValid (const bsl::string *  str,
bsl::ostream &  stream 
) [static]
-
-
-

Return true incase of valid specified str i.e. a enumerator name with the "e_" prefix excluded. Otherwise in case of invalid str return false and populate the specified stream with error message.

- -
-
-

Member Data Documentation

- -
-
- - - - -
const int bmqt::CompressionAlgorithmType::k_LOWEST_SUPPORTED_TYPE = e_NONE [static]
-
-
- -
-
- -
-
- - - - -
const int bmqt::CompressionAlgorithmType::k_HIGHEST_SUPPORTED_TYPE = e_ZLIB [static]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1ConfigureQueueResult-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1ConfigureQueueResult-members.html deleted file mode 100644 index e4731b547..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1ConfigureQueueResult-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - -Struct bmqt::ConfigureQueueResult Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::ConfigureQueueResult Member List

-
-
-This is the complete list of members for bmqt::ConfigureQueueResult, including all inherited members. - - - - - - - - - - - - - - - -
e_ALREADY_IN_PROGRESS enum valuebmqt::ConfigureQueueResult
e_CANCELED enum valuebmqt::ConfigureQueueResult
e_INVALID_ARGUMENT enum valuebmqt::ConfigureQueueResult
e_INVALID_QUEUE enum valuebmqt::ConfigureQueueResult
e_NOT_CONNECTED enum valuebmqt::ConfigureQueueResult
e_NOT_READY enum valuebmqt::ConfigureQueueResult
e_NOT_SUPPORTED enum valuebmqt::ConfigureQueueResult
e_REFUSED enum valuebmqt::ConfigureQueueResult
e_SUCCESS enum valuebmqt::ConfigureQueueResult
e_TIMEOUT enum valuebmqt::ConfigureQueueResult
e_UNKNOWN enum valuebmqt::ConfigureQueueResult
Enum enum namebmqt::ConfigureQueueResult
fromAscii(ConfigureQueueResult::Enum *out, const bslstl::StringRef &str)bmqt::ConfigureQueueResult [static]
print(bsl::ostream &stream, ConfigureQueueResult::Enum value, int level=0, int spacesPerLevel=4)bmqt::ConfigureQueueResult [static]
toAscii(ConfigureQueueResult::Enum value)bmqt::ConfigureQueueResult [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1ConfigureQueueResult.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1ConfigureQueueResult.html deleted file mode 100644 index b9e734af2..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1ConfigureQueueResult.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - -Struct bmqt::ConfigureQueueResult - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::ConfigureQueueResult Struct Reference

-
-
- -

#include <bmqt_resultcode.h>

- -

List of all members.

- - - - - - - - -

-Public Types

enum  Enum {
-  e_SUCCESS = GenericResult::e_SUCCESS, -e_UNKNOWN = GenericResult::e_UNKNOWN, -e_TIMEOUT = GenericResult::e_TIMEOUT, -e_NOT_CONNECTED = GenericResult::e_NOT_CONNECTED, -
-  e_CANCELED = GenericResult::e_CANCELED, -e_NOT_SUPPORTED = GenericResult::e_NOT_SUPPORTED, -e_REFUSED = GenericResult::e_REFUSED, -e_INVALID_ARGUMENT = GenericResult::e_INVALID_ARGUMENT, -
-  e_NOT_READY = GenericResult::e_NOT_READY, -e_ALREADY_IN_PROGRESS = 100, -e_INVALID_QUEUE = -101 -
- }
 

GENERIC.

- More...

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, ConfigureQueueResult::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (ConfigureQueueResult::Enum value)
static bool fromAscii (ConfigureQueueResult::Enum *out, const bslstl::StringRef &str)
-

Detailed Description

-

This enum represents the result of a configureQueue operation

-

See Component bmqt_resultcode

-

Member Enumeration Documentation

- -
- -
-
Enumerator:
- - - - - - - - - - - -
e_SUCCESS  -
e_UNKNOWN  -
e_TIMEOUT  -
e_NOT_CONNECTED  -
e_CANCELED  -
e_NOT_SUPPORTED  -
e_REFUSED  -
e_INVALID_ARGUMENT  -
e_NOT_READY  -

SPECIALIZED WARNINGS.

-
e_ALREADY_IN_PROGRESS  -

The queue is already being configured.

-
e_INVALID_QUEUE  -
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::ConfigureQueueResult::print (bsl::ostream &  stream,
ConfigureQueueResult::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a ConfigureQueueResult::Enum value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::ConfigureQueueResult::toAscii (ConfigureQueueResult::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the e_ prefix elided. Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::ConfigureQueueResult::fromAscii (ConfigureQueueResult::Enum out,
const bslstl::StringRef &  str 
) [static]
-
-
-

Return true and fills the specified out with the enum value corresponding to the specified str, if valid, or return false and leave out untouched if str doesn't correspond to any value of the enum.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CorrelationIdLess-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CorrelationIdLess-members.html deleted file mode 100644 index c2631a89a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CorrelationIdLess-members.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - -Struct bmqt::CorrelationIdLess Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::CorrelationIdLess Member List

-
-
-This is the complete list of members for bmqt::CorrelationIdLess, including all inherited members. - -
operator()(const CorrelationId &lhs, const CorrelationId &rhs) const bmqt::CorrelationIdLess
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CorrelationIdLess.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CorrelationIdLess.html deleted file mode 100644 index cd2f4b6c2..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1CorrelationIdLess.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - -Struct bmqt::CorrelationIdLess - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::CorrelationIdLess Struct Reference

-
-
- -

#include <bmqt_correlationid.h>

- -

List of all members.

- - - -

-Public Member Functions

bool operator() (const CorrelationId &lhs, const CorrelationId &rhs) const
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::CorrelationIdLess::operator() (const CorrelationId lhs,
const CorrelationId rhs 
) const
-
-
-

Return true if the specified lhs should be considered as having a value less than the specified rhs.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1EncodingType-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1EncodingType-members.html deleted file mode 100644 index cb381c1c4..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1EncodingType-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - -Struct bmqt::EncodingType Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::EncodingType Member List

-
-
-This is the complete list of members for bmqt::EncodingType, including all inherited members. - - - - - - - - - - - - - - - -
e_BDEX enum valuebmqt::EncodingType
e_BER enum valuebmqt::EncodingType
e_JSON enum valuebmqt::EncodingType
e_MULTIPARTS enum valuebmqt::EncodingType
e_RAW enum valuebmqt::EncodingType
e_TEXT enum valuebmqt::EncodingType
e_UNDEFINED enum valuebmqt::EncodingType
e_XML enum valuebmqt::EncodingType
Enum enum namebmqt::EncodingType
fromAscii(EncodingType::Enum *out, const bslstl::StringRef &str)bmqt::EncodingType [static]
isValid(const bsl::string *string, bsl::ostream &stream)bmqt::EncodingType [static]
k_HIGHEST_SUPPORTED_ENCODING_TYPEbmqt::EncodingType [static]
k_LOWEST_SUPPORTED_ENCODING_TYPEbmqt::EncodingType [static]
print(bsl::ostream &stream, EncodingType::Enum value, int level=0, int spacesPerLevel=4)bmqt::EncodingType [static]
toAscii(EncodingType::Enum value)bmqt::EncodingType [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1EncodingType.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1EncodingType.html deleted file mode 100644 index 2703cf805..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1EncodingType.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - -Struct bmqt::EncodingType - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::EncodingType Struct Reference

-
-
- -

#include <bmqt_encodingtype.h>

- -

List of all members.

- - - - - - - - - - - -

-Public Types

enum  Enum {
-  e_UNDEFINED = 0, -e_RAW = 1, -e_BER = 2, -e_BDEX = 3, -
-  e_XML = 4, -e_JSON = 5, -e_TEXT = 6, -e_MULTIPARTS = 7 -
- }

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, EncodingType::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (EncodingType::Enum value)
static bool fromAscii (EncodingType::Enum *out, const bslstl::StringRef &str)
static bool isValid (const bsl::string *string, bsl::ostream &stream)

-Static Public Attributes

static const int k_LOWEST_SUPPORTED_ENCODING_TYPE = e_RAW
static const int k_HIGHEST_SUPPORTED_ENCODING_TYPE = e_MULTIPARTS
-

Detailed Description

-

Enumeration for message encoding types.

-

See Component bmqt_encodingtype

-

Member Enumeration Documentation

- -
-
- - - - -
enum bmqt::EncodingType::Enum
-
-
-
Enumerator:
- - - - - - - - -
e_UNDEFINED  -
e_RAW  -
e_BER  -
e_BDEX  -
e_XML  -
e_JSON  -
e_TEXT  -
e_MULTIPARTS  -
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::EncodingType::print (bsl::ostream &  stream,
EncodingType::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a EncodingType::Value value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::EncodingType::toAscii (EncodingType::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the BMQT_ prefix elided. Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::EncodingType::fromAscii (EncodingType::Enum out,
const bslstl::StringRef &  str 
) [static]
-
-
-

Return true and fills the specified out with the enum value corresponding to the specified str, if valid, or return false and leave out untouched if str doesn't correspond to any value of the enum.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::EncodingType::isValid (const bsl::string *  string,
bsl::ostream &  stream 
) [static]
-
-
-

Return true if the specified string is a valid representation of the EncodingType, otherwise return false and print a description of the error to the specified stream.

- -
-
-

Member Data Documentation

- -
-
- - - - -
const int bmqt::EncodingType::k_LOWEST_SUPPORTED_ENCODING_TYPE = e_RAW [static]
-
-
- -
-
- -
-
- - - - -
const int bmqt::EncodingType::k_HIGHEST_SUPPORTED_ENCODING_TYPE = e_MULTIPARTS [static]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1EventBuilderResult-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1EventBuilderResult-members.html deleted file mode 100644 index 9e6b29721..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1EventBuilderResult-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - -Struct bmqt::EventBuilderResult Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::EventBuilderResult Member List

-
-
-This is the complete list of members for bmqt::EventBuilderResult, including all inherited members. - - - - - - - - - - - - - - -
e_EVENT_TOO_BIG enum valuebmqt::EventBuilderResult
e_MISSING_CORRELATION_ID enum valuebmqt::EventBuilderResult
e_OPTION_TOO_BIG enum valuebmqt::EventBuilderResult
e_PAYLOAD_EMPTY enum valuebmqt::EventBuilderResult
e_PAYLOAD_TOO_BIG enum valuebmqt::EventBuilderResult
e_QUEUE_INVALID enum valuebmqt::EventBuilderResult
e_QUEUE_READONLY enum valuebmqt::EventBuilderResult
e_QUEUE_SUSPENDED enum valuebmqt::EventBuilderResult
e_SUCCESS enum valuebmqt::EventBuilderResult
e_UNKNOWN enum valuebmqt::EventBuilderResult
Enum enum namebmqt::EventBuilderResult
fromAscii(EventBuilderResult::Enum *out, const bslstl::StringRef &str)bmqt::EventBuilderResult [static]
print(bsl::ostream &stream, EventBuilderResult::Enum value, int level=0, int spacesPerLevel=4)bmqt::EventBuilderResult [static]
toAscii(EventBuilderResult::Enum value)bmqt::EventBuilderResult [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1EventBuilderResult.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1EventBuilderResult.html deleted file mode 100644 index 98298781c..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1EventBuilderResult.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - -Struct bmqt::EventBuilderResult - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::EventBuilderResult Struct Reference

-
-
- -

#include <bmqt_resultcode.h>

- -

List of all members.

- - - - - - - - -

-Public Types

enum  Enum {
-  e_SUCCESS = GenericResult::e_SUCCESS, -e_UNKNOWN = GenericResult::e_UNKNOWN, -e_QUEUE_INVALID = -100, -e_QUEUE_READONLY = -101, -
-  e_MISSING_CORRELATION_ID = -102, -e_EVENT_TOO_BIG = -103, -e_PAYLOAD_TOO_BIG = -104, -e_PAYLOAD_EMPTY = -105, -
-  e_OPTION_TOO_BIG = -106, -e_QUEUE_SUSPENDED = -108 -
- }
 

GENERIC.

- More...

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, EventBuilderResult::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (EventBuilderResult::Enum value)
static bool fromAscii (EventBuilderResult::Enum *out, const bslstl::StringRef &str)
-

Detailed Description

-

This enum represents the result of an EventBuilder's packMessage() operation

-

See Component bmqt_resultcode

-

Member Enumeration Documentation

- -
- -
-
Enumerator:
- - - - - - - - - - -
e_SUCCESS  -
e_UNKNOWN  -

SPECIALIZED ERRORS

-
e_QUEUE_INVALID  -
e_QUEUE_READONLY  -
e_MISSING_CORRELATION_ID  -
e_EVENT_TOO_BIG  -
e_PAYLOAD_TOO_BIG  -
e_PAYLOAD_EMPTY  -
e_OPTION_TOO_BIG  -
e_QUEUE_SUSPENDED  -
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::EventBuilderResult::print (bsl::ostream &  stream,
EventBuilderResult::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a EventBuilderResult::Enum value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::EventBuilderResult::toAscii (EventBuilderResult::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the e_ prefix elided. Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::EventBuilderResult::fromAscii (EventBuilderResult::Enum out,
const bslstl::StringRef &  str 
) [static]
-
-
-

Return true and fills the specified out with the enum value corresponding to the specified str, if valid, or return false and leave out untouched if str doesn't correspond to any value of the enum.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1GenericResult-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1GenericResult-members.html deleted file mode 100644 index b30d08215..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1GenericResult-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - -Struct bmqt::GenericResult Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::GenericResult Member List

-
-
-This is the complete list of members for bmqt::GenericResult, including all inherited members. - - - - - - - - - - - - - - -
e_CANCELED enum valuebmqt::GenericResult
e_INVALID_ARGUMENT enum valuebmqt::GenericResult
e_LAST enum valuebmqt::GenericResult
e_NOT_CONNECTED enum valuebmqt::GenericResult
e_NOT_READY enum valuebmqt::GenericResult
e_NOT_SUPPORTED enum valuebmqt::GenericResult
e_REFUSED enum valuebmqt::GenericResult
e_SUCCESS enum valuebmqt::GenericResult
e_TIMEOUT enum valuebmqt::GenericResult
e_UNKNOWN enum valuebmqt::GenericResult
Enum enum namebmqt::GenericResult
fromAscii(GenericResult::Enum *out, const bslstl::StringRef &str)bmqt::GenericResult [static]
print(bsl::ostream &stream, GenericResult::Enum value, int level=0, int spacesPerLevel=4)bmqt::GenericResult [static]
toAscii(GenericResult::Enum value)bmqt::GenericResult [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1GenericResult.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1GenericResult.html deleted file mode 100644 index b20ea0055..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1GenericResult.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - -Struct bmqt::GenericResult - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::GenericResult Struct Reference

-
-
- -

#include <bmqt_resultcode.h>

- -

List of all members.

- - - - - - - -

-Public Types

enum  Enum {
-  e_SUCCESS = 0, -e_UNKNOWN = -1, -e_TIMEOUT = -2, -e_NOT_CONNECTED = -3, -
-  e_CANCELED = -4, -e_NOT_SUPPORTED = -5, -e_REFUSED = -6, -e_INVALID_ARGUMENT = -7, -
-  e_NOT_READY = -8, -e_LAST = e_NOT_READY -
- }

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, GenericResult::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (GenericResult::Enum value)
static bool fromAscii (GenericResult::Enum *out, const bslstl::StringRef &str)
-

Detailed Description

-

This enum represents generic common status

-

See Component bmqt_resultcode

-

Member Enumeration Documentation

- -
-
- - - - -
enum bmqt::GenericResult::Enum
-
-
-
Enumerator:
- - - - - - - - - - -
e_SUCCESS  -

Operation was success.

-
e_UNKNOWN  -

Operation failed for unknown reason.

-
e_TIMEOUT  -

Operation timedout.

-
e_NOT_CONNECTED  -

Cant process, not connected to the broker.

-
e_CANCELED  -

Operation was canceled.

-
e_NOT_SUPPORTED  -

Operation is not supported.

-
e_REFUSED  -

Operation was refused.

-
e_INVALID_ARGUMENT  -

An invalid argument was provided.

-
e_NOT_READY  -

Not ready to process the request.

-
e_LAST  -

Used in test driver only, to validate consistency between this enum and the bmqp_ctrlmsg.xsd::StatusCategory one

-
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::GenericResult::print (bsl::ostream &  stream,
GenericResult::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a GenericResult::Enum value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::GenericResult::toAscii (GenericResult::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the e_ prefix elided. Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::GenericResult::fromAscii (GenericResult::Enum out,
const bslstl::StringRef &  str 
) [static]
-
-
-

Return true and fills the specified out with the enum value corresponding to the specified str, if valid, or return false and leave out untouched if str doesn't correspond to any value of the enum.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1HostHealthState-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1HostHealthState-members.html deleted file mode 100644 index 3f796b02f..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1HostHealthState-members.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - -Struct bmqt::HostHealthState Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::HostHealthState Member List

-
-
-This is the complete list of members for bmqt::HostHealthState, including all inherited members. - - - - - - - -
e_HEALTHY enum valuebmqt::HostHealthState
e_UNHEALTHY enum valuebmqt::HostHealthState
e_UNKNOWN enum valuebmqt::HostHealthState
Enum enum namebmqt::HostHealthState
fromAscii(HostHealthState::Enum *out, const bslstl::StringRef &str)bmqt::HostHealthState [static]
print(bsl::ostream &stream, HostHealthState::Enum value, int level=0, int spacesPerLevel=4)bmqt::HostHealthState [static]
toAscii(HostHealthState::Enum value)bmqt::HostHealthState [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1HostHealthState.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1HostHealthState.html deleted file mode 100644 index fab6e0306..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1HostHealthState.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - -Struct bmqt::HostHealthState - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::HostHealthState Struct Reference

-
-
- -

#include <bmqt_hosthealthstate.h>

- -

List of all members.

- - - - - - - -

-Public Types

enum  Enum { e_UNKNOWN = 0, -e_HEALTHY = 1, -e_UNHEALTHY = 2 - }

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, HostHealthState::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (HostHealthState::Enum value)
static bool fromAscii (HostHealthState::Enum *out, const bslstl::StringRef &str)
-

Detailed Description

-

Enumeration for host health states.

-

See Component bmqt_hosthealthstate

-

Member Enumeration Documentation

- -
-
- - - - -
enum bmqt::HostHealthState::Enum
-
-
-
Enumerator:
- - - -
e_UNKNOWN  -
e_HEALTHY  -
e_UNHEALTHY  -
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::HostHealthState::print (bsl::ostream &  stream,
HostHealthState::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a HostHealthState::Value value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::HostHealthState::toAscii (HostHealthState::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the BMQT_ prefix elided. Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::HostHealthState::fromAscii (HostHealthState::Enum out,
const bslstl::StringRef &  str 
) [static]
-
-
-

Return true and fills the specified out with the enum value corresponding to the specified str, if valid, or return false and leave out untouched if str doesn't correspond to any value of the enum.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1MessageEventType-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1MessageEventType-members.html deleted file mode 100644 index 45a4a79d8..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1MessageEventType-members.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - -Struct bmqt::MessageEventType Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::MessageEventType Member List

-
-
-This is the complete list of members for bmqt::MessageEventType, including all inherited members. - - - - - - - - - - -
e_ACK enum valuebmqt::MessageEventType
e_PUSH enum valuebmqt::MessageEventType
e_PUT enum valuebmqt::MessageEventType
e_UNDEFINED enum valuebmqt::MessageEventType
Enum enum namebmqt::MessageEventType
fromAscii(MessageEventType::Enum *out, const bslstl::StringRef &str)bmqt::MessageEventType [static]
k_HIGHEST_SUPPORTED_EVENT_TYPEbmqt::MessageEventType [static]
k_LOWEST_SUPPORTED_EVENT_TYPEbmqt::MessageEventType [static]
print(bsl::ostream &stream, MessageEventType::Enum value, int level=0, int spacesPerLevel=4)bmqt::MessageEventType [static]
toAscii(MessageEventType::Enum value)bmqt::MessageEventType [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1MessageEventType.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1MessageEventType.html deleted file mode 100644 index 3bfeab584..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1MessageEventType.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - -Struct bmqt::MessageEventType - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::MessageEventType Struct Reference

-
-
- -

#include <bmqt_messageeventtype.h>

- -

List of all members.

- - - - - - - - - - -

-Public Types

enum  Enum { e_UNDEFINED = 0, -e_PUT = 1, -e_PUSH = 2, -e_ACK = 3 - }

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, MessageEventType::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (MessageEventType::Enum value)
static bool fromAscii (MessageEventType::Enum *out, const bslstl::StringRef &str)

-Static Public Attributes

static const int k_LOWEST_SUPPORTED_EVENT_TYPE = e_PUT
static const int k_HIGHEST_SUPPORTED_EVENT_TYPE = e_ACK
-

Detailed Description

-

Enumeration for the types of message events

-

See Component bmqt_messageeventtype

-

Member Enumeration Documentation

- -
- -
-
Enumerator:
- - - - -
e_UNDEFINED  -
e_PUT  -
e_PUSH  -
e_ACK  -
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::MessageEventType::print (bsl::ostream &  stream,
MessageEventType::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a MessageEventType::Value value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::MessageEventType::toAscii (MessageEventType::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the BMQT_ prefix elided. Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::MessageEventType::fromAscii (MessageEventType::Enum out,
const bslstl::StringRef &  str 
) [static]
-
-
-

Return true and fills the specified out with the enum value corresponding to the specified str, if valid, or return false and leave out untouched if str doesn't correspond to any value of the enum.

- -
-
-

Member Data Documentation

- -
-
- - - - -
const int bmqt::MessageEventType::k_LOWEST_SUPPORTED_EVENT_TYPE = e_PUT [static]
-
-
- -
-
- -
-
- - - - -
const int bmqt::MessageEventType::k_HIGHEST_SUPPORTED_EVENT_TYPE = e_ACK [static]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1MessageGUIDLess-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1MessageGUIDLess-members.html deleted file mode 100644 index b6f9054f0..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1MessageGUIDLess-members.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - -Struct bmqt::MessageGUIDLess Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::MessageGUIDLess Member List

-
-
-This is the complete list of members for bmqt::MessageGUIDLess, including all inherited members. - -
operator()(const MessageGUID &lhs, const MessageGUID &rhs) const bmqt::MessageGUIDLess
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1MessageGUIDLess.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1MessageGUIDLess.html deleted file mode 100644 index 21e5bee11..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1MessageGUIDLess.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - -Struct bmqt::MessageGUIDLess - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::MessageGUIDLess Struct Reference

-
-
- -

#include <bmqt_messageguid.h>

- -

List of all members.

- - - -

-Public Member Functions

bool operator() (const MessageGUID &lhs, const MessageGUID &rhs) const
-

Detailed Description

-

This struct provides a binary function for comparing 2 GUIDs.

-

See Component bmqt_messageguid

-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
bool bmqt::MessageGUIDLess::operator() (const MessageGUID lhs,
const MessageGUID rhs 
) const
-
-
-

Return true if the specified lhs should be considered as having a value less than the specified rhs.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1OpenQueueResult-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1OpenQueueResult-members.html deleted file mode 100644 index 512354100..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1OpenQueueResult-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - -Struct bmqt::OpenQueueResult Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::OpenQueueResult Member List

-
-
-This is the complete list of members for bmqt::OpenQueueResult, including all inherited members. - - - - - - - - - - - - - - - - - - -
e_ALREADY_IN_PROGRESS enum valuebmqt::OpenQueueResult
e_ALREADY_OPENED enum valuebmqt::OpenQueueResult
e_CANCELED enum valuebmqt::OpenQueueResult
e_CORRELATIONID_NOT_UNIQUE enum valuebmqt::OpenQueueResult
e_INVALID_ARGUMENT enum valuebmqt::OpenQueueResult
e_INVALID_FLAGS enum valuebmqt::OpenQueueResult
e_INVALID_URI enum valuebmqt::OpenQueueResult
e_NOT_CONNECTED enum valuebmqt::OpenQueueResult
e_NOT_READY enum valuebmqt::OpenQueueResult
e_NOT_SUPPORTED enum valuebmqt::OpenQueueResult
e_REFUSED enum valuebmqt::OpenQueueResult
e_SUCCESS enum valuebmqt::OpenQueueResult
e_TIMEOUT enum valuebmqt::OpenQueueResult
e_UNKNOWN enum valuebmqt::OpenQueueResult
Enum enum namebmqt::OpenQueueResult
fromAscii(OpenQueueResult::Enum *out, const bslstl::StringRef &str)bmqt::OpenQueueResult [static]
print(bsl::ostream &stream, OpenQueueResult::Enum value, int level=0, int spacesPerLevel=4)bmqt::OpenQueueResult [static]
toAscii(OpenQueueResult::Enum value)bmqt::OpenQueueResult [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1OpenQueueResult.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1OpenQueueResult.html deleted file mode 100644 index 39e1d0416..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1OpenQueueResult.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - -Struct bmqt::OpenQueueResult - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::OpenQueueResult Struct Reference

-
-
- -

#include <bmqt_resultcode.h>

- -

List of all members.

- - - - - - - - -

-Public Types

enum  Enum {
-  e_SUCCESS = GenericResult::e_SUCCESS, -e_UNKNOWN = GenericResult::e_UNKNOWN, -e_TIMEOUT = GenericResult::e_TIMEOUT, -e_NOT_CONNECTED = GenericResult::e_NOT_CONNECTED, -
-  e_CANCELED = GenericResult::e_CANCELED, -e_NOT_SUPPORTED = GenericResult::e_NOT_SUPPORTED, -e_REFUSED = GenericResult::e_REFUSED, -e_INVALID_ARGUMENT = GenericResult::e_INVALID_ARGUMENT, -
-  e_NOT_READY = GenericResult::e_NOT_READY, -e_ALREADY_OPENED = 100, -e_ALREADY_IN_PROGRESS = 101, -e_INVALID_URI = -100, -
-  e_INVALID_FLAGS = -101, -e_CORRELATIONID_NOT_UNIQUE = -102 -
- }
 

GENERIC.

- More...

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, OpenQueueResult::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (OpenQueueResult::Enum value)
static bool fromAscii (OpenQueueResult::Enum *out, const bslstl::StringRef &str)
-

Detailed Description

-

This enum represents the result of an openQueue operation

-

See Component bmqt_resultcode

-

Member Enumeration Documentation

- -
-
- - - - -
enum bmqt::OpenQueueResult::Enum
-
-
-
Enumerator:
- - - - - - - - - - - - - - -
e_SUCCESS  -
e_UNKNOWN  -
e_TIMEOUT  -
e_NOT_CONNECTED  -
e_CANCELED  -
e_NOT_SUPPORTED  -
e_REFUSED  -
e_INVALID_ARGUMENT  -
e_NOT_READY  -

SPECIALIZED WARNINGS

-
e_ALREADY_OPENED  -

The queue is already opened.

-
e_ALREADY_IN_PROGRESS  -

The queue is already being opened.

-
e_INVALID_URI  -

The queue uri is invalid.

-
e_INVALID_FLAGS  -

The flags provided are invalid.

-
e_CORRELATIONID_NOT_UNIQUE  -

The correlationdId is not unique.

-
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::OpenQueueResult::print (bsl::ostream &  stream,
OpenQueueResult::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a OpenQueueResult::Enum value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::OpenQueueResult::toAscii (OpenQueueResult::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the e_ prefix elided. Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::OpenQueueResult::fromAscii (OpenQueueResult::Enum out,
const bslstl::StringRef &  str 
) [static]
-
-
-

Return true and fills the specified out with the enum value corresponding to the specified str, if valid, or return false and leave out untouched if str doesn't correspond to any value of the enum.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1PostResult-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1PostResult-members.html deleted file mode 100644 index 75cd3f095..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1PostResult-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - -Struct bmqt::PostResult Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::PostResult Member List

-
-
-This is the complete list of members for bmqt::PostResult, including all inherited members. - - - - - - - - - - - - - - -
e_BW_LIMIT enum valuebmqt::PostResult
e_CANCELED enum valuebmqt::PostResult
e_INVALID_ARGUMENT enum valuebmqt::PostResult
e_NOT_CONNECTED enum valuebmqt::PostResult
e_NOT_READY enum valuebmqt::PostResult
e_NOT_SUPPORTED enum valuebmqt::PostResult
e_REFUSED enum valuebmqt::PostResult
e_SUCCESS enum valuebmqt::PostResult
e_TIMEOUT enum valuebmqt::PostResult
e_UNKNOWN enum valuebmqt::PostResult
Enum enum namebmqt::PostResult
fromAscii(PostResult::Enum *out, const bslstl::StringRef &str)bmqt::PostResult [static]
print(bsl::ostream &stream, PostResult::Enum value, int level=0, int spacesPerLevel=4)bmqt::PostResult [static]
toAscii(PostResult::Enum value)bmqt::PostResult [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1PostResult.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1PostResult.html deleted file mode 100644 index 980e7ccb2..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1PostResult.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - -Struct bmqt::PostResult - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::PostResult Struct Reference

-
-
- -

#include <bmqt_resultcode.h>

- -

List of all members.

- - - - - - - - -

-Public Types

enum  Enum {
-  e_SUCCESS = GenericResult::e_SUCCESS, -e_UNKNOWN = GenericResult::e_UNKNOWN, -e_TIMEOUT = GenericResult::e_TIMEOUT, -e_NOT_CONNECTED = GenericResult::e_NOT_CONNECTED, -
-  e_CANCELED = GenericResult::e_CANCELED, -e_NOT_SUPPORTED = GenericResult::e_NOT_SUPPORTED, -e_REFUSED = GenericResult::e_REFUSED, -e_INVALID_ARGUMENT = GenericResult::e_INVALID_ARGUMENT, -
-  e_NOT_READY = GenericResult::e_NOT_READY, -e_BW_LIMIT = 100 -
- }
 

GENERIC.

- More...

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, PostResult::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (PostResult::Enum value)
static bool fromAscii (PostResult::Enum *out, const bslstl::StringRef &str)
-

Detailed Description

-

This enum represents the result code status of a post message

-

See Component bmqt_resultcode

-

Member Enumeration Documentation

- -
-
- - - - -
enum bmqt::PostResult::Enum
-
-
-
Enumerator:
- - - - - - - - - - -
e_SUCCESS  -
e_UNKNOWN  -
e_TIMEOUT  -
e_NOT_CONNECTED  -
e_CANCELED  -
e_NOT_SUPPORTED  -
e_REFUSED  -
e_INVALID_ARGUMENT  -
e_NOT_READY  -

SPECIALIZED WARNINGS

-
e_BW_LIMIT  -

The application has been posting too much data, and the IO or broker are temporarily rejecting new messages.

-
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::PostResult::print (bsl::ostream &  stream,
PostResult::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a PublishResult::Enum value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::PostResult::toAscii (PostResult::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the e_ prefix elided. Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::PostResult::fromAscii (PostResult::Enum out,
const bslstl::StringRef &  str 
) [static]
-
-
-

Return true and fills the specified out with the enum value corresponding to the specified str, if valid, or return false and leave out untouched if str doesn't correspond to any value of the enum.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1PropertyType-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1PropertyType-members.html deleted file mode 100644 index b919919a2..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1PropertyType-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - -Struct bmqt::PropertyType Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::PropertyType Member List

-
-
-This is the complete list of members for bmqt::PropertyType, including all inherited members. - - - - - - - - - - - - - - -
e_BINARY enum valuebmqt::PropertyType
e_BOOL enum valuebmqt::PropertyType
e_CHAR enum valuebmqt::PropertyType
e_INT32 enum valuebmqt::PropertyType
e_INT64 enum valuebmqt::PropertyType
e_SHORT enum valuebmqt::PropertyType
e_STRING enum valuebmqt::PropertyType
e_UNDEFINED enum valuebmqt::PropertyType
Enum enum namebmqt::PropertyType
fromAscii(PropertyType::Enum *out, const bslstl::StringRef &str)bmqt::PropertyType [static]
k_HIGHEST_SUPPORTED_PROPERTY_TYPEbmqt::PropertyType [static]
k_LOWEST_SUPPORTED_PROPERTY_TYPEbmqt::PropertyType [static]
print(bsl::ostream &stream, PropertyType::Enum value, int level=0, int spacesPerLevel=4)bmqt::PropertyType [static]
toAscii(PropertyType::Enum value)bmqt::PropertyType [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1PropertyType.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1PropertyType.html deleted file mode 100644 index 22851989e..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1PropertyType.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - -Struct bmqt::PropertyType - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::PropertyType Struct Reference

-
-
- -

#include <bmqt_propertytype.h>

- -

List of all members.

- - - - - - - - - - -

-Public Types

enum  Enum {
-  e_UNDEFINED = 0, -e_BOOL = 1, -e_CHAR = 2, -e_SHORT = 3, -
-  e_INT32 = 4, -e_INT64 = 5, -e_STRING = 6, -e_BINARY = 7 -
- }

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, PropertyType::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (PropertyType::Enum value)
static bool fromAscii (PropertyType::Enum *out, const bslstl::StringRef &str)

-Static Public Attributes

static const int k_LOWEST_SUPPORTED_PROPERTY_TYPE = e_BOOL
static const int k_HIGHEST_SUPPORTED_PROPERTY_TYPE = e_BINARY
-

Detailed Description

-

This enum represents the supported data types for a message property.

-

See Component bmqt_propertytype

-

Member Enumeration Documentation

- -
-
- - - - -
enum bmqt::PropertyType::Enum
-
-
-
Enumerator:
- - - - - - - - -
e_UNDEFINED  -
e_BOOL  -
e_CHAR  -
e_SHORT  -
e_INT32  -
e_INT64  -
e_STRING  -
e_BINARY  -
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::PropertyType::print (bsl::ostream &  stream,
PropertyType::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a PropertyType::Enum value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::PropertyType::toAscii (PropertyType::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the e_ prefix elided. Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::PropertyType::fromAscii (PropertyType::Enum out,
const bslstl::StringRef &  str 
) [static]
-
-
-

Return true and fills the specified out with the enum value corresponding to the specified str, if valid, or return false and leave out untouched if str doesn't correspond to any value of the enum.

- -
-
-

Member Data Documentation

- -
-
- - - - -
const int bmqt::PropertyType::k_LOWEST_SUPPORTED_PROPERTY_TYPE = e_BOOL [static]
-
-
- -
-
- -
-
- - - - -
const int bmqt::PropertyType::k_HIGHEST_SUPPORTED_PROPERTY_TYPE = e_BINARY [static]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1QueueFlags-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1QueueFlags-members.html deleted file mode 100644 index 591d631fe..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1QueueFlags-members.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - -Struct bmqt::QueueFlags Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::QueueFlags Member List

-
-
-This is the complete list of members for bmqt::QueueFlags, including all inherited members. - - - - - - - - - - -
e_ACK enum valuebmqt::QueueFlags
e_ADMIN enum valuebmqt::QueueFlags
e_READ enum valuebmqt::QueueFlags
e_WRITE enum valuebmqt::QueueFlags
Enum enum namebmqt::QueueFlags
fromAscii(QueueFlags::Enum *out, const bslstl::StringRef &str)bmqt::QueueFlags [static]
k_HIGHEST_SUPPORTED_QUEUE_FLAGbmqt::QueueFlags [static]
k_LOWEST_SUPPORTED_QUEUE_FLAGbmqt::QueueFlags [static]
print(bsl::ostream &stream, QueueFlags::Enum value, int level=0, int spacesPerLevel=4)bmqt::QueueFlags [static]
toAscii(QueueFlags::Enum value)bmqt::QueueFlags [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1QueueFlags.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1QueueFlags.html deleted file mode 100644 index 49888a707..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1QueueFlags.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - -Struct bmqt::QueueFlags - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::QueueFlags Struct Reference

-
-
- -

#include <bmqt_queueflags.h>

- -

List of all members.

- - - - - - - - - - -

-Public Types

enum  Enum { e_ADMIN = (1 << 0), -e_READ = (1 << 1), -e_WRITE = (1 << 2), -e_ACK = (1 << 3) - }

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, QueueFlags::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (QueueFlags::Enum value)
static bool fromAscii (QueueFlags::Enum *out, const bslstl::StringRef &str)

-Static Public Attributes

static const int k_LOWEST_SUPPORTED_QUEUE_FLAG = e_ADMIN
static const int k_HIGHEST_SUPPORTED_QUEUE_FLAG = e_ACK
-

Detailed Description

-

This enum represents queue flags

-

See Component bmqt_queueflags

-

Member Enumeration Documentation

- -
-
- - - - -
enum bmqt::QueueFlags::Enum
-
-
-
Enumerator:
- - - - -
e_ADMIN  -

The queue is opened in admin mode (Valid only for BlazingMQ admin tasks)

-
e_READ  -

The queue is opened for consuming messages.

-
e_WRITE  -

The queue is opened for posting messages.

-
e_ACK  -

Set to indicate interested in receiving ACK events for all message posted

-
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::QueueFlags::print (bsl::ostream &  stream,
QueueFlags::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a GenericResult::Enum value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::QueueFlags::toAscii (QueueFlags::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the e_ prefix elided. Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::QueueFlags::fromAscii (QueueFlags::Enum out,
const bslstl::StringRef &  str 
) [static]
-
-
-

Return true and fills the specified out with the enum value corresponding to the specified str, if valid, or return false and leave out untouched if str doesn't correspond to any value of the enum.

- -
-
-

Member Data Documentation

- -
-
- - - - -
const int bmqt::QueueFlags::k_LOWEST_SUPPORTED_QUEUE_FLAG = e_ADMIN [static]
-
-
- -
-
- -
-
- - - - -
const int bmqt::QueueFlags::k_HIGHEST_SUPPORTED_QUEUE_FLAG = e_ACK [static]
-
-
- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1QueueFlagsUtil-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1QueueFlagsUtil-members.html deleted file mode 100644 index d9e5497d6..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1QueueFlagsUtil-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -Struct bmqt::QueueFlagsUtil Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::QueueFlagsUtil Member List

-
-
-This is the complete list of members for bmqt::QueueFlagsUtil, including all inherited members. - - - - - - - - - - - - - - - - - - - - -
additions(bsls::Types::Uint64 oldFlags, bsls::Types::Uint64 newFlags)bmqt::QueueFlagsUtil [static]
empty()bmqt::QueueFlagsUtil [static]
fromString(bsl::ostream &errorDescription, bsls::Types::Uint64 *out, const bsl::string &str)bmqt::QueueFlagsUtil [static]
isAck(bsls::Types::Uint64 flags)bmqt::QueueFlagsUtil [static]
isAdmin(bsls::Types::Uint64 flags)bmqt::QueueFlagsUtil [static]
isEmpty(bsls::Types::Uint64 flags)bmqt::QueueFlagsUtil [static]
isReader(bsls::Types::Uint64 flags)bmqt::QueueFlagsUtil [static]
isSet(bsls::Types::Uint64 flags, QueueFlags::Enum flag)bmqt::QueueFlagsUtil [static]
isValid(bsl::ostream &errorDescription, bsls::Types::Uint64 flags)bmqt::QueueFlagsUtil [static]
isWriter(bsls::Types::Uint64 flags)bmqt::QueueFlagsUtil [static]
prettyPrint(bsl::ostream &stream, bsls::Types::Uint64 flags)bmqt::QueueFlagsUtil [static]
removals(bsls::Types::Uint64 oldFlags, bsls::Types::Uint64 newFlags)bmqt::QueueFlagsUtil [static]
setAck(bsls::Types::Uint64 *flags)bmqt::QueueFlagsUtil [static]
setAdmin(bsls::Types::Uint64 *flags)bmqt::QueueFlagsUtil [static]
setReader(bsls::Types::Uint64 *flags)bmqt::QueueFlagsUtil [static]
setWriter(bsls::Types::Uint64 *flags)bmqt::QueueFlagsUtil [static]
unsetAck(bsls::Types::Uint64 *flags)bmqt::QueueFlagsUtil [static]
unsetAdmin(bsls::Types::Uint64 *flags)bmqt::QueueFlagsUtil [static]
unsetReader(bsls::Types::Uint64 *flags)bmqt::QueueFlagsUtil [static]
unsetWriter(bsls::Types::Uint64 *flags)bmqt::QueueFlagsUtil [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1QueueFlagsUtil.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1QueueFlagsUtil.html deleted file mode 100644 index 10055cd9b..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1QueueFlagsUtil.html +++ /dev/null @@ -1,551 +0,0 @@ - - - - -Struct bmqt::QueueFlagsUtil - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::QueueFlagsUtil Struct Reference

-
-
- -

#include <bmqt_queueflags.h>

- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool isSet (bsls::Types::Uint64 flags, QueueFlags::Enum flag)
static bool isValid (bsl::ostream &errorDescription, bsls::Types::Uint64 flags)
static bsls::Types::Uint64 empty ()
static bool isEmpty (bsls::Types::Uint64 flags)
static bool isReader (bsls::Types::Uint64 flags)
static bool isWriter (bsls::Types::Uint64 flags)
static bool isAdmin (bsls::Types::Uint64 flags)
static bool isAck (bsls::Types::Uint64 flags)
static void setReader (bsls::Types::Uint64 *flags)
static void setAdmin (bsls::Types::Uint64 *flags)
static void setWriter (bsls::Types::Uint64 *flags)
static void setAck (bsls::Types::Uint64 *flags)
static void unsetReader (bsls::Types::Uint64 *flags)
static void unsetAdmin (bsls::Types::Uint64 *flags)
static void unsetWriter (bsls::Types::Uint64 *flags)
static void unsetAck (bsls::Types::Uint64 *flags)
static bsls::Types::Uint64 additions (bsls::Types::Uint64 oldFlags, bsls::Types::Uint64 newFlags)
static bsls::Types::Uint64 removals (bsls::Types::Uint64 oldFlags, bsls::Types::Uint64 newFlags)
static bsl::ostream & prettyPrint (bsl::ostream &stream, bsls::Types::Uint64 flags)
static int fromString (bsl::ostream &errorDescription, bsls::Types::Uint64 *out, const bsl::string &str)
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::QueueFlagsUtil::isSet (bsls::Types::Uint64  flags,
QueueFlags::Enum  flag 
) [static]
-
-
-

Return true if the bit-mask in the specified flags has the specified flag set, or false if not.

-

DEPRECATED: This method is deprecated in favor of the below more specific accessors; and should be made private once all clients have been updated to the new APIs.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::QueueFlagsUtil::isValid (bsl::ostream &  errorDescription,
bsls::Types::Uint64  flags 
) [static]
-
-
-

Check whether the specified flags represent a valid combination of flags to use for opening a queue. Return true if it does, or false if some exclusive flags are both set, and populate the specified errorDescription with the reason of the failure.

- -
-
- -
-
- - - - - - - - -
static bsls::Types::Uint64 bmqt::QueueFlagsUtil::empty ( )  [static]
-
-
-

The empty value for flags.

- -
-
- -
-
- - - - - - - - - -
static bool bmqt::QueueFlagsUtil::isEmpty (bsls::Types::Uint64  flags )  [static]
-
-
-

Returns true if the specified flags have the empty value.

- -
-
- -
-
- - - - - - - - - -
static bool bmqt::QueueFlagsUtil::isReader (bsls::Types::Uint64  flags )  [static]
-
-
-

Returns true if the specified flags represent a reader.

- -
-
- -
-
- - - - - - - - - -
static bool bmqt::QueueFlagsUtil::isWriter (bsls::Types::Uint64  flags )  [static]
-
-
-

Returns true if the specified flags represent a writer.

- -
-
- -
-
- - - - - - - - - -
static bool bmqt::QueueFlagsUtil::isAdmin (bsls::Types::Uint64  flags )  [static]
-
-
-

Returns true if the specified flags represent an admin.

- -
-
- -
-
- - - - - - - - - -
static bool bmqt::QueueFlagsUtil::isAck (bsls::Types::Uint64  flags )  [static]
-
-
-

Returns true if the specified flags represent ack required.

- -
-
- -
-
- - - - - - - - - -
static void bmqt::QueueFlagsUtil::setReader (bsls::Types::Uint64 *  flags )  [static]
-
-
-

Sets the specified flags representation for reader.

- -
-
- -
-
- - - - - - - - - -
static void bmqt::QueueFlagsUtil::setAdmin (bsls::Types::Uint64 *  flags )  [static]
-
-
-

Sets the specified flags representation for admin.

- -
-
- -
-
- - - - - - - - - -
static void bmqt::QueueFlagsUtil::setWriter (bsls::Types::Uint64 *  flags )  [static]
-
-
-

Sets the specified flags representation for writer.

- -
-
- -
-
- - - - - - - - - -
static void bmqt::QueueFlagsUtil::setAck (bsls::Types::Uint64 *  flags )  [static]
-
-
-

Sets the specified flags representation for ack.

- -
-
- -
-
- - - - - - - - - -
static void bmqt::QueueFlagsUtil::unsetReader (bsls::Types::Uint64 *  flags )  [static]
-
-
-

Resets the specified flags representation for reader.

- -
-
- -
-
- - - - - - - - - -
static void bmqt::QueueFlagsUtil::unsetAdmin (bsls::Types::Uint64 *  flags )  [static]
-
-
-

Resets the specified flags representation for admin.

- -
-
- -
-
- - - - - - - - - -
static void bmqt::QueueFlagsUtil::unsetWriter (bsls::Types::Uint64 *  flags )  [static]
-
-
-

Resets the specified flags representation for writer.

- -
-
- -
-
- - - - - - - - - -
static void bmqt::QueueFlagsUtil::unsetAck (bsls::Types::Uint64 *  flags )  [static]
-
-
-

Resets the specified flags representation for ack.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bsls::Types::Uint64 bmqt::QueueFlagsUtil::additions (bsls::Types::Uint64  oldFlags,
bsls::Types::Uint64  newFlags 
) [static]
-
-
-

Return a new flag mask that only set bits are the ones that are in the specified newFlags and not in the specified oldFlags.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bsls::Types::Uint64 bmqt::QueueFlagsUtil::removals (bsls::Types::Uint64  oldFlags,
bsls::Types::Uint64  newFlags 
) [static]
-
-
-

Return a new flag mask that only set bits are the ones that are in the specified oldFlags and not in the specified newFlags.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::QueueFlagsUtil::prettyPrint (bsl::ostream &  stream,
bsls::Types::Uint64  flags 
) [static]
-
-
-

Print the ascii-representation of all the values set in the specified flags to the specified stream. Each value is , separated.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static int bmqt::QueueFlagsUtil::fromString (bsl::ostream &  errorDescription,
bsls::Types::Uint64 *  out,
const bsl::string &  str 
) [static]
-
-
-

Convert the string representation of the enum bit mask from the specified str (which format corresponds to the one of the prettyPrint method) and populate the specified out with the result on success returning 0, or return a non-zero error code on error, populating the specified errorDescription with a description of the error.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1SessionEventType-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1SessionEventType-members.html deleted file mode 100644 index 0bd4459c9..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1SessionEventType-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - -Struct bmqt::SessionEventType Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::SessionEventType Member List

-
- - - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1SessionEventType.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1SessionEventType.html deleted file mode 100644 index 490a270f2..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1SessionEventType.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - -Struct bmqt::SessionEventType - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::SessionEventType Struct Reference

-
-
- -

#include <bmqt_sessioneventtype.h>

- -

List of all members.

- - - - - - - -

-Public Types

enum  Enum {
-  e_ERROR = -1, -e_TIMEOUT = -2, -e_CANCELED = -3, -e_UNDEFINED = 0, -
-  e_CONNECTED = 1, -e_DISCONNECTED = 2, -e_CONNECTION_LOST = 3, -e_RECONNECTED = 4, -
-  e_STATE_RESTORED = 5, -e_CONNECTION_TIMEOUT = 6, -e_QUEUE_OPEN_RESULT = 7, -e_QUEUE_REOPEN_RESULT = 8, -
-  e_QUEUE_CLOSE_RESULT = 9, -e_SLOWCONSUMER_NORMAL = 10, -e_SLOWCONSUMER_HIGHWATERMARK = 11, -e_QUEUE_CONFIGURE_RESULT = 12, -
-  e_HOST_UNHEALTHY = 13, -e_HOST_HEALTH_RESTORED = 14, -e_QUEUE_SUSPENDED = 15, -e_QUEUE_RESUMED = 16 -
- }

-Static Public Member Functions

static bsl::ostream & print (bsl::ostream &stream, SessionEventType::Enum value, int level=0, int spacesPerLevel=4)
static const char * toAscii (SessionEventType::Enum value)
static bool fromAscii (SessionEventType::Enum *out, const bslstl::StringRef &str)
-

Detailed Description

-

Enumeration for the types of session events

-

See Component bmqt_sessioneventtype

-

Member Enumeration Documentation

- -
- -
-
Enumerator:
- - - - - - - - - - - - - - - - - - - - -
e_ERROR  -

Generic error.

-
e_TIMEOUT  -

Time out of the operation.

-
e_CANCELED  -

The operation was canceled.

-
e_UNDEFINED  -
e_CONNECTED  -

Session started.

-
e_DISCONNECTED  -

Session terminated.

-
e_CONNECTION_LOST  -

Lost connection to the broker.

-
e_RECONNECTED  -

Reconnected with the broker.

-
e_STATE_RESTORED  -

Client's state has been restored.

-
e_CONNECTION_TIMEOUT  -

The connection to broker timedOut.

-
e_QUEUE_OPEN_RESULT  -

Result of openQueue operation.

-
e_QUEUE_REOPEN_RESULT  -

Result of re-openQueue operation.

-
e_QUEUE_CLOSE_RESULT  -

Result of closeQueue operation.

-
e_SLOWCONSUMER_NORMAL  -

EventQueue is at lowWatermark.

-
e_SLOWCONSUMER_HIGHWATERMARK  -

EventQueue is at highWatermark.

-
e_QUEUE_CONFIGURE_RESULT  -

Result of configureQueue.

-
e_HOST_UNHEALTHY  -

Host has become unhealthy.

-
e_HOST_HEALTH_RESTORED  -

Host's health has been restored.

-
e_QUEUE_SUSPENDED  -

Queue has suspended operation.

-
e_QUEUE_RESUMED  -

Queue has resumed operation.

-
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bsl::ostream& bmqt::SessionEventType::print (bsl::ostream &  stream,
SessionEventType::Enum  value,
int  level = 0,
int  spacesPerLevel = 4 
) [static]
-
-
-

Write the string representation of the specified enumeration value to the specified output stream, and return a reference to stream. Optionally specify an initial indentation level, whose absolute value is incremented recursively for nested objects. If level is specified, optionally specify spacesPerLevel, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). See toAscii for what constitutes the string representation of a SessionEventType::Value value.

- -
-
- -
-
- - - - - - - - - -
static const char* bmqt::SessionEventType::toAscii (SessionEventType::Enum  value )  [static]
-
-
-

Return the non-modifiable string representation corresponding to the specified enumeration value, if it exists, and a unique (error) string otherwise. The string representation of value matches its corresponding enumerator name with the BMQT_ prefix elided. Note that specifying a value that does not match any of the enumerators will result in a string representation that is distinct from any of those corresponding to the enumerators, but is otherwise unspecified.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool bmqt::SessionEventType::fromAscii (SessionEventType::Enum out,
const bslstl::StringRef &  str 
) [static]
-
-
-

Return true and fills the specified out with the enum value corresponding to the specified str, if valid, or return false and leave out untouched if str doesn't correspond to any value of the enum.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1UriParser-members.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1UriParser-members.html deleted file mode 100644 index 70892f6cb..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1UriParser-members.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - -Struct bmqt::UriParser Members - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
-
-

bmqt::UriParser Member List

-
-
-This is the complete list of members for bmqt::UriParser, including all inherited members. - - - -
initialize(bslma::Allocator *allocator=0)bmqt::UriParser [static]
parse(Uri *result, bsl::string *errorDescription, const bslstl::StringRef &uriString)bmqt::UriParser [static]
shutdown()bmqt::UriParser [static]
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1UriParser.html b/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1UriParser.html deleted file mode 100644 index 645ba3bdf..000000000 --- a/docs/docs/apidocs/cpp_apidocs/structbmqt_1_1UriParser.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - -Struct bmqt::UriParser - - - - - - - - - - - - - - -
-

Quick Links:

-
-

-bmqa | bmqpi | bmqt -

- - - - -
- -
-

bmqt::UriParser Struct Reference

-
-
- -

#include <bmqt_uri.h>

- -

List of all members.

- - - - - -

-Static Public Member Functions

static void initialize (bslma::Allocator *allocator=0)
static void shutdown ()
static int parse (Uri *result, bsl::string *errorDescription, const bslstl::StringRef &uriString)
-

Detailed Description

-

Utility namespace of methods for parsing URI strings into Uri objects.

-

See Component bmqt_uri

-

Member Function Documentation

- -
-
- - - - - - - - - -
static void bmqt::UriParser::initialize (bslma::Allocator *  allocator = 0 )  [static]
-
-
-

Initialize the UriParser. Note that this will compile the regular expression used by parseUri. This method only needs to be called once before any other method, but can be called multiple times provided that for each call to initialize there is a corresponding call to shutdown. Use the optionally specified allocator for any memory allocation, or the global allocator if none is provided. Note that specifying the allocator is provided for test drivers only, and therefore users should let it default to the global allocator.

- -
-
- -
-
- - - - - - - - -
static void bmqt::UriParser::shutdown ( )  [static]
-
-
-

Pendant operation of the initialize one. Note that behaviour after calling the .parse() method of the UriParser after shutdown has been called is undefined. The number of calls to shutdown must equal the number of calls to initialize, without corresponding shutdown calls, to fully destroy the parser. It is safe to call initialize after calling shutdown. Behaviour is undefined if shutdown is called without initialize first being called.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static int bmqt::UriParser::parse (Uri result,
bsl::string *  errorDescription,
const bslstl::StringRef &  uriString 
) [static]
-
-
-

Parse the specified uriString into the specified result object if uriString is a valid URI, otherwise load the specified errorDescription with a description of the syntax error present in uriString. Return 0 on success and non-zero if uriString does not have a valid syntax. Note that errorDescription may be null if the caller does not care about getting error messages. The behavior is undefined unless initialize has been called previously.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - diff --git a/docs/docs/apidocs/cpp_apidocs/tab_a.png b/docs/docs/apidocs/cpp_apidocs/tab_a.png deleted file mode 100644 index 2d99ef23f..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/tab_a.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/tab_b.png b/docs/docs/apidocs/cpp_apidocs/tab_b.png deleted file mode 100644 index b2c3d2be3..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/tab_b.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/tab_h.png b/docs/docs/apidocs/cpp_apidocs/tab_h.png deleted file mode 100644 index c11f48f19..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/tab_h.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/tab_s.png b/docs/docs/apidocs/cpp_apidocs/tab_s.png deleted file mode 100644 index 978943ac8..000000000 Binary files a/docs/docs/apidocs/cpp_apidocs/tab_s.png and /dev/null differ diff --git a/docs/docs/apidocs/cpp_apidocs/tabs.css b/docs/docs/apidocs/cpp_apidocs/tabs.css deleted file mode 100644 index 21920562a..000000000 --- a/docs/docs/apidocs/cpp_apidocs/tabs.css +++ /dev/null @@ -1,59 +0,0 @@ -.tabs, .tabs2, .tabs3 { - background-image: url('tab_b.png'); - width: 100%; - z-index: 101; - font-size: 13px; -} - -.tabs2 { - font-size: 10px; -} -.tabs3 { - font-size: 9px; -} - -.tablist { - margin: 0; - padding: 0; - display: table; -} - -.tablist li { - float: left; - display: table-cell; - background-image: url('tab_b.png'); - line-height: 36px; - list-style: none; -} - -.tablist a { - display: block; - padding: 0 20px; - font-weight: bold; - background-image:url('tab_s.png'); - background-repeat:no-repeat; - background-position:right; - color: #283A5D; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; - outline: none; -} - -.tabs3 .tablist a { - padding: 0 10px; -} - -.tablist a:hover { - background-image: url('tab_h.png'); - background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); - text-decoration: none; -} - -.tablist li.current a { - background-image: url('tab_a.png'); - background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); -} diff --git a/docs/docs/apidocs/cpp_apidocs/tree.html b/docs/docs/apidocs/cpp_apidocs/tree.html deleted file mode 100644 index 863bb02db..000000000 --- a/docs/docs/apidocs/cpp_apidocs/tree.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - - Bloomberg Development Environment - - - - -
-

Root

-
-

o+Components

- -

o+Class List

- -

o+Class Hierarchy

- -

o*Class Members

-

o+Namespace List

-
-

|o*bmqa

-

|o*bmqimp

-

|o*bmqp

-

|o*bmqpi

-

|o*bmqt

-

|\*bslmt

-
-

o*Namespace Members

-

o+File List

- -

\*File Members

-
-
- - diff --git a/docs/docs/apidocs/cpp_apidocs/treeORIG.html b/docs/docs/apidocs/cpp_apidocs/treeORIG.html deleted file mode 100644 index 2d25c7203..000000000 --- a/docs/docs/apidocs/cpp_apidocs/treeORIG.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - - Bloomberg Development Environment - - - - -
-

Root

-
-

o+Components

- -

o+Class List

- -

o+Class Hierarchy

- -

o*Class Members

-

o+Namespace List

-
-

|o*bmqa

-

|o*bmqimp

-

|o*bmqp

-

|o*bmqpi

-

|o*bmqt

-

|\*bslmt

-
-

o*Namespace Members

-

o+File List

- -

\*File Members

-
-
- - diff --git a/docs/docs/apidocs/index.md b/docs/docs/apidocs/index.md deleted file mode 100644 index 668041a84..000000000 --- a/docs/docs/apidocs/index.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: default -title: API Documentation -nav_order: 8 -has_children: false -permalink: /apidocs ---- - -# [](#apidocs)API Documentation - -{: .no_toc } - -- [Java API Documentation](java_apidocs/index.html) -- [C++ API Documentation](cpp_apidocs/index.html) -- [Python API Documentation](python_apidocs/index.html) diff --git a/docs/docs/apidocs/java_apidocs/allclasses-frame.html b/docs/docs/apidocs/java_apidocs/allclasses-frame.html deleted file mode 100644 index 0173ec0b3..000000000 --- a/docs/docs/apidocs/java_apidocs/allclasses-frame.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - -All Classes (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - -

All Classes

-
- -
- - diff --git a/docs/docs/apidocs/java_apidocs/allclasses-noframe.html b/docs/docs/apidocs/java_apidocs/allclasses-noframe.html deleted file mode 100644 index 63de81847..000000000 --- a/docs/docs/apidocs/java_apidocs/allclasses-noframe.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - -All Classes (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - -

All Classes

-
- -
- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/AbstractSession.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/AbstractSession.html deleted file mode 100644 index 07245a3bc..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/AbstractSession.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - - - -AbstractSession (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface AbstractSession

-
-
-
-
    -
  • -
    -
    All Known Implementing Classes:
    -
    Session
    -
    -
    -
    -
    public interface AbstractSession
    -
    Interface to the Session that provides access to the BlazingMQ broker
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Instance Methods Abstract Methods 
      Modifier and TypeMethod and Description
      QueuegetQueue(Uri uri, - long flags, - QueueEventHandler handler, - AckMessageHandler ackHandler, - PushMessageHandler pushHandler) -
      Create a queue representation.
      -
      booleanisStarted() -
      Check if the 'Session' is started
      -
      voidlinger() -
      Shutdown all connection and event handling threads.
      -
      voidstart(Duration timeout) -
      Connect to the BlazingMQ broker and start the message processing
      -
      voidstartAsync(Duration timeout) -
      Connect to the BlazingMQ broker and start the message processing
      -
      voidstop(Duration timeout) -
      Gracefully disconnect from the BlazingMQ broker and stop the operation of this 'Session'.
      -
      voidstopAsync(Duration timeout) -
      Gracefully disconnect from the BlazingMQ broker and stop the operation of this 'Session'.
      -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        start

        -
        void start(Duration timeout)
        -
        Connect to the BlazingMQ broker and start the message processing - -

        This method blocks until either the 'Session' is connected to the broker, fails to - connect, or the operation times out.

        -
        -
        Parameters:
        -
        timeout - start timeout value
        -
        Throws:
        -
        BMQException - if start attempt failed
        -
        -
      • -
      - - - -
        -
      • -

        startAsync

        -
        void startAsync(Duration timeout)
        -
        Connect to the BlazingMQ broker and start the message processing - -

        This method returns without blocking. The result of the operation is communicated with a - session event. If the optionally specified 'timeout' is not populated, use the one defined in - the session options.

        -
        -
        Parameters:
        -
        timeout - start timeout value
        -
        Throws:
        -
        BMQException - in case of failure
        -
        -
      • -
      - - - -
        -
      • -

        isStarted

        -
        boolean isStarted()
        -
        Check if the 'Session' is started
        -
        -
        Returns:
        -
        true if the 'Session' is started, otherwise false
        -
        -
      • -
      - - - -
        -
      • -

        stop

        -
        void stop(Duration timeout)
        -
        Gracefully disconnect from the BlazingMQ broker and stop the operation of this 'Session'. - -

        This method blocks waiting for all already invoked event handlers to exit and all - session-related operations to be finished.

        -
        -
        Parameters:
        -
        timeout - stop timeout value
        -
        Throws:
        -
        BMQException - if stop attempt failed
        -
        -
      • -
      - - - -
        -
      • -

        stopAsync

        -
        void stopAsync(Duration timeout)
        -
        Gracefully disconnect from the BlazingMQ broker and stop the operation of this 'Session'. - -

        This method returns without blocking. The result of the operation is communicated with a - session event. If the optionally specified 'timeout' is not populated, use the one defined in - the session options.

        -
        -
        Parameters:
        -
        timeout - stop timeout value
        -
        Throws:
        -
        BMQException - in case of failure
        -
        -
      • -
      - - - -
        -
      • -

        linger

        -
        void linger()
        -
        Shutdown all connection and event handling threads. - -

        This method must be called when the Session is stopped. No other method may be - used after this method returns.

        -
      • -
      - - - -
        -
      • -

        getQueue

        -
        Queue getQueue(Uri uri,
        -               long flags,
        -               QueueEventHandler handler,
        -               AckMessageHandler ackHandler,
        -               PushMessageHandler pushHandler)
        -
        Create a queue representation. - -

        Returned Queue may be in any state.

        -
        -
        Parameters:
        -
        uri - URI of the created Queue, immutable
        -
        flags - a combination of the values defined in QueueFlags
        -
        handler - queue event handler callback interface
        -
        ackHandler - callback handler for incoming ACK events, can be null if only consumer
        -
        pushHandler - callback handler for incoming PUSH events, can be null if only producer
        -
        Returns:
        -
        Queue interface to the queue instance
        -
        Throws:
        -
        IllegalArgumentException - in case of a wrong combination of the queue flags and the - handlers
        -
        BMQException - for any other unrecoverable errors
        -
        See Also:
        -
        QueueFlags
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/AckMessage.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/AckMessage.html deleted file mode 100644 index 30cfe41f9..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/AckMessage.html +++ /dev/null @@ -1,297 +0,0 @@ - - - - - - -AckMessage (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface AckMessage

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    Event, QueueEvent
    -
    -
    -
    -
    public interface AckMessage
    -extends QueueEvent
    -
    ACK message representation. - -

    ACK message is sent by the broker to the producer to confirm that it gets PUT message sent by - the producer. ACK message holds unique MessageGUID assigned by the - broker and CorrelationId that equals to the corresponding value from - the PutMessage and allows to identify related PUT message.

    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        messageGUID

        -
        MessageGUID messageGUID()
        -
        Returns unique MessageGUID assigned to this message by the broker.
        -
        -
        Returns:
        -
        MessageGUID unique message GUID
        -
        -
      • -
      - - - -
        -
      • -

        correlationId

        -
        CorrelationId correlationId()
        -
        Returns CorrelationId equals to the user specified correlation ID - from the PutMessage.
        -
        -
        Returns:
        -
        CorrelationId message correlation ID
        -
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/AckMessageHandler.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/AckMessageHandler.html deleted file mode 100644 index 2e463ea2a..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/AckMessageHandler.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - -AckMessageHandler (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface AckMessageHandler

-
-
-
-
    -
  • -
    -
    Functional Interface:
    -
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
    -
    -
    -
    -
    @FunctionalInterface
    -public interface AckMessageHandler
    -
    User callback interface to handle incoming ACK messages.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        handleAckMessage

        -
        void handleAckMessage(AckMessage msg)
        -
        User specified ACK message handler. - -

        Producer needs to implement this interface to receive ACK messages.

        -
        -
        Parameters:
        -
        msg - incoming ACK message
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/BMQException.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/BMQException.html deleted file mode 100644 index 16ba47732..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/BMQException.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - -BMQException (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Class BMQException

-
-
- -
- -
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/CompressionAlgorithm.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/CompressionAlgorithm.html deleted file mode 100644 index f8f7932ee..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/CompressionAlgorithm.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - - - -CompressionAlgorithm (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Enum CompressionAlgorithm

-
-
- -
- -
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static CompressionAlgorithm[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (CompressionAlgorithm c : CompressionAlgorithm.values())
        -    System.out.println(c);
        -
        -
        -
        Returns:
        -
        an array containing the constants of this enum type, in the order they are declared
        -
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static CompressionAlgorithm valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        -
        Parameters:
        -
        name - the name of the enum constant to be returned.
        -
        Returns:
        -
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/CorrelationId.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/CorrelationId.html deleted file mode 100644 index f01aa6489..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/CorrelationId.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - -CorrelationId (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface CorrelationId

-
-
-
-
    -
  • -
    -
    -
    public interface CorrelationId
    -
    Provides an interface usable as an efficient identifier. - -

    This is an interface, which can be used to identify any async operations. The CorrelationId internally provides an auto-assigned value (32-bit integer with 24 meaningful - bits). It may also contain an optional user provided Object. PutMessage.setCorrelationId() can be used to consecutively generate a unique - CorrelationId starting from 1 and up to 0xFFFFFF from multiple execution threads. - Another flavour of the PutMessage#setCorrelationId can be used to generate similar unique - CorrelationId that will held a user specified Object.

    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        userData

        -
        Object userData()
        -
        Returns the user provided Object associated with this correlation ID.
        -
        -
        Returns:
        -
        Object user provided object
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/Event.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/Event.html deleted file mode 100644 index 887b3c3b9..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/Event.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - -Event (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface Event

-
-
- -
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        session

        -
        AbstractSession session()
        -
        Returns interface to the session that has generated this event.
        -
        -
        Returns:
        -
        AbstractSession session interface
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/HostHealthMonitor.Handler.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/HostHealthMonitor.Handler.html deleted file mode 100644 index 4d3a53b2a..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/HostHealthMonitor.Handler.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - -HostHealthMonitor.Handler (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface HostHealthMonitor.Handler

-
-
-
-
    -
  • -
    -
    Enclosing interface:
    -
    HostHealthMonitor
    -
    -
    -
    -
    public static interface HostHealthMonitor.Handler
    -
    Provides an interface for handling changes detected by HostHealthMonitor
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        onHostHealthStateChanged

        -
        void onHostHealthStateChanged(HostHealthState state)
        -
        Invoked as a response to the HostHealthMonitor detecting a change in the state of - the host health
        -
        -
        Parameters:
        -
        state - current host health state
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/HostHealthMonitor.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/HostHealthMonitor.html deleted file mode 100644 index 03444e635..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/HostHealthMonitor.html +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - -HostHealthMonitor (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface HostHealthMonitor

-
-
-
-
    -
  • -
    -
    -
    public interface HostHealthMonitor
    -
    Provides an interface for monitoring the health of the host. BlazingMQ sessions can use such - objects to conditionally suspend queue activity while the host is marked unhealthy
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        addHandler

        -
        boolean addHandler(HostHealthMonitor.Handler handler)
        -
        Registers the specified `handler` to be invoked each time the health of the host changes
        -
        -
        Parameters:
        -
        handler - Handler object to be registered
        -
        Returns:
        -
        true if specified handler was successfully added, false if specified handler was added before
        -
        Throws:
        -
        NullPointerException - if specified handler is null
        -
        -
      • -
      - - - -
        -
      • -

        removeHandler

        -
        boolean removeHandler(HostHealthMonitor.Handler handler)
        -
        Unregisters the specified `handler'
        -
        -
        Parameters:
        -
        handler - Handler object to be removed
        -
        Returns:
        -
        true if specified handler was successfully removed, false if there were no - such object to remove
        -
        Throws:
        -
        NullPointerException - if specified handler is null
        -
        -
      • -
      - - - -
        -
      • -

        hostHealthState

        -
        HostHealthState hostHealthState()
        -
        Queries the current health of the host
        -
        -
        Returns:
        -
        HostHealthState current host health state
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/HostHealthState.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/HostHealthState.html deleted file mode 100644 index e06b9753b..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/HostHealthState.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - -HostHealthState (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Enum HostHealthState

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        Unknown

        -
        public static final HostHealthState Unknown
        -
        Host health could not be ascertained
        -
      • -
      - - - -
        -
      • -

        Healthy

        -
        public static final HostHealthState Healthy
        -
        Host is considered to be healthy
        -
      • -
      - - - -
        -
      • -

        Unhealthy

        -
        public static final HostHealthState Unhealthy
        -
        Host is not considered to be healthy
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static HostHealthState[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (HostHealthState c : HostHealthState.values())
        -    System.out.println(c);
        -
        -
        -
        Returns:
        -
        an array containing the constants of this enum type, in the order they are declared
        -
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static HostHealthState valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        -
        Parameters:
        -
        name - the name of the enum constant to be returned.
        -
        Returns:
        -
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageGUID.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageGUID.html deleted file mode 100644 index f40230144..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageGUID.html +++ /dev/null @@ -1,535 +0,0 @@ - - - - - - -MessageGUID (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Class MessageGUID

-
-
- -
-
    -
  • -
    -
    -
    @Immutable
    -public class MessageGUID
    -extends Object
    -
    Provides a value-semantic global unique identifier for BlazingMQ messages. - -

    MessageGUID provides a value-semantic global unique identifier for BlazingMQ messages. - Each message delivered to BlazingMQ client from BlazingMQ broker contains a unique MessageGUID. - -

    Externalization

    - - For convenience, this class provides toHex method that can be used to externalize a - MessageGUID instance. Applications can persist the resultant buffer (on filesystem, in - database) to keep track of last processed message ID across task instantiations. fromHex - method can be used to convert a valid externalized buffer back to a message ID. - -

    Example 1: Externalizing

    - - Below, msg is a valid instance of AckMessage obtained from an - instance of AbstractSession via AckMessageHandler: - -
    -
    -  MessageGUID g1 = msg.messageGUID();
    -
    -  String hex1 = g1.toHex();
    -
    -  assert MessageGUID.isValidHexRepresentation(hex1.getBytes());
    -
    -  MessageGUID g2 = MessageGUID.fromHex(hex1);
    -
    -  assert g1.equals(g2);
    - 
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      static intSIZE_BINARY -
      The size of a buffer needed to represent a GUID.
      -
      static intSIZE_HEX -
      The size of a hexadecimal string representation of the GUID.
      -
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        SIZE_BINARY

        -
        public static final int SIZE_BINARY
        -
        The size of a buffer needed to represent a GUID.
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        SIZE_HEX

        -
        public static final int SIZE_HEX
        -
        The size of a hexadecimal string representation of the GUID.
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        isValidHexRepresentation

        -
        public static boolean isValidHexRepresentation(byte[] buffer)
        -
        Returns true if the specified buffer is a valid hex representation of a MessageGUID. The the buffer should be equal to SIZE_HEX.
        -
        -
        Parameters:
        -
        buffer - Array of bytes that contrains hex representation the MessageGUID.
        -
        Returns:
        -
        boolean true if the specified buffer is a valid hex representation, false - otherwise.
        -
        Throws:
        -
        NullPointerException - if the specified buffer is null
        -
        -
      • -
      - - - -
        -
      • -

        toBinary

        -
        public void toBinary(byte[] destination)
        -
        Writes a binary representation of this object to the specified destination which - length should be SIZE_BINARY. Note that destination can later be used to - populate a MessageGUID object using fromBinary(byte[]) method.
        -
        -
        Parameters:
        -
        destination - byte array to store a binary representation of this GUID
        -
        Throws:
        -
        IllegalArgumentException - in case of the destination length is less - than SIZE_BINARY
        -
        NullPointerException - if the specified destination is null
        -
        -
      • -
      - - - -
        -
      • -

        toHex

        -
        public String toHex()
        -
        Returns a hex representation of this object as a String. Note that the returned - string can later be used to create a MessageGUID object using fromHex method.
        -
        -
        Returns:
        -
        String hex representation of this object
        -
        -
      • -
      - - - -
        -
      • -

        fromBinary

        -
        public static MessageGUID fromBinary(byte[] buffer)
        -
        Returns a new MessageGUID created from the specified buffer, in binary - format. The buffer length should be SIZE_BINARY.
        -
        -
        Parameters:
        -
        buffer - binary representation of the GUID
        -
        Returns:
        -
        MessageGUID newly created MessageGUID object
        -
        Throws:
        -
        IllegalArgumentException - in case of the buffer length is less than - SIZE_BINARY
        -
        NullPointerException - if the specified buffer is null
        -
        -
      • -
      - - - -
        -
      • -

        fromHex

        -
        public static MessageGUID fromHex(String val)
        -
        Returns a new MessageGUID created from the specified String contained - hexadecimal representation of the GUID.
        -
        -
        Parameters:
        -
        val - string with a hexadecimal representation of the GUID
        -
        Returns:
        -
        MessageGUID newly created MessageGUID object
        -
        Throws:
        -
        IllegalArgumentException - in case of the specified string is not a valid - hexadecimal representation of the GUID, or if error happens during string decoding
        -
        NullPointerException - if the specified val is null
        -
        -
      • -
      - - - -
        -
      • -

        createEmptyGUID

        -
        public static MessageGUID createEmptyGUID()
        -
        Returns a zero filled MessageGUID object.
        -
        -
        Returns:
        -
        MessageGUID zero message GUID
        -
        -
      • -
      - - - -
        -
      • -

        toString

        -
        public String toString()
        -
        Returns a hex representation of this object as a String.
        -
        -
        Overrides:
        -
        toString in class Object
        -
        Returns:
        -
        String hex representation of this object
        -
        -
      • -
      - - - -
        -
      • -

        equals

        -
        public boolean equals(Object other)
        -
        Returns true if this GUID is equal to the specified other, false otherwise. Two GUIDs - are equal if they have equal binary representations.
        -
        -
        Overrides:
        -
        equals in class Object
        -
        Parameters:
        -
        other - GUID object to compare with
        -
        Returns:
        -
        boolean true if GUIDs are equal, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        Returns a hash code value for this MessageGUID object.
        -
        -
        Overrides:
        -
        hashCode in class Object
        -
        Returns:
        -
        int a hash code value for this object.
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperties.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperties.html deleted file mode 100644 index 9ada8a98a..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperties.html +++ /dev/null @@ -1,403 +0,0 @@ - - - - - - -MessageProperties (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface MessageProperties

-
-
-
-
    -
  • -
    -
    -
    public interface MessageProperties
    -
    Interface to manipulate with message properties. - -

    Allows to set a property with the specified name having the specified value - with the corresponding data type. - -

    Note that if a property with the name exists, it will be updated with value.

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Instance Methods Abstract Methods 
      Modifier and TypeMethod and Description
      booleansetPropertyAsBinary(String name, - byte[] value) -
      Sets a property with the specified name having the specified value as an - array of bytes.
      -
      booleansetPropertyAsBool(String name, - boolean value) -
      Sets a property with the specified name having the specified value of the - type boolean.
      -
      booleansetPropertyAsByte(String name, - byte value) -
      Sets a property with the specified name having the specified value of the - type byte.
      -
      booleansetPropertyAsInt32(String name, - int value) -
      Sets a property with the specified name having the specified value of the - type int.
      -
      booleansetPropertyAsInt64(String name, - long value) -
      Sets a property with the specified name having the specified value of the - type long.
      -
      booleansetPropertyAsShort(String name, - short value) -
      Sets a property with the specified name having the specified value of the - type short.
      -
      booleansetPropertyAsString(String name, - String value) -
      Sets a property with the specified name having the specified value of the - type String.
      -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setPropertyAsBool

        -
        boolean setPropertyAsBool(String name,
        -                          boolean value)
        -
        Sets a property with the specified name having the specified value of the - type boolean.
        -
        -
        Parameters:
        -
        name - property name
        -
        value - property value
        -
        Returns:
        -
        boolean true on success, and false in case of failure.
        -
        -
      • -
      - - - -
        -
      • -

        setPropertyAsByte

        -
        boolean setPropertyAsByte(String name,
        -                          byte value)
        -
        Sets a property with the specified name having the specified value of the - type byte.
        -
        -
        Parameters:
        -
        name - property name
        -
        value - property value
        -
        Returns:
        -
        boolean true on success, and false in case of failure.
        -
        -
      • -
      - - - -
        -
      • -

        setPropertyAsShort

        -
        boolean setPropertyAsShort(String name,
        -                           short value)
        -
        Sets a property with the specified name having the specified value of the - type short.
        -
        -
        Parameters:
        -
        name - property name
        -
        value - property value
        -
        Returns:
        -
        boolean true on success, and false in case of failure.
        -
        -
      • -
      - - - -
        -
      • -

        setPropertyAsInt32

        -
        boolean setPropertyAsInt32(String name,
        -                           int value)
        -
        Sets a property with the specified name having the specified value of the - type int.
        -
        -
        Parameters:
        -
        name - property name
        -
        value - property value
        -
        Returns:
        -
        boolean true on success, and false in case of failure.
        -
        -
      • -
      - - - -
        -
      • -

        setPropertyAsInt64

        -
        boolean setPropertyAsInt64(String name,
        -                           long value)
        -
        Sets a property with the specified name having the specified value of the - type long.
        -
        -
        Parameters:
        -
        name - property name
        -
        value - property value
        -
        Returns:
        -
        boolean true on success, and false in case of failure.
        -
        -
      • -
      - - - -
        -
      • -

        setPropertyAsString

        -
        boolean setPropertyAsString(String name,
        -                            String value)
        -
        Sets a property with the specified name having the specified value of the - type String.
        -
        -
        Parameters:
        -
        name - property name
        -
        value - property value
        -
        Returns:
        -
        boolean true on success, and false in case of failure.
        -
        -
      • -
      - - - -
        -
      • -

        setPropertyAsBinary

        -
        boolean setPropertyAsBinary(String name,
        -                            byte[] value)
        -
        Sets a property with the specified name having the specified value as an - array of bytes.
        -
        -
        Parameters:
        -
        name - property name
        -
        value - property value
        -
        Returns:
        -
        boolean true on success, and false in case of failure.
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.BinaryProperty.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.BinaryProperty.html deleted file mode 100644 index 3f2c52d4a..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.BinaryProperty.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - -MessageProperty.BinaryProperty (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface MessageProperty.BinaryProperty

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    MessageProperty
    -
    -
    -
    Enclosing interface:
    -
    MessageProperty
    -
    -
    -
    -
    public static interface MessageProperty.BinaryProperty
    -extends MessageProperty
    -
    Represents message property which value has type BINARY.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.BoolProperty.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.BoolProperty.html deleted file mode 100644 index 0c371e1d8..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.BoolProperty.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - -MessageProperty.BoolProperty (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface MessageProperty.BoolProperty

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    MessageProperty
    -
    -
    -
    Enclosing interface:
    -
    MessageProperty
    -
    -
    -
    -
    public static interface MessageProperty.BoolProperty
    -extends MessageProperty
    -
    Represents a boolean message property. The value of this property has type BOOL.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.ByteProperty.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.ByteProperty.html deleted file mode 100644 index 93b0de9d6..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.ByteProperty.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - -MessageProperty.ByteProperty (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface MessageProperty.ByteProperty

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    MessageProperty
    -
    -
    -
    Enclosing interface:
    -
    MessageProperty
    -
    -
    -
    -
    public static interface MessageProperty.ByteProperty
    -extends MessageProperty
    -
    Represents one byte message property. The value of this property has type BYTE.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.Int32Property.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.Int32Property.html deleted file mode 100644 index 62d3bd50b..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.Int32Property.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - -MessageProperty.Int32Property (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface MessageProperty.Int32Property

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    MessageProperty
    -
    -
    -
    Enclosing interface:
    -
    MessageProperty
    -
    -
    -
    -
    public static interface MessageProperty.Int32Property
    -extends MessageProperty
    -
    Represents message property which value has type INT32.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.Int64Property.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.Int64Property.html deleted file mode 100644 index b77aaf4dd..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.Int64Property.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - -MessageProperty.Int64Property (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface MessageProperty.Int64Property

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    MessageProperty
    -
    -
    -
    Enclosing interface:
    -
    MessageProperty
    -
    -
    -
    -
    public static interface MessageProperty.Int64Property
    -extends MessageProperty
    -
    Represents message property which value has type INT64.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.ShortProperty.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.ShortProperty.html deleted file mode 100644 index 15b41a628..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.ShortProperty.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - -MessageProperty.ShortProperty (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface MessageProperty.ShortProperty

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    MessageProperty
    -
    -
    -
    Enclosing interface:
    -
    MessageProperty
    -
    -
    -
    -
    public static interface MessageProperty.ShortProperty
    -extends MessageProperty
    -
    Represents message property which value has type SHORT.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.StringProperty.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.StringProperty.html deleted file mode 100644 index 6b6c75883..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.StringProperty.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - -MessageProperty.StringProperty (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface MessageProperty.StringProperty

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    MessageProperty
    -
    -
    -
    Enclosing interface:
    -
    MessageProperty
    -
    -
    -
    -
    public static interface MessageProperty.StringProperty
    -extends MessageProperty
    -
    Represents message property which value has type STRING.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.Type.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.Type.html deleted file mode 100644 index 7a4f69a1f..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.Type.html +++ /dev/null @@ -1,451 +0,0 @@ - - - - - - -MessageProperty.Type (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Enum MessageProperty.Type

-
-
- -
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    Serializable, Comparable<MessageProperty.Type>
    -
    -
    -
    Enclosing interface:
    -
    MessageProperty
    -
    -
    -
    -
    public static enum MessageProperty.Type
    -extends Enum<MessageProperty.Type>
    -
    Enum for supported data types for a message property. - -

    This table describes the size of each data type: - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Data type sizes
    Data Type Size (in bytes)
    BOOL 1
    BYTE 1
    SHORT 2
    INT 4
    INT64 8
    STRING variable
    BINARY variable
    - -

    Note that the difference between 'BINARY' and 'STRING' data types is that the former - allows null ('\0') character while the later does not.

    -
  • -
-
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static MessageProperty.Type[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (MessageProperty.Type c : MessageProperty.Type.values())
        -    System.out.println(c);
        -
        -
        -
        Returns:
        -
        an array containing the constants of this enum type, in the order they are declared
        -
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static MessageProperty.Type valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        -
        Parameters:
        -
        name - the name of the enum constant to be returned.
        -
        Returns:
        -
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.html deleted file mode 100644 index 331eb4ba8..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/MessageProperty.html +++ /dev/null @@ -1,337 +0,0 @@ - - - - - - -MessageProperty (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface MessageProperty

-
-
-
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        type

        -
        MessageProperty.Type type()
        -
        Returns this property type.
        -
        -
        Returns:
        -
        Type property type
        -
        -
      • -
      - - - -
        -
      • -

        name

        -
        String name()
        -
        Returns this property name.
        -
        -
        Returns:
        -
        String property name
        -
        -
      • -
      - - - -
        -
      • -

        value

        -
        Object value()
        -
        Returns this property value.
        -
        -
        Returns:
        -
        Object property value
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/PushMessage.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/PushMessage.html deleted file mode 100644 index ced3dba46..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/PushMessage.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - -PushMessage (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface PushMessage

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    Event, QueueEvent
    -
    -
    -
    -
    public interface PushMessage
    -extends QueueEvent
    -
    PUSH message representation. - -

    PUSH mesage comes from the broker which sends it to the consumer if it is a subscriber of some - Queue that has PutMessage posted by the - producer.

    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        messageGUID

        -
        MessageGUID messageGUID()
        -
        Returns unique MessageGUID assigned to this message by the broker.
        -
        -
        Returns:
        -
        MessageGUID unique message GUID
        -
        -
      • -
      - - - -
        -
      • -

        hasMessageProperties

        -
        boolean hasMessageProperties()
        -
        Returns true if the application data of this message contains message properties.
        -
        -
        Returns:
        -
        boolean true if the application data has message properties, false - otherwise
        -
        See Also:
        -
        MessageProperty, -MessageProperties
        -
        -
      • -
      - - - -
        -
      • -

        propertyIterator

        -
        Iterator<MessageProperty> propertyIterator()
        -
        Returns a standart Iterator to iterate over existed properties.
        -
        -
        Returns:
        -
        Iterator property iterator
        -
        -
      • -
      - - - -
        -
      • -

        getProperty

        -
        MessageProperty getProperty(String name)
        -
        Returns property with specified (@code name).
        -
        -
        Parameters:
        -
        name - property name
        -
        Returns:
        -
        (@code MessageProperty) if property with such name exists or (@code null).
        -
        -
      • -
      - - - -
        -
      • -

        payload

        -
        ByteBuffer[] payload()
        -              throws BMQException
        -
        Returns user payload data of this message.
        -
        -
        Returns:
        -
        ByteBuffer[] array of byte buffers that represents the user payload
        -
        Throws:
        -
        BMQException - in case of any failure
        -
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/PushMessageHandler.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/PushMessageHandler.html deleted file mode 100644 index 12bd1b78a..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/PushMessageHandler.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - -PushMessageHandler (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface PushMessageHandler

-
-
-
-
    -
  • -
    -
    Functional Interface:
    -
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
    -
    -
    -
    -
    @FunctionalInterface
    -public interface PushMessageHandler
    -
    User callback interface to handle incoming PUSH messages.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        handlePushMessage

        -
        void handlePushMessage(PushMessage msg)
        -
        User specified PUSH message handler. - -

        Consumer needs to implement this interface to receive PUSH messages.

        -
        -
        Parameters:
        -
        msg - incoming PUSH message
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/PutMessage.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/PutMessage.html deleted file mode 100644 index 77aa53cde..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/PutMessage.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - - - -PutMessage (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface PutMessage

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    Event, QueueEvent
    -
    -
    -
    -
    public interface PutMessage
    -extends QueueEvent
    -
    PUT message representation.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setCorrelationId

        -
        CorrelationId setCorrelationId()
        -
        Sets and returns a new CorrelationId that contains an auto-assigned integer value - starting from 1 and up to 0xFFFFFF.
        -
        -
        Returns:
        -
        CorrelationId auto-generated correlation ID unique within process
        -
        -
      • -
      - - - -
        -
      • -

        setCorrelationId

        -
        CorrelationId setCorrelationId(Object obj)
        -
        Sets and returns a new CorrelationId that binds an auto-assigned integer value - starting from 1 and up to 0xFFFFFF and the user specified Object. The user - can expect that a valid CorrelationId provided to the PutMessage and the - CorrelationId obtained from the corresponding AckMessage will hold the same - Object available via CorrelationId.userData() accessor.
        -
        -
        Parameters:
        -
        obj - user specified object
        -
        Returns:
        -
        CorrelationId auto-generated correlation ID that stores the user specified object
        -
        -
      • -
      - - - -
        -
      • -

        correlationId

        -
        CorrelationId correlationId()
        -
        Get correlation Id of the message
        -
        -
        Returns:
        -
        correlation Id
        -
        -
      • -
      - - - -
        -
      • -

        messageProperties

        -
        MessageProperties messageProperties()
        -
        Get reference to the message properties object.
        -
        -
        Returns:
        -
        MessageProperties
        -
        -
      • -
      - - - -
        -
      • -

        queue

        -
        Queue queue()
        -
        Returns an interface to the queue that this message is related to.
        -
        -
        Specified by:
        -
        queue in interface QueueEvent
        -
        Returns:
        -
        Queue queue interface
        -
        -
      • -
      - - - -
        -
      • -

        setCompressionAlgorithm

        -
        void setCompressionAlgorithm(CompressionAlgorithm algorithm)
        -
        Sets message payload compression algorithm. See CompressionAlgorithm for available - options
        -
        -
        Parameters:
        -
        algorithm - payload compression algorithm
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/Queue.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/Queue.html deleted file mode 100644 index 43d1ad739..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/Queue.html +++ /dev/null @@ -1,509 +0,0 @@ - - - - - - -Queue (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface Queue

-
-
-
-
    -
  • -
    -
    -
    public interface Queue
    -
    SDK Queue representation.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        open

        -
        void open(QueueOptions options,
        -          Duration timeout)
        -
        Opens the queue synchronously. - -

        This operation will block until either success, failure, or timing out happens.

        -
        -
        Parameters:
        -
        options - the options to configure some advanced settings.
        -
        timeout - the operation timeout.
        -
        Throws:
        -
        BMQException - in case of failure.
        -
        See Also:
        -
        QueueOptions
        -
        -
      • -
      - - - -
        -
      • -

        openAsync

        -
        void openAsync(QueueOptions options,
        -               Duration timeout)
        -
        Opens the queue asynchronously. - -

        This operation will post open queue request and return immediately. Success, failure, or - timing out will be reported through QueueEventHandler

        -
        -
        Parameters:
        -
        options - the options to configure some advanced settings
        -
        timeout - the operation timeout
        -
        Throws:
        -
        BMQException - in case of failure
        -
        See Also:
        -
        QueueOptions
        -
        -
      • -
      - - - -
        -
      • -

        configure

        -
        void configure(QueueOptions options,
        -               Duration timeout)
        -
        Configures the queue synchronously. - -

        Fields from 'options' that have not been explicitly set will not be modified. - -

        This operation will block until either success, failure, or timing out happens.

        -
        -
        Parameters:
        -
        options - options to configure some advanced settings
        -
        timeout - operation timeout
        -
        Throws:
        -
        BMQException - in case of failure
        -
        See Also:
        -
        QueueOptions
        -
        -
      • -
      - - - -
        -
      • -

        configureAsync

        -
        void configureAsync(QueueOptions options,
        -                    Duration timeout)
        -
        Opens the queue asynchronously. - -

        Fields from 'options' that have not been explicitly set will not be modified. - -

        This operation will post configure queue request and return immediately. Success, failure, - or timing out will be reported through QueueEventHandler

        -
        -
        Parameters:
        -
        options - options to configure some advanced settings
        -
        timeout - operation timeout
        -
        Throws:
        -
        BMQException - in case of failure
        -
        See Also:
        -
        QueueOptions
        -
        -
      • -
      - - - -
        -
      • -

        close

        -
        void close(Duration timeout)
        -
        Closes the queue synchronously. - -

        This operation will block until either success, failure, or timing out happens.

        -
        -
        Parameters:
        -
        timeout - operation timeout
        -
        Throws:
        -
        BMQException - in case of failure
        -
        -
      • -
      - - - -
        -
      • -

        closeAsync

        -
        void closeAsync(Duration timeout)
        -
        Closes the queue asynchronously. - -

        This operation will post close queue request and return immediately. Success, failure, or - timing out will be reported through QueueEventHandler

        -
        -
        Parameters:
        -
        timeout - operation timeout
        -
        Throws:
        -
        BMQException - in case of failure
        -
        -
      • -
      - - - -
        -
      • -

        createPutMessage

        -
        PutMessage createPutMessage(ByteBuffer... payload)
        -
        Creates a PUT message object bounded to this queue with the specified payload
        -
        -
        Parameters:
        -
        payload - this message payload
        -
        Returns:
        -
        PutMessage that can be sent via this queue
        -
        Throws:
        -
        BMQException - in case of failure while setting the payload
        -
        RuntimeException - in case of other failures
        -
        -
      • -
      - - - -
        -
      • -

        post

        -
        void post(PutMessage message)
        -
        Sends a single PUT message to this queue.
        -
        -
        Parameters:
        -
        message - PUT message to be sent
        -
        Throws:
        -
        BMQException - in case of failure
        -
        -
      • -
      - - - -
        -
      • -

        pack

        -
        void pack(PutMessage message)
        -
        Adds a single PUT message to be sent withing multi message PUT event.
        -
        -
        Parameters:
        -
        message - PUT message to add
        -
        Throws:
        -
        BMQException - in case of failure
        -
        -
      • -
      - - - -
        -
      • -

        flush

        -
        void flush()
        -
        Sends previously packed PUT messages in one multi message PUT event.
        -
        -
        Throws:
        -
        BMQException - in case of failure
        -
        -
      • -
      - - - -
        -
      • -

        uri

        -
        Uri uri()
        -
        Gets queue URI.
        -
        -
        Returns:
        -
        Uri of this queue
        -
        -
      • -
      - - - -
        -
      • -

        isOpen

        -
        boolean isOpen()
        -
        Checks if the queue is opened.
        -
        -
        Returns:
        -
        true if the queue is opened, otherwise false
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.CloseQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.CloseQueueResult.html deleted file mode 100644 index cedbc684d..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.CloseQueueResult.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - -QueueControlEvent.CloseQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface QueueControlEvent.CloseQueueResult

-
-
-
- -
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.ConfigureQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.ConfigureQueueResult.html deleted file mode 100644 index 61227ec6e..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.ConfigureQueueResult.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - -QueueControlEvent.ConfigureQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface QueueControlEvent.ConfigureQueueResult

-
-
-
- -
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.OpenQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.OpenQueueResult.html deleted file mode 100644 index 71d76d940..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.OpenQueueResult.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - -QueueControlEvent.OpenQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface QueueControlEvent.OpenQueueResult

-
-
-
- -
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.ReopenQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.ReopenQueueResult.html deleted file mode 100644 index 93c1b4a58..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.ReopenQueueResult.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - -QueueControlEvent.ReopenQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface QueueControlEvent.ReopenQueueResult

-
-
-
- -
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.ResumeQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.ResumeQueueResult.html deleted file mode 100644 index b4e499f0b..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.ResumeQueueResult.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - -QueueControlEvent.ResumeQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface QueueControlEvent.ResumeQueueResult

-
-
-
- -
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.SuspendQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.SuspendQueueResult.html deleted file mode 100644 index 4095cb545..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.SuspendQueueResult.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - -QueueControlEvent.SuspendQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface QueueControlEvent.SuspendQueueResult

-
-
-
- -
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.Type.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.Type.html deleted file mode 100644 index c55dfde34..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.Type.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - - - -QueueControlEvent.Type (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Enum QueueControlEvent.Type

-
-
- -
- -
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static QueueControlEvent.Type[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (QueueControlEvent.Type c : QueueControlEvent.Type.values())
        -    System.out.println(c);
        -
        -
        -
        Returns:
        -
        an array containing the constants of this enum type, in the order they are declared
        -
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static QueueControlEvent.Type valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        -
        Parameters:
        -
        name - the name of the enum constant to be returned.
        -
        Returns:
        -
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.html deleted file mode 100644 index 122b29345..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueControlEvent.html +++ /dev/null @@ -1,328 +0,0 @@ - - - - - - -QueueControlEvent (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface QueueControlEvent

-
-
-
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        result

        -
        ResultCodes.GenericCode result()
        -
        Returns a result of the asynchronous operation.
        -
        -
        Returns:
        -
        GenericResult queue asynchronous operation result
        -
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueEvent.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueEvent.html deleted file mode 100644 index fbd516d17..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueEvent.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - -QueueEvent (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface QueueEvent

-
-
-
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        queue

        -
        Queue queue()
        -
        Returns an interface to the queue that this event is related to.
        -
        -
        Returns:
        -
        Queue queue interface
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueEventHandler.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueEventHandler.html deleted file mode 100644 index e3df0b2c7..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueEventHandler.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - -QueueEventHandler (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface QueueEventHandler

-
-
-
-
    -
  • -
    -
    Functional Interface:
    -
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
    -
    -
    -
    -
    @FunctionalInterface
    -public interface QueueEventHandler
    -
    User callback interface to handle queue related events.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueFlags.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueFlags.html deleted file mode 100644 index dae5eb441..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueFlags.html +++ /dev/null @@ -1,589 +0,0 @@ - - - - - - -QueueFlags (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Enum QueueFlags

-
-
- -
- -
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - - - - - - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      ACK -
      Set to indicate interested in receiving ACK events for all message posted
      -
      ADMIN -
      The queue is opened in admin mode (valid only for BlazingMQ admin tasks).
      -
      EMPTY 
      READ -
      The queue is opened for consuming messages.
      -
      WRITE -
      The queue is opened for posting messages.
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static booleanisAck(long flags) -
      Returns true if the specified flags represent ack required.
      -
      static booleanisAdmin(long flags) -
      Returns true if the specified flags represent an admin.
      -
      static booleanisReader(long flags) -
      Returns true if the specified flags represent a reader.
      -
      static booleanisWriter(long flags) -
      Returns true if the specified flags represent a writer.
      -
      static longsetAck(long flags) -
      Sets the specified flags representation for ack.
      -
      static longsetAdmin(long flags) -
      Sets the specified flags representation for admin.
      -
      static longsetReader(long flags) -
      Sets the specified flags representation for reader.
      -
      static longsetWriter(long flags) -
      Sets the specified flags representation for writer.
      -
      inttoInt() -
      Returns integer representation of this enum value.
      -
      static QueueFlagsvalueOf(String name) -
      Returns the enum constant of this type with the specified name.
      -
      static QueueFlags[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      - - -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        ADMIN

        -
        public static final QueueFlags ADMIN
        -
        The queue is opened in admin mode (valid only for BlazingMQ admin tasks).
        -
      • -
      - - - -
        -
      • -

        READ

        -
        public static final QueueFlags READ
        -
        The queue is opened for consuming messages.
        -
      • -
      - - - -
        -
      • -

        WRITE

        -
        public static final QueueFlags WRITE
        -
        The queue is opened for posting messages.
        -
      • -
      - - - -
        -
      • -

        ACK

        -
        public static final QueueFlags ACK
        -
        Set to indicate interested in receiving ACK events for all message posted
        -
      • -
      - - - -
        -
      • -

        EMPTY

        -
        public static final QueueFlags EMPTY
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static QueueFlags[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (QueueFlags c : QueueFlags.values())
        -    System.out.println(c);
        -
        -
        -
        Returns:
        -
        an array containing the constants of this enum type, in the order they are declared
        -
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static QueueFlags valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        -
        Parameters:
        -
        name - the name of the enum constant to be returned.
        -
        Returns:
        -
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
        -
      • -
      - - - -
        -
      • -

        toInt

        -
        public int toInt()
        -
        Returns integer representation of this enum value.
        -
        -
        Returns:
        -
        int this enum value as an integer
        -
        -
      • -
      - - - -
        -
      • -

        setReader

        -
        public static long setReader(long flags)
        -
        Sets the specified flags representation for reader.
        -
        -
        Parameters:
        -
        flags - initial flags value to modify
        -
        Returns:
        -
        long resulting flags value
        -
        -
      • -
      - - - -
        -
      • -

        setAdmin

        -
        public static long setAdmin(long flags)
        -
        Sets the specified flags representation for admin.
        -
        -
        Parameters:
        -
        flags - initial flags value to modify
        -
        Returns:
        -
        long resulting flags value
        -
        -
      • -
      - - - -
        -
      • -

        setWriter

        -
        public static long setWriter(long flags)
        -
        Sets the specified flags representation for writer.
        -
        -
        Parameters:
        -
        flags - initial flags value to modify
        -
        Returns:
        -
        long resulting flags value
        -
        -
      • -
      - - - -
        -
      • -

        setAck

        -
        public static long setAck(long flags)
        -
        Sets the specified flags representation for ack.
        -
        -
        Parameters:
        -
        flags - initial flags value to modify
        -
        Returns:
        -
        long resulting flags value
        -
        -
      • -
      - - - -
        -
      • -

        isReader

        -
        public static boolean isReader(long flags)
        -
        Returns true if the specified flags represent a reader.
        -
        -
        Parameters:
        -
        flags - flags value to check
        -
        Returns:
        -
        boolean true if the reader bit is set, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        isAdmin

        -
        public static boolean isAdmin(long flags)
        -
        Returns true if the specified flags represent an admin.
        -
        -
        Parameters:
        -
        flags - flags value to check
        -
        Returns:
        -
        boolean true if the admin bit is set, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        isWriter

        -
        public static boolean isWriter(long flags)
        -
        Returns true if the specified flags represent a writer.
        -
        -
        Parameters:
        -
        flags - flags value to check
        -
        Returns:
        -
        boolean true if the writer bit is set, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        isAck

        -
        public static boolean isAck(long flags)
        -
        Returns true if the specified flags represent ack required.
        -
        -
        Parameters:
        -
        flags - flags value to check
        -
        Returns:
        -
        boolean true if the ack required bit is set, false otherwise
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueOptions.Builder.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueOptions.Builder.html deleted file mode 100644 index 85af1e5b4..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueOptions.Builder.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - -QueueOptions.Builder (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Class QueueOptions.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    QueueOptions
    -
    -
    -
    -
    public static class QueueOptions.Builder
    -extends Object
    -
    A helper class to create immutable QueueOptions with custom settings.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        build

        -
        public QueueOptions build()
        -
        Returns queue options based on this object properties.
        -
        -
        Returns:
        -
        QueueOptions immutable queue option object
        -
        -
      • -
      - - - -
        -
      • -

        setMaxUnconfirmedMessages

        -
        public QueueOptions.Builder setMaxUnconfirmedMessages(long maxUnconfirmedMessages)
        -
        Sets maximum number of outstanding messages that can be sent by the broker without being - confirmed.
        -
        -
        Parameters:
        -
        maxUnconfirmedMessages - maximum number of outstanding messages
        -
        Returns:
        -
        Builder this object
        -
        -
      • -
      - - - -
        -
      • -

        setMaxUnconfirmedBytes

        -
        public QueueOptions.Builder setMaxUnconfirmedBytes(long maxUnconfirmedBytes)
        -
        Sets maximum accumulated bytes of all outstanding messages that can be sent by the broker - without being confirmed.
        -
        -
        Parameters:
        -
        maxUnconfirmedBytes - maximum accumulated bytes of all outstanding messages without - being confirmed
        -
        Returns:
        -
        Builder this object
        -
        -
      • -
      - - - -
        -
      • -

        setConsumerPriority

        -
        public QueueOptions.Builder setConsumerPriority(int consumerPriority)
        -
        Sets priority of a consumer with respect to delivery of messages.
        -
        -
        Parameters:
        -
        consumerPriority - priority of a consumer
        -
        Returns:
        -
        Builder this object
        -
        -
      • -
      - - - -
        -
      • -

        setSuspendsOnBadHostHealth

        -
        public QueueOptions.Builder setSuspendsOnBadHostHealth(boolean suspendsOnBadHostHealth)
        -
        Sets whether queue should suspend when the host machine is unhealthy.
        -
        -
        Parameters:
        -
        suspendsOnBadHostHealth - specifies whether queue suspends operation when host is - unhealthy
        -
        Returns:
        -
        Builder this object
        -
        -
      • -
      - - - -
        -
      • -

        merge

        -
        public QueueOptions.Builder merge(QueueOptions options)
        -
        "Merges" another 'QueueOptions' into this builder, by invoking setF(options.getF()) for - all fields 'F' for which 'options.hasF()' is true.
        -
        -
        Parameters:
        -
        options - specifies options which is merged into the builder
        -
        Returns:
        -
        Builder this object
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueOptions.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueOptions.html deleted file mode 100644 index 8ff335f7b..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/QueueOptions.html +++ /dev/null @@ -1,646 +0,0 @@ - - - - - - -QueueOptions (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Class QueueOptions

-
-
- -
-
    -
  • -
    -
    -
    @Immutable
    -public class QueueOptions
    -extends Object
    -
    A value-semantic type for options related to a queue. - -

    Provides a value-semantic type, QueueOptions, which is used to specify parameters for - a queue. The following parameters are supported: - -

      -
    • maxUnconfirmedMessages: Maximum number of outstanding messages that can be sent by - the broker without being confirmed. -
    • maxUnconfirmedBytes: Maximum accumulated bytes of all outstanding messages that can - be sent by the broker without being confirmed. -
    • consumerPriority: Priority of a consumer with respect to delivery of messages. -
    • suspendsOnBadHostHealth: Sets whether queue should suspend when the host machine is - unhealthy. -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Nested Class Summary

      - - - - - - - - - - -
      Nested Classes 
      Modifier and TypeClass and Description
      static class QueueOptions.Builder -
      A helper class to create immutable QueueOptions with custom settings.
      -
      -
    • -
    - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static QueueOptions.Builderbuilder() -
      Returns a helper class object to create immutable QueueOptions with custom settings.
      -
      static QueueOptionscreateDefault() -
      Returns queue options with default values.
      -
      booleanequals(Object obj) -
      Returns true if this QueueOptions is equal to the specified obj, false - otherwise.
      -
      intgetConsumerPriority() -
      Returns priority of a consumer with respect to delivery of messages.
      -
      longgetMaxUnconfirmedBytes() -
      Returns maximum accumulated bytes of all outstanding messages that can be sent by the broker - without being confirmed.
      -
      longgetMaxUnconfirmedMessages() -
      Returns maximum number of outstanding messages that can be sent by the broker without being - confirmed.
      -
      booleangetSuspendsOnBadHostHealth() -
      Gets whether queue suspends operation when the host machine is unhealthy.
      -
      booleanhasConsumerPriority() -
      Returns whether consumerPriority has been set for this object, or whether it - implicitly holds k_CONSUMER_PRIORITY_DEFAULT.
      -
      inthashCode() -
      Returns a hash code value for this QueueOptions object.
      -
      booleanhasMaxUnconfirmedBytes() -
      Returns whether maxUnconfirmedBytes has been set for this object, or whether it - implicitly holds k_MAX_UNCONFIRMED_BYTES_DEFAULT.
      -
      booleanhasMaxUnconfirmedMessages() -
      Returns whether maxUnconfirmedMessages has been set for this object, or whether it - implicitly holds k_MAX_UNCONFIRMED_MESSAGES_DEFAULT.
      -
      booleanhasSuspendsOnBadHostHealth() -
      Returns whether suspendsOnBadHostHealth has been set for this object, or whether it - implicitly holds k_SUSPENDS_ON_BAD_HOST_HEALTH_DEFAULT.
      -
      StringtoString() 
      - -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        k_MAX_UNCONFIRMED_MESSAGES_DEFAULT

        -
        public static final long k_MAX_UNCONFIRMED_MESSAGES_DEFAULT
        -
        Default maximum number of outstanding messages that can be sent by the broker without being - confirmed.
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        k_MAX_UNCONFIRMED_BYTES_DEFAULT

        -
        public static final long k_MAX_UNCONFIRMED_BYTES_DEFAULT
        -
        Default maximum accumulated bytes of all outstanding messages that can be sent by the broker - without being confirmed.
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        k_CONSUMER_PRIORITY_DEFAULT

        -
        public static final int k_CONSUMER_PRIORITY_DEFAULT
        -
        Default priority of a consumer with respect to delivery of messages.
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        k_SUSPENDS_ON_BAD_HOST_HEALTH_DEFAULT

        -
        public static final boolean k_SUSPENDS_ON_BAD_HOST_HEALTH_DEFAULT
        -
        By default, queue is not sensitive to host-health changes.
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        equals

        -
        public boolean equals(Object obj)
        -
        Returns true if this QueueOptions is equal to the specified obj, false - otherwise. Two QueueOptions are equal if they have equal properties.
        -
        -
        Overrides:
        -
        equals in class Object
        -
        Parameters:
        -
        obj - QueueOptions object to compare with
        -
        Returns:
        -
        boolean true if QueueOptions are equal, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        Returns a hash code value for this QueueOptions object.
        -
        -
        Overrides:
        -
        hashCode in class Object
        -
        Returns:
        -
        int a hash code value for this object.
        -
        -
      • -
      - - - -
        -
      • -

        getMaxUnconfirmedMessages

        -
        public long getMaxUnconfirmedMessages()
        -
        Returns maximum number of outstanding messages that can be sent by the broker without being - confirmed. If not set, returns default value.
        -
        -
        Returns:
        -
        long maximum number of outstanding messages
        -
        -
      • -
      - - - -
        -
      • -

        hasMaxUnconfirmedMessages

        -
        public boolean hasMaxUnconfirmedMessages()
        -
        Returns whether maxUnconfirmedMessages has been set for this object, or whether it - implicitly holds k_MAX_UNCONFIRMED_MESSAGES_DEFAULT.
        -
        -
        Returns:
        -
        boolean true if maxUnconfirmedMessages has been set.
        -
        -
      • -
      - - - -
        -
      • -

        getMaxUnconfirmedBytes

        -
        public long getMaxUnconfirmedBytes()
        -
        Returns maximum accumulated bytes of all outstanding messages that can be sent by the broker - without being confirmed. If not set returns default value.
        -
        -
        Returns:
        -
        long maximum accumulated bytes of all outstanding messages without being confirmed
        -
        -
      • -
      - - - -
        -
      • -

        hasMaxUnconfirmedBytes

        -
        public boolean hasMaxUnconfirmedBytes()
        -
        Returns whether maxUnconfirmedBytes has been set for this object, or whether it - implicitly holds k_MAX_UNCONFIRMED_BYTES_DEFAULT.
        -
        -
        Returns:
        -
        boolean true if maxUnconfirmedBytes has been set.
        -
        -
      • -
      - - - -
        -
      • -

        getConsumerPriority

        -
        public int getConsumerPriority()
        -
        Returns priority of a consumer with respect to delivery of messages. If not set, returns - default value.
        -
        -
        Returns:
        -
        int priority of a consumer
        -
        -
      • -
      - - - -
        -
      • -

        hasConsumerPriority

        -
        public boolean hasConsumerPriority()
        -
        Returns whether consumerPriority has been set for this object, or whether it - implicitly holds k_CONSUMER_PRIORITY_DEFAULT.
        -
        -
        Returns:
        -
        boolean true if consumerPriority has been set.
        -
        -
      • -
      - - - -
        -
      • -

        getSuspendsOnBadHostHealth

        -
        public boolean getSuspendsOnBadHostHealth()
        -
        Gets whether queue suspends operation when the host machine is unhealthy. If not set, returns - default value.
        -
        -
        Returns:
        -
        boolean true if queue suspends operation when the host machine is unhealthy
        -
        -
      • -
      - - - -
        -
      • -

        hasSuspendsOnBadHostHealth

        -
        public boolean hasSuspendsOnBadHostHealth()
        -
        Returns whether suspendsOnBadHostHealth has been set for this object, or whether it - implicitly holds k_SUSPENDS_ON_BAD_HOST_HEALTH_DEFAULT.
        -
        -
        Returns:
        -
        boolean true if suspendsOnBadHostHealth has been set.
        -
        -
      • -
      - - - -
        -
      • -

        builder

        -
        public static QueueOptions.Builder builder()
        -
        Returns a helper class object to create immutable QueueOptions with custom settings.
        -
        -
        Returns:
        -
        Builder a helper class object to create immutable QueueOptions
        -
        -
      • -
      - - - -
        -
      • -

        createDefault

        -
        public static QueueOptions createDefault()
        -
        Returns queue options with default values.
        -
        -
        Returns:
        -
        QueueOptions queue option object with default values
        -
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.AckCode.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.AckCode.html deleted file mode 100644 index 47695c358..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.AckCode.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - -ResultCodes.AckCode (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface ResultCodes.AckCode

-
-
-
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        isLimitMessages

        -
        default boolean isLimitMessages()
        -
      • -
      - - - -
        -
      • -

        isLimitBytes

        -
        default boolean isLimitBytes()
        -
      • -
      - - - -
        -
      • -

        isStorageFailure

        -
        default boolean isStorageFailure()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.AckResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.AckResult.html deleted file mode 100644 index 9d74a0089..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.AckResult.html +++ /dev/null @@ -1,515 +0,0 @@ - - - - - - -ResultCodes.AckResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Enum ResultCodes.AckResult

-
-
- -
- -
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.CloseQueueCode.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.CloseQueueCode.html deleted file mode 100644 index 01bf21580..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.CloseQueueCode.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - -ResultCodes.CloseQueueCode (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface ResultCodes.CloseQueueCode

-
-
-
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        isAlreadyClosed

        -
        default boolean isAlreadyClosed()
        -
      • -
      - - - -
        -
      • -

        isAlreadyInProgress

        -
        default boolean isAlreadyInProgress()
        -
      • -
      - - - -
        -
      • -

        isUnknownQueue

        -
        default boolean isUnknownQueue()
        -
      • -
      - - - -
        -
      • -

        isInvalidQueue

        -
        default boolean isInvalidQueue()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.CloseQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.CloseQueueResult.html deleted file mode 100644 index 370010a6b..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.CloseQueueResult.html +++ /dev/null @@ -1,541 +0,0 @@ - - - - - - -ResultCodes.CloseQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Enum ResultCodes.CloseQueueResult

-
-
- -
- -
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.ConfigureQueueCode.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.ConfigureQueueCode.html deleted file mode 100644 index 7b9752723..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.ConfigureQueueCode.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - -ResultCodes.ConfigureQueueCode (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface ResultCodes.ConfigureQueueCode

-
-
-
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        isAlreadyInProgress

        -
        default boolean isAlreadyInProgress()
        -
      • -
      - - - -
        -
      • -

        isInvalidQueue

        -
        default boolean isInvalidQueue()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.ConfigureQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.ConfigureQueueResult.html deleted file mode 100644 index d54d376c9..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.ConfigureQueueResult.html +++ /dev/null @@ -1,517 +0,0 @@ - - - - - - -ResultCodes.ConfigureQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Enum ResultCodes.ConfigureQueueResult

-
-
- - -
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.GenericCode.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.GenericCode.html deleted file mode 100644 index ec59a9561..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.GenericCode.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - -ResultCodes.GenericCode (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface ResultCodes.GenericCode

-
-
- -
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - - - - - -
        -
      • -

        isSuccess

        -
        default boolean isSuccess()
        -
      • -
      - - - -
        -
      • -

        isUnknown

        -
        default boolean isUnknown()
        -
      • -
      - - - -
        -
      • -

        isTimeout

        -
        default boolean isTimeout()
        -
      • -
      - - - -
        -
      • -

        isNotConnected

        -
        default boolean isNotConnected()
        -
      • -
      - - - -
        -
      • -

        isCanceled

        -
        default boolean isCanceled()
        -
      • -
      - - - -
        -
      • -

        isNotSupproted

        -
        default boolean isNotSupproted()
        -
      • -
      - - - -
        -
      • -

        isRefused

        -
        default boolean isRefused()
        -
      • -
      - - - -
        -
      • -

        isInvalidArgument

        -
        default boolean isInvalidArgument()
        -
      • -
      - - - -
        -
      • -

        isNotReady

        -
        default boolean isNotReady()
        -
      • -
      - - - -
        -
      • -

        isFailure

        -
        default boolean isFailure()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.GenericResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.GenericResult.html deleted file mode 100644 index a257273d4..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.GenericResult.html +++ /dev/null @@ -1,503 +0,0 @@ - - - - - - -ResultCodes.GenericResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Enum ResultCodes.GenericResult

-
-
- -
- -
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.OpenQueueCode.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.OpenQueueCode.html deleted file mode 100644 index 133a370e5..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.OpenQueueCode.html +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - -ResultCodes.OpenQueueCode (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface ResultCodes.OpenQueueCode

-
-
-
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        isAlreadyOpened

        -
        default boolean isAlreadyOpened()
        -
      • -
      - - - -
        -
      • -

        isAlreadyInProgress

        -
        default boolean isAlreadyInProgress()
        -
      • -
      - - - -
        -
      • -

        isInvalidUri

        -
        default boolean isInvalidUri()
        -
      • -
      - - - -
        -
      • -

        isInvalidFlags

        -
        default boolean isInvalidFlags()
        -
      • -
      - - - -
        -
      • -

        isQueueIdNotUnique

        -
        default boolean isQueueIdNotUnique()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.OpenQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.OpenQueueResult.html deleted file mode 100644 index c6150ad9c..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.OpenQueueResult.html +++ /dev/null @@ -1,553 +0,0 @@ - - - - - - -ResultCodes.OpenQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Enum ResultCodes.OpenQueueResult

-
-
- -
- -
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.OperationResultCode.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.OperationResultCode.html deleted file mode 100644 index 05a281e59..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.OperationResultCode.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - -ResultCodes.OperationResultCode (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface ResultCodes.OperationResultCode<RESULT extends ResultCodes.GenericCode>

-
-
-
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getOperationResult

        -
        RESULT getOperationResult()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.html deleted file mode 100644 index 2d5f4720b..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/ResultCodes.html +++ /dev/null @@ -1,297 +0,0 @@ - - - - - - -ResultCodes (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Class ResultCodes

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ResultCodes

        -
        public ResultCodes()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/Session.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/Session.html deleted file mode 100644 index ba44a5a1d..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/Session.html +++ /dev/null @@ -1,839 +0,0 @@ - - - - - - -Session (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Class Session

-
-
- -
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    AbstractSession
    -
    -
    -
    -
    public final class Session
    -extends Object
    -implements AbstractSession
    -
    Provides access to the BlazingMQ broker. - -

    This component provides access to a message queue broker. The broker manages named, persistent - queues of messages. This broker allows a client to open queues, post messages to them, or - retrieve messages from them. All of these operations take place within the context of the session - opened by the client application. - -

    Messages received from a broker are communicated to the application by the session associated - with that broker in the form of events (see Event). Events can be of - two different types: (1) Messages and queue status events (QueueEvent), - or (2) Session status events (SessionEvent). - -

    A Session dispatches events to the application in an asynchronous mode. The applicaton - must supply a concrete SessionEventHandler object at construction time. - The concrete SessionEventHandler provided by the application must implement the SessionEventHandler.handleSessionEvent() method, which will be called by the Session - every time a session event is received. - -

    Note that the concrete SessionEventHandler may implement a handler for the specific - session event type and it will be called by the Session for that event instead of the - default handleSessionEvent. - -

    A Session allows start and stop operations in synchronous or - asynchronous version for the convenience of the programmer. - -

    By default a Session connects to the local broker, which in turn may connect to a - remote cluster based on configuration. - -

    After a Session started, the application has to open one or several queues in read - and/or write mode (see AbstractSession.getQueue()). - -

    Disclaimer

    - - A Session object is a heavy object representing the negotiated TCP session with the - broker, and the entire associated state (opened queues, etc.) Therefore, there should only be - one session per task, created at task startup and closed at task shutdown. It is extremely - inefficient, and an abuse of resource to create a session ad-hoc every time a message needs to be - posted. - -

    Thread-safety

    - - This session object is thread enabled, meaning that two threads can safely call any - methods on the same instance without external synchronization. - -

    Connecting to the Broker

    - - A Session establishes a communication with a broker service using TCP/IP. Each Session object must be constructed with a SessionOptions object, which - provides the necessary information to connect to the broker. In particular, the SessionOptions object must specify the IP address and port needed to connect to the broker. The - SessionOptions object may also provide extra parameters for tuning the TCP connection - behavior. - -

    Note that in most cases the user does not need to explicitly construct a SessionOptions object: the default factory method SessionOptions.createDefault() creates an instance that will connect to the - broker service on the local machine using the standard port. - -

    A Session object is created in an unconnected state. The start or startAsync method must be called to connect to the broker. Note that start method is - blocking, and returns either after connection to broker has been established (success), or after - specified timeout (failure). startAsync method, as the name suggests, connects to the - broker asynchronously (i.e., it returns immediately), and the result of the operation is notified - via SessionEvent.StartStatus session event. - -

    When the Session is no longer needed, the application should call the stop - (blocking) or stopAsync (non-blocking) method to disconnect from the broker. Note that - the session can be restarted with a call to start or startAsync once it has been - fully stopped. To fully shut down the session linger should be called after stop, and - after that the session restart is not possible any more. - -

    Connection loss and reconnection

    - - If the connection between the application and the broker is lost, the Session will - automatically try to reconnect periodically. The Session will also notify the application - of the event of losing the connection via SessionEvent.ConnectionLost - session event. - -

    Once the connection has been re-established with the broker (as a result of one of the - periodic reconnection attempts), the Session will notify the application via SessionEvent.Reconnected session event. After the connection re-establishment, - the Session will attempt to reopen the queues that were in OPEN state prior to - connection loss. The Session will notify the application of the result of reopen - operation via QueueControlEvent.ReopenQueueResult for each queue. Note - that a reopen operation on a queue may fail (due to broker issue, machine issue, etc), so the - application must keep track on these session events, and stop posting on a queue that failed to - reopen. - -

    After all reopen operations are complete and application has been notified with all ReopenQueueResult events, the Session delivers a SessionEvent.StateRestored session event to the application. - -

    Note that if there were no opened queues prior to connection loss then the Session - will send StateRestored event immediately after Reconnected session event. - -

    Example 1

    - - The following example illustrates how to create a Session start it, stop and shutdown it. - -
    - void runSession()  {
    -     SessionOptions sessionOptions = SessionOptions.builder()
    -                .setBrokerUri(URI.create(tcp://localhost:30114")
    -                .build();
    -     AbstractSession session = new Session(sessionOptions, null);
    -     try {
    -         session.start(Duration.ofSeconds(10));
    -         System.out.println("Session started");
    -
    -         // Open queue in READ or WRITE or READ/WRITE mode, and receive or
    -         // post messages, etc.
    -
    -         session.stop(Duration.ofSeconds(10));
    -     } catch (BMQException e) {
    -         System.out.println("Operation error: " + e);
    -     } finally {
    -         session.linger();
    -     }
    - }
    - 
    - - This example can be simplified because the constructor for Session uses a default SessionOptions object that will connect to the local broker service. The example may be - rewritten as follow: - -
    - void runSession()  {
    -     AbstractSession session = new Session(null);
    -     try {
    -         session.start(Duration.ofSeconds(10));
    -         System.out.println("Session started");
    -
    -         // Open queue in READ or WRITE or READ/WRITE mode, and receive or
    -         // post messages, etc.
    -
    -         session.stop(Duration.ofSeconds(10));
    -     } catch (BMQException e) {
    -         System.out.println("Operation error: " + e);
    -     } finally {
    -         session.linger();
    -     }
    - }
    - 
    - -

    Processing session events

    - - If the Session is created with non null SessionEventHandler - then it will be used to notify the application about session events like results of Session.startAsync() and Session.stopAsync() operations, and connection statuses like - SessionEvent.ConnectionLost, SessionEvent.Reconnected, SessionEvent.StateRestored. Each event may be handled in its special callback if the application - implements related method, e.g. SessionEventHandler.handleStartStatusSessionEvent(), or it can use the default implementation - that calls SessionEventHandler.handleSessionEvent(), for each session event without user defined handler. - -

    Example 2

    - - The following example demonstrates a usage of the simplest SessionEventHandler - -
    -        Session session = new Session(new SessionEventHandler() {
    -
    -               public void handleSessionEvent(SessionEvent event) {
    -                   switch (event.type()) {
    -                   case START_STATUS_SESSION_EVENT:
    -                       GenericResult result = ((SessionEvent.StartStatus)event).result();
    -                       if (result.isSuccess()) {
    -                           System.out.println("The connection to the broker is established");
    -                           openQueues();
    -                           startPostingToQueues();
    -                       } else if (result.isTimeout()) {
    -                           System.out.println("The connection to the broker has timed out");
    -                       }
    -                       break;
    -                   case STOP_STATUS_SESSION_EVENT:
    -                       GenericResult result = ((SessionEvent.StopStatus)event).result();
    -                       if (result.isSuccess()) {
    -                           System.out.println("The connection to the broker is closed gracefully");
    -                       }
    -                       break;
    -                   case CONNECTION_LOST_SESSION_EVENT:
    -                       // The connection to the broker dropped. Stop posting to the queue.
    -                       stopPostingToQueues();
    -                       break;
    -                   case RECONNECTED_SESSION_EVENT:
    -                       // The connection to the broker has been restored, but the queue may not be ready yet.
    -                       break;
    -                   case STATE_RESTORED_SESSION_EVENT:
    -                       // The connection to the broker has been restored and all queues
    -                       // have been re-opened. Resume posting to the queue.
    -                       resumePostingToQueues();
    -                       break;
    -                   cae UNKNOWN_SESSION_EVENT:
    -                   default:
    -                       System.out.println("Unexpected session event: " + event);
    -                   }
    -               }
    -           });
    -
    -       session.startAsync(Duration.ofSeconds(10));
    - 
    - - And in the following version session start status event will be handled in a separate callback - while all the other session events will be passed to handleSessionEvent - -
    -
    -       Session session = new Session( new SessionEventHandler() {
    -
    -               public void handleSessionEvent(SessionEvent event) {
    -                   System.out.println("Other session event: " + event);
    -               }
    -
    -               public void handleStartStatusSessionEvent(SessionEvent.StartStatus event) {
    -                   System.out.println("Session start status: " + event.result());
    -                   if (event.result().isSuccess()) {
    -                       System.out.println("The connection to the broker is established");
    -                   }
    -               }
    -            });
    -
    -      session.startAsync(Duration.ofSeconds(10));
    - 
    - - Note that after the Session is associated with some session event handler, this - association cannot be changed or canceled. The event handler will be used for processing events - until the Session.linger() is called. - -

    Opening queues

    - - Once the Session has been created and started, the application can use it to open queues - for producing and/or consuming messages. A queue is associated with a domain. Domain metadata - must be deployed in the BlazingMQ infrastructure prior to opening queues under that domain, - because opening a queue actually loads the metadata deployed for the associated domain. - -

    The metadata associated with a domain defines various parameters like maximum queue size and - capacity, persistent policy, routing policy, etc. - -

    Queue are identified by URIs (Unified Resource Identifiers) that must follow the BlazingMQ - syntax, manipulated as Uri objects. A queue URI is typically formatted - as follows: - -

    -
    -  bmq://my.domain/my.queue
    - 
    - - Note that domain names are unique in BlazingMQ infrastructure, which makes a fully qualified - queue URI unique too. - -

    Queues in BlazingMQ infrastructure are created by applications on demand. Broker creates a - queue when it receives an open-queue request from an application for a queue that does not exist - currently. - -

    Application can open a queue by calling AbstractSession.getQueue() method on a started session. Application must pass appropriate flags - to indicate if it wants to post messages to queue, consume messages from the queue, or both. Also - it has to provide concrete QueueEventHandler to recieve queue related - events. Depending on the queue flags it also needs to supply concrete AckMessageHandler it the queue will be used for message posting. This handler - will be called each time when ACK event comes from the broker. And if the queue will be - used for comsuming the messages then PushMessageHandler should be - supplied. It will be called on each incoming PushMessage. Once the - application obtainns the Queue interface it can call Queue.open() or Queue.openAsync(). - -

    Note that open is a blocking method, and returns after the queue has been successfully - opened (success) or after specified timeout has expired (failure). openAsync method, as - the name suggests, is non blocking, and the result of the operation is notified via QueueControlEvent.OpenQueueResult session event. - -

    Example 3

    - - The following example demonstrates how to open a queue for posting messages. The code first opens - the queue with appropriate flags, and then uses Queue.createPutMessage(java.nio.ByteBuffer...) - to create a message and post to the queue. - -
    
    - // Session creation, startup logic and exception handling elided for brevity
    - Uri queueUri = new Uri("bmq://my.domain/my.queue");
    -
    - // Application can implement concrete QueueMessageHandler and AckMessageHandler,
    - // or e.g. use a functional interface feature with a standard collection.
    - ArrayList<QueueControlEvent> queueEvents = new ArrayList();
    - ArrayList<AckMessage> ackMessages = new ArrayList();
    -
    - long flags = QueueFlags.setWriter(0);
    - flags = QueueFlags.setAck(flags);
    -
    - Queue myQueue = session.getQueue(
    -                     queueUri,
    -                     flags,            // Setup queue flag for producer
    -                     queueEvents::add, // QueueEventHandler is a functional interface
    -                     ackMessages::add, // AckMessageHandler is a functional interface
    -                     null);            // PushMessageHandler is null since we don't want
    -                                       // to receive messages
    - myQueue.open(QueueOptions.createDefault(), Duration.ofSeconds(5));
    - 
    - - Note that apart from QueueFlags.WRITE flag, QueueFlags.ACK flag has been passed to getQueue method above. This - indicates that application is interested in receiving ACK notification for each message - it posts to the queue, irrespective of whether or not the message was successfully received by - the broker and posted to the queue. Also note that if the queue has QueueFlags.ACK} flag - then every PUT message that is going to be posted via this queue should have a valid - CorrelationId, see Queue.createPutMessage(java.nio.ByteBuffer...). - -

    Once the queue has been successfully opened for writing, messages can be posted to the queue - for consumption by interested applications. - -

    -    // Prepare user payload
    -    String userMessage = "Hello!";
    -    ByteBuffer byteBuffer = ByteBuffer.wrap(userMessage.getBytes());
    -
    -    // Get PUT message interface from the opened queue
    -    PutMessage msg = myQueue.createPutMessage(byteBuffer);
    -
    -    // Add unique correlation ID. The broker will send ACK in response to this message.
    -    // The ID can be used to bind this message with the corresponding ACK.
    -    msg.setAutoCorrelationId();
    -
    -    // Add some optional properties
    -    MessageProperties mp = msg.messageProperties();
    -    mp.setPropertyAsString("myId", "abcd-efgh-ijkl");
    -    mp.setPropertyAsInt64("timestamp", 123456789L);
    -
    -    // Post this message to the queue
    -    myQueue.post(msg);
    - 
    - - To post multiple messages at once the application may use Queue.pack() and Queue.flush() methods: - -
    
    - for (int i = 0; i < 10; i++) {
    -     PutMessage msg = myQueue.createPutMessage(payload);
    -     // ... Set CorrelationID message properties
    -
    -     myQueue.pack(msg);
    - }
    - // Now post the messages all together
    - myQueue.flush();
    - 
    - -

    Closing queues

    - - After an application no longer needs to produce or consume messages from a queue, it can be - closed by Queue.close() or Queue.closeAsync() method. Note that closing a queue closes - an application's "view" on the queue, and may not lead to queue deletion in the broker. A Session does not expose any method to explicitly delete a queue. - -

    Note that close is a blocking method and returns after the queue has been successfully - closed (success) or after specified timeout has expired (failure). closeAsync, as the - name suggests, is a non-blocking method, and result of the operation is notified via QueueControlEvent.CloseQueueResult queue event.

    -
  • -
-
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        start

        -
        public void start(Duration timeout)
        -
        Connects to the BlazingMQ broker and start the message processing. - -

        This method blocks until either the session is connected to the broker, fails to connect, - or the operation times out.

        -
        -
        Specified by:
        -
        start in interface AbstractSession
        -
        Parameters:
        -
        timeout - start timeout value
        -
        Throws:
        -
        BMQException - if start attempt failed
        -
        -
      • -
      - - - -
        -
      • -

        startAsync

        -
        public void startAsync(Duration timeout)
        -
        Connects to the BlazingMQ broker and start the message processing - -

        This method returns without blocking. The result of the operation is communicated with a - session event. If the optionally specified 'timeout' is not populated, use the one defined in - the session options.

        -
        -
        Specified by:
        -
        startAsync in interface AbstractSession
        -
        Parameters:
        -
        timeout - start timeout value
        -
        Throws:
        -
        BMQException - in case of failure
        -
        -
      • -
      - - - -
        -
      • -

        isStarted

        -
        public boolean isStarted()
        -
        Checks if the session is started.
        -
        -
        Specified by:
        -
        isStarted in interface AbstractSession
        -
        Returns:
        -
        true if the session is started, otherwise false
        -
        -
      • -
      - - - -
        -
      • -

        stop

        -
        public void stop(Duration timeout)
        -
        Gracefully disconnects from the BlazingMQ broker and stop the operation of this session. - -

        This method blocks waiting for all already invoked event handlers to exit and all - session-related operations to be finished.

        -
        -
        Specified by:
        -
        stop in interface AbstractSession
        -
        Parameters:
        -
        timeout - stop timeout value
        -
        Throws:
        -
        BMQException - if stop attempt failed
        -
        -
      • -
      - - - -
        -
      • -

        stopAsync

        -
        public void stopAsync(Duration timeout)
        -
        Gracefully disconnects from the BlazingMQ broker and stop the operation of this session. - -

        This method returns without blocking. The result of the operation is communicated with a - session event. If the optionally specified timeout is not populated, use the one - defined in the session options.

        -
        -
        Specified by:
        -
        stopAsync in interface AbstractSession
        -
        Parameters:
        -
        timeout - stop timeout value
        -
        Throws:
        -
        BMQException - in case of failure
        -
        -
      • -
      - - - -
        -
      • -

        linger

        -
        public void linger()
        -
        Shutdowns all connection and event handling threads. - -

        This method must be called when the session is stopped. No other method may be used after - this method returns.

        -
        -
        Specified by:
        -
        linger in interface AbstractSession
        -
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.ConnectionLost.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.ConnectionLost.html deleted file mode 100644 index 23438681e..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.ConnectionLost.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - -SessionEvent.ConnectionLost (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface SessionEvent.ConnectionLost

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    Event, SessionEvent
    -
    -
    -
    Enclosing interface:
    -
    SessionEvent
    -
    -
    -
    -
    public static interface SessionEvent.ConnectionLost
    -extends SessionEvent
    -
    Event that notifies the session has lost the broker connection.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.HostHealthRestored.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.HostHealthRestored.html deleted file mode 100644 index 023499c42..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.HostHealthRestored.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - -SessionEvent.HostHealthRestored (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface SessionEvent.HostHealthRestored

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    Event, SessionEvent
    -
    -
    -
    Enclosing interface:
    -
    SessionEvent
    -
    -
    -
    -
    public static interface SessionEvent.HostHealthRestored
    -extends SessionEvent
    -
    Event that notifies the health of the host has restored.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.HostUnhealthy.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.HostUnhealthy.html deleted file mode 100644 index 9d0df83d9..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.HostUnhealthy.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - -SessionEvent.HostUnhealthy (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface SessionEvent.HostUnhealthy

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    Event, SessionEvent
    -
    -
    -
    Enclosing interface:
    -
    SessionEvent
    -
    -
    -
    -
    public static interface SessionEvent.HostUnhealthy
    -extends SessionEvent
    -
    Event that notifies the host has become unhealthy.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.Reconnected.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.Reconnected.html deleted file mode 100644 index 610ffcb8e..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.Reconnected.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - -SessionEvent.Reconnected (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface SessionEvent.Reconnected

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    Event, SessionEvent
    -
    -
    -
    Enclosing interface:
    -
    SessionEvent
    -
    -
    -
    -
    public static interface SessionEvent.Reconnected
    -extends SessionEvent
    -
    Event that notifies the session has restored the broker connection.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.SlowConsumerHighWatermark.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.SlowConsumerHighWatermark.html deleted file mode 100644 index c6df64b1a..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.SlowConsumerHighWatermark.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - -SessionEvent.SlowConsumerHighWatermark (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface SessionEvent.SlowConsumerHighWatermark

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    Event, SessionEvent
    -
    -
    -
    Enclosing interface:
    -
    SessionEvent
    -
    -
    -
    -
    public static interface SessionEvent.SlowConsumerHighWatermark
    -extends SessionEvent
    -
    Event that notifies the inbound event buffer has reached the high watermark value.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.SlowConsumerNormal.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.SlowConsumerNormal.html deleted file mode 100644 index 82398e823..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.SlowConsumerNormal.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - -SessionEvent.SlowConsumerNormal (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface SessionEvent.SlowConsumerNormal

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    Event, SessionEvent
    -
    -
    -
    Enclosing interface:
    -
    SessionEvent
    -
    -
    -
    -
    public static interface SessionEvent.SlowConsumerNormal
    -extends SessionEvent
    -
    Event that notifies the inbound event buffer has reached the low watermark value.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.StartStatus.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.StartStatus.html deleted file mode 100644 index f5866ee29..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.StartStatus.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - -SessionEvent.StartStatus (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface SessionEvent.StartStatus

-
-
-
- -
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.StateRestored.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.StateRestored.html deleted file mode 100644 index d9fcc991f..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.StateRestored.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - -SessionEvent.StateRestored (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface SessionEvent.StateRestored

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    Event, SessionEvent
    -
    -
    -
    Enclosing interface:
    -
    SessionEvent
    -
    -
    -
    -
    public static interface SessionEvent.StateRestored
    -extends SessionEvent
    -
    Event that notifies the session has restored the state of all opened queues.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.StopStatus.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.StopStatus.html deleted file mode 100644 index b62c5934f..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.StopStatus.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - -SessionEvent.StopStatus (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface SessionEvent.StopStatus

-
-
-
- -
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.Type.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.Type.html deleted file mode 100644 index 36a3cd041..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.Type.html +++ /dev/null @@ -1,481 +0,0 @@ - - - - - - -SessionEvent.Type (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Enum SessionEvent.Type

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - - - - - - - - - -
        -
      • -

        CONNECTION_LOST_SESSION_EVENT

        -
        public static final SessionEvent.Type CONNECTION_LOST_SESSION_EVENT
        -
        Session event generated in case of the broker connection is lost.
        -
      • -
      - - - -
        -
      • -

        RECONNECTED_SESSION_EVENT

        -
        public static final SessionEvent.Type RECONNECTED_SESSION_EVENT
        -
        Session event generated in case of the broker connection is restored.
        -
      • -
      - - - -
        -
      • -

        STATE_RESTORED_SESSION_EVENT

        -
        public static final SessionEvent.Type STATE_RESTORED_SESSION_EVENT
        -
        Session event generated after the broker connection is restored and all of the opened - queues are in a valid state.
        -
      • -
      - - - -
        -
      • -

        SLOW_CONSUMER_HIGH_WATERMARK_SESSION_EVENT

        -
        public static final SessionEvent.Type SLOW_CONSUMER_HIGH_WATERMARK_SESSION_EVENT
        -
        Session event generated in case of the inbound event buffer size has exceeded user - defined high watermark value.
        -
      • -
      - - - -
        -
      • -

        SLOW_CONSUMER_NORMAL_SESSION_EVENT

        -
        public static final SessionEvent.Type SLOW_CONSUMER_NORMAL_SESSION_EVENT
        -
        Session event generated in case of the inbound event buffer size has decreased and - returned to user defined low watermark value.
        -
      • -
      - - - -
        -
      • -

        HOST_UNHEALTHY_SESSION_EVENT

        -
        public static final SessionEvent.Type HOST_UNHEALTHY_SESSION_EVENT
        -
        Session event generated in case the host has become unhealthy. Only issued if a HostHealthMonitor has been installed to the session, via the SessionOptions object.
        -
      • -
      - - - -
        -
      • -

        HOST_HEALTH_RESTORED_SESSION_EVENT

        -
        public static final SessionEvent.Type HOST_HEALTH_RESTORED_SESSION_EVENT
        -
        Session event generated in case the health of the host has restored, and all queues have - resumed operation. Following a Host Health incident, this indicates that the application - has resumed normal operation.
        -
      • -
      - - - -
        -
      • -

        UNKNOWN_SESSION_EVENT

        -
        public static final SessionEvent.Type UNKNOWN_SESSION_EVENT
        -
        Unknown event.
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static SessionEvent.Type[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (SessionEvent.Type c : SessionEvent.Type.values())
        -    System.out.println(c);
        -
        -
        -
        Returns:
        -
        an array containing the constants of this enum type, in the order they are declared
        -
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static SessionEvent.Type valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        -
        Parameters:
        -
        name - the name of the enum constant to be returned.
        -
        Returns:
        -
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.html deleted file mode 100644 index 0e6716646..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEvent.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - -SessionEvent (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface SessionEvent

-
-
-
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        type

        -
        SessionEvent.Type type()
        -
        Returns event type.
        -
        -
        Returns:
        -
        Type the type of this event
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEventHandler.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEventHandler.html deleted file mode 100644 index d7aab9ce7..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionEventHandler.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - -SessionEventHandler (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Interface SessionEventHandler

-
-
-
-
    -
  • -
    -
    -
    public interface SessionEventHandler
    -
    User callback interface to handle session related events.
    -
  • -
-
-
- -
-
- -
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionOptions.Builder.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionOptions.Builder.html deleted file mode 100644 index 4bb5add29..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionOptions.Builder.html +++ /dev/null @@ -1,488 +0,0 @@ - - - - - - -SessionOptions.Builder (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Class SessionOptions.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    SessionOptions
    -
    -
    -
    -
    public static class SessionOptions.Builder
    -extends Object
    -
    Helper class to create a SesssionOptions object with custom settings.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        build

        -
        public SessionOptions build()
        -
        Creates a SesssionOptions object based on this Builder properties.
        -
        -
        Returns:
        -
        SessionOptions immutable session options with custom settings
        -
        -
      • -
      - - - -
        -
      • -

        setBrokerUri

        -
        public SessionOptions.Builder setBrokerUri(URI value)
        -
        Sets URI to connect with the broker.
        -
        -
        Parameters:
        -
        value - URI to set
        -
        Returns:
        -
        Builder this object
        -
        Throws:
        -
        IllegalArgumentException - in case of invalid URI value
        -
        -
      • -
      - - - -
        -
      • -

        setStartTimeout

        -
        public SessionOptions.Builder setStartTimeout(Duration value)
        -
        Sets session start timeout
        -
        -
        Parameters:
        -
        value - start timeout value
        -
        Returns:
        -
        Builder this object
        -
        Throws:
        -
        IllegalArgumentException - in case of timeout value is zero or negative
        -
        -
      • -
      - - - -
        -
      • -

        setStopTimeout

        -
        public SessionOptions.Builder setStopTimeout(Duration value)
        -
        Sets session stop timeout
        -
        -
        Parameters:
        -
        value - stop timeout value
        -
        Returns:
        -
        Builder this object
        -
        Throws:
        -
        IllegalArgumentException - in case of timeout value is zero or negative
        -
        -
      • -
      - - - - - - - - - - - -
        -
      • -

        setStatsDumpInterval

        -
        public SessionOptions.Builder setStatsDumpInterval(Duration value)
        -
        Sets the stats dump interval to the specified 'value'. 0 - disable recurring dump of - stats (final stats are always dumped at end of session).
        -
        -
        Parameters:
        -
        value - stats dump interval value
        -
        Returns:
        -
        Builder this object
        -
        Throws:
        -
        IllegalArgumentException - in case of interval value is negative
        -
        -
      • -
      - - - -
        -
      • -

        setOpenQueueTimeout

        -
        public SessionOptions.Builder setOpenQueueTimeout(Duration value)
        -
        Sets timeout value for open queue operation
        -
        -
        Parameters:
        -
        value - timeout value
        -
        Returns:
        -
        Builder this object
        -
        Throws:
        -
        IllegalArgumentException - in case of timeout value is zero or negative
        -
        -
      • -
      - - - -
        -
      • -

        setConfigureQueueTimeout

        -
        public SessionOptions.Builder setConfigureQueueTimeout(Duration value)
        -
        Sets timeout value for configure queue operation
        -
        -
        Parameters:
        -
        value - timeout value
        -
        Returns:
        -
        Builder this object
        -
        Throws:
        -
        IllegalArgumentException - in case of timeout value is zero or negative
        -
        -
      • -
      - - - -
        -
      • -

        setCloseQueueTimeout

        -
        public SessionOptions.Builder setCloseQueueTimeout(Duration value)
        -
        Sets timeout value for close queue operation
        -
        -
        Parameters:
        -
        value - timeout value
        -
        Returns:
        -
        Builder this object
        -
        Throws:
        -
        IllegalArgumentException - in case of timeout value is zero or negative
        -
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionOptions.InboundEventBufferWaterMark.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionOptions.InboundEventBufferWaterMark.html deleted file mode 100644 index 5bcea29a1..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionOptions.InboundEventBufferWaterMark.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - -SessionOptions.InboundEventBufferWaterMark (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Class SessionOptions.InboundEventBufferWaterMark

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.bloomberg.bmq.SessionOptions.InboundEventBufferWaterMark
    • -
    -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    SessionOptions
    -
    -
    -
    -
    @Immutable
    -public static class SessionOptions.InboundEventBufferWaterMark
    -extends Object
    -
    Immutable helper class to set sizes (in number of events) for the inbound event buffer high - and low watermarks. Default value for high watermark is 1000 events. Default value for low - watermark is 500 events.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        InboundEventBufferWaterMark

        -
        public InboundEventBufferWaterMark()
        -
        Creates this class object with default high and low watermark values.
        -
      • -
      - - - -
        -
      • -

        InboundEventBufferWaterMark

        -
        public InboundEventBufferWaterMark(int lowWaterMark,
        -                                   int highWaterMark)
        -
        Creates this class object with specified high and low watermark values.
        -
        -
        Parameters:
        -
        lowWaterMark - zero or positive integer value for low watermark
        -
        highWaterMark - positive integer value for high watermark
        -
        Throws:
        -
        IllegalArgumentException - in case of either LWM is negative or HWM isn't greater - than zero
        -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        lowWaterMark

        -
        public int lowWaterMark()
        -
        Returns LWM value.
        -
        -
        Returns:
        -
        int LWM
        -
        -
      • -
      - - - -
        -
      • -

        highWaterMark

        -
        public int highWaterMark()
        -
        Returns HWM value.
        -
        -
        Returns:
        -
        int HWM
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionOptions.WriteBufferWaterMark.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionOptions.WriteBufferWaterMark.html deleted file mode 100644 index 04159fa6a..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionOptions.WriteBufferWaterMark.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - -SessionOptions.WriteBufferWaterMark (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Class SessionOptions.WriteBufferWaterMark

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.bloomberg.bmq.SessionOptions.WriteBufferWaterMark
    • -
    -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    SessionOptions
    -
    -
    -
    -
    @Immutable
    -public static class SessionOptions.WriteBufferWaterMark
    -extends Object
    -
    Immutable helper class to set sizes (in bytes) for write cache high and low watermarks on the - channel. Default value for high watermark is 64MB. Default value for low watermark is 1MB.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        WriteBufferWaterMark

        -
        public WriteBufferWaterMark()
        -
        Creates this class object with default high and low watermark values.
        -
      • -
      - - - -
        -
      • -

        WriteBufferWaterMark

        -
        public WriteBufferWaterMark(int lowWaterMark,
        -                            int highWaterMark)
        -
        Creates this class object with specified high and low watermark values.
        -
        -
        Parameters:
        -
        lowWaterMark - zero or positive integer value for low watermark
        -
        highWaterMark - positive integer value for high watermark
        -
        Throws:
        -
        IllegalArgumentException - in case of either LWM is negative or HWM isn't greater - than zero
        -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        lowWaterMark

        -
        public int lowWaterMark()
        -
        Returns LWM value.
        -
        -
        Returns:
        -
        int LWM
        -
        -
      • -
      - - - -
        -
      • -

        highWaterMark

        -
        public int highWaterMark()
        -
        Returns HWM value.
        -
        -
        Returns:
        -
        int HWM
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionOptions.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionOptions.html deleted file mode 100644 index 9f1b16c09..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/SessionOptions.html +++ /dev/null @@ -1,578 +0,0 @@ - - - - - - -SessionOptions (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Class SessionOptions

-
-
- -
-
    -
  • -
    -
    -
    @Immutable
    -public final class SessionOptions
    -extends Object
    -
    A value-semantic type to configure session with the broker. - -

    Provides a value-semantic type which is used to specify session-level configuration - parameters. - -

    Most applications should not need to change the parameters for creating a AbstractSession; the default parameters are fine. - -

    The following parameters are supported: - -

      -
    • brokerUri: Address of the broker to connect to. Default is to connect to the broker - on the local host on the default port (30114). The format is tcp://<host>:port. - Host can be: -
        -
      • an explicit hostname, example foobar (or localhost) -
      • an ip, example 10.11.12.13 -
      • a DNS entry. In this case, the client will resolve the list of addresses from that - entry, and try to connect to one of them. When the connection with the host goes - down, it will automatically immediately failover and reconnects to another entry from - the address list. -
      -
    • WriteBufferWaterMark: Sizes (in bytes) to use for write cache high and low - watermarks on the channel. Default value for high watermark is 64MB. Note that BlazingMQ - reserves 4MB of this value for control message, so the actual watermark for data published - is 'HighWatermark - 4MB'. Default value for low watermark is 1MB. -
    • statsDumpInterval: Interval (in seconds) at which to dump stats in the logs. Set to - 0 to disable recurring dump of stats (final stats are always dumped at end of session). - Default is 5min. -
    • Default timeouts to use for various operations: -
        -
      • startTimeout, -
      • stopTimeout, -
      • openQueueTimeout, -
      • configureQueueTimeout, -
      • closeQueueTimeout. -
      -
    • hostHealthMonitor: Optional instance of a class implementing HostHealthMonitor interface responsible for notifying the session when the health of the - host machine has changed. A hostHealthMonitor must be specified in oder for queues - opened through the session to suspend on unhealthy hosts. -
    - -

    Thread Safety

    - - Once created SessionOptions object is immutable and thread safe. Helper class Builder is provided for SessionOptions creation. - -

    Usage Example 1

    - - Create SessionOptions object with default values: - -
    -
    - SessionOptions opts = SessionOptions.createDefault();
    - 
    - -

    Usage Example 2

    - - Create SessionOptions object with custom values: - -
    -
    - SessionOptions opts = SessionOptions.builder()
    -                                     .setBrokerUri(URI.create("tcp://localhost:" + 12345))
    -                                     .build();
    - 
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        createDefault

        -
        public static SessionOptions createDefault()
        -
        Creates this class object with default settings.
        -
        -
        Returns:
        -
        SessionOptions immutable session settings object with default values
        -
        -
      • -
      - - - -
        -
      • -

        builder

        -
        public static SessionOptions.Builder builder()
        -
        Returns a helper class object to set different session level options.
        -
        -
        Returns:
        -
        Builder session options setter
        -
        -
      • -
      - - - -
        -
      • -

        brokerUri

        -
        public URI brokerUri()
        -
        Returns URI which will be used by the Session to connect with the - BlazingMQ broker.
        -
        -
        Returns:
        -
        URI broker URI
        -
        -
      • -
      - - - - - - - - - - - -
        -
      • -

        writeBufferWaterMark

        -
        public SessionOptions.WriteBufferWaterMark writeBufferWaterMark()
        -
        Returns a helper class object that holds high and low channel watermark values.
        -
        -
        Returns:
        -
        WriteBufferWaterMark LWM and HWM holder
        -
        -
      • -
      - - - -
        -
      • -

        inboundBufferWaterMark

        -
        public SessionOptions.InboundEventBufferWaterMark inboundBufferWaterMark()
        -
        Returns a helper class object that holds high and low inbound event buffer watermark values.
        -
        -
        Returns:
        -
        InboundEventBufferWaterMark LWM and HWM holder
        -
        -
      • -
      - - - -
        -
      • -

        statsDumpInterval

        -
        public Duration statsDumpInterval()
        -
        Returns interval (in seconds) at which to dump stats in the logs. Default is 5min. "0" means - disabled recurring dump of stats (final stats are always dumped at end of session).
        -
        -
        Returns:
        -
        Duration stats dump interval
        -
        -
      • -
      - - - - - - - - - - - - - - - -
        -
      • -

        hostHealthMonitor

        -
        public HostHealthMonitor hostHealthMonitor()
        -
        Returns an object which monitors the health of the host. BlazingMQ sessions can use such - objects to conditionally suspend queue activity while the host is marked unhealthy. Default - value is null that means no monitor is set.
        -
        -
        Returns:
        -
        host health monitor object or null if not set
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/Uri.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/Uri.html deleted file mode 100644 index 39f5f46e4..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/Uri.html +++ /dev/null @@ -1,569 +0,0 @@ - - - - - - -Uri (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - - -
-
com.bloomberg.bmq
-

Class Uri

-
-
- -
-
    -
  • -
    -
    -
    @Immutable
    -public class Uri
    -extends Object
    -
    Provides value-semantic type and utilities for a BlazingMQ queue URI. - -

    This class provides a value-semantic type, representing a URI for a BlazingMQ queue. A Uri can be built by parsing from a string representation provided to the class constructor. - -

    URI format

    - - In a nutshell, a URI representing an application queue managed by a BlazingMQ broker on a given - machine looks like one of the following: - -
    -
    -  bmq://ts.trades.myapp/my.queue
    -  bmq://ts.trades.myapp.~bt/my.queue
    -  bmq://ts.trades.myapp/my.queue?id=foo
    - 
    - - where: - -
      -
    • The URI scheme is always "bmq". -
    • The URI authority is the name of BlazingMQ domain (such as "ts.trades.myapp") as registered - with the BlazingMQ infrastructure. The domain name may contain alphanumeric characters, - dots and dashes (it has to match the following regular expression: [-a-zA-Z0-9\\._]+'. The domain may be followed by an optional tier, introduced by the ".~" - sequence and consisting of alphanumeric characters and dashes. The ".~" sequence is not - part of the tier. -
    • The URI path is the name of the queue ("my.queue" above) and may contain alphanumeric - characters, dashes, underscores and tild (it has to match the following regular expression: - [-a-zA-Z0-9_~\\.]+). -
    • The name of the queue (my.queue above) may contain alphanumeric characters and - dots. -
    • The URI may contain an optional query with a key-value pair, where key is always id, and corresponding value represents a name that will be used by BlazingMQ broker to - uniquely identify the client. -
    • The URI fragment part is currently unused. -
    - -

    Usage Example

    - - Instantiate a Uri object with a string representation of the URI: - -
    -
    -  Uri uri = new Uri("bmq://my.domain/queue");
    -  assert uri.scheme() == "bmq";
    -  assert uri.domain() == "my.domain";
    -  assert uri.queue()  == "queue";
    - 
    - -

    Thread Safety

    - - Once created Uri object is immutable and thread safe.
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      Uri(String uriStr) -
      Constructs this object from the specified uri string.
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      Stringauthority() -
      Returns authority part of the URI in terms of the URI RFC terminology.
      -
      Stringcanonical() -
      Returns the canonical form of the URI.
      -
      Stringdomain() -
      Returns domain part of the URI in terms of the BlazingMQ terminology.
      -
      booleanequals(Object obj) -
      Returns true if this Uri is equal to the specified obj, false otherwise.
      -
      inthashCode() -
      Returns a hash code value for this Uri object.
      -
      Stringid() -
      Returns id part of the URI in terms of the BlazingMQ terminology.
      -
      Stringpath() -
      Returns path part of the URI in terms of the URI RFC terminology.
      -
      StringqualifiedDomain() -
      Returns qualifiedDomain part of the URI in terms of the BlazingMQ terminology.
      -
      Stringqueue() -
      Returns queue part of the URI in terms of the BlazingMQ terminology.
      -
      Stringscheme() -
      Returns scheme part of the URI in terms of the URI RFC terminology.
      -
      Stringtier() -
      Returns tier part of the URI in terms of the BlazingMQ terminology.
      -
      StringtoString() -
      Returns a string representation of the URI.
      -
      - -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Uri

        -
        public Uri(String uriStr)
        -
        Constructs this object from the specified uri string. If the uri input string - doesn't represent a valid URI, this object won't be created.
        -
        -
        Parameters:
        -
        uriStr - string representation of the URI
        -
        Throws:
        -
        RuntimeException - if the specified string is not a valid URI
        -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        scheme

        -
        public String scheme()
        -
        Returns scheme part of the URI in terms of the URI RFC terminology.
        -
        -
        Returns:
        -
        String scheme part of the URI
        -
        -
      • -
      - - - -
        -
      • -

        authority

        -
        public String authority()
        -
        Returns authority part of the URI in terms of the URI RFC terminology.
        -
        -
        Returns:
        -
        String authority part of the URI
        -
        -
      • -
      - - - -
        -
      • -

        path

        -
        public String path()
        -
        Returns path part of the URI in terms of the URI RFC terminology.
        -
        -
        Returns:
        -
        String path part of the URI
        -
        -
      • -
      - - - -
        -
      • -

        qualifiedDomain

        -
        public String qualifiedDomain()
        -
        Returns qualifiedDomain part of the URI in terms of the BlazingMQ terminology.
        -
        -
        Returns:
        -
        String qualifiedDomain part of the URI
        -
        -
      • -
      - - - -
        -
      • -

        domain

        -
        public String domain()
        -
        Returns domain part of the URI in terms of the BlazingMQ terminology.
        -
        -
        Returns:
        -
        String domain part of the URI
        -
        -
      • -
      - - - -
        -
      • -

        tier

        -
        public String tier()
        -
        Returns tier part of the URI in terms of the BlazingMQ terminology.
        -
        -
        Returns:
        -
        String tier part of the URI
        -
        -
      • -
      - - - -
        -
      • -

        queue

        -
        public String queue()
        -
        Returns queue part of the URI in terms of the BlazingMQ terminology.
        -
        -
        Returns:
        -
        String queue part of the URI
        -
        -
      • -
      - - - -
        -
      • -

        id

        -
        public String id()
        -
        Returns id part of the URI in terms of the BlazingMQ terminology.
        -
        -
        Returns:
        -
        String id part of the URI
        -
        -
      • -
      - - - -
        -
      • -

        canonical

        -
        public String canonical()
        -
        Returns the canonical form of the URI. - -

        Note that canonical form includes everything except the query part of the URI.

        -
        -
        Returns:
        -
        String canonical form of the URI except query part
        -
        -
      • -
      - - - -
        -
      • -

        toString

        -
        public String toString()
        -
        Returns a string representation of the URI.
        -
        -
        Overrides:
        -
        toString in class Object
        -
        Returns:
        -
        String string representation of the URI
        -
        -
      • -
      - - - -
        -
      • -

        equals

        -
        public boolean equals(Object obj)
        -
        Returns true if this Uri is equal to the specified obj, false otherwise.
        -
        -
        Overrides:
        -
        equals in class Object
        -
        Parameters:
        -
        obj - Uri object to compare with
        -
        Returns:
        -
        boolean true if Uri are equal, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        Returns a hash code value for this Uri object.
        -
        -
        Overrides:
        -
        hashCode in class Object
        -
        Returns:
        -
        int a hash code value for this object.
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/AbstractSession.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/AbstractSession.html deleted file mode 100644 index 27eb9386f..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/AbstractSession.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.AbstractSession (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.AbstractSession

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/AckMessage.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/AckMessage.html deleted file mode 100644 index cb448d035..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/AckMessage.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.AckMessage (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.AckMessage

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/AckMessageHandler.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/AckMessageHandler.html deleted file mode 100644 index ffae02d3c..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/AckMessageHandler.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.AckMessageHandler (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.AckMessageHandler

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/BMQException.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/BMQException.html deleted file mode 100644 index 55d1860eb..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/BMQException.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.BMQException (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.BMQException

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/CompressionAlgorithm.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/CompressionAlgorithm.html deleted file mode 100644 index 61636f206..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/CompressionAlgorithm.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.CompressionAlgorithm (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.CompressionAlgorithm

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/CorrelationId.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/CorrelationId.html deleted file mode 100644 index d0390e8d5..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/CorrelationId.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.CorrelationId (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.CorrelationId

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/Event.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/Event.html deleted file mode 100644 index 169e38b56..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/Event.html +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.Event (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.Event

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/HostHealthMonitor.Handler.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/HostHealthMonitor.Handler.html deleted file mode 100644 index 3bae98975..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/HostHealthMonitor.Handler.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.HostHealthMonitor.Handler (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.HostHealthMonitor.Handler

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/HostHealthMonitor.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/HostHealthMonitor.html deleted file mode 100644 index 827d2093f..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/HostHealthMonitor.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.HostHealthMonitor (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.HostHealthMonitor

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/HostHealthState.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/HostHealthState.html deleted file mode 100644 index 4ac0219e3..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/HostHealthState.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.HostHealthState (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.HostHealthState

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageGUID.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageGUID.html deleted file mode 100644 index 240e32c7c..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageGUID.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.MessageGUID (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.MessageGUID

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperties.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperties.html deleted file mode 100644 index 42246e545..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperties.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.MessageProperties (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.MessageProperties

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.BinaryProperty.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.BinaryProperty.html deleted file mode 100644 index 3194563cb..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.BinaryProperty.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.MessageProperty.BinaryProperty (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.MessageProperty.BinaryProperty

-
-
No usage of com.bloomberg.bmq.MessageProperty.BinaryProperty
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.BoolProperty.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.BoolProperty.html deleted file mode 100644 index adee05792..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.BoolProperty.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.MessageProperty.BoolProperty (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.MessageProperty.BoolProperty

-
-
No usage of com.bloomberg.bmq.MessageProperty.BoolProperty
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.ByteProperty.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.ByteProperty.html deleted file mode 100644 index 1329c3128..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.ByteProperty.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.MessageProperty.ByteProperty (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.MessageProperty.ByteProperty

-
-
No usage of com.bloomberg.bmq.MessageProperty.ByteProperty
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.Int32Property.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.Int32Property.html deleted file mode 100644 index 099ee8e64..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.Int32Property.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.MessageProperty.Int32Property (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.MessageProperty.Int32Property

-
-
No usage of com.bloomberg.bmq.MessageProperty.Int32Property
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.Int64Property.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.Int64Property.html deleted file mode 100644 index 9a02479a0..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.Int64Property.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.MessageProperty.Int64Property (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.MessageProperty.Int64Property

-
-
No usage of com.bloomberg.bmq.MessageProperty.Int64Property
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.ShortProperty.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.ShortProperty.html deleted file mode 100644 index 3110f8777..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.ShortProperty.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.MessageProperty.ShortProperty (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.MessageProperty.ShortProperty

-
-
No usage of com.bloomberg.bmq.MessageProperty.ShortProperty
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.StringProperty.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.StringProperty.html deleted file mode 100644 index 3f0581d22..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.StringProperty.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.MessageProperty.StringProperty (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.MessageProperty.StringProperty

-
-
No usage of com.bloomberg.bmq.MessageProperty.StringProperty
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.Type.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.Type.html deleted file mode 100644 index 669745d48..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.Type.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.MessageProperty.Type (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.MessageProperty.Type

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.html deleted file mode 100644 index 35239f2f0..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/MessageProperty.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.MessageProperty (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.MessageProperty

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/PushMessage.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/PushMessage.html deleted file mode 100644 index 1a41b5843..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/PushMessage.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.PushMessage (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.PushMessage

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/PushMessageHandler.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/PushMessageHandler.html deleted file mode 100644 index 0337183f3..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/PushMessageHandler.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.PushMessageHandler (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.PushMessageHandler

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/PutMessage.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/PutMessage.html deleted file mode 100644 index 2d98d312c..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/PutMessage.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.PutMessage (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.PutMessage

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/Queue.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/Queue.html deleted file mode 100644 index de1ace84b..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/Queue.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.Queue (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.Queue

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.CloseQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.CloseQueueResult.html deleted file mode 100644 index b1623bff6..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.CloseQueueResult.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.QueueControlEvent.CloseQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.QueueControlEvent.CloseQueueResult

-
-
No usage of com.bloomberg.bmq.QueueControlEvent.CloseQueueResult
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.ConfigureQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.ConfigureQueueResult.html deleted file mode 100644 index 1a9fbb359..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.ConfigureQueueResult.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.QueueControlEvent.ConfigureQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.QueueControlEvent.ConfigureQueueResult

-
-
No usage of com.bloomberg.bmq.QueueControlEvent.ConfigureQueueResult
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.OpenQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.OpenQueueResult.html deleted file mode 100644 index be1c734a2..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.OpenQueueResult.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.QueueControlEvent.OpenQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.QueueControlEvent.OpenQueueResult

-
-
No usage of com.bloomberg.bmq.QueueControlEvent.OpenQueueResult
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.ReopenQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.ReopenQueueResult.html deleted file mode 100644 index db4e173be..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.ReopenQueueResult.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.QueueControlEvent.ReopenQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.QueueControlEvent.ReopenQueueResult

-
-
No usage of com.bloomberg.bmq.QueueControlEvent.ReopenQueueResult
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.ResumeQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.ResumeQueueResult.html deleted file mode 100644 index 21f3db265..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.ResumeQueueResult.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.QueueControlEvent.ResumeQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.QueueControlEvent.ResumeQueueResult

-
-
No usage of com.bloomberg.bmq.QueueControlEvent.ResumeQueueResult
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.SuspendQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.SuspendQueueResult.html deleted file mode 100644 index db7537828..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.SuspendQueueResult.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.QueueControlEvent.SuspendQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.QueueControlEvent.SuspendQueueResult

-
-
No usage of com.bloomberg.bmq.QueueControlEvent.SuspendQueueResult
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.Type.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.Type.html deleted file mode 100644 index ddc0b82e1..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.Type.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.QueueControlEvent.Type (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.QueueControlEvent.Type

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.html deleted file mode 100644 index b4cad45b6..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueControlEvent.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.QueueControlEvent (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.QueueControlEvent

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueEvent.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueEvent.html deleted file mode 100644 index d6b7bb25e..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueEvent.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.QueueEvent (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.QueueEvent

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueEventHandler.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueEventHandler.html deleted file mode 100644 index b2998f8e5..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueEventHandler.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.QueueEventHandler (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.QueueEventHandler

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueFlags.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueFlags.html deleted file mode 100644 index cb50f9332..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueFlags.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.QueueFlags (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.QueueFlags

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueOptions.Builder.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueOptions.Builder.html deleted file mode 100644 index 7886daf53..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueOptions.Builder.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.QueueOptions.Builder (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.QueueOptions.Builder

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueOptions.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueOptions.html deleted file mode 100644 index 79999d15f..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/QueueOptions.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.QueueOptions (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.QueueOptions

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.AckCode.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.AckCode.html deleted file mode 100644 index b44b2bbed..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.AckCode.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.ResultCodes.AckCode (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.ResultCodes.AckCode

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.AckResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.AckResult.html deleted file mode 100644 index 23b28be6d..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.AckResult.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.ResultCodes.AckResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.ResultCodes.AckResult

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.CloseQueueCode.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.CloseQueueCode.html deleted file mode 100644 index 9d55a3f29..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.CloseQueueCode.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.ResultCodes.CloseQueueCode (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.ResultCodes.CloseQueueCode

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.CloseQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.CloseQueueResult.html deleted file mode 100644 index fbec75b61..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.CloseQueueResult.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.ResultCodes.CloseQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.ResultCodes.CloseQueueResult

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.ConfigureQueueCode.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.ConfigureQueueCode.html deleted file mode 100644 index 0b6e7b7a2..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.ConfigureQueueCode.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.ResultCodes.ConfigureQueueCode (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.ResultCodes.ConfigureQueueCode

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.ConfigureQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.ConfigureQueueResult.html deleted file mode 100644 index d018a83a1..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.ConfigureQueueResult.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.ResultCodes.ConfigureQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.ResultCodes.ConfigureQueueResult

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.GenericCode.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.GenericCode.html deleted file mode 100644 index e51531397..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.GenericCode.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.ResultCodes.GenericCode (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.ResultCodes.GenericCode

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.GenericResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.GenericResult.html deleted file mode 100644 index f4506647b..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.GenericResult.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.ResultCodes.GenericResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.ResultCodes.GenericResult

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.OpenQueueCode.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.OpenQueueCode.html deleted file mode 100644 index e66e34dfd..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.OpenQueueCode.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.ResultCodes.OpenQueueCode (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.ResultCodes.OpenQueueCode

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.OpenQueueResult.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.OpenQueueResult.html deleted file mode 100644 index 914b18cee..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.OpenQueueResult.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.ResultCodes.OpenQueueResult (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.ResultCodes.OpenQueueResult

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.OperationResultCode.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.OperationResultCode.html deleted file mode 100644 index 4dcf4de2d..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.OperationResultCode.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.ResultCodes.OperationResultCode (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.ResultCodes.OperationResultCode

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.html deleted file mode 100644 index 654abc300..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/ResultCodes.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.ResultCodes (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.ResultCodes

-
-
No usage of com.bloomberg.bmq.ResultCodes
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/Session.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/Session.html deleted file mode 100644 index 5a9fbb688..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/Session.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.Session (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.Session

-
-
No usage of com.bloomberg.bmq.Session
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.ConnectionLost.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.ConnectionLost.html deleted file mode 100644 index 7a2f2ab4b..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.ConnectionLost.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.SessionEvent.ConnectionLost (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.SessionEvent.ConnectionLost

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.HostHealthRestored.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.HostHealthRestored.html deleted file mode 100644 index 30c4e238e..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.HostHealthRestored.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.SessionEvent.HostHealthRestored (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.SessionEvent.HostHealthRestored

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.HostUnhealthy.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.HostUnhealthy.html deleted file mode 100644 index fcad17982..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.HostUnhealthy.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.SessionEvent.HostUnhealthy (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.SessionEvent.HostUnhealthy

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.Reconnected.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.Reconnected.html deleted file mode 100644 index 8d64263dd..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.Reconnected.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.SessionEvent.Reconnected (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.SessionEvent.Reconnected

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.SlowConsumerHighWatermark.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.SlowConsumerHighWatermark.html deleted file mode 100644 index 16ab96977..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.SlowConsumerHighWatermark.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.SessionEvent.SlowConsumerHighWatermark (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.SessionEvent.SlowConsumerHighWatermark

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.SlowConsumerNormal.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.SlowConsumerNormal.html deleted file mode 100644 index e4949d1ab..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.SlowConsumerNormal.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.SessionEvent.SlowConsumerNormal (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.SessionEvent.SlowConsumerNormal

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.StartStatus.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.StartStatus.html deleted file mode 100644 index 134707b1a..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.StartStatus.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.SessionEvent.StartStatus (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.SessionEvent.StartStatus

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.StateRestored.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.StateRestored.html deleted file mode 100644 index e77a59cf5..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.StateRestored.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.SessionEvent.StateRestored (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.SessionEvent.StateRestored

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.StopStatus.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.StopStatus.html deleted file mode 100644 index 1b3bab948..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.StopStatus.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.SessionEvent.StopStatus (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.SessionEvent.StopStatus

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.Type.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.Type.html deleted file mode 100644 index e7a05ff1c..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.Type.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.SessionEvent.Type (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.SessionEvent.Type

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.html deleted file mode 100644 index b4b9fedcd..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEvent.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.SessionEvent (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.SessionEvent

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEventHandler.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEventHandler.html deleted file mode 100644 index 91119219d..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionEventHandler.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - -Uses of Interface com.bloomberg.bmq.SessionEventHandler (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Interface
com.bloomberg.bmq.SessionEventHandler

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionOptions.Builder.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionOptions.Builder.html deleted file mode 100644 index 162ada824..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionOptions.Builder.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.SessionOptions.Builder (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.SessionOptions.Builder

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionOptions.InboundEventBufferWaterMark.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionOptions.InboundEventBufferWaterMark.html deleted file mode 100644 index 446685b3f..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionOptions.InboundEventBufferWaterMark.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.SessionOptions.InboundEventBufferWaterMark (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.SessionOptions.InboundEventBufferWaterMark

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionOptions.WriteBufferWaterMark.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionOptions.WriteBufferWaterMark.html deleted file mode 100644 index 68373f200..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionOptions.WriteBufferWaterMark.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.SessionOptions.WriteBufferWaterMark (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.SessionOptions.WriteBufferWaterMark

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionOptions.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionOptions.html deleted file mode 100644 index 6201674c2..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/SessionOptions.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.SessionOptions (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.SessionOptions

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/Uri.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/Uri.html deleted file mode 100644 index 0cff61c09..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/class-use/Uri.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - -Uses of Class com.bloomberg.bmq.Uri (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Class
com.bloomberg.bmq.Uri

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/package-frame.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/package-frame.html deleted file mode 100644 index be9d59a1b..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/package-frame.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - -com.bloomberg.bmq (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - -

com.bloomberg.bmq

-
-

Interfaces

- -

Classes

- -

Enums

- -

Exceptions

- -
- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/package-summary.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/package-summary.html deleted file mode 100644 index 8792cdfe1..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/package-summary.html +++ /dev/null @@ -1,557 +0,0 @@ - - - - - - -com.bloomberg.bmq (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Package com.bloomberg.bmq

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/package-tree.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/package-tree.html deleted file mode 100644 index c69153ad7..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/package-tree.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - -com.bloomberg.bmq Class Hierarchy (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Hierarchy For Package com.bloomberg.bmq

-
-
-

Class Hierarchy

- -

Interface Hierarchy

- -

Enum Hierarchy

- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/package-use.html b/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/package-use.html deleted file mode 100644 index d41c5e08d..000000000 --- a/docs/docs/apidocs/java_apidocs/com/bloomberg/bmq/package-use.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - - - -Uses of Package com.bloomberg.bmq (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Uses of Package
com.bloomberg.bmq

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/constant-values.html b/docs/docs/apidocs/java_apidocs/constant-values.html deleted file mode 100644 index c5d66a4e7..000000000 --- a/docs/docs/apidocs/java_apidocs/constant-values.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - -Constant Field Values (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Constant Field Values

-

Contents

- -
-
- - -

com.bloomberg.*

- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/deprecated-list.html b/docs/docs/apidocs/java_apidocs/deprecated-list.html deleted file mode 100644 index 4d70092b8..000000000 --- a/docs/docs/apidocs/java_apidocs/deprecated-list.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -Deprecated List (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - -
- - - - - - - -
- - -
-

Deprecated API

-

Contents

-
- -
- - - - - - - -
- - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/help-doc.html b/docs/docs/apidocs/java_apidocs/help-doc.html deleted file mode 100644 index 6aa5cd969..000000000 --- a/docs/docs/apidocs/java_apidocs/help-doc.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - -API Help (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

How This API Document Is Organized

-
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
-
-
-
    -
  • -

    Package

    -

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    -
      -
    • Interfaces (italic)
    • -
    • Classes
    • -
    • Enums
    • -
    • Exceptions
    • -
    • Errors
    • -
    • Annotation Types
    • -
    -
  • -
  • -

    Class/Interface

    -

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    -
      -
    • Class inheritance diagram
    • -
    • Direct Subclasses
    • -
    • All Known Subinterfaces
    • -
    • All Known Implementing Classes
    • -
    • Class/interface declaration
    • -
    • Class/interface description
    • -
    -
      -
    • Nested Class Summary
    • -
    • Field Summary
    • -
    • Constructor Summary
    • -
    • Method Summary
    • -
    -
      -
    • Field Detail
    • -
    • Constructor Detail
    • -
    • Method Detail
    • -
    -

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    -
  • -
  • -

    Annotation Type

    -

    Each annotation type has its own separate page with the following sections:

    -
      -
    • Annotation Type declaration
    • -
    • Annotation Type description
    • -
    • Required Element Summary
    • -
    • Optional Element Summary
    • -
    • Element Detail
    • -
    -
  • -
  • -

    Enum

    -

    Each enum has its own separate page with the following sections:

    -
      -
    • Enum declaration
    • -
    • Enum description
    • -
    • Enum Constant Summary
    • -
    • Enum Constant Detail
    • -
    -
  • -
  • -

    Use

    -

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    -
  • -
  • -

    Tree (Class Hierarchy)

    -

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    -
      -
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • -
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • -
    -
  • -
  • -

    Deprecated API

    -

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    -
  • -
  • -

    Index

    -

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    -
  • -
  • -

    Prev/Next

    -

    These links take you to the next or previous class, interface, package, or related page.

    -
  • -
  • -

    Frames/No Frames

    -

    These links show and hide the HTML frames. All pages are available with or without frames.

    -
  • -
  • -

    All Classes

    -

    The All Classes link shows all classes and interfaces except non-static nested types.

    -
  • -
  • -

    Serialized Form

    -

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    -
  • -
  • -

    Constant Field Values

    -

    The Constant Field Values page lists the static final fields and their values.

    -
  • -
-This help file applies to API documentation generated using the standard doclet.
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/index-all.html b/docs/docs/apidocs/java_apidocs/index-all.html deleted file mode 100644 index 3a9e875b3..000000000 --- a/docs/docs/apidocs/java_apidocs/index-all.html +++ /dev/null @@ -1,1503 +0,0 @@ - - - - - - -Index (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - -
- - - - - - - -
- - -
A B C D E F G H I K L M N O P Q R S T U V W  - - -

A

-
-
AbstractSession - Interface in com.bloomberg.bmq
-
-
Interface to the Session that provides access to the BlazingMQ broker
-
-
AckMessage - Interface in com.bloomberg.bmq
-
-
ACK message representation.
-
-
AckMessageHandler - Interface in com.bloomberg.bmq
-
-
User callback interface to handle incoming ACK messages.
-
-
addHandler(HostHealthMonitor.Handler) - Method in interface com.bloomberg.bmq.HostHealthMonitor
-
-
Registers the specified `handler` to be invoked each time the health of the host changes
-
-
authority() - Method in class com.bloomberg.bmq.Uri
-
-
Returns authority part of the URI in terms of the URI RFC terminology.
-
-
- - - -

B

-
-
BMQException - Exception in com.bloomberg.bmq
-
-
A RuntimeException which is raised when any failure happens during BlazingMQ SDK call - execution.
-
-
BMQException(Exception) - Constructor for exception com.bloomberg.bmq.BMQException
-
 
-
BMQException(String) - Constructor for exception com.bloomberg.bmq.BMQException
-
 
-
BMQException(String, Throwable) - Constructor for exception com.bloomberg.bmq.BMQException
-
 
-
BMQException(Exception, ResultCodes.GenericCode) - Constructor for exception com.bloomberg.bmq.BMQException
-
 
-
BMQException(String, ResultCodes.GenericCode) - Constructor for exception com.bloomberg.bmq.BMQException
-
 
-
BMQException(String, Throwable, ResultCodes.GenericCode) - Constructor for exception com.bloomberg.bmq.BMQException
-
 
-
brokerUri() - Method in class com.bloomberg.bmq.SessionOptions
-
-
Returns URI which will be used by the Session to connect with the - BlazingMQ broker.
-
-
build() - Method in class com.bloomberg.bmq.QueueOptions.Builder
-
-
Returns queue options based on this object properties.
-
-
build() - Method in class com.bloomberg.bmq.SessionOptions.Builder
-
-
Creates a SesssionOptions object based on this Builder properties.
-
-
builder() - Static method in class com.bloomberg.bmq.QueueOptions
-
-
Returns a helper class object to create immutable QueueOptions with custom settings.
-
-
builder() - Static method in class com.bloomberg.bmq.SessionOptions
-
-
Returns a helper class object to set different session level options.
-
-
- - - -

C

-
-
canonical() - Method in class com.bloomberg.bmq.Uri
-
-
Returns the canonical form of the URI.
-
-
close(Duration) - Method in interface com.bloomberg.bmq.Queue
-
-
Closes the queue synchronously.
-
-
closeAsync(Duration) - Method in interface com.bloomberg.bmq.Queue
-
-
Closes the queue asynchronously.
-
-
closeQueueTimeout() - Method in class com.bloomberg.bmq.SessionOptions
-
-
Returns timeout value that defines how much time the user gives to the Queue for successful close operation.
-
-
code() - Method in exception com.bloomberg.bmq.BMQException
-
 
-
com.bloomberg.bmq - package com.bloomberg.bmq
-
 
-
CompressionAlgorithm - Enum in com.bloomberg.bmq
-
-
PUT message payload compression algorithm
-
-
configure(QueueOptions, Duration) - Method in interface com.bloomberg.bmq.Queue
-
-
Configures the queue synchronously.
-
-
configureAsync(QueueOptions, Duration) - Method in interface com.bloomberg.bmq.Queue
-
-
Opens the queue asynchronously.
-
-
configureQueueTimeout() - Method in class com.bloomberg.bmq.SessionOptions
-
-
Returns timeout value that defines how much time the user gives to the Queue for successful configure call.
-
-
confirm() - Method in interface com.bloomberg.bmq.PushMessage
-
-
Sends CONFIRM message to the broker that affirms the receiving of this message.
-
-
correlationId() - Method in interface com.bloomberg.bmq.AckMessage
-
-
Returns CorrelationId equals to the user specified correlation ID - from the PutMessage.
-
-
CorrelationId - Interface in com.bloomberg.bmq
-
-
Provides an interface usable as an efficient identifier.
-
-
correlationId() - Method in interface com.bloomberg.bmq.PutMessage
-
-
Get correlation Id of the message
-
-
createDefault() - Static method in class com.bloomberg.bmq.QueueOptions
-
-
Returns queue options with default values.
-
-
createDefault() - Static method in class com.bloomberg.bmq.SessionOptions
-
-
Creates this class object with default settings.
-
-
createEmptyGUID() - Static method in class com.bloomberg.bmq.MessageGUID
-
-
Returns a zero filled MessageGUID object.
-
-
createPutMessage(ByteBuffer...) - Method in interface com.bloomberg.bmq.Queue
-
-
Creates a PUT message object bounded to this queue with the specified payload
-
-
- - - -

D

-
-
domain() - Method in class com.bloomberg.bmq.Uri
-
-
Returns domain part of the URI in terms of the BlazingMQ terminology.
-
-
- - - -

E

-
-
equals(Object) - Method in class com.bloomberg.bmq.MessageGUID
-
-
Returns true if this GUID is equal to the specified other, false otherwise.
-
-
equals(Object) - Method in class com.bloomberg.bmq.QueueOptions
-
-
Returns true if this QueueOptions is equal to the specified obj, false - otherwise.
-
-
equals(Object) - Method in class com.bloomberg.bmq.Uri
-
-
Returns true if this Uri is equal to the specified obj, false otherwise.
-
-
Event - Interface in com.bloomberg.bmq
-
-
Represents a BlazingMQ event.
-
-
- - - -

F

-
-
flush() - Method in interface com.bloomberg.bmq.Queue
-
-
Sends previously packed PUT messages in one multi message PUT event.
-
-
fromBinary(byte[]) - Static method in class com.bloomberg.bmq.MessageGUID
-
-
Returns a new MessageGUID created from the specified buffer, in binary - format.
-
-
fromHex(String) - Static method in class com.bloomberg.bmq.MessageGUID
-
-
Returns a new MessageGUID created from the specified String contained - hexadecimal representation of the GUID.
-
-
- - - -

G

-
-
getConsumerPriority() - Method in class com.bloomberg.bmq.QueueOptions
-
-
Returns priority of a consumer with respect to delivery of messages.
-
-
getGeneralResult() - Method in enum com.bloomberg.bmq.ResultCodes.AckResult
-
 
-
getGeneralResult() - Method in enum com.bloomberg.bmq.ResultCodes.CloseQueueResult
-
 
-
getGeneralResult() - Method in enum com.bloomberg.bmq.ResultCodes.ConfigureQueueResult
-
 
-
getGeneralResult() - Method in interface com.bloomberg.bmq.ResultCodes.GenericCode
-
 
-
getGeneralResult() - Method in enum com.bloomberg.bmq.ResultCodes.GenericResult
-
 
-
getGeneralResult() - Method in enum com.bloomberg.bmq.ResultCodes.OpenQueueResult
-
 
-
getMaxUnconfirmedBytes() - Method in class com.bloomberg.bmq.QueueOptions
-
-
Returns maximum accumulated bytes of all outstanding messages that can be sent by the broker - without being confirmed.
-
-
getMaxUnconfirmedMessages() - Method in class com.bloomberg.bmq.QueueOptions
-
-
Returns maximum number of outstanding messages that can be sent by the broker without being - confirmed.
-
-
getOperationResult() - Method in enum com.bloomberg.bmq.ResultCodes.AckResult
-
 
-
getOperationResult() - Method in enum com.bloomberg.bmq.ResultCodes.CloseQueueResult
-
 
-
getOperationResult() - Method in enum com.bloomberg.bmq.ResultCodes.ConfigureQueueResult
-
 
-
getOperationResult() - Method in enum com.bloomberg.bmq.ResultCodes.OpenQueueResult
-
 
-
getOperationResult() - Method in interface com.bloomberg.bmq.ResultCodes.OperationResultCode
-
 
-
getProperty(String) - Method in interface com.bloomberg.bmq.PushMessage
-
-
Returns property with specified (@code name).
-
-
getQueue(Uri, long, QueueEventHandler, AckMessageHandler, PushMessageHandler) - Method in interface com.bloomberg.bmq.AbstractSession
-
-
Create a queue representation.
-
-
getQueue(Uri, long, QueueEventHandler, AckMessageHandler, PushMessageHandler) - Method in class com.bloomberg.bmq.Session
-
-
Creates a queue representation.
-
-
getSuspendsOnBadHostHealth() - Method in class com.bloomberg.bmq.QueueOptions
-
-
Gets whether queue suspends operation when the host machine is unhealthy.
-
-
- - - -

H

-
-
handleAckMessage(AckMessage) - Method in interface com.bloomberg.bmq.AckMessageHandler
-
-
User specified ACK message handler.
-
-
handleConnectionLostSessionEvent(SessionEvent.ConnectionLost) - Method in interface com.bloomberg.bmq.SessionEventHandler
-
 
-
handleHostHealthRestoredSessionEvent(SessionEvent.HostHealthRestored) - Method in interface com.bloomberg.bmq.SessionEventHandler
-
 
-
handleHostUnhealthySessionEvent(SessionEvent.HostUnhealthy) - Method in interface com.bloomberg.bmq.SessionEventHandler
-
 
-
handlePushMessage(PushMessage) - Method in interface com.bloomberg.bmq.PushMessageHandler
-
-
User specified PUSH message handler.
-
-
handleQueueEvent(QueueControlEvent) - Method in interface com.bloomberg.bmq.QueueEventHandler
-
-
User specified handler for the queue events.
-
-
handleReconnectedSessionEvent(SessionEvent.Reconnected) - Method in interface com.bloomberg.bmq.SessionEventHandler
-
 
-
handleSessionEvent(SessionEvent) - Method in interface com.bloomberg.bmq.SessionEventHandler
-
-
User specified handler for session events.
-
-
handleSlowConsumerHighWatermarkEvent(SessionEvent.SlowConsumerHighWatermark) - Method in interface com.bloomberg.bmq.SessionEventHandler
-
 
-
handleSlowConsumerNormalEvent(SessionEvent.SlowConsumerNormal) - Method in interface com.bloomberg.bmq.SessionEventHandler
-
 
-
handleStartStatusSessionEvent(SessionEvent.StartStatus) - Method in interface com.bloomberg.bmq.SessionEventHandler
-
 
-
handleStateRestoredSessionEvent(SessionEvent.StateRestored) - Method in interface com.bloomberg.bmq.SessionEventHandler
-
 
-
handleStopStatusSessionEvent(SessionEvent.StopStatus) - Method in interface com.bloomberg.bmq.SessionEventHandler
-
 
-
hasConsumerPriority() - Method in class com.bloomberg.bmq.QueueOptions
-
-
Returns whether consumerPriority has been set for this object, or whether it - implicitly holds k_CONSUMER_PRIORITY_DEFAULT.
-
-
hashCode() - Method in class com.bloomberg.bmq.MessageGUID
-
-
Returns a hash code value for this MessageGUID object.
-
-
hashCode() - Method in class com.bloomberg.bmq.QueueOptions
-
-
Returns a hash code value for this QueueOptions object.
-
-
hashCode() - Method in class com.bloomberg.bmq.Uri
-
-
Returns a hash code value for this Uri object.
-
-
hasMaxUnconfirmedBytes() - Method in class com.bloomberg.bmq.QueueOptions
-
-
Returns whether maxUnconfirmedBytes has been set for this object, or whether it - implicitly holds k_MAX_UNCONFIRMED_BYTES_DEFAULT.
-
-
hasMaxUnconfirmedMessages() - Method in class com.bloomberg.bmq.QueueOptions
-
-
Returns whether maxUnconfirmedMessages has been set for this object, or whether it - implicitly holds k_MAX_UNCONFIRMED_MESSAGES_DEFAULT.
-
-
hasMessageProperties() - Method in interface com.bloomberg.bmq.PushMessage
-
-
Returns true if the application data of this message contains message properties.
-
-
hasSuspendsOnBadHostHealth() - Method in class com.bloomberg.bmq.QueueOptions
-
-
Returns whether suspendsOnBadHostHealth has been set for this object, or whether it - implicitly holds k_SUSPENDS_ON_BAD_HOST_HEALTH_DEFAULT.
-
-
highWaterMark() - Method in class com.bloomberg.bmq.SessionOptions.InboundEventBufferWaterMark
-
-
Returns HWM value.
-
-
highWaterMark() - Method in class com.bloomberg.bmq.SessionOptions.WriteBufferWaterMark
-
-
Returns HWM value.
-
-
HostHealthMonitor - Interface in com.bloomberg.bmq
-
-
Provides an interface for monitoring the health of the host.
-
-
hostHealthMonitor() - Method in class com.bloomberg.bmq.SessionOptions
-
-
Returns an object which monitors the health of the host.
-
-
HostHealthMonitor.Handler - Interface in com.bloomberg.bmq
-
-
Provides an interface for handling changes detected by HostHealthMonitor
-
-
hostHealthState() - Method in interface com.bloomberg.bmq.HostHealthMonitor
-
-
Queries the current health of the host
-
-
HostHealthState - Enum in com.bloomberg.bmq
-
-
Enumeration for different host health states
-
-
- - - -

I

-
-
id() - Method in class com.bloomberg.bmq.Uri
-
-
Returns id part of the URI in terms of the BlazingMQ terminology.
-
-
inboundBufferWaterMark() - Method in class com.bloomberg.bmq.SessionOptions
-
-
Returns a helper class object that holds high and low inbound event buffer watermark values.
-
-
InboundEventBufferWaterMark() - Constructor for class com.bloomberg.bmq.SessionOptions.InboundEventBufferWaterMark
-
-
Creates this class object with default high and low watermark values.
-
-
InboundEventBufferWaterMark(int, int) - Constructor for class com.bloomberg.bmq.SessionOptions.InboundEventBufferWaterMark
-
-
Creates this class object with specified high and low watermark values.
-
-
isAck(long) - Static method in enum com.bloomberg.bmq.QueueFlags
-
-
Returns true if the specified flags represent ack required.
-
-
isAdmin(long) - Static method in enum com.bloomberg.bmq.QueueFlags
-
-
Returns true if the specified flags represent an admin.
-
-
isAlreadyClosed() - Method in interface com.bloomberg.bmq.ResultCodes.CloseQueueCode
-
 
-
isAlreadyInProgress() - Method in interface com.bloomberg.bmq.ResultCodes.CloseQueueCode
-
 
-
isAlreadyInProgress() - Method in interface com.bloomberg.bmq.ResultCodes.ConfigureQueueCode
-
 
-
isAlreadyInProgress() - Method in interface com.bloomberg.bmq.ResultCodes.OpenQueueCode
-
 
-
isAlreadyOpened() - Method in interface com.bloomberg.bmq.ResultCodes.OpenQueueCode
-
 
-
isCanceled() - Method in interface com.bloomberg.bmq.ResultCodes.GenericCode
-
 
-
isFailure() - Method in interface com.bloomberg.bmq.ResultCodes.GenericCode
-
 
-
isInvalidArgument() - Method in interface com.bloomberg.bmq.ResultCodes.GenericCode
-
 
-
isInvalidFlags() - Method in interface com.bloomberg.bmq.ResultCodes.OpenQueueCode
-
 
-
isInvalidQueue() - Method in interface com.bloomberg.bmq.ResultCodes.CloseQueueCode
-
 
-
isInvalidQueue() - Method in interface com.bloomberg.bmq.ResultCodes.ConfigureQueueCode
-
 
-
isInvalidUri() - Method in interface com.bloomberg.bmq.ResultCodes.OpenQueueCode
-
 
-
isLimitBytes() - Method in interface com.bloomberg.bmq.ResultCodes.AckCode
-
 
-
isLimitMessages() - Method in interface com.bloomberg.bmq.ResultCodes.AckCode
-
 
-
isNotConnected() - Method in interface com.bloomberg.bmq.ResultCodes.GenericCode
-
 
-
isNotReady() - Method in interface com.bloomberg.bmq.ResultCodes.GenericCode
-
 
-
isNotSupproted() - Method in interface com.bloomberg.bmq.ResultCodes.GenericCode
-
 
-
isOpen() - Method in interface com.bloomberg.bmq.Queue
-
-
Checks if the queue is opened.
-
-
isQueueIdNotUnique() - Method in interface com.bloomberg.bmq.ResultCodes.OpenQueueCode
-
 
-
isReader(long) - Static method in enum com.bloomberg.bmq.QueueFlags
-
-
Returns true if the specified flags represent a reader.
-
-
isRefused() - Method in interface com.bloomberg.bmq.ResultCodes.GenericCode
-
 
-
isStarted() - Method in interface com.bloomberg.bmq.AbstractSession
-
-
Check if the 'Session' is started
-
-
isStarted() - Method in class com.bloomberg.bmq.Session
-
-
Checks if the session is started.
-
-
isStorageFailure() - Method in interface com.bloomberg.bmq.ResultCodes.AckCode
-
 
-
isSuccess() - Method in interface com.bloomberg.bmq.ResultCodes.GenericCode
-
 
-
isTimeout() - Method in interface com.bloomberg.bmq.ResultCodes.GenericCode
-
 
-
isUnknown() - Method in interface com.bloomberg.bmq.ResultCodes.GenericCode
-
 
-
isUnknownQueue() - Method in interface com.bloomberg.bmq.ResultCodes.CloseQueueCode
-
 
-
isValidHexRepresentation(byte[]) - Static method in class com.bloomberg.bmq.MessageGUID
-
-
Returns true if the specified buffer is a valid hex representation of a MessageGUID.
-
-
isWriter(long) - Static method in enum com.bloomberg.bmq.QueueFlags
-
-
Returns true if the specified flags represent a writer.
-
-
- - - -

K

-
-
k_CONSUMER_PRIORITY_DEFAULT - Static variable in class com.bloomberg.bmq.QueueOptions
-
-
Default priority of a consumer with respect to delivery of messages.
-
-
k_MAX_UNCONFIRMED_BYTES_DEFAULT - Static variable in class com.bloomberg.bmq.QueueOptions
-
-
Default maximum accumulated bytes of all outstanding messages that can be sent by the broker - without being confirmed.
-
-
k_MAX_UNCONFIRMED_MESSAGES_DEFAULT - Static variable in class com.bloomberg.bmq.QueueOptions
-
-
Default maximum number of outstanding messages that can be sent by the broker without being - confirmed.
-
-
k_SUSPENDS_ON_BAD_HOST_HEALTH_DEFAULT - Static variable in class com.bloomberg.bmq.QueueOptions
-
-
By default, queue is not sensitive to host-health changes.
-
-
- - - -

L

-
-
linger() - Method in interface com.bloomberg.bmq.AbstractSession
-
-
Shutdown all connection and event handling threads.
-
-
linger() - Method in class com.bloomberg.bmq.Session
-
-
Shutdowns all connection and event handling threads.
-
-
lowWaterMark() - Method in class com.bloomberg.bmq.SessionOptions.InboundEventBufferWaterMark
-
-
Returns LWM value.
-
-
lowWaterMark() - Method in class com.bloomberg.bmq.SessionOptions.WriteBufferWaterMark
-
-
Returns LWM value.
-
-
- - - -

M

-
-
merge(QueueOptions) - Method in class com.bloomberg.bmq.QueueOptions.Builder
-
-
"Merges" another 'QueueOptions' into this builder, by invoking setF(options.getF()) for - all fields 'F' for which 'options.hasF()' is true.
-
-
messageGUID() - Method in interface com.bloomberg.bmq.AckMessage
-
-
Returns unique MessageGUID assigned to this message by the broker.
-
-
MessageGUID - Class in com.bloomberg.bmq
-
-
Provides a value-semantic global unique identifier for BlazingMQ messages.
-
-
messageGUID() - Method in interface com.bloomberg.bmq.PushMessage
-
-
Returns unique MessageGUID assigned to this message by the broker.
-
-
MessageProperties - Interface in com.bloomberg.bmq
-
-
Interface to manipulate with message properties.
-
-
messageProperties() - Method in interface com.bloomberg.bmq.PutMessage
-
-
Get reference to the message properties object.
-
-
MessageProperty - Interface in com.bloomberg.bmq
-
-
Represents a message property, which is a name-value pair.
-
-
MessageProperty.BinaryProperty - Interface in com.bloomberg.bmq
-
-
Represents message property which value has type BINARY.
-
-
MessageProperty.BoolProperty - Interface in com.bloomberg.bmq
-
-
Represents a boolean message property.
-
-
MessageProperty.ByteProperty - Interface in com.bloomberg.bmq
-
-
Represents one byte message property.
-
-
MessageProperty.Int32Property - Interface in com.bloomberg.bmq
-
-
Represents message property which value has type INT32.
-
-
MessageProperty.Int64Property - Interface in com.bloomberg.bmq
-
-
Represents message property which value has type INT64.
-
-
MessageProperty.ShortProperty - Interface in com.bloomberg.bmq
-
-
Represents message property which value has type SHORT.
-
-
MessageProperty.StringProperty - Interface in com.bloomberg.bmq
-
-
Represents message property which value has type STRING.
-
-
MessageProperty.Type - Enum in com.bloomberg.bmq
-
-
Enum for supported data types for a message property.
-
-
- - - -

N

-
-
name() - Method in interface com.bloomberg.bmq.MessageProperty
-
-
Returns this property name.
-
-
- - - -

O

-
-
onHostHealthStateChanged(HostHealthState) - Method in interface com.bloomberg.bmq.HostHealthMonitor.Handler
-
-
Invoked as a response to the HostHealthMonitor detecting a change in the state of - the host health
-
-
open(QueueOptions, Duration) - Method in interface com.bloomberg.bmq.Queue
-
-
Opens the queue synchronously.
-
-
openAsync(QueueOptions, Duration) - Method in interface com.bloomberg.bmq.Queue
-
-
Opens the queue asynchronously.
-
-
openQueueTimeout() - Method in class com.bloomberg.bmq.SessionOptions
-
-
Returns timeout value that defines how much time the user gives to the Queue for successful queue opening.
-
-
- - - -

P

-
-
pack(PutMessage) - Method in interface com.bloomberg.bmq.Queue
-
-
Adds a single PUT message to be sent withing multi message PUT event.
-
-
path() - Method in class com.bloomberg.bmq.Uri
-
-
Returns path part of the URI in terms of the URI RFC terminology.
-
-
payload() - Method in interface com.bloomberg.bmq.PushMessage
-
-
Returns user payload data of this message.
-
-
post(PutMessage) - Method in interface com.bloomberg.bmq.Queue
-
-
Sends a single PUT message to this queue.
-
-
propertyIterator() - Method in interface com.bloomberg.bmq.PushMessage
-
-
Returns a standart Iterator to iterate over existed properties.
-
-
PushMessage - Interface in com.bloomberg.bmq
-
-
PUSH message representation.
-
-
PushMessageHandler - Interface in com.bloomberg.bmq
-
-
User callback interface to handle incoming PUSH messages.
-
-
PutMessage - Interface in com.bloomberg.bmq
-
-
PUT message representation.
-
-
- - - -

Q

-
-
qualifiedDomain() - Method in class com.bloomberg.bmq.Uri
-
-
Returns qualifiedDomain part of the URI in terms of the BlazingMQ terminology.
-
-
queue() - Method in interface com.bloomberg.bmq.PutMessage
-
-
Returns an interface to the queue that this message is related to.
-
-
Queue - Interface in com.bloomberg.bmq
-
-
SDK Queue representation.
-
-
queue() - Method in interface com.bloomberg.bmq.QueueEvent
-
-
Returns an interface to the queue that this event is related to.
-
-
queue() - Method in class com.bloomberg.bmq.Uri
-
-
Returns queue part of the URI in terms of the BlazingMQ terminology.
-
-
QueueControlEvent - Interface in com.bloomberg.bmq
-
-
Represents the queue related event that reports a status of asynchronous operation usually - initiated by the user.
-
-
QueueControlEvent.CloseQueueResult - Interface in com.bloomberg.bmq
-
-
Close queue status event.
-
-
QueueControlEvent.ConfigureQueueResult - Interface in com.bloomberg.bmq
-
-
Configure queue status event.
-
-
QueueControlEvent.OpenQueueResult - Interface in com.bloomberg.bmq
-
-
Open queue status event.
-
-
QueueControlEvent.ReopenQueueResult - Interface in com.bloomberg.bmq
-
-
Reopen queue status event.
-
-
QueueControlEvent.ResumeQueueResult - Interface in com.bloomberg.bmq
-
-
Resume queue status event.
-
-
QueueControlEvent.SuspendQueueResult - Interface in com.bloomberg.bmq
-
-
Suspend queue status event.
-
-
QueueControlEvent.Type - Enum in com.bloomberg.bmq
-
 
-
QueueEvent - Interface in com.bloomberg.bmq
-
-
Represents a BlazingMQ event related to the particular queue state.
-
-
QueueEventHandler - Interface in com.bloomberg.bmq
-
-
User callback interface to handle queue related events.
-
-
QueueFlags - Enum in com.bloomberg.bmq
-
- -
-
QueueOptions - Class in com.bloomberg.bmq
-
-
A value-semantic type for options related to a queue.
-
-
QueueOptions.Builder - Class in com.bloomberg.bmq
-
-
A helper class to create immutable QueueOptions with custom settings.
-
-
- - - -

R

-
-
removeHandler(HostHealthMonitor.Handler) - Method in interface com.bloomberg.bmq.HostHealthMonitor
-
-
Unregisters the specified `handler'
-
-
result() - Method in interface com.bloomberg.bmq.QueueControlEvent.CloseQueueResult
-
-
Returns a result of the Queue.closeAsync(java.time.Duration) operation.
-
-
result() - Method in interface com.bloomberg.bmq.QueueControlEvent.ConfigureQueueResult
-
- -
-
result() - Method in interface com.bloomberg.bmq.QueueControlEvent.OpenQueueResult
-
- -
-
result() - Method in interface com.bloomberg.bmq.QueueControlEvent.ReopenQueueResult
-
-
Returns a result of the queue reopen operation, usually initiated by the SDK.
-
-
result() - Method in interface com.bloomberg.bmq.QueueControlEvent
-
-
Returns a result of the asynchronous operation.
-
-
result() - Method in interface com.bloomberg.bmq.QueueControlEvent.ResumeQueueResult
-
-
Returns a result of the queue suspension.
-
-
result() - Method in interface com.bloomberg.bmq.QueueControlEvent.SuspendQueueResult
-
-
Returns a result of the queue suspension.
-
-
result() - Method in interface com.bloomberg.bmq.SessionEvent.StartStatus
-
-
Returns a result of the startAsync(java.time.Duration) operation.
-
-
result() - Method in interface com.bloomberg.bmq.SessionEvent.StopStatus
-
-
Returns a result of the stopAsync(java.time.Duration) operation.
-
-
ResultCodes - Class in com.bloomberg.bmq
-
 
-
ResultCodes() - Constructor for class com.bloomberg.bmq.ResultCodes
-
 
-
ResultCodes.AckCode - Interface in com.bloomberg.bmq
-
 
-
ResultCodes.AckResult - Enum in com.bloomberg.bmq
-
 
-
ResultCodes.CloseQueueCode - Interface in com.bloomberg.bmq
-
 
-
ResultCodes.CloseQueueResult - Enum in com.bloomberg.bmq
-
 
-
ResultCodes.ConfigureQueueCode - Interface in com.bloomberg.bmq
-
 
-
ResultCodes.ConfigureQueueResult - Enum in com.bloomberg.bmq
-
 
-
ResultCodes.GenericCode - Interface in com.bloomberg.bmq
-
 
-
ResultCodes.GenericResult - Enum in com.bloomberg.bmq
-
 
-
ResultCodes.OpenQueueCode - Interface in com.bloomberg.bmq
-
 
-
ResultCodes.OpenQueueResult - Enum in com.bloomberg.bmq
-
 
-
ResultCodes.OperationResultCode<RESULT extends ResultCodes.GenericCode> - Interface in com.bloomberg.bmq
-
 
-
- - - -

S

-
-
scheme() - Method in class com.bloomberg.bmq.Uri
-
-
Returns scheme part of the URI in terms of the URI RFC terminology.
-
-
session() - Method in interface com.bloomberg.bmq.Event
-
-
Returns interface to the session that has generated this event.
-
-
Session - Class in com.bloomberg.bmq
-
-
Provides access to the BlazingMQ broker.
-
-
Session(SessionEventHandler) - Constructor for class com.bloomberg.bmq.Session
-
-
Creates a new session object with default session options.
-
-
Session(SessionOptions, SessionEventHandler) - Constructor for class com.bloomberg.bmq.Session
-
-
Creates a new session object.
-
-
SessionEvent - Interface in com.bloomberg.bmq
-
-
Represents a BlazingMQ event related to the whole session state.
-
-
SessionEvent.ConnectionLost - Interface in com.bloomberg.bmq
-
-
Event that notifies the session has lost the broker connection.
-
-
SessionEvent.HostHealthRestored - Interface in com.bloomberg.bmq
-
-
Event that notifies the health of the host has restored.
-
-
SessionEvent.HostUnhealthy - Interface in com.bloomberg.bmq
-
-
Event that notifies the host has become unhealthy.
-
-
SessionEvent.Reconnected - Interface in com.bloomberg.bmq
-
-
Event that notifies the session has restored the broker connection.
-
-
SessionEvent.SlowConsumerHighWatermark - Interface in com.bloomberg.bmq
-
-
Event that notifies the inbound event buffer has reached the high watermark value.
-
-
SessionEvent.SlowConsumerNormal - Interface in com.bloomberg.bmq
-
-
Event that notifies the inbound event buffer has reached the low watermark value.
-
-
SessionEvent.StartStatus - Interface in com.bloomberg.bmq
-
-
Session start status event.
-
-
SessionEvent.StateRestored - Interface in com.bloomberg.bmq
-
-
Event that notifies the session has restored the state of all opened queues.
-
-
SessionEvent.StopStatus - Interface in com.bloomberg.bmq
-
-
Session stop status event.
-
-
SessionEvent.Type - Enum in com.bloomberg.bmq
-
-
Session event types.
-
-
SessionEventHandler - Interface in com.bloomberg.bmq
-
-
User callback interface to handle session related events.
-
-
SessionOptions - Class in com.bloomberg.bmq
-
-
A value-semantic type to configure session with the broker.
-
-
SessionOptions.Builder - Class in com.bloomberg.bmq
-
-
Helper class to create a SesssionOptions object with custom settings.
-
-
SessionOptions.InboundEventBufferWaterMark - Class in com.bloomberg.bmq
-
-
Immutable helper class to set sizes (in number of events) for the inbound event buffer high - and low watermarks.
-
-
SessionOptions.WriteBufferWaterMark - Class in com.bloomberg.bmq
-
-
Immutable helper class to set sizes (in bytes) for write cache high and low watermarks on the - channel.
-
-
setAck(long) - Static method in enum com.bloomberg.bmq.QueueFlags
-
-
Sets the specified flags representation for ack.
-
-
setAdmin(long) - Static method in enum com.bloomberg.bmq.QueueFlags
-
-
Sets the specified flags representation for admin.
-
-
setBrokerUri(URI) - Method in class com.bloomberg.bmq.SessionOptions.Builder
-
-
Sets URI to connect with the broker.
-
-
setCloseQueueTimeout(Duration) - Method in class com.bloomberg.bmq.SessionOptions.Builder
-
-
Sets timeout value for close queue operation
-
-
setCompressionAlgorithm(CompressionAlgorithm) - Method in interface com.bloomberg.bmq.PutMessage
-
-
Sets message payload compression algorithm.
-
-
setConfigureQueueTimeout(Duration) - Method in class com.bloomberg.bmq.SessionOptions.Builder
-
-
Sets timeout value for configure queue operation
-
-
setConsumerPriority(int) - Method in class com.bloomberg.bmq.QueueOptions.Builder
-
-
Sets priority of a consumer with respect to delivery of messages.
-
-
setCorrelationId() - Method in interface com.bloomberg.bmq.PutMessage
-
-
Sets and returns a new CorrelationId that contains an auto-assigned integer value - starting from 1 and up to 0xFFFFFF.
-
-
setCorrelationId(Object) - Method in interface com.bloomberg.bmq.PutMessage
-
-
Sets and returns a new CorrelationId that binds an auto-assigned integer value - starting from 1 and up to 0xFFFFFF and the user specified Object.
-
-
setHostHealthMonitor(HostHealthMonitor) - Method in class com.bloomberg.bmq.SessionOptions.Builder
-
-
Sets host health monitor object.
-
-
setInboundBufferWaterMark(SessionOptions.InboundEventBufferWaterMark) - Method in class com.bloomberg.bmq.SessionOptions.Builder
-
-
Sets low and high inbound buffer watermark values
-
-
setMaxUnconfirmedBytes(long) - Method in class com.bloomberg.bmq.QueueOptions.Builder
-
-
Sets maximum accumulated bytes of all outstanding messages that can be sent by the broker - without being confirmed.
-
-
setMaxUnconfirmedMessages(long) - Method in class com.bloomberg.bmq.QueueOptions.Builder
-
-
Sets maximum number of outstanding messages that can be sent by the broker without being - confirmed.
-
-
setOpenQueueTimeout(Duration) - Method in class com.bloomberg.bmq.SessionOptions.Builder
-
-
Sets timeout value for open queue operation
-
-
setPropertyAsBinary(String, byte[]) - Method in interface com.bloomberg.bmq.MessageProperties
-
-
Sets a property with the specified name having the specified value as an - array of bytes.
-
-
setPropertyAsBool(String, boolean) - Method in interface com.bloomberg.bmq.MessageProperties
-
-
Sets a property with the specified name having the specified value of the - type boolean.
-
-
setPropertyAsByte(String, byte) - Method in interface com.bloomberg.bmq.MessageProperties
-
-
Sets a property with the specified name having the specified value of the - type byte.
-
-
setPropertyAsInt32(String, int) - Method in interface com.bloomberg.bmq.MessageProperties
-
-
Sets a property with the specified name having the specified value of the - type int.
-
-
setPropertyAsInt64(String, long) - Method in interface com.bloomberg.bmq.MessageProperties
-
-
Sets a property with the specified name having the specified value of the - type long.
-
-
setPropertyAsShort(String, short) - Method in interface com.bloomberg.bmq.MessageProperties
-
-
Sets a property with the specified name having the specified value of the - type short.
-
-
setPropertyAsString(String, String) - Method in interface com.bloomberg.bmq.MessageProperties
-
-
Sets a property with the specified name having the specified value of the - type String.
-
-
setReader(long) - Static method in enum com.bloomberg.bmq.QueueFlags
-
-
Sets the specified flags representation for reader.
-
-
setStartTimeout(Duration) - Method in class com.bloomberg.bmq.SessionOptions.Builder
-
-
Sets session start timeout
-
-
setStatsDumpInterval(Duration) - Method in class com.bloomberg.bmq.SessionOptions.Builder
-
-
Sets the stats dump interval to the specified 'value'.
-
-
setStopTimeout(Duration) - Method in class com.bloomberg.bmq.SessionOptions.Builder
-
-
Sets session stop timeout
-
-
setSuspendsOnBadHostHealth(boolean) - Method in class com.bloomberg.bmq.QueueOptions.Builder
-
-
Sets whether queue should suspend when the host machine is unhealthy.
-
-
setWriteBufferWaterMark(SessionOptions.WriteBufferWaterMark) - Method in class com.bloomberg.bmq.SessionOptions.Builder
-
-
Sets low and high channel watermark values
-
-
setWriter(long) - Static method in enum com.bloomberg.bmq.QueueFlags
-
-
Sets the specified flags representation for writer.
-
-
SIZE_BINARY - Static variable in class com.bloomberg.bmq.MessageGUID
-
-
The size of a buffer needed to represent a GUID.
-
-
SIZE_HEX - Static variable in class com.bloomberg.bmq.MessageGUID
-
-
The size of a hexadecimal string representation of the GUID.
-
-
start(Duration) - Method in interface com.bloomberg.bmq.AbstractSession
-
-
Connect to the BlazingMQ broker and start the message processing
-
-
start(Duration) - Method in class com.bloomberg.bmq.Session
-
-
Connects to the BlazingMQ broker and start the message processing.
-
-
startAsync(Duration) - Method in interface com.bloomberg.bmq.AbstractSession
-
-
Connect to the BlazingMQ broker and start the message processing
-
-
startAsync(Duration) - Method in class com.bloomberg.bmq.Session
-
-
Connects to the BlazingMQ broker and start the message processing
-
-
startTimeout() - Method in class com.bloomberg.bmq.SessionOptions
-
-
Returns timeout value that defines how much time the user gives to the Session for successful start.
-
-
statsDumpInterval() - Method in class com.bloomberg.bmq.SessionOptions
-
-
Returns interval (in seconds) at which to dump stats in the logs.
-
-
status() - Method in interface com.bloomberg.bmq.AckMessage
-
-
Returns the status of this message set by the broker.
-
-
stop(Duration) - Method in interface com.bloomberg.bmq.AbstractSession
-
-
Gracefully disconnect from the BlazingMQ broker and stop the operation of this 'Session'.
-
-
stop(Duration) - Method in class com.bloomberg.bmq.Session
-
-
Gracefully disconnects from the BlazingMQ broker and stop the operation of this session.
-
-
stopAsync(Duration) - Method in interface com.bloomberg.bmq.AbstractSession
-
-
Gracefully disconnect from the BlazingMQ broker and stop the operation of this 'Session'.
-
-
stopAsync(Duration) - Method in class com.bloomberg.bmq.Session
-
-
Gracefully disconnects from the BlazingMQ broker and stop the operation of this session.
-
-
stopTimeout() - Method in class com.bloomberg.bmq.SessionOptions
-
-
Returns timeout value that defines how much time the user gives to the Session for successful stop.
-
-
- - - -

T

-
-
tier() - Method in class com.bloomberg.bmq.Uri
-
-
Returns tier part of the URI in terms of the BlazingMQ terminology.
-
-
toBinary(byte[]) - Method in class com.bloomberg.bmq.MessageGUID
-
-
Writes a binary representation of this object to the specified destination which - length should be MessageGUID.SIZE_BINARY.
-
-
toHex() - Method in class com.bloomberg.bmq.MessageGUID
-
-
Returns a hex representation of this object as a String.
-
-
toInt() - Method in enum com.bloomberg.bmq.QueueFlags
-
-
Returns integer representation of this enum value.
-
-
toString() - Method in class com.bloomberg.bmq.MessageGUID
-
-
Returns a hex representation of this object as a String.
-
-
toString() - Method in class com.bloomberg.bmq.QueueOptions
-
 
-
toString() - Method in class com.bloomberg.bmq.Uri
-
-
Returns a string representation of the URI.
-
-
type() - Method in interface com.bloomberg.bmq.MessageProperty.BinaryProperty
-
-
Returns this property type, MessageProperty.Type.BINARY by default.
-
-
type() - Method in interface com.bloomberg.bmq.MessageProperty.BoolProperty
-
-
Returns this property type, MessageProperty.Type.BOOL by default.
-
-
type() - Method in interface com.bloomberg.bmq.MessageProperty.ByteProperty
-
-
Returns this property type, MessageProperty.Type.BYTE by default.
-
-
type() - Method in interface com.bloomberg.bmq.MessageProperty.Int32Property
-
-
Returns this property type, MessageProperty.Type.INT32 by default.
-
-
type() - Method in interface com.bloomberg.bmq.MessageProperty.Int64Property
-
-
Returns this property type, MessageProperty.Type.INT64 by default.
-
-
type() - Method in interface com.bloomberg.bmq.MessageProperty.ShortProperty
-
-
Returns this property type, MessageProperty.Type.SHORT by default.
-
-
type() - Method in interface com.bloomberg.bmq.MessageProperty.StringProperty
-
-
Returns this property type, MessageProperty.Type.STRING by default.
-
-
type() - Method in interface com.bloomberg.bmq.MessageProperty
-
-
Returns this property type.
-
-
type() - Method in interface com.bloomberg.bmq.QueueControlEvent.CloseQueueResult
-
-
Returns event type, QueueControlEvent.Type.QUEUE_CLOSE_RESULT by default
-
-
type() - Method in interface com.bloomberg.bmq.QueueControlEvent.ConfigureQueueResult
-
-
Returns event type, QueueControlEvent.Type.QUEUE_CONFIGURE_RESULT by default
-
-
type() - Method in interface com.bloomberg.bmq.QueueControlEvent.OpenQueueResult
-
-
Returns event type, QueueControlEvent.Type.QUEUE_OPEN_RESULT by default
-
-
type() - Method in interface com.bloomberg.bmq.QueueControlEvent.ReopenQueueResult
-
-
Returns event type, QueueControlEvent.Type.QUEUE_REOPEN_RESULT by default
-
-
type() - Method in interface com.bloomberg.bmq.QueueControlEvent.ResumeQueueResult
-
-
Returns event type, QueueControlEvent.Type.QUEUE_RESUMED by default
-
-
type() - Method in interface com.bloomberg.bmq.QueueControlEvent.SuspendQueueResult
-
-
Returns event type, QueueControlEvent.Type.QUEUE_SUSPENDED by default
-
-
type() - Method in interface com.bloomberg.bmq.QueueControlEvent
-
-
Returns event type.
-
-
type() - Method in interface com.bloomberg.bmq.SessionEvent.ConnectionLost
-
- -
-
type() - Method in interface com.bloomberg.bmq.SessionEvent.HostHealthRestored
-
- -
-
type() - Method in interface com.bloomberg.bmq.SessionEvent.HostUnhealthy
-
-
Returns event type, SessionEvent.Type.HOST_UNHEALTHY_SESSION_EVENT by default
-
-
type() - Method in interface com.bloomberg.bmq.SessionEvent.Reconnected
-
-
Returns event type, SessionEvent.Type.RECONNECTED_SESSION_EVENT by default
-
-
type() - Method in interface com.bloomberg.bmq.SessionEvent.SlowConsumerHighWatermark
-
- -
-
type() - Method in interface com.bloomberg.bmq.SessionEvent.SlowConsumerNormal
-
- -
-
type() - Method in interface com.bloomberg.bmq.SessionEvent.StartStatus
-
-
Returns event type, SessionEvent.Type.START_STATUS_SESSION_EVENT by default
-
-
type() - Method in interface com.bloomberg.bmq.SessionEvent.StateRestored
-
-
Returns event type, SessionEvent.Type.STATE_RESTORED_SESSION_EVENT by default
-
-
type() - Method in interface com.bloomberg.bmq.SessionEvent.StopStatus
-
-
Returns event type, SessionEvent.Type.STOP_STATUS_SESSION_EVENT by default
-
-
type() - Method in interface com.bloomberg.bmq.SessionEvent
-
-
Returns event type.
-
-
- - - -

U

-
-
upcast(ResultCodes.GenericCode) - Static method in enum com.bloomberg.bmq.ResultCodes.CloseQueueResult
-
 
-
upcast(ResultCodes.GenericCode) - Static method in enum com.bloomberg.bmq.ResultCodes.ConfigureQueueResult
-
 
-
upcast(ResultCodes.GenericCode) - Static method in enum com.bloomberg.bmq.ResultCodes.OpenQueueResult
-
 
-
uri() - Method in interface com.bloomberg.bmq.Queue
-
-
Gets queue URI.
-
-
Uri - Class in com.bloomberg.bmq
-
-
Provides value-semantic type and utilities for a BlazingMQ queue URI.
-
-
Uri(String) - Constructor for class com.bloomberg.bmq.Uri
-
-
Constructs this object from the specified uri string.
-
-
userData() - Method in interface com.bloomberg.bmq.CorrelationId
-
-
Returns the user provided Object associated with this correlation ID.
-
-
- - - -

V

-
-
value() - Method in interface com.bloomberg.bmq.MessageProperty.BinaryProperty
-
-
Returns this property value as byte array.
-
-
value() - Method in interface com.bloomberg.bmq.MessageProperty.BoolProperty
-
-
Returns this property value as Boolean.
-
-
value() - Method in interface com.bloomberg.bmq.MessageProperty.ByteProperty
-
-
Returns this property value as Byte.
-
-
value() - Method in interface com.bloomberg.bmq.MessageProperty.Int32Property
-
-
Returns this property value as Integer.
-
-
value() - Method in interface com.bloomberg.bmq.MessageProperty.Int64Property
-
-
Returns this property value as Long.
-
-
value() - Method in interface com.bloomberg.bmq.MessageProperty.ShortProperty
-
-
Returns this property value as Short.
-
-
value() - Method in interface com.bloomberg.bmq.MessageProperty.StringProperty
-
-
Returns this property value as String.
-
-
value() - Method in interface com.bloomberg.bmq.MessageProperty
-
-
Returns this property value.
-
-
valueOf(String) - Static method in enum com.bloomberg.bmq.CompressionAlgorithm
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.bloomberg.bmq.HostHealthState
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.bloomberg.bmq.MessageProperty.Type
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.bloomberg.bmq.QueueControlEvent.Type
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.bloomberg.bmq.QueueFlags
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.bloomberg.bmq.ResultCodes.AckResult
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.bloomberg.bmq.ResultCodes.CloseQueueResult
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.bloomberg.bmq.ResultCodes.ConfigureQueueResult
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.bloomberg.bmq.ResultCodes.GenericResult
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.bloomberg.bmq.ResultCodes.OpenQueueResult
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.bloomberg.bmq.SessionEvent.Type
-
-
Returns the enum constant of this type with the specified name.
-
-
values() - Static method in enum com.bloomberg.bmq.CompressionAlgorithm
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.bloomberg.bmq.HostHealthState
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.bloomberg.bmq.MessageProperty.Type
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.bloomberg.bmq.QueueControlEvent.Type
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.bloomberg.bmq.QueueFlags
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.bloomberg.bmq.ResultCodes.AckResult
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.bloomberg.bmq.ResultCodes.CloseQueueResult
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.bloomberg.bmq.ResultCodes.ConfigureQueueResult
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.bloomberg.bmq.ResultCodes.GenericResult
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.bloomberg.bmq.ResultCodes.OpenQueueResult
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.bloomberg.bmq.SessionEvent.Type
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
- - - -

W

-
-
writeBufferWaterMark() - Method in class com.bloomberg.bmq.SessionOptions
-
-
Returns a helper class object that holds high and low channel watermark values.
-
-
WriteBufferWaterMark() - Constructor for class com.bloomberg.bmq.SessionOptions.WriteBufferWaterMark
-
-
Creates this class object with default high and low watermark values.
-
-
WriteBufferWaterMark(int, int) - Constructor for class com.bloomberg.bmq.SessionOptions.WriteBufferWaterMark
-
-
Creates this class object with specified high and low watermark values.
-
-
-A B C D E F G H I K L M N O P Q R S T U V W 
- -
- - - - - - - -
- - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/index.html b/docs/docs/apidocs/java_apidocs/index.html deleted file mode 100644 index 1d707e173..000000000 --- a/docs/docs/apidocs/java_apidocs/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - -BlazingMQ Java SDK 0.0.10-SNAPSHOT API - - - - - - -<noscript> -<div>JavaScript is disabled on your browser.</div> -</noscript> -<h2>Frame Alert</h2> -<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="com/bloomberg/bmq/package-summary.html">Non-frame version</a>.</p> - - - diff --git a/docs/docs/apidocs/java_apidocs/overview-tree.html b/docs/docs/apidocs/java_apidocs/overview-tree.html deleted file mode 100644 index 26ef2cb2a..000000000 --- a/docs/docs/apidocs/java_apidocs/overview-tree.html +++ /dev/null @@ -1,289 +0,0 @@ - - - - - - -Class Hierarchy (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Hierarchy For All Packages

-Package Hierarchies: - -
-
-

Class Hierarchy

- -

Interface Hierarchy

- -

Enum Hierarchy

- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/package-list b/docs/docs/apidocs/java_apidocs/package-list deleted file mode 100644 index 838e8f38f..000000000 --- a/docs/docs/apidocs/java_apidocs/package-list +++ /dev/null @@ -1 +0,0 @@ -com.bloomberg.bmq diff --git a/docs/docs/apidocs/java_apidocs/script.js b/docs/docs/apidocs/java_apidocs/script.js deleted file mode 100644 index b34635693..000000000 --- a/docs/docs/apidocs/java_apidocs/script.js +++ /dev/null @@ -1,30 +0,0 @@ -function show(type) -{ - count = 0; - for (var key in methods) { - var row = document.getElementById(key); - if ((methods[key] & type) != 0) { - row.style.display = ''; - row.className = (count++ % 2) ? rowColor : altColor; - } - else - row.style.display = 'none'; - } - updateTabs(type); -} - -function updateTabs(type) -{ - for (var value in tabs) { - var sNode = document.getElementById(tabs[value][0]); - var spanNode = sNode.firstChild; - if (value == type) { - sNode.className = activeTableTab; - spanNode.innerHTML = tabs[value][1]; - } - else { - sNode.className = tableTab; - spanNode.innerHTML = "" + tabs[value][1] + ""; - } - } -} diff --git a/docs/docs/apidocs/java_apidocs/serialized-form.html b/docs/docs/apidocs/java_apidocs/serialized-form.html deleted file mode 100644 index 1ad53d33d..000000000 --- a/docs/docs/apidocs/java_apidocs/serialized-form.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - -Serialized Form (BlazingMQ Java SDK 0.0.10-SNAPSHOT API) - - - - - - - - - - - -
-

Serialized Form

-
-
- -
- - - - -

Copyright © 2023 Bloomberg L.P.. All rights reserved.

- - diff --git a/docs/docs/apidocs/java_apidocs/stylesheet.css b/docs/docs/apidocs/java_apidocs/stylesheet.css deleted file mode 100644 index 98055b22d..000000000 --- a/docs/docs/apidocs/java_apidocs/stylesheet.css +++ /dev/null @@ -1,574 +0,0 @@ -/* Javadoc style sheet */ -/* -Overall document style -*/ - -@import url('resources/fonts/dejavu.css'); - -body { - background-color:#ffffff; - color:#353833; - font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:14px; - margin:0; -} -a:link, a:visited { - text-decoration:none; - color:#4A6782; -} -a:hover, a:focus { - text-decoration:none; - color:#bb7a2a; -} -a:active { - text-decoration:none; - color:#4A6782; -} -a[name] { - color:#353833; -} -a[name]:hover { - text-decoration:none; - color:#353833; -} -pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; -} -h1 { - font-size:20px; -} -h2 { - font-size:18px; -} -h3 { - font-size:16px; - font-style:italic; -} -h4 { - font-size:13px; -} -h5 { - font-size:12px; -} -h6 { - font-size:11px; -} -ul { - list-style-type:disc; -} -code, tt { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; - margin-top:8px; - line-height:1.4em; -} -dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; -} -table tr td dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - vertical-align:top; - padding-top:4px; -} -sup { - font-size:8px; -} -/* -Document title and Copyright styles -*/ -.clear { - clear:both; - height:0px; - overflow:hidden; -} -.aboutLanguage { - float:right; - padding:0px 21px; - font-size:11px; - z-index:200; - margin-top:-9px; -} -.legalCopy { - margin-left:.5em; -} -.bar a, .bar a:link, .bar a:visited, .bar a:active { - color:#FFFFFF; - text-decoration:none; -} -.bar a:hover, .bar a:focus { - color:#bb7a2a; -} -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} -/* -Navigation bar styles -*/ -.bar { - background-color:#4D7A97; - color:#FFFFFF; - padding:.8em .5em .4em .8em; - height:auto;/*height:1.8em;*/ - font-size:11px; - margin:0; -} -.topNav { - background-color:#4D7A97; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.bottomNav { - margin-top:10px; - background-color:#4D7A97; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.subNav { - background-color:#dee3e9; - float:left; - width:100%; - overflow:hidden; - font-size:12px; -} -.subNav div { - clear:left; - float:left; - padding:0 0 5px 6px; - text-transform:uppercase; -} -ul.navList, ul.subNavList { - float:left; - margin:0 25px 0 0; - padding:0; -} -ul.navList li{ - list-style:none; - float:left; - padding: 5px 6px; - text-transform:uppercase; -} -ul.subNavList li{ - list-style:none; - float:left; -} -.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { - color:#FFFFFF; - text-decoration:none; - text-transform:uppercase; -} -.topNav a:hover, .bottomNav a:hover { - text-decoration:none; - color:#bb7a2a; - text-transform:uppercase; -} -.navBarCell1Rev { - background-color:#F8981D; - color:#253441; - margin: auto 5px; -} -.skipNav { - position:absolute; - top:auto; - left:-9999px; - overflow:hidden; -} -/* -Page header and footer styles -*/ -.header, .footer { - clear:both; - margin:0 20px; - padding:5px 0 0 0; -} -.indexHeader { - margin:10px; - position:relative; -} -.indexHeader span{ - margin-right:15px; -} -.indexHeader h1 { - font-size:13px; -} -.title { - color:#2c4557; - margin:10px 0; -} -.subTitle { - margin:5px 0 0 0; -} -.header ul { - margin:0 0 15px 0; - padding:0; -} -.footer ul { - margin:20px 0 5px 0; -} -.header ul li, .footer ul li { - list-style:none; - font-size:13px; -} -/* -Heading styles -*/ -div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { - background-color:#dee3e9; - border:1px solid #d0d9e0; - margin:0 0 6px -8px; - padding:7px 5px; -} -ul.blockList ul.blockList ul.blockList li.blockList h3 { - background-color:#dee3e9; - border:1px solid #d0d9e0; - margin:0 0 6px -8px; - padding:7px 5px; -} -ul.blockList ul.blockList li.blockList h3 { - padding:0; - margin:15px 0; -} -ul.blockList li.blockList h2 { - padding:0px 0 20px 0; -} -/* -Page layout container styles -*/ -.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { - clear:both; - padding:10px 20px; - position:relative; -} -.indexContainer { - margin:10px; - position:relative; - font-size:12px; -} -.indexContainer h2 { - font-size:13px; - padding:0 0 3px 0; -} -.indexContainer ul { - margin:0; - padding:0; -} -.indexContainer ul li { - list-style:none; - padding-top:2px; -} -.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { - font-size:12px; - font-weight:bold; - margin:10px 0 0 0; - color:#4E4E4E; -} -.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { - margin:5px 0 10px 0px; - font-size:14px; - font-family:'DejaVu Sans Mono',monospace; -} -.serializedFormContainer dl.nameValue dt { - margin-left:1px; - font-size:1.1em; - display:inline; - font-weight:bold; -} -.serializedFormContainer dl.nameValue dd { - margin:0 0 0 1px; - font-size:1.1em; - display:inline; -} -/* -List styles -*/ -ul.horizontal li { - display:inline; - font-size:0.9em; -} -ul.inheritance { - margin:0; - padding:0; -} -ul.inheritance li { - display:inline; - list-style:none; -} -ul.inheritance li ul.inheritance { - margin-left:15px; - padding-left:15px; - padding-top:1px; -} -ul.blockList, ul.blockListLast { - margin:10px 0 10px 0; - padding:0; -} -ul.blockList li.blockList, ul.blockListLast li.blockList { - list-style:none; - margin-bottom:15px; - line-height:1.4; -} -ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { - padding:0px 20px 5px 10px; - border:1px solid #ededed; - background-color:#f8f8f8; -} -ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { - padding:0 0 5px 8px; - background-color:#ffffff; - border:none; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { - margin-left:0; - padding-left:0; - padding-bottom:15px; - border:none; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { - list-style:none; - border-bottom:none; - padding-bottom:0; -} -table tr td dl, table tr td dl dt, table tr td dl dd { - margin-top:0; - margin-bottom:1px; -} -/* -Table styles -*/ -.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { - width:100%; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; -} -.overviewSummary, .memberSummary { - padding:0px; -} -.overviewSummary caption, .memberSummary caption, .typeSummary caption, -.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { - position:relative; - text-align:left; - background-repeat:no-repeat; - color:#253441; - font-weight:bold; - clear:none; - overflow:hidden; - padding:0px; - padding-top:10px; - padding-left:1px; - margin:0px; - white-space:pre; -} -.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, -.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, -.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, -.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, -.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, -.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, -.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, -.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { - color:#FFFFFF; -} -.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, -.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; - display:inline-block; - float:left; - background-color:#F8981D; - border: none; - height:16px; -} -.memberSummary caption span.activeTableTab span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - margin-right:3px; - display:inline-block; - float:left; - background-color:#F8981D; - height:16px; -} -.memberSummary caption span.tableTab span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - margin-right:3px; - display:inline-block; - float:left; - background-color:#4D7A97; - height:16px; -} -.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { - padding-top:0px; - padding-left:0px; - padding-right:0px; - background-image:none; - float:none; - display:inline; -} -.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, -.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { - display:none; - width:5px; - position:relative; - float:left; - background-color:#F8981D; -} -.memberSummary .activeTableTab .tabEnd { - display:none; - width:5px; - margin-right:3px; - position:relative; - float:left; - background-color:#F8981D; -} -.memberSummary .tableTab .tabEnd { - display:none; - width:5px; - margin-right:3px; - position:relative; - background-color:#4D7A97; - float:left; - -} -.overviewSummary td, .memberSummary td, .typeSummary td, -.useSummary td, .constantsSummary td, .deprecatedSummary td { - text-align:left; - padding:0px 0px 12px 10px; -} -th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, -td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ - vertical-align:top; - padding-right:0px; - padding-top:8px; - padding-bottom:3px; -} -th.colFirst, th.colLast, th.colOne, .constantsSummary th { - background:#dee3e9; - text-align:left; - padding:8px 3px 3px 7px; -} -td.colFirst, th.colFirst { - white-space:nowrap; - font-size:13px; -} -td.colLast, th.colLast { - font-size:13px; -} -td.colOne, th.colOne { - font-size:13px; -} -.overviewSummary td.colFirst, .overviewSummary th.colFirst, -.useSummary td.colFirst, .useSummary th.colFirst, -.overviewSummary td.colOne, .overviewSummary th.colOne, -.memberSummary td.colFirst, .memberSummary th.colFirst, -.memberSummary td.colOne, .memberSummary th.colOne, -.typeSummary td.colFirst{ - width:25%; - vertical-align:top; -} -td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { - font-weight:bold; -} -.tableSubHeadingColor { - background-color:#EEEEFF; -} -.altColor { - background-color:#FFFFFF; -} -.rowColor { - background-color:#EEEEEF; -} -/* -Content styles -*/ -.description pre { - margin-top:0; -} -.deprecatedContent { - margin:0; - padding:10px 0; -} -.docSummary { - padding:0; -} - -ul.blockList ul.blockList ul.blockList li.blockList h3 { - font-style:normal; -} - -div.block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; -} - -td.colLast div { - padding-top:0px; -} - - -td.colLast a { - padding-bottom:3px; -} -/* -Formatting effect styles -*/ -.sourceLineNo { - color:green; - padding:0 30px 0 0; -} -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} -.block { - display:block; - margin:3px 10px 2px 0px; - color:#474747; -} -.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, -.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, -.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { - font-weight:bold; -} -.deprecationComment, .emphasizedPhrase, .interfaceName { - font-style:italic; -} - -div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, -div.block div.block span.interfaceName { - font-style:normal; -} - -div.contentContainer ul.blockList li.blockList h2{ - padding-bottom:0px; -} diff --git a/docs/docs/apidocs/python_apidocs/BUILD.html b/docs/docs/apidocs/python_apidocs/BUILD.html deleted file mode 100644 index b7e5d1cbd..000000000 --- a/docs/docs/apidocs/python_apidocs/BUILD.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - Build instructions for the BlazingMQ Python SDK — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Build instructions for the BlazingMQ Python SDK

-

Running the entire test-suite with all supported interpreters on all -supported architectures is difficult to do, and should already be set -up with GitHub Actions. We advise testing with a single version of -Python on a single architecture locally, and using the GitHub Actions -CI to test on all other combinations in your pull request. See -.github/workflows/build.yaml for more details on how we build and -test on all supported interpreters and architectures.

-

The instructions below assume PYEXEC=python3.9 and will focus on Linux only. -This should be sufficient in most cases.

-

Before following any of the instructions, make sure to git clone the project onto the host machine.

-
-

Using make vs. tox

-

Once the build environment is properly initialized, the project can -be built in-tree (in the project’s working directory tree) using -make build. This is useful to iterate quickly. However, it has the -disadvantages of having to install all of the required -build/test/lint dependencies, along with the potential to -accidentally test against the wrong artifact due to the in-tree build.

-

For a more comprehensive, self-contained setup, use tox to build the project -and run the entire test suite targeting a specific version of the interpreter. -Run tox -l to see all available tox environments.

-
-
-

Local Development

-

The BlazingMQ Python SDK provides a ./build-manylinux.sh script and a -./build-macosx-universal.sh script for setting up a development environment.

-
-
-

Working with Make Targets

-

When in an interactive command line prompt, you can use the following make -targets to build and test the BlazingMQ Python SDK. Check the -appropriate GitHub Actions configuration to set up the appropriate environment -variables that may be needed prior to running these commands (such as setting -PYEXEC). With a BlazingMQ broker running at tcp://localhost:30114, the -following targets build and test the Python SDK:

-
make test-install
-BMQ_BROKER_URI=tcp://localhost:30114 make check
-
-
-

Additional make targets are provided, such as for test coverage. -Dependencies for these can be installed as follows:

-
python3.9 -m pip install -r requirements-dev.txt
-
-
-

And now you should be able to run make coverage.

-

Examine the Makefile, the GitHub Actions configuration, and the tox.ini -file to understand more about these targets and how to use them.

-
-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/CHANGELOG.html b/docs/docs/apidocs/python_apidocs/CHANGELOG.html deleted file mode 100644 index 7c1f634f5..000000000 --- a/docs/docs/apidocs/python_apidocs/CHANGELOG.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - Changelog — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

NOTE

-

You should NOT add new change log entries to this file, this -file is managed by towncrier. You may edit previous change logs to -fix problems like typo corrections or such.

-
-
-

Changelog

-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_enums.html b/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_enums.html deleted file mode 100644 index c124043b9..000000000 --- a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_enums.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - blazingmq._enums — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -

Source code for blazingmq._enums

-# Copyright 2019-2023 Bloomberg Finance L.P.
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed 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.
-
-from enum import Enum
-
-
-
-[docs] -class AckStatus(Enum): - """An enum representing the status of an Ack message - - An `AckStatus` is a status of a received `Ack` message - which is the result of an attempted put to some particular queue. - Anything other than `AckStatus.SUCCESS` represents a failure. - """ - - SUCCESS = object() - UNKNOWN = object() - TIMEOUT = object() - NOT_CONNECTED = object() - CANCELED = object() - NOT_SUPPORTED = object() - REFUSED = object() - INVALID_ARGUMENT = object() - NOT_READY = object() - LIMIT_BYTES = object() - LIMIT_MESSAGES = object() - STORAGE_FAILURE = object() - UNRECOGNIZED = object() - """The `AckStatus` was not recognized by the binding layer""" - - def __repr__(self) -> str: - # hide the unimportant value of `object()` - return f"<{self.__class__.__name__}.{self.name}>"
- - - -
-[docs] -class CompressionAlgorithmType(Enum): - """An enum representing compression algorithm used by a producer""" - - NONE = object() - ZLIB = object() - - def __repr__(self) -> str: - return f"<{self.__class__.__name__}.{self.name}>"
- - - -
-[docs] -class PropertyType(Enum): - """An enum representing various data types understood by BlazingMQ""" - - BOOL = object() - CHAR = object() - SHORT = object() - INT32 = object() - INT64 = object() - STRING = object() - BINARY = object() - - def __repr__(self) -> str: - # hide the unimportant value of `object()` - return f"<{self.__class__.__name__}.{self.name}>"
- -
- -
-
-
- -
- -
-

© Copyright 2019-2023, Bloomberg Finance L.P..

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_messages.html b/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_messages.html deleted file mode 100644 index e88023f3d..000000000 --- a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_messages.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - blazingmq._messages — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -

Source code for blazingmq._messages

-# Copyright 2019-2023 Bloomberg Finance L.P.
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed 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.
-
-from __future__ import annotations
-
-from typing import Optional
-from typing import TYPE_CHECKING
-
-from ._enums import AckStatus
-from ._typing import PropertyTypeDict
-from ._typing import PropertyValueDict
-from .exceptions import Error
-
-if TYPE_CHECKING:
-    # Safely perform circular references only during static type analysis
-    from . import _ext  # pragma: no cover
-
-
-def pretty_hex(blob: bytes) -> str:
-    return blob.hex().upper()
-
-
-def create_message(
-    data: bytes,
-    guid: bytes,
-    queue_uri: str,
-    properties: PropertyValueDict,
-    property_types: PropertyTypeDict,
-) -> Message:
-    inst = Message.__new__(Message)
-    assert isinstance(inst, Message)
-    inst._set_attrs(data, guid, queue_uri, properties, property_types)
-    return inst
-
-
-
-[docs] -class Message: - """A class representing a message received from BlazingMQ. - - A `Message` represents a message delivered by BlazingMQ from a producer - to this queue. This message can only be received if the queue is - opened with 'read=True' mode enabled. - - Attributes: - data (bytes): Payload for the message received from BlazingMQ. - guid (bytes): Globally unique id for this message. - queue_uri (str): Queue URI this message is for. - properties (dict): A dictionary of BlazingMQ message properties. - The dictionary keys must be :class:`str` representing the property - names and the values must be of type :class:`str`, :class:`bytes`, - :class:`bool` or :class:`int`. - property_types (dict): A mapping of property names to - `PropertyType` types. The dictionary is guaranteed to provide - a value for each key already present in `Message.properties` - """ - - def _set_attrs( - self, - data: bytes, - guid: bytes, - queue_uri: str, - properties: PropertyValueDict, - property_types: PropertyTypeDict, - ) -> None: - """Teach mypy what our instance variables are despite our private __init__""" - self.data = data - self.guid = guid - self.queue_uri = queue_uri - self.properties = properties - self.property_types = property_types - - def __init__(self) -> None: - raise Error("The Message class does not have a public constructor.") - - def __repr__(self) -> str: - return f"<Message[{pretty_hex(self.guid)}] for {self.queue_uri}>"
- - - -def create_message_handle(message: Message, ext_session: _ext.Session) -> MessageHandle: - inst = MessageHandle.__new__(MessageHandle) - assert isinstance(inst, MessageHandle) - inst._set_attrs(message, ext_session) - return inst - - -
-[docs] -class MessageHandle: - """Operations that can be performed on a `Message`. - - An instance of this class is received in the ``on_message`` - callback along with an instance of a `Message`. - """ - -
-[docs] - def confirm(self) -> None: - """Confirm the message received along with this handle. - - See `Session.confirm` for more details. - - Raises: - `~blazingmq.Error`: If the confirm message request - was not successful. - """ - self._ext_session.confirm(self._message)
- - - def _set_attrs(self, message: Message, ext_session: _ext.Session) -> None: - """Teach mypy what our instance variables are despite our private __init__""" - self._message = message - self._ext_session = ext_session - - def __init__(self) -> None: - raise Error("The MessageHandle class does not have a public constructor.") - - def __repr__(self) -> str: - return "<MessageHandle[{}] for {}>".format( - pretty_hex(self._message.guid), - self._message.queue_uri, - )
- - - -def create_ack( - guid: Optional[bytes], status: AckStatus, status_description: str, queue_uri: str -) -> Ack: - inst = Ack.__new__(Ack) - assert isinstance(inst, Ack) - inst._set_attrs(guid, status, status_description, queue_uri) - return inst - - -
-[docs] -class Ack: - """Acknowledgment message - - An `Ack` is a notification from BlazingMQ to the application, - specifying that the message has been received. This is valuable - for ensuring delivery of messages. - - These messages will be received in the optionally provided callback to - `Session.post()`. - - An `Ack` is by itself not an indication of success unless it has a status of - `AckStatus.SUCCESS`. - - Attributes: - guid (bytes): a globally unique identifier generated by BlazingMQ for the - message that was successfully posted. This can be correlated between the - producer and consumer to verify the flow of messages. - queue_uri (str): the queue that this message was routed to. This is useful - if you have many queues and you want to route this particular `Ack` to a - particular queue. - status (AckStatus): the `AckStatus` indicating the result of the post - operation. Unless this is of type `AckStatus.SUCCESS`, the post has - failed and potentially needs to be dealt with. - """ - - def _set_attrs( - self, - guid: Optional[bytes], - status: AckStatus, - status_description: str, - queue_uri: str, - ) -> None: - """Teach mypy what our instance variables are despite our private __init__""" - self.guid = guid - self.status = status - self._status_description = status_description - self.queue_uri = queue_uri - - def __init__(self) -> None: - raise Error("The Ack class does not have a public constructor.") - - def __repr__(self) -> str: - guid_identifier = "" if self.guid is None else f"[{pretty_hex(self.guid)}]" - return "<Ack{} {} for {}>".format( - guid_identifier, - self._status_description, - self.queue_uri, - )
- -
- -
-
-
- -
- -
-

© Copyright 2019-2023, Bloomberg Finance L.P..

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_monitors.html b/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_monitors.html deleted file mode 100644 index 761ccf8c0..000000000 --- a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_monitors.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - blazingmq._monitors — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -

Source code for blazingmq._monitors

-# Copyright 2019-2023 Bloomberg Finance L.P.
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed 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.
-
-from ._ext import FakeHostHealthMonitor
-
-
-
-[docs] -class BasicHealthMonitor: - """Control whether a `.Session` sees the host as healthy or unhealthy. - - When a *BasicHealthMonitor* is passed for the `.Session` constructor's - *host_health_monitor* parameter, you can control whether the BlazingMQ - session sees the host as healthy or unhealthy by calling the `.set_healthy` - and `.set_unhealthy` methods. Newly created instances default to the - healthy state. - """ - - def __init__(self) -> None: - self._monitor = FakeHostHealthMonitor() - -
-[docs] - def set_healthy(self) -> None: - """Tell any associated `.Session` that the host is healthy.""" - self._monitor.set_healthy()
- - -
-[docs] - def set_unhealthy(self) -> None: - """Tell any associated `.Session` that the host is unhealthy.""" - self._monitor.set_unhealthy()
- - - def __repr__(self) -> str: - return "BasicHealthMonitor()"
- -
- -
-
-
- -
- -
-

© Copyright 2019-2023, Bloomberg Finance L.P..

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_session.html b/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_session.html deleted file mode 100644 index 9def7c4aa..000000000 --- a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_session.html +++ /dev/null @@ -1,920 +0,0 @@ - - - - - - blazingmq._session — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -

Source code for blazingmq._session

-# Copyright 2019-2023 Bloomberg Finance L.P.
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed 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.
-
-from __future__ import annotations
-
-from typing import Any
-from typing import Callable
-from typing import Dict
-from typing import Optional
-from typing import Tuple
-from typing import Union
-
-from . import _six as six
-from ._enums import CompressionAlgorithmType
-from ._enums import PropertyType
-from ._ext import DEFAULT_CONSUMER_PRIORITY
-from ._ext import DEFAULT_MAX_UNCONFIRMED_BYTES
-from ._ext import DEFAULT_MAX_UNCONFIRMED_MESSAGES
-from ._ext import DEFAULT_SUSPENDS_ON_BAD_HOST_HEALTH
-from ._ext import PROPERTY_TYPES_FROM_PY_MAPPING
-from ._ext import Session as ExtSession
-from ._messages import Ack
-from ._messages import Message
-from ._messages import MessageHandle
-from ._monitors import BasicHealthMonitor
-from ._timeouts import Timeouts
-from ._typing import PropertyTypeDict
-from ._typing import PropertyValueDict
-from ._typing import PropertyValueType
-from .exceptions import Error
-from .session_events import SessionEvent
-
-
-class DefaultTimeoutType(float):
-    def __repr__(self) -> str:
-        return "..."
-
-
-def DefaultMonitor() -> Union[BasicHealthMonitor, None]:
-    return None
-
-
-DEFAULT_TIMEOUT = DefaultTimeoutType()
-KNOWN_MONITORS = ("blazingmq.BasicHealthMonitor",)
-
-
-def _validate_timeouts(timeouts: Timeouts) -> Timeouts:
-    """Validate a `.Timeouts` instance for use by the Cython layer.
-
-    If any of the timeouts contained within the `.Timeouts` instance are the
-    `DEFAULT_TIMEOUT` sentinel or `None`, return `None`.  Otherwise, validate
-    that it is within the range accepted by `bsls::TimeInterval` and return it.
-    """
-    return Timeouts(
-        connect_timeout=_convert_timeout(timeouts.connect_timeout),
-        disconnect_timeout=_convert_timeout(timeouts.disconnect_timeout),
-        open_queue_timeout=_convert_timeout(timeouts.open_queue_timeout),
-        configure_queue_timeout=_convert_timeout(timeouts.configure_queue_timeout),
-        close_queue_timeout=_convert_timeout(timeouts.close_queue_timeout),
-    )
-
-
-def _convert_timeout(timeout: Optional[float]) -> Optional[float]:
-    """Convert the timeout for use by the Cython layer.
-
-    If it is the DEFAULT_TIMEOUT sentinel or None, return None.  Otherwise,
-    validate that it is within the range accepted by bsls::TimeInterval and
-    return it.
-    """
-    if timeout is DEFAULT_TIMEOUT or timeout is None:
-        return None
-    elif 0.0 < timeout < 2**63:
-        return timeout
-    raise ValueError(f"timeout must be greater than 0.0, was {timeout}")
-
-
-def _convert_stats_dump_interval(interval: Optional[float]) -> Optional[float]:
-    """Convert the stats dump interval for use by the Cython layer.
-
-    If is None, return None.  Otherwise, validate that it is within the range
-    accepted by bsls::TimeInterval and return it.
-    """
-    if interval is None:
-        return interval
-    if 0.0 <= interval < 2**63:
-        return interval
-    raise ValueError(f"stats_dump_interval must be nonnegative, was {interval}")
-
-
-def _collect_properties_and_types(
-    properties: Optional[PropertyValueDict],
-    property_type_overrides: Optional[PropertyTypeDict],
-) -> Dict[bytes, Tuple[Union[int, bytes], int]]:
-    property_val_by_name: Dict[bytes, PropertyValueType] = {}
-    property_type_by_name: Dict[bytes, PropertyType] = {}
-
-    if properties:
-        for name, val in properties.items():
-            if isinstance(val, bool):
-                default_type = PropertyType.BOOL
-            elif isinstance(val, int):
-                default_type = PropertyType.INT64
-            elif isinstance(val, str):
-                default_type = PropertyType.STRING
-            elif isinstance(val, bytes):
-                default_type = PropertyType.BINARY
-            else:
-                raise Error(
-                    "Property values of type %r are not supported" % type(val).__name__
-                )
-
-            name_bytes = six.ensure_binary(name)
-            property_val_by_name[name_bytes] = val
-            property_type_by_name[name_bytes] = default_type
-
-    if property_type_overrides:
-        for name, override_type in property_type_overrides.items():
-            name_bytes = six.ensure_binary(name)
-            if name_bytes not in property_type_by_name:
-                raise Error("Received override for non-existent property %r" % name)
-            property_type_by_name[name_bytes] = override_type
-
-    merged: Dict[bytes, Tuple[Union[int, bytes], int]] = {}
-    for name_bytes, val in property_val_by_name.items():
-        property_type = property_type_by_name[name_bytes]
-        type_code = PROPERTY_TYPES_FROM_PY_MAPPING[property_type]
-        if property_type is PropertyType.STRING and isinstance(val, str):
-            merged[name_bytes] = (val.encode("utf-8"), type_code)
-        else:
-            merged[name_bytes] = (val, type_code)  # type: ignore[assignment]
-            # mypy warns because `merged` can still contain Text if a Text value was
-            # passed for a non-STRING field.  If so, the extension gives a nice error.
-
-    return merged
-
-
-
-[docs] -class QueueOptions: - """A value semantic type representing the settings for a queue. - - Each option can be set either by passing it as a keyword argument when - constructing a *QueueOptions* instance, or by setting it as an attribute on - a constructed instance. - - The default for every option is `None`. When calling `.configure_queue`, - options set to `None` are not changed from their current setting. When - calling `.open_queue`, options set to `None` are given default values. - These default values are accessible as class attributes on the - *QueueOptions* class. - - Args: - max_unconfirmed_messages: - The maximum number of messages that can be delivered to the queue - without confirmation. This limit can be reached if the queue - receives messages faster than it confirms received messages. Once - this limit is reached, at least one message must be confirmed - before the queue will receive any more messages. - max_unconfirmed_bytes: - The maximum number of bytes that can be delivered to the queue - without confirmation. Like *max_unconfirmed_messages*, this limit - can be reached if incoming messages are queued up waiting for - already delivered messages to be confirmed. - consumer_priority: - The precedence of this consumer compared to other consumers of the - same queue. The consumer with the highest priority receives the - messages. If multiple consumers share the highest priority, - messages are delivered to them in a round-robin fashion. - suspends_on_bad_host_health: - Whether or not this queue should suspend operation while the host - machine is unhealthy. While operation is suspended, a queue opened - with ``read=True`` will not receive messages and a queue opened - with ``write=True`` will raise if you try to `.post` a message. - By default, queues are not sensitive to the host's health. - """ - - DEFAULT_MAX_UNCONFIRMED_MESSAGES = DEFAULT_MAX_UNCONFIRMED_MESSAGES - """The *max_unconfirmed_messages* used by `.open_queue` by default.""" - - DEFAULT_MAX_UNCONFIRMED_BYTES = DEFAULT_MAX_UNCONFIRMED_BYTES - """The *max_unconfirmed_bytes* used by `.open_queue` by default.""" - - DEFAULT_CONSUMER_PRIORITY = DEFAULT_CONSUMER_PRIORITY - """The *consumer_priority* used by `.open_queue` by default.""" - - DEFAULT_SUSPENDS_ON_BAD_HOST_HEALTH = DEFAULT_SUSPENDS_ON_BAD_HOST_HEALTH - """The *suspends_on_bad_host_health* used by `.open_queue` by default.""" - - def __init__( - self, - max_unconfirmed_messages: Optional[int] = None, - max_unconfirmed_bytes: Optional[int] = None, - consumer_priority: Optional[int] = None, - suspends_on_bad_host_health: Optional[bool] = None, - ) -> None: - self.max_unconfirmed_messages = max_unconfirmed_messages - self.max_unconfirmed_bytes = max_unconfirmed_bytes - self.consumer_priority = consumer_priority - self.suspends_on_bad_host_health = suspends_on_bad_host_health - - def __eq__(self, other: object) -> bool: - if not isinstance(other, QueueOptions): - return False - return ( - self.max_unconfirmed_messages == other.max_unconfirmed_messages - and self.max_unconfirmed_bytes == other.max_unconfirmed_bytes - and self.consumer_priority == other.consumer_priority - and self.suspends_on_bad_host_health == other.suspends_on_bad_host_health - ) - - def __ne__(self, other: object) -> bool: - return not self == other - - def __repr__(self) -> str: - attrs = ( - "max_unconfirmed_messages", - "max_unconfirmed_bytes", - "consumer_priority", - "suspends_on_bad_host_health", - ) - - params = [] - for attr in attrs: - value = getattr(self, attr) - if value is not None: - params.append(f"{attr}={value!r}") - - return f"QueueOptions({', '.join(params)})"
- - - -
-[docs] -class SessionOptions: - """A value semantic type representing session options. - - Each option can be set either by passing it as a keyword argument when - constructing a *SessionOptions* instance, or by setting it as an attribute - on a constructed instance. - - The default for every option is `None`. When constructing a `Session`, - options set to `None` are given reasonable default values. - - Args: - message_compression_algorithm: - The type of compression to apply to messages being posted via the - session this object is configuring. - timeouts: - The maximum number of seconds to wait for requests for each - operation on this session. If not provided, reasonable defaults - are used. - host_health_monitor: - A `.BasicHealthMonitor` is used by default, so your tests can - control whether the session sees the machine as healthy or not by - calling `.set_healthy` and `.set_unhealthy` on that instance. If - you instead pass `None`, the session will always see the machine as - healthy, `.HostUnhealthy` and `.HostHealthRestored` events with - never be emitted, and the *suspends_on_bad_host_health* option of - `QueueOptions` cannot be used. - num_processing_threads: - The number of threads for the SDK to use for processing events. - This defaults to 1. - blob_buffer_size: - The size (in bytes) of the blob buffers to use. This defaults to - 4k. - channel_high_watermark: - The size (in bytes) to use for the write cache high watermark on - the channel. The default value is 128MB. Note that BlazingMQ - reserves 4MB of this value for control messages, so the actual - watermark for data published is ``channel_high_watermark - 4MB``. - event_queue_watermarks: - A tuple containing the low and high notification watermark - thresholds for the buffer containing all incoming messages from the - broker, respectively. A warning `.SlowConsumerHighWaterMark` is - emitted when the buffer reaches the high watermark value, and a - notification `.SlowConsumerNormal` is emitted when the buffer is - back to the low watermark. - stats_dump_interval: - The interval (in seconds) at which to dump stats into the logs. If - 0, disable the recurring dump of stats (final stats are always - dumped at the end of the session). The default is 5min; the value - must be a multiple of 30s, in the range ``[0s - 60min]``. - """ - - def __init__( - self, - message_compression_algorithm: Optional[CompressionAlgorithmType] = None, - timeouts: Optional[Timeouts] = None, - host_health_monitor: Union[BasicHealthMonitor, None] = (DefaultMonitor()), - num_processing_threads: Optional[int] = None, - blob_buffer_size: Optional[int] = None, - channel_high_watermark: Optional[int] = None, - event_queue_watermarks: Optional[tuple[int, int]] = None, - stats_dump_interval: Optional[float] = None, - ) -> None: - self.message_compression_algorithm = message_compression_algorithm - self.timeouts = timeouts - self.host_health_monitor = host_health_monitor - self.num_processing_threads = num_processing_threads - self.blob_buffer_size = blob_buffer_size - self.channel_high_watermark = channel_high_watermark - self.event_queue_watermarks = event_queue_watermarks - self.stats_dump_interval = stats_dump_interval - - def __eq__(self, other: object) -> bool: - if not isinstance(other, SessionOptions): - return False - return ( - self.message_compression_algorithm == other.message_compression_algorithm - and self.timeouts == other.timeouts - and self.host_health_monitor == other.host_health_monitor - and self.num_processing_threads == other.num_processing_threads - and self.blob_buffer_size == other.blob_buffer_size - and self.channel_high_watermark == other.channel_high_watermark - and self.event_queue_watermarks == other.event_queue_watermarks - and self.stats_dump_interval == other.stats_dump_interval - ) - - def __ne__(self, other: object) -> bool: - return not self == other - - def __repr__(self) -> str: - attrs = ( - "message_compression_algorithm", - "timeouts", - "host_health_monitor", - "num_processing_threads", - "blob_buffer_size", - "channel_high_watermark", - "event_queue_watermarks", - "stats_dump_interval", - ) - - params = [] - for attr in attrs: - value = getattr(self, attr) - if value is not None: - params.append(f"{attr}={value!r}") - - return f"SessionOptions({', '.join(params)})"
- - - -
-[docs] -class Session: - """Represents a connection with the BlazingMQ broker. - - The session represents a connection to the broker. - This object can be manipulated to modify the state of the application from - the point of view of the broker, including opening queues, and starting or - stopping the connection with the broker. - - Args: - on_session_event: a required callback to process `.SessionEvent` events - received by the session. - on_message: an optional callback to process `Message` objects received - by the session. - broker: TCP address of the broker (default: 'tcp://localhost:30114'). - If the environment variable ``BMQ_BROKER_URI`` is set, its value - will override whatever broker address is passed via this argument. - message_compression_algorithm: the type of compression to apply to messages - being posted via this session object. - timeout: maximum number of seconds to wait for requests on this - session. If not provided, reasonable defaults are used. This - argument may either be a simple ``float``, which sets the same - timeout for each operation, or an instance of the `Timeouts` class, - which allows setting the timeout for each operation independently. - host_health_monitor: A `.BasicHealthMonitor` is used by default, so - your tests can control whether the session sees the machine as - healthy or not by calling `.set_healthy` and `.set_unhealthy` on - that instance. If you instead pass `None`, the session will always - see the machine as healthy, `.HostUnhealthy` and - `.HostHealthRestored` events will never be emitted, and the - *suspends_on_bad_host_health* option of `QueueOptions` cannot be - used. - num_processing_threads: The number of threads for the SDK to use for - processing events. This defaults to 1. - blob_buffer_size: The size (in bytes) of the blob buffers to use. This - defaults to 4k. - channel_high_watermark: The size (in bytes) to use for the write cache - high watermark on the channel. The default value is 128MB. Note - that BlazingMQ reserves 4MB of this value for control messages, so - the actual watermark for data published is - ``channel_high_watermark - 4MB``. - event_queue_watermarks: A tuple containing the low and high - notification watermark thresholds for the buffer containing all - incoming messages from the broker, respectively. A warning - `.SlowConsumerHighWaterMark` is emitted when the buffer reaches the - high watermark value, and a notification `.SlowConsumerNormal` is - emitted when the buffer is back to the low watermark. - stats_dump_interval: The interval (in seconds) at which to dump stats - into the logs. If 0, disable the recurring dump of stats (final - stats are always dumped at the end of the session). The default is - 5min; the value must be a multiple of 30s, in the range - ``[0s - 60min]``. - - Raises: - `~blazingmq.Error`: If the session start request was not successful. - `~blazingmq.exceptions.BrokerTimeoutError`: If the broker didn't respond - to the request within a reasonable amount of time. - `ValueError`: If any of the timeouts are provided and not > 0.0, or if - the ``stats_dump_interval`` is provided and is < 0.0. - """ - - def __init__( - self, - on_session_event: Callable[[SessionEvent], None], - on_message: Optional[Callable[[Message, MessageHandle], None]] = None, - broker: str = "tcp://localhost:30114", - message_compression_algorithm: CompressionAlgorithmType = ( - CompressionAlgorithmType.NONE - ), - timeout: Union[Timeouts, float] = DEFAULT_TIMEOUT, - host_health_monitor: Union[BasicHealthMonitor, None] = (DefaultMonitor()), - num_processing_threads: Optional[int] = None, - blob_buffer_size: Optional[int] = None, - channel_high_watermark: Optional[int] = None, - event_queue_watermarks: Optional[tuple[int, int]] = None, - stats_dump_interval: Optional[float] = None, - ) -> None: - if host_health_monitor is not None: - if not isinstance(host_health_monitor, BasicHealthMonitor): - raise TypeError( - f"host_health_monitor must be None or an instance of " - f"{' or '.join(KNOWN_MONITORS)}" - ) - - monitor_host_health = host_health_monitor is not None - fake_host_health_monitor = getattr(host_health_monitor, "_monitor", None) - - self._has_no_on_message = on_message is None - - # Using our Timeouts class, preserve the old behavior of passing in a - # simple float as a timeout. Avoid setting the `connect_timeout` and - # `disconnect_timeout`. - if not isinstance(timeout, Timeouts): - timeout = Timeouts( - open_queue_timeout=timeout, - configure_queue_timeout=timeout, - close_queue_timeout=timeout, - ) - - self._ext = ExtSession( - on_session_event, - on_message=on_message, - broker=six.ensure_binary(broker), - message_compression_algorithm=message_compression_algorithm, - num_processing_threads=num_processing_threads, - blob_buffer_size=blob_buffer_size, - channel_high_watermark=channel_high_watermark, - event_queue_watermarks=event_queue_watermarks, - stats_dump_interval=_convert_stats_dump_interval(stats_dump_interval), - timeouts=_validate_timeouts(timeout), - monitor_host_health=monitor_host_health, - fake_host_health_monitor=fake_host_health_monitor, - ) - -
-[docs] - @classmethod - def with_options( - cls, - on_session_event: Callable[[SessionEvent], None], - on_message: Optional[Callable[[Message, MessageHandle], None]] = None, - broker: str = "tcp://localhost:30114", - session_options: SessionOptions = (SessionOptions()), - ) -> Session: - """Construct a *Session* instance using `.SessionOptions`. - - This is the recommended way to construct a new session, as the - `.SessionOptions` class provides an easier to use interface for - configuring only those options you need. - - Args: - on_session_event: a required callback to process `.SessionEvent` events - received by the session. - on_message: an optional callback to process `Message` objects received - by the session. - broker: TCP address of the broker (default: 'tcp://localhost:30114'). - If the environment variable ``BMQ_BROKER_URI`` is set, its value - will override whatever broker address is passed via this argument. - session_options: an instance of `.SessionOptions` that represents the - session's configuration. - - Raises: - `~blazingmq.Error`: If the session start request was not successful. - `~blazingmq.exceptions.BrokerTimeoutError`: If the broker didn't respond - to the request within a reasonable amount of time. - `ValueError`: If any of the timeouts are provided and not > 0.0, or if - the ``stats_dump_interval`` is provided and is < 0.0. - """ - message_compression_algorithm = session_options.message_compression_algorithm - if message_compression_algorithm is None: - message_compression_algorithm = CompressionAlgorithmType.NONE - - if session_options.timeouts is None: - return cls( - on_session_event, - on_message, - broker, - message_compression_algorithm, - DEFAULT_TIMEOUT, - session_options.host_health_monitor, - session_options.num_processing_threads, - session_options.blob_buffer_size, - session_options.channel_high_watermark, - session_options.event_queue_watermarks, - session_options.stats_dump_interval, - ) - else: - return cls( - on_session_event, - on_message, - broker, - message_compression_algorithm, - session_options.timeouts, - session_options.host_health_monitor, - session_options.num_processing_threads, - session_options.blob_buffer_size, - session_options.channel_high_watermark, - session_options.event_queue_watermarks, - session_options.stats_dump_interval, - )
- - -
-[docs] - def open_queue( - self, - queue_uri: str, - read: bool = False, - write: bool = False, - options: QueueOptions = QueueOptions(), - timeout: float = DEFAULT_TIMEOUT, - ) -> None: - """Open a queue with the specified parameters - - Open a queue at the specified *queue_uri*. The *queue_uri* is the - identifier for any future interactions with this opened queue. - - Note: - Invoking this method from the ``on_message`` or - ``on_session_event`` of the `Session` or the ``on_ack`` callback of - a posted message will cause a deadlock. - - Note: - It's possible to override the default tier by adding an optional - tier to the queue URI. See `URI format`__. - - __ https://bloomberg.github.io/blazingmq/docs/apidocs/cpp_apidocs/group__bmqt__uri.html - - Args: - queue_uri: unique resource identifier for the queue to be opened. - read: open the queue for reading, enabling the `Session` to receive - `Message` objects for this queue. - write: open the queue for writing, allowing posting to this queue. - options (~blazingmq.QueueOptions): options to configure the queue - with - timeout: maximum number of seconds to wait for this request. - If not provided, the *timeout* provided to the `Session` when - it was created it used. If that was not provided either, - a reasonable default is used. - - Raises: - `~blazingmq.Error`: If the open queue request was not successful. - `~blazingmq.exceptions.BrokerTimeoutError`: If the broker didn't - respond to the request within a reasonable amount of time. - `ValueError`: If *timeout* is not > 0.0. - """ - if read and self._has_no_on_message: - raise Error( - "Can't open queue {} in read mode: no on_message " - "callback was provided at Session construction".format(queue_uri) - ) - - if options.suspends_on_bad_host_health and not self._ext.monitor_host_health: - raise Error( - "Queues cannot use suspends_on_bad_host_health if host health" - " monitoring was disabled when the Session was created" - ) - - self._ext.open_queue_sync( - six.ensure_binary(queue_uri), - read=read, - write=write, - consumer_priority=options.consumer_priority, - max_unconfirmed_messages=options.max_unconfirmed_messages, - max_unconfirmed_bytes=options.max_unconfirmed_bytes, - suspends_on_bad_host_health=options.suspends_on_bad_host_health, - timeout=_convert_timeout(timeout), - )
- - -
-[docs] - def close_queue(self, queue_uri: str, timeout: float = DEFAULT_TIMEOUT) -> None: - """Close an opened queue at the specified *queue_uri*. - - Close the queue at the specified *queue_uri*. After this method - successfully returns, the *queue_uri* will no longer correspond to valid - queue to do any operations. - - Note: - Invoking this method from the ``on_message`` or - ``on_session_event`` of the `Session` or the ``on_ack`` callback of - a posted message will cause a deadlock. - - Args: - queue_uri: unique resource identifier for the queue to be closed. - timeout: maximum number of seconds to wait for this request. - If not provided, the *timeout* provided to the `Session` when - it was created it used. If that was not provided either, - a reasonable default is used. - - Raises: - `~blazingmq.Error`: If the close queue request was not successful. - `~blazingmq.exceptions.BrokerTimeoutError`: If the broker didn't - respond to the request within a reasonable amount of time. - `ValueError`: If *timeout* is not > 0.0. - """ - self._ext.close_queue_sync( - six.ensure_binary(queue_uri), - timeout=_convert_timeout(timeout), - )
- - -
-[docs] - def configure_queue( - self, - queue_uri: str, - options: QueueOptions, - timeout: float = DEFAULT_TIMEOUT, - ) -> None: - """Modify the options on an opened queue at the specified *queue_uri*. - - Modify the options of the queue at the specified *queue_uri*. After this - method successfully returns, the *queue_uri* will be configured with the - specified *options*. - - Note: - Invoking this method from the ``on_message`` or ``on_session_event`` of - the `Session` or the ``on_ack`` callback of a posted message will - cause a deadlock. - - Args: - queue_uri: unique resource identifier for the queue to be configured. - options (~blazingmq.QueueOptions): options to configure the queue with - timeout: maximum number of seconds to wait for this request. - If not provided, the *timeout* provided to the `Session` when - it was created it used. If that was not provided either, - a reasonable default is used. - - Raises: - `~blazingmq.Error`: If the configure queue request was not successful. - `~blazingmq.exceptions.BrokerTimeoutError`: If the broker didn't - respond to the request within a reasonable amount of time. - `ValueError`: If *timeout* is not > 0.0. - """ - if options.suspends_on_bad_host_health and not self._ext.monitor_host_health: - raise Error( - "Queues cannot use suspends_on_bad_host_health if host health" - " monitoring was disabled when the Session was created" - ) - - self._ext.configure_queue_sync( - six.ensure_binary(queue_uri), - consumer_priority=options.consumer_priority, - max_unconfirmed_messages=options.max_unconfirmed_messages, - max_unconfirmed_bytes=options.max_unconfirmed_bytes, - suspends_on_bad_host_health=options.suspends_on_bad_host_health, - timeout=_convert_timeout(timeout), - )
- - -
-[docs] - def get_queue_options(self, queue_uri: str) -> QueueOptions: - """Get configured options of an opened queue. - - Get the previously set options of an opened queue at the specified - *queue_uri*. - - Args: - queue_uri: unique resource identifier for the queue to be configured. - - Returns: - `~blazingmq.QueueOptions`: The queue's configured options. - - Raises: - `~blazingmq.Error`: If the queue with the given URI is not open, or - its options cannot be retrieved. - - Note: - Options that only affect message consumption, including - *consumer_priority*, *max_unconfirmed_messages*, and - *max_unconfirmed_bytes*, are ignored when opening or configuring - a write-only queue, so any attempt to set those options on - a write-only queue won't be reflected in the `QueueOptions` - returned by a later call to *get_queue_options*. - """ - options = self._ext.get_queue_options(six.ensure_binary(queue_uri)) - return QueueOptions(*options)
- - -
-[docs] - def stop(self) -> None: - """Teardown the broker connection - - Stop the session with the connected BlazingMQ broker which implies - tearing down the connection. This session cannot be used to execute any - actions after this method returns. - - Note: - Invoking this method from the ``on_message`` or - ``on_session_event`` of the `Session` or the ``on_ack`` callback of - a posted message will cause a deadlock. - """ - - self._ext.stop()
- - -
-[docs] - def post( - self, - queue_uri: str, - message: bytes, - properties: Optional[PropertyValueDict] = None, - property_type_overrides: Optional[PropertyTypeDict] = None, - on_ack: Optional[Callable[[Ack], None]] = None, - ) -> None: - """Post a message to an opened queue specified by *queue_uri*. - - Post the payload and optional properties and overrides to the opened - queue specified by *queue_uri*. Optionally take an *on_ack* callback - that is invoked with the incoming acknowledgment for the message posted. - - Args: - queue_uri: unique resource identifier for the queue to posted to. - message: the payload of the message. - properties (Optional[`~blazingmq.PropertyValueDict`]): optionally - provided properties to be associated with the message. - property_type_overrides (Optional[`~blazingmq.PropertyTypeDict`]): - optionally provided type overrides for the properties. - on_ack (Optional[Callable[[~blazingmq.Ack], None]]): optionally - specified callback which is invoked with the acknowledgment - status of the message being posted. - - Raises: - `~blazingmq.Error`: If the post request was not successful. - """ - props: Optional[Dict[bytes, Tuple[Union[int, bytes], int]]] = None - if properties or property_type_overrides: - props = _collect_properties_and_types(properties, property_type_overrides) - - self._ext.post( - six.ensure_binary(queue_uri), - message, - properties=props, - on_ack=on_ack, - )
- - -
-[docs] - def confirm(self, message: Message) -> None: - """Confirm the specified message from this queue. - - Mark the specified *message*, as confirmed. If successful, this will - indicate to the BlazingMQ framework that the processing for this - message has been completed and that the message must not be - re-delivered, if this queue is opened again by any consumer. - - It's often more convenient to use `MessageHandle.confirm` - instead. An instance of `MessageHandle` is received with every - new `Message` delivered via the ``on_message`` callback. - - Args: - message (~blazingmq.Message): message to be confirmed. - - Raises: - `~blazingmq.Error`: If the confirm message request was not - successful. - """ - self._ext.confirm(message)
- - - def __enter__(self) -> Session: - return self - - def __exit__(self, exc_type: Any, exc_value: Any, exc_traceback: Any) -> None: - self.stop()
- -
- -
-
-
- -
- -
-

© Copyright 2019-2023, Bloomberg Finance L.P..

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_timeouts.html b/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_timeouts.html deleted file mode 100644 index 5712aa1fa..000000000 --- a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/_timeouts.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - blazingmq._timeouts — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -

Source code for blazingmq._timeouts

-# Copyright 2019-2023 Bloomberg Finance L.P.
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed 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.
-
-from __future__ import annotations
-
-from typing import Optional
-
-
-
-[docs] -class Timeouts: - """A value semantic type representing session timeouts. - - Each option can be set either by passing it as a keyword argument when - constructing a *Timeouts* instance, or by setting it as an attribute on - a constructed instance. - - The default for every option is `None`. When constructing a `Session`, - either directly or using `SessionOptions`, options set to `None` are given - reasonable default values. - - Args: - connect_timeout: - The maximum number of seconds to wait for connection requests on - this session. - disconnect_timeout: - The maximum number of seconds to wait for disconnection requests - on this session. - open_queue_timeout: - The maximum number of seconds to wait for open queue requests on - this session. - configure_queue_timeout: - The maximum number of seconds to wait for configure queue requests - on this session. - close_queue_timeout: - The maximum number of seconds to wait for close queue requests on - this session. - """ - - def __init__( - self, - connect_timeout: Optional[float] = None, - disconnect_timeout: Optional[float] = None, - open_queue_timeout: Optional[float] = None, - configure_queue_timeout: Optional[float] = None, - close_queue_timeout: Optional[float] = None, - ) -> None: - self.connect_timeout = connect_timeout - self.disconnect_timeout = disconnect_timeout - self.open_queue_timeout = open_queue_timeout - self.configure_queue_timeout = configure_queue_timeout - self.close_queue_timeout = close_queue_timeout - - def __eq__(self, other: object) -> bool: - if not isinstance(other, Timeouts): - return False - return ( - self.connect_timeout == other.connect_timeout - and self.disconnect_timeout == other.disconnect_timeout - and self.open_queue_timeout == other.open_queue_timeout - and self.configure_queue_timeout == other.configure_queue_timeout - and self.close_queue_timeout == other.close_queue_timeout - ) - - def __ne__(self, other: object) -> bool: - return not self == other - - def __repr__(self) -> str: - attrs = ( - "connect_timeout", - "disconnect_timeout", - "open_queue_timeout", - "configure_queue_timeout", - "close_queue_timeout", - ) - - params = [] - for attr in attrs: - value = getattr(self, attr) - if value is not None: - params.append(f"{attr}={value!r}") - - return f"Timeouts({', '.join(params)})"
- -
- -
-
-
- -
- -
-

© Copyright 2019-2023, Bloomberg Finance L.P..

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/exceptions.html b/docs/docs/apidocs/python_apidocs/_modules/blazingmq/exceptions.html deleted file mode 100644 index a51f64041..000000000 --- a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/exceptions.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - blazingmq.exceptions — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -

Source code for blazingmq.exceptions

-# Copyright 2019-2023 Bloomberg Finance L.P.
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed 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.
-
-
-
-[docs] -class Error(Exception): - """Generic BlazingMQ exception type"""
- - - -
-[docs] -class BrokerTimeoutError(Error): - """Provided time to wait has expired"""
- -
- -
-
-
- -
- -
-

© Copyright 2019-2023, Bloomberg Finance L.P..

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/session_events.html b/docs/docs/apidocs/python_apidocs/_modules/blazingmq/session_events.html deleted file mode 100644 index 75eb52ac9..000000000 --- a/docs/docs/apidocs/python_apidocs/_modules/blazingmq/session_events.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - - - blazingmq.session_events — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -

Source code for blazingmq.session_events

-# Copyright 2019-2023 Bloomberg Finance L.P.
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed 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.
-
-from __future__ import annotations
-
-import logging
-from typing import Optional
-
-LOGGER = logging.getLogger(__name__)
-
-
-
-[docs] -class SessionEvent: - """Base session event type""" - - def __init__(self, message: Optional[str]) -> None: - self._message = message - - def __repr__(self) -> str: - if self._message: - return f"<{self.__class__.__name__}: {self._message}>" - else: - return f"<{self.__class__.__name__}>" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, SessionEvent): - return False - return self.__class__ is other.__class__ and self._message == other._message - - def __ne__(self, other: object) -> bool: - return not self == other
- - - -
-[docs] -class QueueEvent(SessionEvent): - """Base type for session events relating to a single queue. - - Attributes: - queue_uri (str): Queue URI this event is associated with. - """ - - def __init__(self, queue_uri: str, message: Optional[str] = None) -> None: - self.queue_uri = queue_uri - super().__init__(message) - - def __repr__(self) -> str: - if self._message: - return "<{}: {} {}>".format( - self.__class__.__name__, self.queue_uri, self._message - ) - else: - return f"<{self.__class__.__name__}: {self.queue_uri}>" - - def __eq__(self, other: object) -> bool: - if type(self) is not type(other): - return NotImplemented - - assert isinstance(other, QueueEvent) # for mypy's sake - return ( - self.__class__ is other.__class__ - and self._message == other._message - and self.queue_uri == other.queue_uri - )
- - - -
-[docs] -class Connected(SessionEvent): - """Notification of successful connection with the broker"""
- - - -
-[docs] -class Disconnected(SessionEvent): - """Notification of successful disconnection with the broker"""
- - - -
-[docs] -class ConnectionLost(SessionEvent): - """Notification of a lost connection with the broker"""
- - - -
-[docs] -class Reconnected(SessionEvent): - """Notification of a re-connection with the broker in case connection was lost earlier"""
- - - -
-[docs] -class StateRestored(SessionEvent): - """Notification of successfully restoring state of application as it was before lost - connection or disconnection"""
- - - -
-[docs] -class ConnectionTimeout(SessionEvent): - """Notification that a requested connection could not be initiated in within the - timeout period"""
- - - -
-[docs] -class HostUnhealthy(SessionEvent): - """Notification that the host has been marked unhealthy. - - This is emitted only if ``host_health_monitor=None`` was not provided when - the `.Session` was created. This will be emitted whenever the machine - becomes unhealthy. It is also emitted if the machine is initially unhealthy - when the `.Session` is created. - - .. versionadded:: 0.7.0 - """
- - - -
-[docs] -class HostHealthRestored(SessionEvent): - """Notification that the host is no longer marked unhealthy. - - This is emitted only if ``host_health_monitor=None`` was not provided when - the `.Session` was created. It will be emitted once the machine is becomes - healthy after an earlier `.HostUnhealthy` event. Before this event - is emitted, you will receive a `QueueResumed` or `QueueResumeFailed` for - each queue that was suspended due to ``suspends_on_bad_host_health=True``. - - .. versionadded:: 0.7.0 - """
- - - -
-[docs] -class QueueSuspended(QueueEvent): - """A queue that is sensitive to host health has been suspended. - - After a `.HostUnhealthy` event is emitted, any queue that was opened with - ``suspend_on_bad_host_health=True`` will suspend operation. This event will - be emitted once for each suspended queue. - - Note: - If ``host_health_monitor=None`` was provided when the `.Session` was - created, this event will never be emitted because the host will never - be considered unhealthy. - - Attributes: - queue_uri (str): URI of the queue that has been successfully suspended. - - .. versionadded:: 0.7.0 - """
- - - -
-[docs] -class QueueSuspendFailed(QueueEvent): - """A queue that is sensitive to host health could not be suspended. - - Whenever a `QueueSuspended` event would be expected, this event may be - emitted instead if the SDK is unable to suspend the queue as expected. - - Note: - The BlazingMQ SDK considers the failure to suspend a queue as evidence - of an unusually serious problem with the connection to the broker, so - if this event occurs the SDK follows it up by dropping the connection - to the broker and trying to re-establish it. - - Attributes: - queue_uri (str): URI of the queue that could not be suspended. - - .. versionadded:: 0.7.0 - """
- - - -
-[docs] -class QueueResumed(QueueEvent): - """A queue that is sensitive to host health has been resumed. - - Once an unhealthy machine becomes healthy again, the SDK will automatically - attempt to resume each queue that was suspended when the machine became - unhealthy. This event will be emitted once for each queue that had been - suspended, only after which will `HostHealthRestored` be emitted. - - Attributes: - queue_uri (str): URI of the queue that has been successfully resumed. - - .. versionadded:: 0.7.0 - """
- - - -
-[docs] -class QueueResumeFailed(QueueEvent): - """A queue that is sensitive to host health could not be resumed. - - Whenever a `QueueResumed` event would be expected, this event may be - emitted instead if the SDK is unable to resume the queue as expected. - - Note: - Unlike if suspending a queue fails, the SDK will not automatically drop - the connection to the broker if resuming a queue fails. - - Attributes: - queue_uri (str): URI of the queue that could not be resumed. - - .. versionadded:: 0.7.0 - """
- - - -
-[docs] -class QueueReopened(QueueEvent): - """A queue has been successfully reopened after a connection loss. - - If the connection with the broker is lost, `ConnectionLost` is emitted. - Once it is reestablished, `Reconnected` is emitted, followed by either - a `QueueReopened` or `QueueReopenFailed` for each queue that was - previously open, and finally `StateRestored` is emitted. - - Attributes: - queue_uri (str): URI of the queue that has been successfully reopened. - """
- - - -
-[docs] -class QueueReopenFailed(QueueEvent): - """A queue couldn't be reopened after a connection loss. - - Attributes: - queue_uri (str): URI of the queue that could not be reopened. - """
- - - -
-[docs] -class SlowConsumerNormal(SessionEvent): - """Notification that the consumer has resumed acceptable rate of consumption"""
- - - -
-[docs] -class SlowConsumerHighWaterMark(SessionEvent): - """Notification that the consumer is consuming at the lowest rate acceptable"""
- - - -
-[docs] -class Error(SessionEvent): - """Notification of a miscellaneous error"""
- - - -
-[docs] -class InterfaceError(SessionEvent): - """The BlazingMQ SDK behaved in an unexpected way."""
- - - -
-[docs] -def log_session_event(event: SessionEvent) -> None: - """Log incoming session event as appropriate - - A callback that can be used as a default for the *on_session_event* - parameter on the `.Session` object. All `.Connected`, `.Disconnected`, - `.StateRestored`, `.SlowConsumerNormal`, and `.QueueReopened` events are - logged at INFO level, and any `.ConnectionLost`, `.SlowConsumerHighWaterMark`, - and `.Reconnected` events are logged at WARN level, as they may indicate issues - with the application. Any other events are most likely an error in the - application and are logged at ERROR level. - - Args: - event (~blazingmq.session_events.SessionEvent): incoming `SessionEvent` - object. - """ - if isinstance( - event, - ( - Connected, - Disconnected, - StateRestored, - SlowConsumerNormal, - QueueReopened, - HostUnhealthy, - HostHealthRestored, - QueueSuspended, - QueueResumed, - ), - ): - level = logging.INFO - elif isinstance(event, (ConnectionLost, Reconnected, SlowConsumerHighWaterMark)): - level = logging.WARN - else: - # ConnectionTimeout, Error, InterfaceError, QueueReopenFailed, - # QueueSuspendFailed, QueueResumeFailed - level = logging.ERROR - - LOGGER.log(level, "Received session event: %s", event)
- -
- -
-
-
- -
- -
-

© Copyright 2019-2023, Bloomberg Finance L.P..

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_modules/index.html b/docs/docs/apidocs/python_apidocs/_modules/index.html deleted file mode 100644 index f03eeeb22..000000000 --- a/docs/docs/apidocs/python_apidocs/_modules/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Overview: module code — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
-
    -
  • - -
  • -
  • -
-
-
- -
- -
- -
-

© Copyright 2019-2023, Bloomberg Finance L.P..

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_sources/BUILD.md.txt b/docs/docs/apidocs/python_apidocs/_sources/BUILD.md.txt deleted file mode 100644 index 5a552d73e..000000000 --- a/docs/docs/apidocs/python_apidocs/_sources/BUILD.md.txt +++ /dev/null @@ -1,58 +0,0 @@ -# Build instructions for the BlazingMQ Python SDK - -Running the entire test-suite with all supported interpreters on all -supported architectures is difficult to do, and should already be set -up with GitHub Actions. We advise testing with a single version of -Python on a single architecture locally, and using the GitHub Actions -CI to test on all other combinations in your pull request. See -`.github/workflows/build.yaml` for more details on how we build and -test on all supported interpreters and architectures. - -The instructions below assume `PYEXEC=python3.9` and will focus on Linux only. -This should be sufficient in most cases. - -Before following any of the instructions, make sure to `git clone` the project onto the host machine. - -## Using `make` vs. `tox` - -Once the build environment is properly initialized, the project can -be built in-tree (in the project's working directory tree) using -`make build`. This is useful to iterate quickly. However, it has the -disadvantages of having to install all of the required -build/test/lint dependencies, along with the potential to -accidentally test against the wrong artifact due to the in-tree build. - -For a more comprehensive, self-contained setup, use `tox` to build the project -and run the entire test suite targeting a specific version of the interpreter. -Run `tox -l` to see all available `tox` environments. - -## Local Development - -The BlazingMQ Python SDK provides a `./build-manylinux.sh` script and a -`./build-macosx-universal.sh` script for setting up a development environment. - -## Working with Make Targets - -When in an interactive command line prompt, you can use the following `make` -targets to build and test the BlazingMQ Python SDK. Check the -appropriate GitHub Actions configuration to set up the appropriate environment -variables that may be needed prior to running these commands (such as setting -`PYEXEC`). With a BlazingMQ broker running at `tcp://localhost:30114`, the -following targets build and test the Python SDK: - -```shell -make test-install -BMQ_BROKER_URI=tcp://localhost:30114 make check -``` - -Additional `make` targets are provided, such as for test coverage. -Dependencies for these can be installed as follows: - -```shell -python3.9 -m pip install -r requirements-dev.txt -``` - -And now you should be able to run `make coverage`. - -Examine the `Makefile`, the GitHub Actions configuration, and the `tox.ini` -file to understand more about these targets and how to use them. diff --git a/docs/docs/apidocs/python_apidocs/_sources/CHANGELOG.md.txt b/docs/docs/apidocs/python_apidocs/_sources/CHANGELOG.md.txt deleted file mode 100644 index de72125a8..000000000 --- a/docs/docs/apidocs/python_apidocs/_sources/CHANGELOG.md.txt +++ /dev/null @@ -1,10 +0,0 @@ -> *NOTE* -> -> You should *NOT* add new change log entries to this file, this -> file is managed by towncrier. You *may* edit previous change logs to -> fix problems like typo corrections or such. - -Changelog -========= - - diff --git a/docs/docs/apidocs/python_apidocs/_sources/acknowledgments.rst.txt b/docs/docs/apidocs/python_apidocs/_sources/acknowledgments.rst.txt deleted file mode 100644 index 73f6a31bd..000000000 --- a/docs/docs/apidocs/python_apidocs/_sources/acknowledgments.rst.txt +++ /dev/null @@ -1,38 +0,0 @@ -.. py:currentmodule:: blazingmq - - -Acknowledgments -############### - -A producer can ensure that a message has been successfully posted by requesting an -acknowledgment for the message being posted. This can be requested by passing a -callable to the ``on_ack`` parameter on post. This callback will always get invoked -with an `Ack` message. - -A useful pattern for the producer is using the ``on_ack`` callback to add the -incoming ack to a queue and then waiting to recieve it. This allows you to -synchronously `Session.post` to a BlazingMQ queue like: :: - - import blazingmq - from queue import Queue - - queue_uri = "bmq://bmq.tutorial.workqueue/example_queue" - with blazingmq.Session(blazingmq.session_events.log_session_event) as session: - session.open_queue(queue_uri, write=True) - - queue = Queue() - for i in (1,2,3): - session.post(queue_uri, b"Some message here", on_ack=queue.put) - ack = queue.get() - if ack.status != blazingmq.AckStatus.SUCCESS: - print("Error! Failed to post message") - else: - print("Success!") - - session.close_queue(queue_uri) - -.. note:: - If you want to post without blocking on acknowledgments, you can leverage - `functools.partial` to bind parameters to the ``on_ack`` callable. This can be - useful if you need to do provide a recovery mechanism for messages that failed to - post. diff --git a/docs/docs/apidocs/python_apidocs/_sources/api_reference.rst.txt b/docs/docs/apidocs/python_apidocs/_sources/api_reference.rst.txt deleted file mode 100644 index b380ab8c6..000000000 --- a/docs/docs/apidocs/python_apidocs/_sources/api_reference.rst.txt +++ /dev/null @@ -1,192 +0,0 @@ -.. py:module:: blazingmq -.. _api-reference: - -API Reference -############# - - -Session -========================= - -.. autoclass:: Session - :members: - -.. autoclass:: Timeouts - :members: - :member-order: bysource - -.. autoclass:: SessionOptions - :members: - :member-order: bysource - -.. autoclass:: QueueOptions - :members: - :member-order: bysource - - -Message Classes -=============== - -.. autoclass:: Message() - :members: - -.. autoclass:: MessageHandle() - :members: - -.. autoclass:: Ack() - :members: - - -Health Monitoring -================= - -.. autoclass:: BasicHealthMonitor - :members: - - -Enumerations -============ - -.. autoclass:: blazingmq.AckStatus() - - .. autoattribute:: AckStatus.SUCCESS - :annotation: - - .. autoattribute:: AckStatus.CANCELED - :annotation: - - .. autoattribute:: AckStatus.INVALID_ARGUMENT - :annotation: - - .. autoattribute:: AckStatus.LIMIT_BYTES - :annotation: - - .. autoattribute:: AckStatus.LIMIT_MESSAGES - :annotation: - - .. autoattribute:: AckStatus.NOT_CONNECTED - :annotation: - - .. autoattribute:: AckStatus.NOT_READY - :annotation: - - .. autoattribute:: AckStatus.NOT_SUPPORTED - :annotation: - - .. autoattribute:: AckStatus.REFUSED - :annotation: - - .. autoattribute:: AckStatus.TIMEOUT - :annotation: - - .. autoattribute:: AckStatus.UNKNOWN - :annotation: - - .. autoattribute:: AckStatus.UNRECOGNIZED - :annotation: - -.. autoclass:: CompressionAlgorithmType() - - .. autoattribute:: CompressionAlgorithmType.NONE - :annotation: - - .. autoattribute:: CompressionAlgorithmType.ZLIB - :annotation: - -.. autoclass:: PropertyType() - - .. autoattribute:: PropertyType.BOOL - :annotation: - - .. autoattribute:: PropertyType.CHAR - :annotation: - - .. autoattribute:: PropertyType.SHORT - :annotation: - - .. autoattribute:: PropertyType.INT32 - :annotation: - - .. autoattribute:: PropertyType.INT64 - :annotation: - - .. autoattribute:: PropertyType.STRING - :annotation: - - .. autoattribute:: PropertyType.BINARY - :annotation: - -Exceptions -========== - -.. autoexception:: blazingmq.Error - -.. autoexception:: blazingmq.exceptions.BrokerTimeoutError - -Session Events -============== - -.. autoclass:: blazingmq.session_events.SessionEvent() - -.. autoclass:: blazingmq.session_events.QueueEvent() - -.. autoclass:: blazingmq.session_events.Connected() - -.. autoclass:: blazingmq.session_events.Disconnected() - -.. autoclass:: blazingmq.session_events.ConnectionLost() - -.. autoclass:: blazingmq.session_events.Reconnected() - -.. autoclass:: blazingmq.session_events.StateRestored() - -.. autoclass:: blazingmq.session_events.ConnectionTimeout() - -.. autoclass:: blazingmq.session_events.HostUnhealthy() - -.. autoclass:: blazingmq.session_events.HostHealthRestored() - -.. autoclass:: blazingmq.session_events.QueueSuspended() - :show-inheritance: - -.. autoclass:: blazingmq.session_events.QueueSuspendFailed() - :show-inheritance: - -.. autoclass:: blazingmq.session_events.QueueResumed() - :show-inheritance: - -.. autoclass:: blazingmq.session_events.QueueResumeFailed() - :show-inheritance: - -.. autoclass:: blazingmq.session_events.QueueReopened() - :show-inheritance: - -.. autoclass:: blazingmq.session_events.QueueReopenFailed() - :show-inheritance: - -.. autoclass:: blazingmq.session_events.SlowConsumerNormal() - -.. autoclass:: blazingmq.session_events.SlowConsumerHighWaterMark() - -.. autoclass:: blazingmq.session_events.Error() - -.. autoclass:: blazingmq.session_events.InterfaceError() - - -Helper Functions -================ - -.. autofunction:: blazingmq.session_events.log_session_event - -Testing Utilities -================= - -.. automodule:: blazingmq.testing - :members: - -Helper Types -============ - -.. autoclass:: blazingmq.PropertyTypeDict - -.. autoclass:: blazingmq.PropertyValueDict diff --git a/docs/docs/apidocs/python_apidocs/_sources/examples.rst.txt b/docs/docs/apidocs/python_apidocs/_sources/examples.rst.txt deleted file mode 100644 index fa39147e2..000000000 --- a/docs/docs/apidocs/python_apidocs/_sources/examples.rst.txt +++ /dev/null @@ -1,49 +0,0 @@ -.. py:currentmodule:: blazingmq - - -Examples -################## - - -Producer -================================= - -A complete example of a program that posts a message and waits for it to be acknowledged -by the broker. - -Note that ``on_ack`` is an optional argument. However, receiving acknowledgment is the only -way to guarantee that your message was received by the broker. In this example, messages are sent -in a fully synchronous fashion - the program waits for an acknowledgement before terminating. - -.. literalinclude:: ../examples/producer.py - -Consumer with `threading.Event` -================================= - -A complete example of a program that consumes messages from a BlazingMQ -queue. The main thread is blocked waiting for `threading.Event` to be set upon -receiving ``SIGTERM``, while incoming messages are processed in the callback on -the BlazingMQ event handler thread. - -.. literalinclude:: ../examples/consumer.py - -Consumer with `queue.Queue` -================================= - -Correct synchronization may be difficult to implement. It sometimes helps to use the -Python standard library `queue.Queue`. The following example consumes messages from -a BlazingMQ queue and uses `queue.Queue` for synchronization. - -The main thread is blocked in a `Queue.get ` while all new messages are immediately -added to the in-process queue. There will be no more than ``max_unconfirmed_messages`` -in the in-process queue at any given time (unless more than ``max_unconfirmed_bytes`` -was received first) because the broker will pause delivery once -this value has been reached. Once ``SIGTERM`` is received, a sentinel object is added to -the in-process queue; all BlazingMQ messages received after the signal will be ignored. - -Also note that, in this example, we provide ``suspends_on_bad_host_health=True`` -when we open the queue. This stops the queue from receiving messages if the -machine is marked unhealthy, so that we don't unintentionally process a message -on an unhealthy machine. - -.. literalinclude:: ../examples/consumer2.py diff --git a/docs/docs/apidocs/python_apidocs/_sources/index.rst.txt b/docs/docs/apidocs/python_apidocs/_sources/index.rst.txt deleted file mode 100644 index c8cd7d0ef..000000000 --- a/docs/docs/apidocs/python_apidocs/_sources/index.rst.txt +++ /dev/null @@ -1,24 +0,0 @@ -blazingmq -========= - -**blazingmq** is the official way to interact with the BlazingMQ framework from Python. - -Contents --------- - -.. toctree:: - - user_guide - examples - acknowledgments - message_properties - queue_options_and_configuration - api_reference - Changelog - Build instructions - -Indices and tables ------------------- -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/docs/docs/apidocs/python_apidocs/_sources/message_properties.rst.txt b/docs/docs/apidocs/python_apidocs/_sources/message_properties.rst.txt deleted file mode 100644 index ac80bd2c4..000000000 --- a/docs/docs/apidocs/python_apidocs/_sources/message_properties.rst.txt +++ /dev/null @@ -1,84 +0,0 @@ -.. py:currentmodule:: blazingmq - - -Message Properties -################## - -A message can have some arbitrary metadata associated with it. This metadata is -represented by a dictionary of key-value pairs. Here, we cover how to associate -properties with messages being posted, and how to retrieve properties when consuming -messages. - -Posting -======= - -Message With Properties ------------------------ - -When invoking `Session.post` with a message, you can provide a `dict` to the optional -``properties`` parameter to associate properties with the message being posted. - -BlazingMQ has particular types of property values that can be part of this -dictionary -- as enumerated in `PropertyType`. - -If you do not particularly care about which exact `PropertyType` is being targeted, -the types inferred by default are as follows: - -+-------------+-----------------------+ -| Python Type | BlazingMQ Type | -+=============+=======================+ -| int | `PropertyType.INT64` | -+-------------+-----------------------+ -| bool | `PropertyType.BOOL` | -+-------------+-----------------------+ -| str | `PropertyType.STRING` | -+-------------+-----------------------+ -| bytes | `PropertyType.BINARY` | -+-------------+-----------------------+ - -Properties With Overrides -------------------------- - -However, if you want to target a particular `PropertyType`, you can leverage the -``property_type_overrides`` in `Session.post`. Be aware that any key included in -``property_type_overrides`` *must* be present in ``properties``. For any particular -property, if an override is missing, the default is inferred as above. - -The following table describes the properties that can be set and the accepted types: - -+-----------------------+-------------+ -| BlazingMQ Type | Python Type | -+=======================+=============+ -| `PropertyType.INT64` | int | -+-----------------------+-------------+ -| `PropertyType.INT32` | int | -+-----------------------+-------------+ -| `PropertyType.SHORT` | int | -+-----------------------+-------------+ -| `PropertyType.CHAR` | bytes | -+-----------------------+-------------+ -| `PropertyType.BOOL` | bool | -+-----------------------+-------------+ -| `PropertyType.STRING` | str | -+-----------------------+-------------+ -| `PropertyType.BINARY` | bytes | -+-----------------------+-------------+ - -.. note:: - - All integers being passed as values need to be in the appropriate range to not - trigger an exception. - - The `PropertyType.CHAR` type accepts a `bytes` object with a single byte, i.e., - bytes with a length of 1. - - -Consuming -========= - -If the `Message` received in your ``on_message`` callback installed on `Session` -contains any properties, it will always contain both a `Message.properties` and a -fully populated `Message.property_types`. This means that, for every property denoted -by a key in `Message.properties`, there will also be a corresponding key in -`Message.property_types` to denote the BlazingMQ type of the property received. - -The Python types that you can expect will be a mirror of the second table in the -section above. diff --git a/docs/docs/apidocs/python_apidocs/_sources/queue_options_and_configuration.rst.txt b/docs/docs/apidocs/python_apidocs/_sources/queue_options_and_configuration.rst.txt deleted file mode 100644 index 8ceb1f06e..000000000 --- a/docs/docs/apidocs/python_apidocs/_sources/queue_options_and_configuration.rst.txt +++ /dev/null @@ -1,66 +0,0 @@ -.. py:currentmodule:: blazingmq - - -Queue Options and Configuration -############################### - -There are several available options for configuring a queue's behavior. The -documentation for `QueueOptions` shows all of the options available for you to -configure. - -Setting Queue Options -===================== - -Most applications will use default values for their queue settings, but if you -need to adjust an option, you can provide `QueueOptions` when you open the -queue. For example, if you want to configure the priority of your consumer -relative to other consumers of the same queue, you could set the -*consumer_priority* option when you open the queue:: - - session.open(queue_uri, - options=blazingmq.QueueOptions(consumer_priority=100) - ) - -You can also adjust the options of an already opened queue to meet the -application's needs. If the application enters a phase where it's receiving -larger messages, you might want to tell the broker that it's okay for you to -have twice as many bytes as normal for messages that have been received but -have not yet been confirmed. You could do that with:: - - more_bytes_options = blazingmq.QueueOptions( - max_unconfirmed_bytes=blazingmq.QueueOptions.DEFAULT_MAX_UNCONFIRMED_BYTES - * 2 - ) - session.configure_queue(queue_uri, options=more_bytes_options) - -Common Scenarios -================ - -There are several common patterns for using non-default queue options. - -Pausing consumption on demand ------------------------------ - -An application can ask the broker to stop delivering new messages. This is most -common as part of a graceful shutdown (as seen in the User Guide's -:ref:`simple-consumer-label`), but you could choose to do this at any time. You -accomplish this by setting *max_unconfirmed_messages* to zero:: - - session.configure_queue(queue_uri, QueueOptions(max_unconfirmed_messages=0)) - -If your application wants to resume receiving messages later, it should save -the queue's original options with a call to `.get_queue_options` before setting -``max_unconfirmed_messages=0``, and then supply those original options to -`.configure_queue` when it's ready for new messages again. - -Delivering all messages to one consumer ---------------------------------------- - -When multiple consumers are attached to a queue with the default -*consumer_priority*, the broker delivers messages in a round-robin -fashion. However, it may be preferable to have a single consumer receiving the -messages, with one or more backup consumers that can take over if the primary -consumer goes offline. This can be achieved by supplying a unique -*consumer_priority* for each consumer, in which case every message for the -queue will be delivered to the highest priority consumer that is connected and -not suspended. diff --git a/docs/docs/apidocs/python_apidocs/_sources/user_guide.rst.txt b/docs/docs/apidocs/python_apidocs/_sources/user_guide.rst.txt deleted file mode 100644 index f2c32ab4b..000000000 --- a/docs/docs/apidocs/python_apidocs/_sources/user_guide.rst.txt +++ /dev/null @@ -1,252 +0,0 @@ -.. py:currentmodule:: blazingmq - -User Guide -########## - -The guide will walk you through building a simple producer and consumer using the -`blazingmq` package. This guide however does not cover some of the more complex -concepts including message properties, queue options, queue configuration and the -`Message` object. For reference documentation see the :ref:`api-reference`. - - -Simple Producer -=============== - -This is the basic example for a BlazingMQ producer posting a single message: :: - - import blazingmq - - queue_uri = "bmq://bmq.tutorial.workqueue/example_queue" - with blazingmq.Session(blazingmq.session_events.log_session_event) as session: - session.open_queue(queue_uri, write=True) - session.post(queue_uri, b"Some message here") - session.close_queue(queue_uri) - - -First, you need create an instance of the `Session` object. -The only required positional argument is a callback that takes a single argument of -type `.SessionEvent`. For example, the ``on_session_event`` callback *could* look like: :: - - def on_session_event(event): - print(event) - -In the following example however, we use the library function -`session_events.log_session_event` which provides some default configured logging for -incoming session events: :: - - import blazingmq - - with blazingmq.Session(blazingmq.session_events.log_session_event) as session: - # session can be used inside this block - -.. note:: - There should be **only one** `Session` object per process since it is very - heavyweight, holds a lot of state, and consumes both broker and operating system - resources. - -The session is the object responsible for network connections, thread pools, internal -memory and storage. The context manager will make sure that its resources are -correctly managed even if an exception is raised in the block. On enter, the context -manager will ensure that the `Session` is started and valid and on exit, it will -ensure that the `Session` is stopped and cleaned up. - -Using the `Session`, you can open a queue in write mode. Using ``write=True`` enables -our queue for posting messages: :: - - session.open_queue(queue_uri, write=True) - - - -Once opened, you can use the queue URI to post a message on the session like: :: - - session.post(queue_uri, b"Some message here") - -The `Session.post` optionally also takes an ``on_ack`` callback if the user wants to -receive an acknowledgment for the message being posted. This ``on_ack`` callback will -be invoked with the result of the post. :: - - from blazingmq - - def on_ack_callback(ack): - if ack.status != blazingmq.AckStatus.SUCCESS: - print("Post failed") - print("Post success") - - session.post(queue_uri, b"Some message here", on_ack=on_ack_callback) - -.. note:: - This is the only way for a producer to ensure that a message was received by the - BlazingMQ framework via the BlazingMQ broker. - -.. warning:: - Invoking any queue related method on the `Session` object that invoked - the ``on_ack`` or ``on_session_event`` callback will lead to a deadlock. That - means invoking `Session.open_queue`, `Session.configure_queue`, or - `Session.close_queue` in the callback will deadlock. Additionally, invoking - `Session.stop` will also deadlock. This implies that the only acceptable `Session` - method to be called from the callback is is `Session.confirm`, and consequently - `MessageHandle.confirm`. - - -You can use this callback to implement a few useful patterns that are documented in -the `Acknowledgments`_ section. - -.. _`Acknowledgments` : acknowledgments.html - -Additionally, you can associate message properties with messages being posted. This -is documented in `Message Properties`_ - -.. _`Message Properties` : message_properties.html - -Finally, you need to close the queue when you have finished using it. :: - - session.close_queue(queue_uri) - -.. note:: - Any acknowledgments that are still outstanding will be negatively acknowledged - before `Session.close_queue` returns. - -.. _simple-consumer-label: - -Simple Consumer -=============== - -This is a basic example for a BlazingMQ consumer, printing and confirming all -incoming messages: :: - - import blazingmq - - import signal - import threading - - def on_message_callback(message, message_handle): - print(message.data) - message_handle.confirm() - - event = threading.Event() - - def handler(signum, frame): - print("Goodbye!") - event.set() - - signal.signal(signal.SIGINT, handler) - - queue_uri = "bmq://bmq.tutorial.workqueue/example_queue" - with blazingmq.Session(blazingmq.session_events.log_session_event, - on_message=on_message_callback) as session: - session.open_queue(queue_uri, read=True) - event.wait() - session.configure_queue(queue_uri, blazingmq.QueueOptions(0, 0, 0)) - session.close_queue(queue_uri) - -The first thing you need to do for any BlazingMQ application is to create the -`Session`. Since we intend to consume messages from a queue opened in read -mode, we also want to specify the optional ``on_message`` callback in addition -to the required ``on_session_event`` callback: :: - - with blazingmq.Session(blazingmq.session_events.log_session_event, - on_message=on_message_callback) as session: - # session can be used inside this block - -.. note:: - There should be **only one** `Session` object per process since it is very - heavyweight, holds a lot of state, and consumes both broker and operating system - resources. - -.. note:: - The ``on_message`` callback will receive messages for **all** queues in read mode. If - the program is reading from multiple queues, `Message.queue_uri` will indicate which - queue this message is associated with. - -.. warning:: - Invoking any queue related method on the `Session` object that invoked - the ``on_message`` or ``on_session_event`` callback will lead to a deadlock. That - means invoking `Session.open_queue`, `Session.configure_queue`, or - `Session.close_queue` in the callback will deadlock. Additionally, invoking - `Session.stop` will also deadlock. This implies that the only acceptable `Session` - method to be called from the callback is `Session.confirm`, and consequently - `MessageHandle.confirm`. - - -You can then use the `Session` to open a queue. When you are opening a queue in read -mode, you *must* specify an ``on_message`` callback to process incoming messages as -documented above: :: - - session.open_queue(queue_uri, read=True) - -.. note:: - You can create a queue that is both a producer and a consumer, - by passing in both ``read=True`` and ``write=True``. - -To open the queue you need to provide the URI that uniquely identifies the -queue within the BlazingMQ framework -(``bmq://bmq.tutorial.workqueue/example_queue``). To open it in read mode, -``read=True`` is used. - -.. note:: - The `QueueOptions` parameter has been elided, and - the default is being used. - -When `Session.open_queue` method returns, messages directed towards the specified -queue will start being received in the ``on_message_callback``. - -Once you get a `Message` object in the callback, you can inspect the data inside -the message: :: - - print(message.data) - -The data contained inside will be of type `bytes`. To correctly decode the data -inside the `Message` object you need to know the encoding that the producer -used when it placed the message in the queue. This could be JSON, XML, BER or -any other type of encoding. From the perspective of BlazingMQ, the encoding -does not matter since only bytes are transmitted. - -Assuming at this point the processing of the message was successful and you do -not want to receive it again, you can call `Session.confirm` with this message -passed as an argument. This will notify the BlazingMQ broker that the message -should not be re-delivered to another consumer. :: - - session.confirm(message) - -Alternatively, an instance of `.blazingmq.MessageHandle` is received along with every message. -It can be used to confirm the message with which it was received. Notice that you don't -need to pass the message as an argument. :: - - message_handle.confirm() - -At the end, when the queue has served its purpose, you want to first pause incoming -messages and ensure in-flight callbacks to finish processing by calling -`Session.configure_queue` with zero-ed queue options: :: - - session.configure_queue(queue_uri, blazingmq.QueueOptions(0, 0, 0)) - -For more about `QueueOptions` and `Session.configure_queue`, please refer to -the `Queue Options`_ section. - -.. _`Queue Options` : queue_options_and_configuration.html - -Finally, once this returns successfully, you can safely close it by calling -`Session.close_queue` with the appropriate queue URI: :: - - session.close_queue(queue_uri) - - -Once this method returns, you will no longer receive messages for the queue and the -queue URI can no longer be used for any operations, other than `Session.open_queue`. - - -Host Health Monitoring -====================== - -You can pass ``host_health_monitor=None`` to the `Session` constructor if you -don't want any host health monitoring, in which case you won't be able to use -the *suspends_on_bad_host_health* queue option, and you will never get any host -health related session events. - -For testing purposes, you can pass an instance of `BasicHealthMonitor` as the -*host_health_monitor* argument for the `Session` constructor, and your tests -can control whether the `Session` believes the host is healthy or not by -calling the `.set_healthy` and `.set_unhealthy` methods of that instance. - -.. versionadded:: 0.7.0 - Host health monitoring and queue suspension diff --git a/docs/docs/apidocs/python_apidocs/_static/_sphinx_javascript_frameworks_compat.js b/docs/docs/apidocs/python_apidocs/_static/_sphinx_javascript_frameworks_compat.js deleted file mode 100644 index 81415803e..000000000 --- a/docs/docs/apidocs/python_apidocs/_static/_sphinx_javascript_frameworks_compat.js +++ /dev/null @@ -1,123 +0,0 @@ -/* Compatability shim for jQuery and underscores.js. - * - * Copyright Sphinx contributors - * Released under the two clause BSD licence - */ - -/** - * small helper function to urldecode strings - * - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL - */ -jQuery.urldecode = function(x) { - if (!x) { - return x - } - return decodeURIComponent(x.replace(/\+/g, ' ')); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - var bbox = node.parentElement.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} diff --git a/docs/docs/apidocs/python_apidocs/_static/basic.css b/docs/docs/apidocs/python_apidocs/_static/basic.css deleted file mode 100644 index 30fee9d0f..000000000 --- a/docs/docs/apidocs/python_apidocs/_static/basic.css +++ /dev/null @@ -1,925 +0,0 @@ -/* - * basic.css - * ~~~~~~~~~ - * - * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -div.section::after { - display: block; - content: ''; - clear: left; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox form.search { - overflow: hidden; -} - -div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; -} - - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li p.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; -} - -table.indextable > tbody > tr > td > ul { - padding-left: 0em; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- domain module index --------------------------------------------------- */ - -table.modindextable td { - padding: 2px; - border-collapse: collapse; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body { - min-width: 360px; - max-width: 800px; -} - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -a:visited { - color: #551A8B; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, figure.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, figure.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, figure.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -img.align-default, figure.align-default, .figure.align-default { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-default { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar, -aside.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px; - background-color: #ffe; - width: 40%; - float: right; - clear: right; - overflow-x: auto; -} - -p.sidebar-title { - font-weight: bold; -} - -nav.contents, -aside.topic, -div.admonition, div.topic, blockquote { - clear: left; -} - -/* -- topics ---------------------------------------------------------------- */ - -nav.contents, -aside.topic, -div.topic { - border: 1px solid #ccc; - padding: 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- content of sidebars/topics/admonitions -------------------------------- */ - -div.sidebar > :last-child, -aside.sidebar > :last-child, -nav.contents > :last-child, -aside.topic > :last-child, -div.topic > :last-child, -div.admonition > :last-child { - margin-bottom: 0; -} - -div.sidebar::after, -aside.sidebar::after, -nav.contents::after, -aside.topic::after, -div.topic::after, -div.admonition::after, -blockquote::after { - display: block; - content: ''; - clear: both; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - margin-top: 10px; - margin-bottom: 10px; - border: 0; - border-collapse: collapse; -} - -table.align-center { - margin-left: auto; - margin-right: auto; -} - -table.align-default { - margin-left: auto; - margin-right: auto; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -th > :first-child, -td > :first-child { - margin-top: 0px; -} - -th > :last-child, -td > :last-child { - margin-bottom: 0px; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure, figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption, figcaption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number, -figcaption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text, -figcaption span.caption-text { -} - -/* -- field list styles ----------------------------------------------------- */ - -table.field-list td, table.field-list th { - border: 0 !important; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -/* -- hlist styles ---------------------------------------------------------- */ - -table.hlist { - margin: 1em 0; -} - -table.hlist td { - vertical-align: top; -} - -/* -- object description styles --------------------------------------------- */ - -.sig { - font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; -} - -.sig-name, code.descname { - background-color: transparent; - font-weight: bold; -} - -.sig-name { - font-size: 1.1em; -} - -code.descname { - font-size: 1.2em; -} - -.sig-prename, code.descclassname { - background-color: transparent; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.sig-param.n { - font-style: italic; -} - -/* C++ specific styling */ - -.sig-inline.c-texpr, -.sig-inline.cpp-texpr { - font-family: unset; -} - -.sig.c .k, .sig.c .kt, -.sig.cpp .k, .sig.cpp .kt { - color: #0033B3; -} - -.sig.c .m, -.sig.cpp .m { - color: #1750EB; -} - -.sig.c .s, .sig.c .sc, -.sig.cpp .s, .sig.cpp .sc { - color: #067D17; -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -:not(li) > ol > li:first-child > :first-child, -:not(li) > ul > li:first-child > :first-child { - margin-top: 0px; -} - -:not(li) > ol > li:last-child > :last-child, -:not(li) > ul > li:last-child > :last-child { - margin-bottom: 0px; -} - -ol.simple ol p, -ol.simple ul p, -ul.simple ol p, -ul.simple ul p { - margin-top: 0; -} - -ol.simple > li:not(:first-child) > p, -ul.simple > li:not(:first-child) > p { - margin-top: 0; -} - -ol.simple p, -ul.simple p { - margin-bottom: 0; -} - -aside.footnote > span, -div.citation > span { - float: left; -} -aside.footnote > span:last-of-type, -div.citation > span:last-of-type { - padding-right: 0.5em; -} -aside.footnote > p { - margin-left: 2em; -} -div.citation > p { - margin-left: 4em; -} -aside.footnote > p:last-of-type, -div.citation > p:last-of-type { - margin-bottom: 0em; -} -aside.footnote > p:last-of-type:after, -div.citation > p:last-of-type:after { - content: ""; - clear: both; -} - -dl.field-list { - display: grid; - grid-template-columns: fit-content(30%) auto; -} - -dl.field-list > dt { - font-weight: bold; - word-break: break-word; - padding-left: 0.5em; - padding-right: 5px; -} - -dl.field-list > dd { - padding-left: 0.5em; - margin-top: 0em; - margin-left: 0em; - margin-bottom: 0em; -} - -dl { - margin-bottom: 15px; -} - -dd > :first-child { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -.sig dd { - margin-top: 0px; - margin-bottom: 0px; -} - -.sig dl { - margin-top: 0px; - margin-bottom: 0px; -} - -dl > dd:last-child, -dl > dd:last-child > :last-child { - margin-bottom: 0; -} - -dt:target, span.highlighted { - background-color: #fbe54e; -} - -rect.highlighted { - fill: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -.classifier:before { - font-style: normal; - margin: 0 0.5em; - content: ":"; - display: inline-block; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -.translated { - background-color: rgba(207, 255, 207, 0.2) -} - -.untranslated { - background-color: rgba(255, 207, 207, 0.2) -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -pre, div[class*="highlight-"] { - clear: both; -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; - white-space: nowrap; -} - -div[class*="highlight-"] { - margin: 1em 0; -} - -td.linenos pre { - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - display: block; -} - -table.highlighttable tbody { - display: block; -} - -table.highlighttable tr { - display: flex; -} - -table.highlighttable td { - margin: 0; - padding: 0; -} - -table.highlighttable td.linenos { - padding-right: 0.5em; -} - -table.highlighttable td.code { - flex: 1; - overflow: hidden; -} - -.highlight .hll { - display: block; -} - -div.highlight pre, -table.highlighttable pre { - margin: 0; -} - -div.code-block-caption + div { - margin-top: 0; -} - -div.code-block-caption { - margin-top: 1em; - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -table.highlighttable td.linenos, -span.linenos, -div.highlight span.gp { /* gp: Generic.Prompt */ - user-select: none; - -webkit-user-select: text; /* Safari fallback only */ - -webkit-user-select: none; /* Chrome/Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* IE10+ */ -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - margin: 1em 0; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -span.eqno a.headerlink { - position: absolute; - z-index: 1; -} - -div.math:hover a.headerlink { - visibility: visible; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_static/css/badge_only.css b/docs/docs/apidocs/python_apidocs/_static/css/badge_only.css deleted file mode 100644 index c718cee44..000000000 --- a/docs/docs/apidocs/python_apidocs/_static/css/badge_only.css +++ /dev/null @@ -1 +0,0 @@ -.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/Roboto-Slab-Bold.woff b/docs/docs/apidocs/python_apidocs/_static/css/fonts/Roboto-Slab-Bold.woff deleted file mode 100644 index 6cb600001..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/Roboto-Slab-Bold.woff and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/Roboto-Slab-Bold.woff2 b/docs/docs/apidocs/python_apidocs/_static/css/fonts/Roboto-Slab-Bold.woff2 deleted file mode 100644 index 7059e2314..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/Roboto-Slab-Bold.woff2 and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/Roboto-Slab-Regular.woff b/docs/docs/apidocs/python_apidocs/_static/css/fonts/Roboto-Slab-Regular.woff deleted file mode 100644 index f815f63f9..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/Roboto-Slab-Regular.woff and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/Roboto-Slab-Regular.woff2 b/docs/docs/apidocs/python_apidocs/_static/css/fonts/Roboto-Slab-Regular.woff2 deleted file mode 100644 index f2c76e5bd..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/Roboto-Slab-Regular.woff2 and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.eot b/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.eot deleted file mode 100644 index e9f60ca95..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.svg b/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.svg deleted file mode 100644 index 855c845e5..000000000 --- a/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,2671 +0,0 @@ - - - - -Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 - By ,,, -Copyright Dave Gandy 2016. All rights reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.ttf b/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.ttf deleted file mode 100644 index 35acda2fa..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.woff b/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.woff deleted file mode 100644 index 400014a4b..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.woff2 b/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 4d13fc604..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/fontawesome-webfont.woff2 and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-bold-italic.woff b/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-bold-italic.woff deleted file mode 100644 index 88ad05b9f..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-bold-italic.woff and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-bold-italic.woff2 b/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-bold-italic.woff2 deleted file mode 100644 index c4e3d804b..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-bold-italic.woff2 and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-bold.woff b/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-bold.woff deleted file mode 100644 index c6dff51f0..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-bold.woff and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-bold.woff2 b/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-bold.woff2 deleted file mode 100644 index bb195043c..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-bold.woff2 and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-normal-italic.woff b/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-normal-italic.woff deleted file mode 100644 index 76114bc03..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-normal-italic.woff and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-normal-italic.woff2 b/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-normal-italic.woff2 deleted file mode 100644 index 3404f37e2..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-normal-italic.woff2 and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-normal.woff b/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-normal.woff deleted file mode 100644 index ae1307ff5..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-normal.woff and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-normal.woff2 b/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-normal.woff2 deleted file mode 100644 index 3bf984332..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/css/fonts/lato-normal.woff2 and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/css/theme.css b/docs/docs/apidocs/python_apidocs/_static/css/theme.css deleted file mode 100644 index 19a446a0e..000000000 --- a/docs/docs/apidocs/python_apidocs/_static/css/theme.css +++ /dev/null @@ -1,4 +0,0 @@ -html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_static/doctools.js b/docs/docs/apidocs/python_apidocs/_static/doctools.js deleted file mode 100644 index d06a71d75..000000000 --- a/docs/docs/apidocs/python_apidocs/_static/doctools.js +++ /dev/null @@ -1,156 +0,0 @@ -/* - * doctools.js - * ~~~~~~~~~~~ - * - * Base JavaScript utilities for all Sphinx HTML documentation. - * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ -"use strict"; - -const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", -]); - -const _ready = (callback) => { - if (document.readyState !== "loading") { - callback(); - } else { - document.addEventListener("DOMContentLoaded", callback); - } -}; - -/** - * Small JavaScript module for the documentation. - */ -const Documentation = { - init: () => { - Documentation.initDomainIndexTable(); - Documentation.initOnKeyListeners(); - }, - - /** - * i18n support - */ - TRANSLATIONS: {}, - PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), - LOCALE: "unknown", - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext: (string) => { - const translated = Documentation.TRANSLATIONS[string]; - switch (typeof translated) { - case "undefined": - return string; // no translation - case "string": - return translated; // translation exists - default: - return translated[0]; // (singular, plural) translation tuple exists - } - }, - - ngettext: (singular, plural, n) => { - const translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated !== "undefined") - return translated[Documentation.PLURAL_EXPR(n)]; - return n === 1 ? singular : plural; - }, - - addTranslations: (catalog) => { - Object.assign(Documentation.TRANSLATIONS, catalog.messages); - Documentation.PLURAL_EXPR = new Function( - "n", - `return (${catalog.plural_expr})` - ); - Documentation.LOCALE = catalog.locale; - }, - - /** - * helper function to focus on search bar - */ - focusSearchBar: () => { - document.querySelectorAll("input[name=q]")[0]?.focus(); - }, - - /** - * Initialise the domain index toggle buttons - */ - initDomainIndexTable: () => { - const toggler = (el) => { - const idNumber = el.id.substr(7); - const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); - if (el.src.substr(-9) === "minus.png") { - el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; - toggledRows.forEach((el) => (el.style.display = "none")); - } else { - el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; - toggledRows.forEach((el) => (el.style.display = "")); - } - }; - - const togglerElements = document.querySelectorAll("img.toggler"); - togglerElements.forEach((el) => - el.addEventListener("click", (event) => toggler(event.currentTarget)) - ); - togglerElements.forEach((el) => (el.style.display = "")); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); - }, - - initOnKeyListeners: () => { - // only install a listener if it is really needed - if ( - !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && - !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS - ) - return; - - document.addEventListener("keydown", (event) => { - // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; - // bail with special keys - if (event.altKey || event.ctrlKey || event.metaKey) return; - - if (!event.shiftKey) { - switch (event.key) { - case "ArrowLeft": - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; - - const prevLink = document.querySelector('link[rel="prev"]'); - if (prevLink && prevLink.href) { - window.location.href = prevLink.href; - event.preventDefault(); - } - break; - case "ArrowRight": - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; - - const nextLink = document.querySelector('link[rel="next"]'); - if (nextLink && nextLink.href) { - window.location.href = nextLink.href; - event.preventDefault(); - } - break; - } - } - - // some keyboard layouts may need Shift to get / - switch (event.key) { - case "/": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.focusSearchBar(); - event.preventDefault(); - } - }); - }, -}; - -// quick alias for translations -const _ = Documentation.gettext; - -_ready(Documentation.init); diff --git a/docs/docs/apidocs/python_apidocs/_static/documentation_options.js b/docs/docs/apidocs/python_apidocs/_static/documentation_options.js deleted file mode 100644 index 3f4239403..000000000 --- a/docs/docs/apidocs/python_apidocs/_static/documentation_options.js +++ /dev/null @@ -1,13 +0,0 @@ -const DOCUMENTATION_OPTIONS = { - VERSION: '1.2.0', - LANGUAGE: 'en', - COLLAPSE_INDEX: false, - BUILDER: 'html', - FILE_SUFFIX: '.html', - LINK_SUFFIX: '.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false, - SHOW_SEARCH_SUMMARY: true, - ENABLE_SEARCH_SHORTCUTS: true, -}; \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_static/file.png b/docs/docs/apidocs/python_apidocs/_static/file.png deleted file mode 100644 index a858a410e..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/file.png and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/jquery.js b/docs/docs/apidocs/python_apidocs/_static/jquery.js deleted file mode 100644 index c4c6022f2..000000000 --- a/docs/docs/apidocs/python_apidocs/_static/jquery.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_static/js/html5shiv.min.js b/docs/docs/apidocs/python_apidocs/_static/js/html5shiv.min.js deleted file mode 100644 index cd1c674f5..000000000 --- a/docs/docs/apidocs/python_apidocs/_static/js/html5shiv.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** -* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed -*/ -!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_static/js/theme.js b/docs/docs/apidocs/python_apidocs/_static/js/theme.js deleted file mode 100644 index 1fddb6ee4..000000000 --- a/docs/docs/apidocs/python_apidocs/_static/js/theme.js +++ /dev/null @@ -1 +0,0 @@ -!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("
"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0,1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re,"$1$2"); - else if (re2.test(w)) - w = w.replace(re2,"$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re,""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } -} - diff --git a/docs/docs/apidocs/python_apidocs/_static/minus.png b/docs/docs/apidocs/python_apidocs/_static/minus.png deleted file mode 100644 index d96755fda..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/minus.png and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/plus.png b/docs/docs/apidocs/python_apidocs/_static/plus.png deleted file mode 100644 index 7107cec93..000000000 Binary files a/docs/docs/apidocs/python_apidocs/_static/plus.png and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/_static/pygments.css b/docs/docs/apidocs/python_apidocs/_static/pygments.css deleted file mode 100644 index 0d49244ed..000000000 --- a/docs/docs/apidocs/python_apidocs/_static/pygments.css +++ /dev/null @@ -1,75 +0,0 @@ -pre { line-height: 125%; } -td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -.highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } -.highlight .c { color: #408090; font-style: italic } /* Comment */ -.highlight .err { border: 1px solid #FF0000 } /* Error */ -.highlight .k { color: #007020; font-weight: bold } /* Keyword */ -.highlight .o { color: #666666 } /* Operator */ -.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */ -.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #007020 } /* Comment.Preproc */ -.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */ -.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ -.highlight .gd { color: #A00000 } /* Generic.Deleted */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ -.highlight .gr { color: #FF0000 } /* Generic.Error */ -.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #00A000 } /* Generic.Inserted */ -.highlight .go { color: #333333 } /* Generic.Output */ -.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #0044DD } /* Generic.Traceback */ -.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #007020 } /* Keyword.Pseudo */ -.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #902000 } /* Keyword.Type */ -.highlight .m { color: #208050 } /* Literal.Number */ -.highlight .s { color: #4070a0 } /* Literal.String */ -.highlight .na { color: #4070a0 } /* Name.Attribute */ -.highlight .nb { color: #007020 } /* Name.Builtin */ -.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ -.highlight .no { color: #60add5 } /* Name.Constant */ -.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ -.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ -.highlight .ne { color: #007020 } /* Name.Exception */ -.highlight .nf { color: #06287e } /* Name.Function */ -.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ -.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ -.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #bb60d5 } /* Name.Variable */ -.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ -.highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mb { color: #208050 } /* Literal.Number.Bin */ -.highlight .mf { color: #208050 } /* Literal.Number.Float */ -.highlight .mh { color: #208050 } /* Literal.Number.Hex */ -.highlight .mi { color: #208050 } /* Literal.Number.Integer */ -.highlight .mo { color: #208050 } /* Literal.Number.Oct */ -.highlight .sa { color: #4070a0 } /* Literal.String.Affix */ -.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ -.highlight .sc { color: #4070a0 } /* Literal.String.Char */ -.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */ -.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ -.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ -.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ -.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ -.highlight .sx { color: #c65d09 } /* Literal.String.Other */ -.highlight .sr { color: #235388 } /* Literal.String.Regex */ -.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ -.highlight .ss { color: #517918 } /* Literal.String.Symbol */ -.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ -.highlight .fm { color: #06287e } /* Name.Function.Magic */ -.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ -.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ -.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ -.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */ -.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/_static/searchtools.js b/docs/docs/apidocs/python_apidocs/_static/searchtools.js deleted file mode 100644 index 7918c3fab..000000000 --- a/docs/docs/apidocs/python_apidocs/_static/searchtools.js +++ /dev/null @@ -1,574 +0,0 @@ -/* - * searchtools.js - * ~~~~~~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for the full-text search. - * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ -"use strict"; - -/** - * Simple result scoring code. - */ -if (typeof Scorer === "undefined") { - var Scorer = { - // Implement the following function to further tweak the score for each result - // The function takes a result array [docname, title, anchor, descr, score, filename] - // and returns the new score. - /* - score: result => { - const [docname, title, anchor, descr, score, filename] = result - return score - }, - */ - - // query matches the full name of an object - objNameMatch: 11, - // or matches in the last dotted part of the object name - objPartialMatch: 6, - // Additive scores depending on the priority of the object - objPrio: { - 0: 15, // used to be importantResults - 1: 5, // used to be objectResults - 2: -5, // used to be unimportantResults - }, - // Used when the priority is not in the mapping. - objPrioDefault: 0, - - // query found in title - title: 15, - partialTitle: 7, - // query found in terms - term: 5, - partialTerm: 2, - }; -} - -const _removeChildren = (element) => { - while (element && element.lastChild) element.removeChild(element.lastChild); -}; - -/** - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping - */ -const _escapeRegExp = (string) => - string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string - -const _displayItem = (item, searchTerms, highlightTerms) => { - const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; - const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; - const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; - const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - const contentRoot = document.documentElement.dataset.content_root; - - const [docName, title, anchor, descr, score, _filename] = item; - - let listItem = document.createElement("li"); - let requestUrl; - let linkUrl; - if (docBuilder === "dirhtml") { - // dirhtml builder - let dirname = docName + "/"; - if (dirname.match(/\/index\/$/)) - dirname = dirname.substring(0, dirname.length - 6); - else if (dirname === "index/") dirname = ""; - requestUrl = contentRoot + dirname; - linkUrl = requestUrl; - } else { - // normal html builders - requestUrl = contentRoot + docName + docFileSuffix; - linkUrl = docName + docLinkSuffix; - } - let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + anchor; - linkEl.dataset.score = score; - linkEl.innerHTML = title; - if (descr) { - listItem.appendChild(document.createElement("span")).innerHTML = - " (" + descr + ")"; - // highlight search terms in the description - if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js - highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); - } - else if (showSearchSummary) - fetch(requestUrl) - .then((responseData) => responseData.text()) - .then((data) => { - if (data) - listItem.appendChild( - Search.makeSearchSummary(data, searchTerms) - ); - // highlight search terms in the summary - if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js - highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); - }); - Search.output.appendChild(listItem); -}; -const _finishSearch = (resultCount) => { - Search.stopPulse(); - Search.title.innerText = _("Search Results"); - if (!resultCount) - Search.status.innerText = Documentation.gettext( - "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." - ); - else - Search.status.innerText = _( - `Search finished, found ${resultCount} page(s) matching the search query.` - ); -}; -const _displayNextItem = ( - results, - resultCount, - searchTerms, - highlightTerms, -) => { - // results left, load the summary and display it - // this is intended to be dynamic (don't sub resultsCount) - if (results.length) { - _displayItem(results.pop(), searchTerms, highlightTerms); - setTimeout( - () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), - 5 - ); - } - // search finished, update title and status message - else _finishSearch(resultCount); -}; - -/** - * Default splitQuery function. Can be overridden in ``sphinx.search`` with a - * custom function per language. - * - * The regular expression works by splitting the string on consecutive characters - * that are not Unicode letters, numbers, underscores, or emoji characters. - * This is the same as ``\W+`` in Python, preserving the surrogate pair area. - */ -if (typeof splitQuery === "undefined") { - var splitQuery = (query) => query - .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) - .filter(term => term) // remove remaining empty strings -} - -/** - * Search Module - */ -const Search = { - _index: null, - _queued_query: null, - _pulse_status: -1, - - htmlToText: (htmlString) => { - const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); - htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); - const docContent = htmlElement.querySelector('[role="main"]'); - if (docContent !== undefined) return docContent.textContent; - console.warn( - "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." - ); - return ""; - }, - - init: () => { - const query = new URLSearchParams(window.location.search).get("q"); - document - .querySelectorAll('input[name="q"]') - .forEach((el) => (el.value = query)); - if (query) Search.performSearch(query); - }, - - loadIndex: (url) => - (document.body.appendChild(document.createElement("script")).src = url), - - setIndex: (index) => { - Search._index = index; - if (Search._queued_query !== null) { - const query = Search._queued_query; - Search._queued_query = null; - Search.query(query); - } - }, - - hasIndex: () => Search._index !== null, - - deferQuery: (query) => (Search._queued_query = query), - - stopPulse: () => (Search._pulse_status = -1), - - startPulse: () => { - if (Search._pulse_status >= 0) return; - - const pulse = () => { - Search._pulse_status = (Search._pulse_status + 1) % 4; - Search.dots.innerText = ".".repeat(Search._pulse_status); - if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); - }; - pulse(); - }, - - /** - * perform a search for something (or wait until index is loaded) - */ - performSearch: (query) => { - // create the required interface elements - const searchText = document.createElement("h2"); - searchText.textContent = _("Searching"); - const searchSummary = document.createElement("p"); - searchSummary.classList.add("search-summary"); - searchSummary.innerText = ""; - const searchList = document.createElement("ul"); - searchList.classList.add("search"); - - const out = document.getElementById("search-results"); - Search.title = out.appendChild(searchText); - Search.dots = Search.title.appendChild(document.createElement("span")); - Search.status = out.appendChild(searchSummary); - Search.output = out.appendChild(searchList); - - const searchProgress = document.getElementById("search-progress"); - // Some themes don't use the search progress node - if (searchProgress) { - searchProgress.innerText = _("Preparing search..."); - } - Search.startPulse(); - - // index already loaded, the browser was quick! - if (Search.hasIndex()) Search.query(query); - else Search.deferQuery(query); - }, - - /** - * execute search (requires search index to be loaded) - */ - query: (query) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - const allTitles = Search._index.alltitles; - const indexEntries = Search._index.indexentries; - - // stem the search terms and add them to the correct list - const stemmer = new Stemmer(); - const searchTerms = new Set(); - const excludedTerms = new Set(); - const highlightTerms = new Set(); - const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); - splitQuery(query.trim()).forEach((queryTerm) => { - const queryTermLower = queryTerm.toLowerCase(); - - // maybe skip this "word" - // stopwords array is from language_data.js - if ( - stopwords.indexOf(queryTermLower) !== -1 || - queryTerm.match(/^\d+$/) - ) - return; - - // stem the word - let word = stemmer.stemWord(queryTermLower); - // select the correct list - if (word[0] === "-") excludedTerms.add(word.substr(1)); - else { - searchTerms.add(word); - highlightTerms.add(queryTermLower); - } - }); - - if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js - localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) - } - - // console.debug("SEARCH: searching for:"); - // console.info("required: ", [...searchTerms]); - // console.info("excluded: ", [...excludedTerms]); - - // array of [docname, title, anchor, descr, score, filename] - let results = []; - _removeChildren(document.getElementById("search-progress")); - - const queryLower = query.toLowerCase(); - for (const [title, foundTitles] of Object.entries(allTitles)) { - if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { - for (const [file, id] of foundTitles) { - let score = Math.round(100 * queryLower.length / title.length) - results.push([ - docNames[file], - titles[file] !== title ? `${titles[file]} > ${title}` : title, - id !== null ? "#" + id : "", - null, - score, - filenames[file], - ]); - } - } - } - - // search for explicit entries in index directives - for (const [entry, foundEntries] of Object.entries(indexEntries)) { - if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { - for (const [file, id] of foundEntries) { - let score = Math.round(100 * queryLower.length / entry.length) - results.push([ - docNames[file], - titles[file], - id ? "#" + id : "", - null, - score, - filenames[file], - ]); - } - } - } - - // lookup as object - objectTerms.forEach((term) => - results.push(...Search.performObjectSearch(term, objectTerms)) - ); - - // lookup as search terms in fulltext - results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); - - // let the scorer override scores with a custom scoring function - if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); - - // now sort the results by score (in opposite order of appearance, since the - // display function below uses pop() to retrieve items) and then - // alphabetically - results.sort((a, b) => { - const leftScore = a[4]; - const rightScore = b[4]; - if (leftScore === rightScore) { - // same score: sort alphabetically - const leftTitle = a[1].toLowerCase(); - const rightTitle = b[1].toLowerCase(); - if (leftTitle === rightTitle) return 0; - return leftTitle > rightTitle ? -1 : 1; // inverted is intentional - } - return leftScore > rightScore ? 1 : -1; - }); - - // remove duplicate search results - // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept - let seen = new Set(); - results = results.reverse().reduce((acc, result) => { - let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); - if (!seen.has(resultStr)) { - acc.push(result); - seen.add(resultStr); - } - return acc; - }, []); - - results = results.reverse(); - - // for debugging - //Search.lastresults = results.slice(); // a copy - // console.info("search results:", Search.lastresults); - - // print the results - _displayNextItem(results, results.length, searchTerms, highlightTerms); - }, - - /** - * search for object names - */ - performObjectSearch: (object, objectTerms) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const objects = Search._index.objects; - const objNames = Search._index.objnames; - const titles = Search._index.titles; - - const results = []; - - const objectSearchCallback = (prefix, match) => { - const name = match[4] - const fullname = (prefix ? prefix + "." : "") + name; - const fullnameLower = fullname.toLowerCase(); - if (fullnameLower.indexOf(object) < 0) return; - - let score = 0; - const parts = fullnameLower.split("."); - - // check for different match types: exact matches of full name or - // "last name" (i.e. last dotted part) - if (fullnameLower === object || parts.slice(-1)[0] === object) - score += Scorer.objNameMatch; - else if (parts.slice(-1)[0].indexOf(object) > -1) - score += Scorer.objPartialMatch; // matches in last name - - const objName = objNames[match[1]][2]; - const title = titles[match[0]]; - - // If more than one term searched for, we require other words to be - // found in the name/title/description - const otherTerms = new Set(objectTerms); - otherTerms.delete(object); - if (otherTerms.size > 0) { - const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); - if ( - [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) - ) - return; - } - - let anchor = match[3]; - if (anchor === "") anchor = fullname; - else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; - - const descr = objName + _(", in ") + title; - - // add custom score for some objects according to scorer - if (Scorer.objPrio.hasOwnProperty(match[2])) - score += Scorer.objPrio[match[2]]; - else score += Scorer.objPrioDefault; - - results.push([ - docNames[match[0]], - fullname, - "#" + anchor, - descr, - score, - filenames[match[0]], - ]); - }; - Object.keys(objects).forEach((prefix) => - objects[prefix].forEach((array) => - objectSearchCallback(prefix, array) - ) - ); - return results; - }, - - /** - * search for full-text terms in the index - */ - performTermsSearch: (searchTerms, excludedTerms) => { - // prepare search - const terms = Search._index.terms; - const titleTerms = Search._index.titleterms; - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - - const scoreMap = new Map(); - const fileMap = new Map(); - - // perform the search on the required terms - searchTerms.forEach((word) => { - const files = []; - const arr = [ - { files: terms[word], score: Scorer.term }, - { files: titleTerms[word], score: Scorer.title }, - ]; - // add support for partial matches - if (word.length > 2) { - const escapedWord = _escapeRegExp(word); - Object.keys(terms).forEach((term) => { - if (term.match(escapedWord) && !terms[word]) - arr.push({ files: terms[term], score: Scorer.partialTerm }); - }); - Object.keys(titleTerms).forEach((term) => { - if (term.match(escapedWord) && !titleTerms[word]) - arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); - }); - } - - // no match but word was a required one - if (arr.every((record) => record.files === undefined)) return; - - // found search word in contents - arr.forEach((record) => { - if (record.files === undefined) return; - - let recordFiles = record.files; - if (recordFiles.length === undefined) recordFiles = [recordFiles]; - files.push(...recordFiles); - - // set score for the word in each file - recordFiles.forEach((file) => { - if (!scoreMap.has(file)) scoreMap.set(file, {}); - scoreMap.get(file)[word] = record.score; - }); - }); - - // create the mapping - files.forEach((file) => { - if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) - fileMap.get(file).push(word); - else fileMap.set(file, [word]); - }); - }); - - // now check if the files don't contain excluded terms - const results = []; - for (const [file, wordList] of fileMap) { - // check if all requirements are matched - - // as search terms with length < 3 are discarded - const filteredTermCount = [...searchTerms].filter( - (term) => term.length > 2 - ).length; - if ( - wordList.length !== searchTerms.size && - wordList.length !== filteredTermCount - ) - continue; - - // ensure that none of the excluded terms is in the search result - if ( - [...excludedTerms].some( - (term) => - terms[term] === file || - titleTerms[term] === file || - (terms[term] || []).includes(file) || - (titleTerms[term] || []).includes(file) - ) - ) - break; - - // select one (max) score for the file. - const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); - // add result to the result list - results.push([ - docNames[file], - titles[file], - "", - null, - score, - filenames[file], - ]); - } - return results; - }, - - /** - * helper function to return a node containing the - * search summary for a given text. keywords is a list - * of stemmed words. - */ - makeSearchSummary: (htmlText, keywords) => { - const text = Search.htmlToText(htmlText); - if (text === "") return null; - - const textLower = text.toLowerCase(); - const actualStartPosition = [...keywords] - .map((k) => textLower.indexOf(k.toLowerCase())) - .filter((i) => i > -1) - .slice(-1)[0]; - const startWithContext = Math.max(actualStartPosition - 120, 0); - - const top = startWithContext === 0 ? "" : "..."; - const tail = startWithContext + 240 < text.length ? "..." : ""; - - let summary = document.createElement("p"); - summary.classList.add("context"); - summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - - return summary; - }, -}; - -_ready(Search.init); diff --git a/docs/docs/apidocs/python_apidocs/_static/sphinx_highlight.js b/docs/docs/apidocs/python_apidocs/_static/sphinx_highlight.js deleted file mode 100644 index 8a96c69a1..000000000 --- a/docs/docs/apidocs/python_apidocs/_static/sphinx_highlight.js +++ /dev/null @@ -1,154 +0,0 @@ -/* Highlighting utilities for Sphinx HTML documentation. */ -"use strict"; - -const SPHINX_HIGHLIGHT_ENABLED = true - -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - const rest = document.createTextNode(val.substr(pos + text.length)); - parent.insertBefore( - span, - parent.insertBefore( - rest, - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - /* There may be more occurrences of search term in this node. So call this - * function recursively on the remaining fragment. - */ - _highlight(rest, addItems, text, className); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - -/** - * Small JavaScript module for the documentation. - */ -const SphinxHighlight = { - - /** - * highlight the search words provided in localstorage in the text - */ - highlightSearchWords: () => { - if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight - - // get and clear terms from localstorage - const url = new URL(window.location); - const highlight = - localStorage.getItem("sphinx_highlight_terms") - || url.searchParams.get("highlight") - || ""; - localStorage.removeItem("sphinx_highlight_terms") - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - - // get individual terms from highlight string - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - localStorage.removeItem("sphinx_highlight_terms") - }, - - initEscapeListener: () => { - // only install a listener if it is really needed - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; - - document.addEventListener("keydown", (event) => { - // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; - // bail with special keys - if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; - if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { - SphinxHighlight.hideSearchWords(); - event.preventDefault(); - } - }); - }, -}; - -_ready(() => { - /* Do not call highlightSearchWords() when we are on the search page. - * It will highlight words from the *previous* search query. - */ - if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); - SphinxHighlight.initEscapeListener(); -}); diff --git a/docs/docs/apidocs/python_apidocs/acknowledgments.html b/docs/docs/apidocs/python_apidocs/acknowledgments.html deleted file mode 100644 index f85c0db42..000000000 --- a/docs/docs/apidocs/python_apidocs/acknowledgments.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - Acknowledgments — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Acknowledgments

-

A producer can ensure that a message has been successfully posted by requesting an -acknowledgment for the message being posted. This can be requested by passing a -callable to the on_ack parameter on post. This callback will always get invoked -with an Ack message.

-

A useful pattern for the producer is using the on_ack callback to add the -incoming ack to a queue and then waiting to recieve it. This allows you to -synchronously Session.post to a BlazingMQ queue like:

-
import blazingmq
-from queue import Queue
-
-queue_uri = "bmq://bmq.tutorial.workqueue/example_queue"
-with blazingmq.Session(blazingmq.session_events.log_session_event) as session:
-    session.open_queue(queue_uri, write=True)
-
-    queue = Queue()
-    for i in (1,2,3):
-        session.post(queue_uri, b"Some message here", on_ack=queue.put)
-        ack = queue.get()
-        if ack.status != blazingmq.AckStatus.SUCCESS:
-            print("Error! Failed to post message")
-        else:
-            print("Success!")
-
-    session.close_queue(queue_uri)
-
-
-
-

Note

-

If you want to post without blocking on acknowledgments, you can leverage -functools.partial to bind parameters to the on_ack callable. This can be -useful if you need to do provide a recovery mechanism for messages that failed to -post.

-
-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/api_reference.html b/docs/docs/apidocs/python_apidocs/api_reference.html deleted file mode 100644 index 2e6e35559..000000000 --- a/docs/docs/apidocs/python_apidocs/api_reference.html +++ /dev/null @@ -1,1406 +0,0 @@ - - - - - - - API Reference — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

API Reference

-
-

Session

-
-
-class blazingmq.Session(on_session_event, *, on_message=None, broker='tcp://localhost:30114', message_compression_algorithm=CompressionAlgorithmType.NONE, timeout=..., host_health_monitor=None, num_processing_threads=None, blob_buffer_size=None, channel_high_watermark=None, event_queue_watermarks=None, stats_dump_interval=None)[source]
-

Represents a connection with the BlazingMQ broker.

-

The session represents a connection to the broker. -This object can be manipulated to modify the state of the application from -the point of view of the broker, including opening queues, and starting or -stopping the connection with the broker.

-
-
Parameters:
-
    -
  • on_session_event (Callable[[SessionEvent], None]) – a required callback to process SessionEvent events -received by the session.

  • -
  • on_message (Optional[Callable[[Message, MessageHandle], None]]) – an optional callback to process Message objects received -by the session.

  • -
  • broker (str) – TCP address of the broker (default: ‘tcp://localhost:30114’). -If the environment variable BMQ_BROKER_URI is set, its value -will override whatever broker address is passed via this argument.

  • -
  • message_compression_algorithm (CompressionAlgorithmType) – the type of compression to apply to messages -being posted via this session object.

  • -
  • timeout (Union[Timeouts, float]) – maximum number of seconds to wait for requests on this -session. If not provided, reasonable defaults are used. This -argument may either be a simple float, which sets the same -timeout for each operation, or an instance of the Timeouts class, -which allows setting the timeout for each operation independently.

  • -
  • host_health_monitor (Union[BasicHealthMonitor, None]) – A BasicHealthMonitor is used by default, so -your tests can control whether the session sees the machine as -healthy or not by calling set_healthy and set_unhealthy on -that instance. If you instead pass None, the session will always -see the machine as healthy, HostUnhealthy and -HostHealthRestored events will never be emitted, and the -suspends_on_bad_host_health option of QueueOptions cannot be -used.

  • -
  • num_processing_threads (Optional[int]) – The number of threads for the SDK to use for -processing events. This defaults to 1.

  • -
  • blob_buffer_size (Optional[int]) – The size (in bytes) of the blob buffers to use. This -defaults to 4k.

  • -
  • channel_high_watermark (Optional[int]) – The size (in bytes) to use for the write cache -high watermark on the channel. The default value is 128MB. Note -that BlazingMQ reserves 4MB of this value for control messages, so -the actual watermark for data published is -channel_high_watermark - 4MB.

  • -
  • event_queue_watermarks (Optional[tuple[int, int]]) – A tuple containing the low and high -notification watermark thresholds for the buffer containing all -incoming messages from the broker, respectively. A warning -SlowConsumerHighWaterMark is emitted when the buffer reaches the -high watermark value, and a notification SlowConsumerNormal is -emitted when the buffer is back to the low watermark.

  • -
  • stats_dump_interval (Optional[float]) – The interval (in seconds) at which to dump stats -into the logs. If 0, disable the recurring dump of stats (final -stats are always dumped at the end of the session). The default is -5min; the value must be a multiple of 30s, in the range -[0s - 60min].

  • -
-
-
Raises:
-
    -
  • Error – If the session start request was not successful.

  • -
  • BrokerTimeoutError – If the broker didn’t respond - to the request within a reasonable amount of time.

  • -
  • ValueError – If any of the timeouts are provided and not > 0.0, or if - the stats_dump_interval is provided and is < 0.0.

  • -
-
-
-
-
-close_queue(queue_uri, *, timeout=...)[source]
-

Close an opened queue at the specified queue_uri.

-

Close the queue at the specified queue_uri. After this method -successfully returns, the queue_uri will no longer correspond to valid -queue to do any operations.

-
-

Note

-

Invoking this method from the on_message or -on_session_event of the Session or the on_ack callback of -a posted message will cause a deadlock.

-
-
-
Parameters:
-
    -
  • queue_uri (str) – unique resource identifier for the queue to be closed.

  • -
  • timeout (float) – maximum number of seconds to wait for this request. -If not provided, the timeout provided to the Session when -it was created it used. If that was not provided either, -a reasonable default is used.

  • -
-
-
Raises:
-
    -
  • Error – If the close queue request was not successful.

  • -
  • BrokerTimeoutError – If the broker didn’t - respond to the request within a reasonable amount of time.

  • -
  • ValueError – If timeout is not > 0.0.

  • -
-
-
-
- -
-
-configure_queue(queue_uri, options, *, timeout=...)[source]
-

Modify the options on an opened queue at the specified queue_uri.

-

Modify the options of the queue at the specified queue_uri. After this -method successfully returns, the queue_uri will be configured with the -specified options.

-
-

Note

-

Invoking this method from the on_message or on_session_event of -the Session or the on_ack callback of a posted message will -cause a deadlock.

-
-
-
Parameters:
-
    -
  • queue_uri (str) – unique resource identifier for the queue to be configured.

  • -
  • options (QueueOptions) – options to configure the queue with

  • -
  • timeout (float) – maximum number of seconds to wait for this request. -If not provided, the timeout provided to the Session when -it was created it used. If that was not provided either, -a reasonable default is used.

  • -
-
-
Raises:
-
    -
  • Error – If the configure queue request was not successful.

  • -
  • BrokerTimeoutError – If the broker didn’t - respond to the request within a reasonable amount of time.

  • -
  • ValueError – If timeout is not > 0.0.

  • -
-
-
-
- -
-
-confirm(message)[source]
-

Confirm the specified message from this queue.

-

Mark the specified message, as confirmed. If successful, this will -indicate to the BlazingMQ framework that the processing for this -message has been completed and that the message must not be -re-delivered, if this queue is opened again by any consumer.

-

It’s often more convenient to use MessageHandle.confirm -instead. An instance of MessageHandle is received with every -new Message delivered via the on_message callback.

-
-
Parameters:
-

message (Message) – message to be confirmed.

-
-
Raises:
-

Error – If the confirm message request was not - successful.

-
-
-
- -
-
-get_queue_options(queue_uri)[source]
-

Get configured options of an opened queue.

-

Get the previously set options of an opened queue at the specified -queue_uri.

-
-
Parameters:
-

queue_uri (str) – unique resource identifier for the queue to be configured.

-
-
Returns:
-

The queue’s configured options.

-
-
Return type:
-

QueueOptions

-
-
Raises:
-

Error – If the queue with the given URI is not open, or - its options cannot be retrieved.

-
-
-
-

Note

-

Options that only affect message consumption, including -consumer_priority, max_unconfirmed_messages, and -max_unconfirmed_bytes, are ignored when opening or configuring -a write-only queue, so any attempt to set those options on -a write-only queue won’t be reflected in the QueueOptions -returned by a later call to get_queue_options.

-
-
- -
-
-open_queue(queue_uri, *, read=False, write=False, options=QueueOptions(), timeout=...)[source]
-

Open a queue with the specified parameters

-

Open a queue at the specified queue_uri. The queue_uri is the -identifier for any future interactions with this opened queue.

-
-

Note

-

Invoking this method from the on_message or -on_session_event of the Session or the on_ack callback of -a posted message will cause a deadlock.

-
-
-

Note

-

It’s possible to override the default tier by adding an optional -tier to the queue URI. See URI format.

-
-
-
Parameters:
-
    -
  • queue_uri (str) – unique resource identifier for the queue to be opened.

  • -
  • read (bool) – open the queue for reading, enabling the Session to receive -Message objects for this queue.

  • -
  • write (bool) – open the queue for writing, allowing posting to this queue.

  • -
  • options (QueueOptions) – options to configure the queue -with

  • -
  • timeout (float) – maximum number of seconds to wait for this request. -If not provided, the timeout provided to the Session when -it was created it used. If that was not provided either, -a reasonable default is used.

  • -
-
-
Raises:
-
    -
  • Error – If the open queue request was not successful.

  • -
  • BrokerTimeoutError – If the broker didn’t - respond to the request within a reasonable amount of time.

  • -
  • ValueError – If timeout is not > 0.0.

  • -
-
-
-
- -
-
-post(queue_uri, message, *, properties=None, property_type_overrides=None, on_ack=None)[source]
-

Post a message to an opened queue specified by queue_uri.

-

Post the payload and optional properties and overrides to the opened -queue specified by queue_uri. Optionally take an on_ack callback -that is invoked with the incoming acknowledgment for the message posted.

-
-
Parameters:
-
    -
  • queue_uri (str) – unique resource identifier for the queue to posted to.

  • -
  • message (bytes) – the payload of the message.

  • -
  • properties (Optional[PropertyValueDict]) – optionally -provided properties to be associated with the message.

  • -
  • property_type_overrides (Optional[PropertyTypeDict]) – optionally provided type overrides for the properties.

  • -
  • on_ack (Optional[Callable[[Ack], None]]) – optionally -specified callback which is invoked with the acknowledgment -status of the message being posted.

  • -
-
-
Raises:
-

Error – If the post request was not successful.

-
-
-
- -
-
-stop()[source]
-

Teardown the broker connection

-

Stop the session with the connected BlazingMQ broker which implies -tearing down the connection. This session cannot be used to execute any -actions after this method returns.

-
-

Note

-

Invoking this method from the on_message or -on_session_event of the Session or the on_ack callback of -a posted message will cause a deadlock.

-
-
-
-
- -
-
-classmethod with_options(on_session_event, on_message=None, broker='tcp://localhost:30114', session_options=SessionOptions())[source]
-

Construct a Session instance using SessionOptions.

-

This is the recommended way to construct a new session, as the -SessionOptions class provides an easier to use interface for -configuring only those options you need.

-
-
Parameters:
-
    -
  • on_session_event (Callable[[SessionEvent], None]) – a required callback to process SessionEvent events -received by the session.

  • -
  • on_message (Callable[[Message, MessageHandle], None] | None) – an optional callback to process Message objects received -by the session.

  • -
  • broker (str) – TCP address of the broker (default: ‘tcp://localhost:30114’). -If the environment variable BMQ_BROKER_URI is set, its value -will override whatever broker address is passed via this argument.

  • -
  • session_options (SessionOptions) – an instance of SessionOptions that represents the -session’s configuration.

  • -
-
-
Raises:
-
    -
  • Error – If the session start request was not successful.

  • -
  • BrokerTimeoutError – If the broker didn’t respond - to the request within a reasonable amount of time.

  • -
  • ValueError – If any of the timeouts are provided and not > 0.0, or if - the stats_dump_interval is provided and is < 0.0.

  • -
-
-
-
- -
- -
-
-class blazingmq.Timeouts(connect_timeout=None, disconnect_timeout=None, open_queue_timeout=None, configure_queue_timeout=None, close_queue_timeout=None)[source]
-

A value semantic type representing session timeouts.

-

Each option can be set either by passing it as a keyword argument when -constructing a Timeouts instance, or by setting it as an attribute on -a constructed instance.

-

The default for every option is None. When constructing a Session, -either directly or using SessionOptions, options set to None are given -reasonable default values.

-
-
Parameters:
-
    -
  • connect_timeout (Optional[float]) – The maximum number of seconds to wait for connection requests on -this session.

  • -
  • disconnect_timeout (Optional[float]) – The maximum number of seconds to wait for disconnection requests -on this session.

  • -
  • open_queue_timeout (Optional[float]) – The maximum number of seconds to wait for open queue requests on -this session.

  • -
  • configure_queue_timeout (Optional[float]) – The maximum number of seconds to wait for configure queue requests -on this session.

  • -
  • close_queue_timeout (Optional[float]) – The maximum number of seconds to wait for close queue requests on -this session.

  • -
-
-
-
- -
-
-class blazingmq.SessionOptions(message_compression_algorithm=None, timeouts=None, host_health_monitor=None, num_processing_threads=None, blob_buffer_size=None, channel_high_watermark=None, event_queue_watermarks=None, stats_dump_interval=None)[source]
-

A value semantic type representing session options.

-

Each option can be set either by passing it as a keyword argument when -constructing a SessionOptions instance, or by setting it as an attribute -on a constructed instance.

-

The default for every option is None. When constructing a Session, -options set to None are given reasonable default values.

-
-
Parameters:
-
    -
  • message_compression_algorithm (Optional[CompressionAlgorithmType]) – The type of compression to apply to messages being posted via the -session this object is configuring.

  • -
  • timeouts (Optional[Timeouts]) – The maximum number of seconds to wait for requests for each -operation on this session. If not provided, reasonable defaults -are used.

  • -
  • host_health_monitor (Union[BasicHealthMonitor, None]) – A BasicHealthMonitor is used by default, so your tests can -control whether the session sees the machine as healthy or not by -calling set_healthy and set_unhealthy on that instance. If -you instead pass None, the session will always see the machine as -healthy, HostUnhealthy and HostHealthRestored events with -never be emitted, and the suspends_on_bad_host_health option of -QueueOptions cannot be used.

  • -
  • num_processing_threads (Optional[int]) – The number of threads for the SDK to use for processing events. -This defaults to 1.

  • -
  • blob_buffer_size (Optional[int]) – The size (in bytes) of the blob buffers to use. This defaults to -4k.

  • -
  • channel_high_watermark (Optional[int]) – The size (in bytes) to use for the write cache high watermark on -the channel. The default value is 128MB. Note that BlazingMQ -reserves 4MB of this value for control messages, so the actual -watermark for data published is channel_high_watermark - 4MB.

  • -
  • event_queue_watermarks (Optional[tuple[int, int]]) – A tuple containing the low and high notification watermark -thresholds for the buffer containing all incoming messages from the -broker, respectively. A warning SlowConsumerHighWaterMark is -emitted when the buffer reaches the high watermark value, and a -notification SlowConsumerNormal is emitted when the buffer is -back to the low watermark.

  • -
  • stats_dump_interval (Optional[float]) – The interval (in seconds) at which to dump stats into the logs. If -0, disable the recurring dump of stats (final stats are always -dumped at the end of the session). The default is 5min; the value -must be a multiple of 30s, in the range [0s - 60min].

  • -
-
-
-
- -
-
-class blazingmq.QueueOptions(max_unconfirmed_messages=None, max_unconfirmed_bytes=None, consumer_priority=None, suspends_on_bad_host_health=None)[source]
-

A value semantic type representing the settings for a queue.

-

Each option can be set either by passing it as a keyword argument when -constructing a QueueOptions instance, or by setting it as an attribute on -a constructed instance.

-

The default for every option is None. When calling configure_queue, -options set to None are not changed from their current setting. When -calling open_queue, options set to None are given default values. -These default values are accessible as class attributes on the -QueueOptions class.

-
-
Parameters:
-
    -
  • max_unconfirmed_messages (Optional[int]) – The maximum number of messages that can be delivered to the queue -without confirmation. This limit can be reached if the queue -receives messages faster than it confirms received messages. Once -this limit is reached, at least one message must be confirmed -before the queue will receive any more messages.

  • -
  • max_unconfirmed_bytes (Optional[int]) – The maximum number of bytes that can be delivered to the queue -without confirmation. Like max_unconfirmed_messages, this limit -can be reached if incoming messages are queued up waiting for -already delivered messages to be confirmed.

  • -
  • consumer_priority (Optional[int]) – The precedence of this consumer compared to other consumers of the -same queue. The consumer with the highest priority receives the -messages. If multiple consumers share the highest priority, -messages are delivered to them in a round-robin fashion.

  • -
  • suspends_on_bad_host_health (Optional[bool]) – Whether or not this queue should suspend operation while the host -machine is unhealthy. While operation is suspended, a queue opened -with read=True will not receive messages and a queue opened -with write=True will raise if you try to post a message. -By default, queues are not sensitive to the host’s health.

  • -
-
-
-
-
-DEFAULT_MAX_UNCONFIRMED_MESSAGES = 1000
-

The max_unconfirmed_messages used by open_queue by default.

-
- -
-
-DEFAULT_MAX_UNCONFIRMED_BYTES = 33554432
-

The max_unconfirmed_bytes used by open_queue by default.

-
- -
-
-DEFAULT_CONSUMER_PRIORITY = 0
-

The consumer_priority used by open_queue by default.

-
- -
-
-DEFAULT_SUSPENDS_ON_BAD_HOST_HEALTH = False
-

The suspends_on_bad_host_health used by open_queue by default.

-
- -
- -
-
-

Message Classes

-
-
-class blazingmq.Message[source]
-

A class representing a message received from BlazingMQ.

-

A Message represents a message delivered by BlazingMQ from a producer -to this queue. This message can only be received if the queue is -opened with ‘read=True’ mode enabled.

-
-
-
-
-data
-

Payload for the message received from BlazingMQ.

-
-
Type:
-

bytes

-
-
-
- -
-
-guid
-

Globally unique id for this message.

-
-
Type:
-

bytes

-
-
-
- -
-
-queue_uri
-

Queue URI this message is for.

-
-
Type:
-

str

-
-
-
- -
-
-properties
-

A dictionary of BlazingMQ message properties. -The dictionary keys must be str representing the property -names and the values must be of type str, bytes, -bool or int.

-
-
Type:
-

dict

-
-
-
- -
-
-property_types
-

A mapping of property names to -PropertyType types. The dictionary is guaranteed to provide -a value for each key already present in Message.properties

-
-
Type:
-

dict

-
-
-
- -
- -
-
-class blazingmq.MessageHandle[source]
-

Operations that can be performed on a Message.

-

An instance of this class is received in the on_message -callback along with an instance of a Message.

-
-
-
-
-confirm()[source]
-

Confirm the message received along with this handle.

-

See Session.confirm for more details.

-
-
Raises:
-

Error – If the confirm message request - was not successful.

-
-
-
- -
- -
-
-class blazingmq.Ack[source]
-

Acknowledgment message

-

An Ack is a notification from BlazingMQ to the application, -specifying that the message has been received. This is valuable -for ensuring delivery of messages.

-

These messages will be received in the optionally provided callback to -Session.post().

-

An Ack is by itself not an indication of success unless it has a status of -AckStatus.SUCCESS.

-
-
-
-
-guid
-

a globally unique identifier generated by BlazingMQ for the -message that was successfully posted. This can be correlated between the -producer and consumer to verify the flow of messages.

-
-
Type:
-

bytes

-
-
-
- -
-
-queue_uri
-

the queue that this message was routed to. This is useful -if you have many queues and you want to route this particular Ack to a -particular queue.

-
-
Type:
-

str

-
-
-
- -
-
-status
-

the AckStatus indicating the result of the post -operation. Unless this is of type AckStatus.SUCCESS, the post has -failed and potentially needs to be dealt with.

-
-
Type:
-

AckStatus

-
-
-
- -
- -
-
-

Health Monitoring

-
-
-class blazingmq.BasicHealthMonitor[source]
-

Control whether a Session sees the host as healthy or unhealthy.

-

When a BasicHealthMonitor is passed for the Session constructor’s -host_health_monitor parameter, you can control whether the BlazingMQ -session sees the host as healthy or unhealthy by calling the set_healthy -and set_unhealthy methods. Newly created instances default to the -healthy state.

-
-
-
-
-set_healthy()[source]
-

Tell any associated Session that the host is healthy.

-
-
-
- -
-
-set_unhealthy()[source]
-

Tell any associated Session that the host is unhealthy.

-
-
-
- -
- -
-
-

Enumerations

-
-
-class blazingmq.AckStatus[source]
-

An enum representing the status of an Ack message

-

An AckStatus is a status of a received Ack message -which is the result of an attempted put to some particular queue. -Anything other than AckStatus.SUCCESS represents a failure.

-
-
-SUCCESS
-
- -
-
-CANCELED
-
- -
-
-INVALID_ARGUMENT
-
- -
-
-LIMIT_BYTES
-
- -
-
-LIMIT_MESSAGES
-
- -
-
-NOT_CONNECTED
-
- -
-
-NOT_READY
-
- -
-
-NOT_SUPPORTED
-
- -
-
-REFUSED
-
- -
-
-TIMEOUT
-
- -
-
-UNKNOWN
-
- -
-
-UNRECOGNIZED
-

The AckStatus was not recognized by the binding layer

-
- -
- -
-
-class blazingmq.CompressionAlgorithmType[source]
-

An enum representing compression algorithm used by a producer

-
-
-NONE
-
- -
-
-ZLIB
-
- -
- -
-
-class blazingmq.PropertyType[source]
-

An enum representing various data types understood by BlazingMQ

-
-
-BOOL
-
- -
-
-CHAR
-
- -
-
-SHORT
-
- -
-
-INT32
-
- -
-
-INT64
-
- -
-
-STRING
-
- -
-
-BINARY
-
- -
- -
-
-

Exceptions

-
-
-exception blazingmq.Error[source]
-

Generic BlazingMQ exception type

-
- -
-
-exception blazingmq.exceptions.BrokerTimeoutError[source]
-

Provided time to wait has expired

-
- -
-
-

Session Events

-
-
-class blazingmq.session_events.SessionEvent[source]
-

Base session event type

-
-
-
- -
-
-class blazingmq.session_events.QueueEvent[source]
-

Base type for session events relating to a single queue.

-
-
-
-
-queue_uri
-

Queue URI this event is associated with.

-
-
Type:
-

str

-
-
-
- -
- -
-
-class blazingmq.session_events.Connected[source]
-

Notification of successful connection with the broker

-
-
-
- -
-
-class blazingmq.session_events.Disconnected[source]
-

Notification of successful disconnection with the broker

-
-
-
- -
-
-class blazingmq.session_events.ConnectionLost[source]
-

Notification of a lost connection with the broker

-
-
-
- -
-
-class blazingmq.session_events.Reconnected[source]
-

Notification of a re-connection with the broker in case connection was lost earlier

-
-
-
- -
-
-class blazingmq.session_events.StateRestored[source]
-

Notification of successfully restoring state of application as it was before lost -connection or disconnection

-
-
-
- -
-
-class blazingmq.session_events.ConnectionTimeout[source]
-

Notification that a requested connection could not be initiated in within the -timeout period

-
-
-
- -
-
-class blazingmq.session_events.HostUnhealthy[source]
-

Notification that the host has been marked unhealthy.

-

This is emitted only if host_health_monitor=None was not provided when -the Session was created. This will be emitted whenever the machine -becomes unhealthy. It is also emitted if the machine is initially unhealthy -when the Session is created.

-
-

New in version 0.7.0.

-
-
-
-
- -
-
-class blazingmq.session_events.HostHealthRestored[source]
-

Notification that the host is no longer marked unhealthy.

-

This is emitted only if host_health_monitor=None was not provided when -the Session was created. It will be emitted once the machine is becomes -healthy after an earlier HostUnhealthy event. Before this event -is emitted, you will receive a QueueResumed or QueueResumeFailed for -each queue that was suspended due to suspends_on_bad_host_health=True.

-
-

New in version 0.7.0.

-
-
-
-
- -
-
-class blazingmq.session_events.QueueSuspended[source]
-

Bases: QueueEvent

-

A queue that is sensitive to host health has been suspended.

-

After a HostUnhealthy event is emitted, any queue that was opened with -suspend_on_bad_host_health=True will suspend operation. This event will -be emitted once for each suspended queue.

-
-

Note

-

If host_health_monitor=None was provided when the Session was -created, this event will never be emitted because the host will never -be considered unhealthy.

-
-
-
-
-
-queue_uri
-

URI of the queue that has been successfully suspended.

-
-
Type:
-

str

-
-
-
- -
-

New in version 0.7.0.

-
-
- -
-
-class blazingmq.session_events.QueueSuspendFailed[source]
-

Bases: QueueEvent

-

A queue that is sensitive to host health could not be suspended.

-

Whenever a QueueSuspended event would be expected, this event may be -emitted instead if the SDK is unable to suspend the queue as expected.

-
-

Note

-

The BlazingMQ SDK considers the failure to suspend a queue as evidence -of an unusually serious problem with the connection to the broker, so -if this event occurs the SDK follows it up by dropping the connection -to the broker and trying to re-establish it.

-
-
-
-
-
-queue_uri
-

URI of the queue that could not be suspended.

-
-
Type:
-

str

-
-
-
- -
-

New in version 0.7.0.

-
-
- -
-
-class blazingmq.session_events.QueueResumed[source]
-

Bases: QueueEvent

-

A queue that is sensitive to host health has been resumed.

-

Once an unhealthy machine becomes healthy again, the SDK will automatically -attempt to resume each queue that was suspended when the machine became -unhealthy. This event will be emitted once for each queue that had been -suspended, only after which will HostHealthRestored be emitted.

-
-
-
-
-queue_uri
-

URI of the queue that has been successfully resumed.

-
-
Type:
-

str

-
-
-
- -
-

New in version 0.7.0.

-
-
- -
-
-class blazingmq.session_events.QueueResumeFailed[source]
-

Bases: QueueEvent

-

A queue that is sensitive to host health could not be resumed.

-

Whenever a QueueResumed event would be expected, this event may be -emitted instead if the SDK is unable to resume the queue as expected.

-
-

Note

-

Unlike if suspending a queue fails, the SDK will not automatically drop -the connection to the broker if resuming a queue fails.

-
-
-
-
-
-queue_uri
-

URI of the queue that could not be resumed.

-
-
Type:
-

str

-
-
-
- -
-

New in version 0.7.0.

-
-
- -
-
-class blazingmq.session_events.QueueReopened[source]
-

Bases: QueueEvent

-

A queue has been successfully reopened after a connection loss.

-

If the connection with the broker is lost, ConnectionLost is emitted. -Once it is reestablished, Reconnected is emitted, followed by either -a QueueReopened or QueueReopenFailed for each queue that was -previously open, and finally StateRestored is emitted.

-
-
-
-
-queue_uri
-

URI of the queue that has been successfully reopened.

-
-
Type:
-

str

-
-
-
- -
- -
-
-class blazingmq.session_events.QueueReopenFailed[source]
-

Bases: QueueEvent

-

A queue couldn’t be reopened after a connection loss.

-
-
-
-
-queue_uri
-

URI of the queue that could not be reopened.

-
-
Type:
-

str

-
-
-
- -
- -
-
-class blazingmq.session_events.SlowConsumerNormal[source]
-

Notification that the consumer has resumed acceptable rate of consumption

-
-
-
- -
-
-class blazingmq.session_events.SlowConsumerHighWaterMark[source]
-

Notification that the consumer is consuming at the lowest rate acceptable

-
-
-
- -
-
-class blazingmq.session_events.Error[source]
-

Notification of a miscellaneous error

-
-
-
- -
-
-class blazingmq.session_events.InterfaceError[source]
-

The BlazingMQ SDK behaved in an unexpected way.

-
-
-
- -
-
-

Helper Functions

-
-
-blazingmq.session_events.log_session_event(event)[source]
-

Log incoming session event as appropriate

-

A callback that can be used as a default for the on_session_event -parameter on the Session object. All Connected, Disconnected, -StateRestored, SlowConsumerNormal, and QueueReopened events are -logged at INFO level, and any ConnectionLost, SlowConsumerHighWaterMark, -and Reconnected events are logged at WARN level, as they may indicate issues -with the application. Any other events are most likely an error in the -application and are logged at ERROR level.

-
-
Parameters:
-

event (SessionEvent) – incoming SessionEvent -object.

-
-
-
- -
-
-

Testing Utilities

-

The blazingmq.testing module provides testing utilities.

-

Nothing in this module should ever be used outside of the context of performing -integration tests on your subscribers and publishers.

-
-
-blazingmq.testing.HostHealth
-

This is an alias of BasicHealthMonitor.

-

This was originally exposed only for testing purposes, but is now supported for -general use. The original name has been retained for backwards compatibility, -but new code should prefer to use blazingmq.BasicHealthMonitor directly.

-
- -
-
-

Helper Types

-
-
-blazingmq.PropertyTypeDict
-

alias of Dict[str, PropertyType]

-
- -
-
-blazingmq.PropertyValueDict
-

alias of Dict[str, Union[int, bytes, str]]

-
- -
-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/examples.html b/docs/docs/apidocs/python_apidocs/examples.html deleted file mode 100644 index eb7dc3d96..000000000 --- a/docs/docs/apidocs/python_apidocs/examples.html +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - Examples — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Examples

-
-

Producer

-

A complete example of a program that posts a message and waits for it to be acknowledged -by the broker.

-

Note that on_ack is an optional argument. However, receiving acknowledgment is the only -way to guarantee that your message was received by the broker. In this example, messages are sent -in a fully synchronous fashion - the program waits for an acknowledgement before terminating.

-
# Copyright 2019-2023 Bloomberg Finance L.P.
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed 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.
-
-from __future__ import annotations
-
-import functools
-import threading
-
-import blazingmq
-
-QUEUE_URI = "bmq://bmq.test.mmap.priority/blazingmq-examples"
-
-
-def on_ack(event: threading.Event, ack: blazingmq.Ack) -> None:
-    if ack.status != blazingmq.AckStatus.SUCCESS:
-        print("Received NAck: %r" % ack)
-    else:
-        print("Received Ack: %r" % ack)
-    event.set()
-
-
-def main() -> None:
-    with blazingmq.Session(blazingmq.session_events.log_session_event) as session:
-        print("Connected to BlazingMQ broker")
-        session.open_queue(QUEUE_URI, write=True)
-        event = threading.Event()
-        on_ack_with_event = functools.partial(on_ack, event)
-        print("Posting message")
-        session.post(QUEUE_URI, b"\xde\xad\x00\x00\xbe\xef", on_ack=on_ack_with_event)
-        print("Waiting for acknowledgement")
-        event.wait(timeout=5.0)
-
-
-if __name__ == "__main__":
-    main()
-
-
-
-
-

Consumer with threading.Event

-

A complete example of a program that consumes messages from a BlazingMQ -queue. The main thread is blocked waiting for threading.Event to be set upon -receiving SIGTERM, while incoming messages are processed in the callback on -the BlazingMQ event handler thread.

-
# Copyright 2019-2023 Bloomberg Finance L.P.
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed 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.
-
-from __future__ import annotations
-
-import signal
-import threading
-from typing import Any
-
-import blazingmq
-
-QUEUE_URI = "bmq://bmq.test.mmap.priority/blazingmq-examples"
-EXITING = threading.Event()
-
-
-def on_message(msg: blazingmq.Message, msg_handle: blazingmq.MessageHandle) -> None:
-    print("Confirming: ", msg)
-    msg_handle.confirm()
-
-
-def main() -> None:
-    with blazingmq.Session(
-        blazingmq.session_events.log_session_event,
-        on_message=on_message,
-    ) as session:
-        print("Connected to BlazingMQ broker")
-        print("Send SIGTERM to exit")
-        session.open_queue(QUEUE_URI, read=True)
-
-        EXITING.wait()
-        print("Waiting to process all outstanding messages")
-        session.configure_queue(QUEUE_URI, blazingmq.QueueOptions(0, 0, 0))
-    print("Session stopped.")
-
-
-def on_signal(signum: int, _frame: Any) -> None:
-    print(f"Received signal: {signum}. Exiting...")
-    EXITING.set()
-
-
-if __name__ == "__main__":
-    signal.signal(signal.SIGINT, on_signal)  # handle CTRL-C
-    signal.signal(signal.SIGTERM, on_signal)
-    main()
-
-
-
-
-

Consumer with queue.Queue

-

Correct synchronization may be difficult to implement. It sometimes helps to use the -Python standard library queue.Queue. The following example consumes messages from -a BlazingMQ queue and uses queue.Queue for synchronization.

-

The main thread is blocked in a Queue.get while all new messages are immediately -added to the in-process queue. There will be no more than max_unconfirmed_messages -in the in-process queue at any given time (unless more than max_unconfirmed_bytes -was received first) because the broker will pause delivery once -this value has been reached. Once SIGTERM is received, a sentinel object is added to -the in-process queue; all BlazingMQ messages received after the signal will be ignored.

-

Also note that, in this example, we provide suspends_on_bad_host_health=True -when we open the queue. This stops the queue from receiving messages if the -machine is marked unhealthy, so that we don’t unintentionally process a message -on an unhealthy machine.

-
# Copyright 2019-2023 Bloomberg Finance L.P.
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed 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.
-
-from __future__ import annotations
-
-import queue
-import signal
-from typing import Any
-from typing import Optional
-
-import blazingmq
-
-QUEUE_URI = "bmq://bmq.test.mmap.priority/blazingmq-examples"
-
-MESSAGES: queue.Queue[Optional[blazingmq.Message]] = queue.Queue()
-
-
-def on_message(msg: blazingmq.Message, _msg_handle: blazingmq.MessageHandle) -> None:
-    MESSAGES.put(msg)
-
-
-def main() -> None:
-    print("Starting consumer2")
-    print("Send SIGTERM to exit.")
-    with blazingmq.Session(
-        blazingmq.session_events.log_session_event,
-        on_message=on_message,
-    ) as session:
-        print("Connected to BlazingMQ broker")
-        session.open_queue(
-            QUEUE_URI,
-            read=True,
-            options=blazingmq.QueueOptions(
-                max_unconfirmed_messages=100,
-                suspends_on_bad_host_health=False,
-            ),
-        )
-
-        while True:
-            msg = MESSAGES.get()
-            if msg is None:
-                break
-            print("Confirming: ", msg)
-            session.confirm(msg)
-        print("Waiting to receive all outstanding messages")
-        session.configure_queue(QUEUE_URI, blazingmq.QueueOptions(0, 0, 0))
-
-    print("Session stopped.")
-
-
-def on_signal(signum: int, _frame: Any) -> None:
-    print(f"Received signal: {signum}. Exiting...")
-    MESSAGES.put(None)
-
-
-if __name__ == "__main__":
-    signal.signal(signal.SIGINT, on_signal)  # handle CTRL-C
-    signal.signal(signal.SIGTERM, on_signal)
-    main()
-
-
-
-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/genindex.html b/docs/docs/apidocs/python_apidocs/genindex.html deleted file mode 100644 index 135795ac5..000000000 --- a/docs/docs/apidocs/python_apidocs/genindex.html +++ /dev/null @@ -1,495 +0,0 @@ - - - - - - Index — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
-
    -
  • - -
  • -
  • -
-
-
-
-
- - -

Index

- -
- A - | B - | C - | D - | E - | G - | H - | I - | L - | M - | N - | O - | P - | Q - | R - | S - | T - | U - | W - | Z - -
-

A

- - - -
- -

B

- - - -
- -

C

- - - -
- -

D

- - - -
- -

E

- - -
- -

G

- - - -
- -

H

- - - -
- -

I

- - - -
- -

L

- - - -
- -

M

- - - -
- -

N

- - - -
- -

O

- - -
- -

P

- - - -
- -

Q

- - - -
- -

R

- - - -
- -

S

- - - -
- -

T

- - - -
- -

U

- - - -
- -

W

- - -
- -

Z

- - -
- - - -
-
-
- -
- -
-

© Copyright 2019-2023, Bloomberg Finance L.P..

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/index.html b/docs/docs/apidocs/python_apidocs/index.html deleted file mode 100644 index ab33eeae6..000000000 --- a/docs/docs/apidocs/python_apidocs/index.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - blazingmq — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

blazingmq

-

blazingmq is the official way to interact with the BlazingMQ framework from Python.

-
-

Contents

-
- -
-
-
-

Indices and tables

- -
-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/message_properties.html b/docs/docs/apidocs/python_apidocs/message_properties.html deleted file mode 100644 index 0048ead84..000000000 --- a/docs/docs/apidocs/python_apidocs/message_properties.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - Message Properties — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Message Properties

-

A message can have some arbitrary metadata associated with it. This metadata is -represented by a dictionary of key-value pairs. Here, we cover how to associate -properties with messages being posted, and how to retrieve properties when consuming -messages.

-
-

Posting

-
-

Message With Properties

-

When invoking Session.post with a message, you can provide a dict to the optional -properties parameter to associate properties with the message being posted.

-

BlazingMQ has particular types of property values that can be part of this -dictionary – as enumerated in PropertyType.

-

If you do not particularly care about which exact PropertyType is being targeted, -the types inferred by default are as follows:

- - - - - - - - - - - - - - - - - - - - -

Python Type

BlazingMQ Type

int

PropertyType.INT64

bool

PropertyType.BOOL

str

PropertyType.STRING

bytes

PropertyType.BINARY

-
-
-

Properties With Overrides

-

However, if you want to target a particular PropertyType, you can leverage the -property_type_overrides in Session.post. Be aware that any key included in -property_type_overrides must be present in properties. For any particular -property, if an override is missing, the default is inferred as above.

-

The following table describes the properties that can be set and the accepted types:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

BlazingMQ Type

Python Type

PropertyType.INT64

int

PropertyType.INT32

int

PropertyType.SHORT

int

PropertyType.CHAR

bytes

PropertyType.BOOL

bool

PropertyType.STRING

str

PropertyType.BINARY

bytes

-
-

Note

-
    -
  • All integers being passed as values need to be in the appropriate range to not -trigger an exception.

  • -
  • The PropertyType.CHAR type accepts a bytes object with a single byte, i.e., -bytes with a length of 1.

  • -
-
-
-
-
-

Consuming

-

If the Message received in your on_message callback installed on Session -contains any properties, it will always contain both a Message.properties and a -fully populated Message.property_types. This means that, for every property denoted -by a key in Message.properties, there will also be a corresponding key in -Message.property_types to denote the BlazingMQ type of the property received.

-

The Python types that you can expect will be a mirror of the second table in the -section above.

-
-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/objects.inv b/docs/docs/apidocs/python_apidocs/objects.inv deleted file mode 100644 index e0860a38d..000000000 Binary files a/docs/docs/apidocs/python_apidocs/objects.inv and /dev/null differ diff --git a/docs/docs/apidocs/python_apidocs/py-modindex.html b/docs/docs/apidocs/python_apidocs/py-modindex.html deleted file mode 100644 index 67412914c..000000000 --- a/docs/docs/apidocs/python_apidocs/py-modindex.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - Python Module Index — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
-
    -
  • - -
  • -
  • -
-
-
-
-
- - -

Python Module Index

- -
- b -
- - - - - - - - - - -
 
- b
- blazingmq -
    - blazingmq.testing -
- - -
-
-
- -
- -
-

© Copyright 2019-2023, Bloomberg Finance L.P..

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/queue_options_and_configuration.html b/docs/docs/apidocs/python_apidocs/queue_options_and_configuration.html deleted file mode 100644 index 49001a9e2..000000000 --- a/docs/docs/apidocs/python_apidocs/queue_options_and_configuration.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - Queue Options and Configuration — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Queue Options and Configuration

-

There are several available options for configuring a queue’s behavior. The -documentation for QueueOptions shows all of the options available for you to -configure.

-
-

Setting Queue Options

-

Most applications will use default values for their queue settings, but if you -need to adjust an option, you can provide QueueOptions when you open the -queue. For example, if you want to configure the priority of your consumer -relative to other consumers of the same queue, you could set the -consumer_priority option when you open the queue:

-
session.open(queue_uri,
-             options=blazingmq.QueueOptions(consumer_priority=100)
-)
-
-
-

You can also adjust the options of an already opened queue to meet the -application’s needs. If the application enters a phase where it’s receiving -larger messages, you might want to tell the broker that it’s okay for you to -have twice as many bytes as normal for messages that have been received but -have not yet been confirmed. You could do that with:

-
more_bytes_options = blazingmq.QueueOptions(
-    max_unconfirmed_bytes=blazingmq.QueueOptions.DEFAULT_MAX_UNCONFIRMED_BYTES
-        * 2
-)
-session.configure_queue(queue_uri, options=more_bytes_options)
-
-
-
-
-

Common Scenarios

-

There are several common patterns for using non-default queue options.

-
-

Pausing consumption on demand

-

An application can ask the broker to stop delivering new messages. This is most -common as part of a graceful shutdown (as seen in the User Guide’s -Simple Consumer), but you could choose to do this at any time. You -accomplish this by setting max_unconfirmed_messages to zero:

-
session.configure_queue(queue_uri, QueueOptions(max_unconfirmed_messages=0))
-
-
-

If your application wants to resume receiving messages later, it should save -the queue’s original options with a call to get_queue_options before setting -max_unconfirmed_messages=0, and then supply those original options to -configure_queue when it’s ready for new messages again.

-
-
-

Delivering all messages to one consumer

-

When multiple consumers are attached to a queue with the default -consumer_priority, the broker delivers messages in a round-robin -fashion. However, it may be preferable to have a single consumer receiving the -messages, with one or more backup consumers that can take over if the primary -consumer goes offline. This can be achieved by supplying a unique -consumer_priority for each consumer, in which case every message for the -queue will be delivered to the highest priority consumer that is connected and -not suspended.

-
-
-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/search.html b/docs/docs/apidocs/python_apidocs/search.html deleted file mode 100644 index e15c30756..000000000 --- a/docs/docs/apidocs/python_apidocs/search.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Search — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
-
    -
  • - -
  • -
  • -
-
-
-
-
- - - - -
- -
- -
-
-
- -
- -
-

© Copyright 2019-2023, Bloomberg Finance L.P..

-
- - Built with Sphinx using a - theme - provided by Read the Docs. - - -
-
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/searchindex.js b/docs/docs/apidocs/python_apidocs/searchindex.js deleted file mode 100644 index ce34ef8f1..000000000 --- a/docs/docs/apidocs/python_apidocs/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({"docnames": ["BUILD", "CHANGELOG", "acknowledgments", "api_reference", "examples", "index", "message_properties", "queue_options_and_configuration", "user_guide"], "filenames": ["BUILD.md", "CHANGELOG.md", "acknowledgments.rst", "api_reference.rst", "examples.rst", "index.rst", "message_properties.rst", "queue_options_and_configuration.rst", "user_guide.rst"], "titles": ["Build instructions for the BlazingMQ Python SDK", "Changelog", "Acknowledgments", "API Reference", "Examples", "blazingmq", "Message Properties", "Queue Options and Configuration", "User Guide"], "terms": {"run": 0, "entir": 0, "test": [0, 4, 5, 8], "suit": 0, "all": [0, 3, 4, 5, 6, 8], "support": [0, 3], "interpret": 0, "architectur": 0, "i": [0, 1, 2, 3, 4, 5, 6, 7, 8], "difficult": [0, 4], "do": [0, 2, 3, 6, 7, 8], "should": [0, 1, 3, 7, 8], "alreadi": [0, 3, 7], "set": [0, 3, 4, 5, 6, 8], "up": [0, 3, 8], "github": 0, "action": [0, 3], "we": [0, 4, 6, 8], "advis": 0, "singl": [0, 3, 6, 7, 8], "version": [0, 3, 4, 8], "ci": 0, "other": [0, 3, 7, 8], "combin": 0, "your": [0, 3, 4, 6, 7, 8], "pull": 0, "request": [0, 2, 3], "see": [0, 3, 4, 8], "workflow": 0, "yaml": 0, "more": [0, 3, 4, 7, 8], "detail": [0, 3], "how": [0, 6], "The": [0, 3, 4, 6, 7, 8], "below": 0, "assum": [0, 8], "pyexec": 0, "python3": 0, "9": 0, "focu": 0, "linux": 0, "onli": [0, 3, 4, 8], "thi": [0, 1, 2, 3, 4, 6, 7, 8], "suffici": 0, "most": [0, 3, 7], "case": [0, 3, 7, 8], "befor": [0, 3, 4, 7, 8], "follow": [0, 3, 4, 6, 8], "ani": [0, 3, 4, 6, 7, 8], "sure": [0, 8], "git": 0, "clone": 0, "project": 0, "onto": 0, "host": [0, 3, 5], "machin": [0, 3, 4], "onc": [0, 3, 4, 8], "environ": [0, 3], "properli": 0, "initi": [0, 3], "can": [0, 2, 3, 6, 7, 8], "built": 0, "tree": 0, "": [0, 3, 7], "directori": 0, "iter": 0, "quickli": 0, "howev": [0, 4, 6, 7, 8], "ha": [0, 2, 3, 4, 6, 8], "disadvantag": 0, "have": [0, 3, 6, 7, 8], "instal": [0, 6], "requir": [0, 3, 4, 8], "lint": 0, "depend": 0, "along": [0, 3, 8], "potenti": [0, 3], "accident": 0, "against": 0, "wrong": 0, "artifact": 0, "due": [0, 3], "For": [0, 6, 7, 8], "comprehens": 0, "self": 0, "contain": [0, 3, 6, 8], "setup": 0, "specif": [0, 4], "l": [0, 4], "avail": [0, 7], "provid": [0, 2, 3, 4, 6, 7, 8], "manylinux": 0, "sh": 0, "script": 0, "macosx": 0, "univers": 0, "when": [0, 3, 4, 6, 7, 8], "an": [0, 2, 3, 4, 6, 7, 8], "interact": [0, 3, 5], "command": 0, "line": 0, "prompt": 0, "you": [0, 1, 2, 3, 4, 6, 7, 8], "check": 0, "appropri": [0, 3, 6, 8], "configur": [0, 3, 5, 8], "variabl": [0, 3], "mai": [0, 1, 3, 4, 7], "need": [0, 2, 3, 6, 7, 8], "prior": 0, "With": [0, 5], "broker": [0, 3, 4, 7, 8], "tcp": [0, 3], "localhost": [0, 3], "30114": [0, 3], "bmq_broker_uri": [0, 3], "addit": [0, 8], "ar": [0, 3, 4, 6, 7, 8], "coverag": 0, "m": 0, "pip": 0, "r": [0, 4], "dev": 0, "txt": 0, "And": 0, "now": [0, 3], "abl": [0, 8], "examin": 0, "makefil": 0, "ini": 0, "file": [0, 1, 4], "understand": 0, "about": [0, 6, 8], "them": [0, 3], "note": [1, 3, 4], "NOT": 1, "add": [1, 2], "new": [1, 3, 4, 7, 8], "chang": [1, 3], "log": [1, 3, 8], "entri": 1, "manag": [1, 8], "towncrier": 1, "edit": 1, "previou": 1, "fix": 1, "problem": [1, 3], "like": [1, 2, 3, 8], "typo": 1, "correct": [1, 4], "A": [2, 3, 4, 6], "produc": [2, 3, 5], "ensur": [2, 3, 8], "messag": [2, 4, 5, 8], "been": [2, 3, 4, 7, 8], "successfulli": [2, 3, 8], "post": [2, 3, 4, 5, 8], "being": [2, 3, 6, 8], "pass": [2, 3, 6, 8], "callabl": [2, 3], "on_ack": [2, 3, 4, 8], "paramet": [2, 3, 6, 8], "callback": [2, 3, 4, 6, 8], "alwai": [2, 3, 6], "get": [2, 3, 4, 8], "invok": [2, 3, 6, 8], "ack": [2, 3, 4, 5, 8], "us": [2, 3, 4, 5, 7, 8], "pattern": [2, 7, 8], "incom": [2, 3, 4, 8], "queue": [2, 3, 5, 8], "wait": [2, 3, 4, 8], "reciev": 2, "allow": [2, 3], "synchron": [2, 4], "session": [2, 4, 5, 6, 7, 8], "blazingmq": [2, 3, 4, 6, 7, 8], "import": [2, 4, 8], "from": [2, 3, 4, 5, 8], "queue_uri": [2, 3, 4, 5, 7, 8], "bmq": [2, 4, 8], "tutori": [2, 8], "workqueu": [2, 8], "example_queu": [2, 8], "session_ev": [2, 3, 4, 8], "log_session_ev": [2, 3, 4, 5, 8], "open_queu": [2, 3, 4, 5, 8], "write": [2, 3, 4, 8], "true": [2, 3, 4, 8], "1": [2, 3, 6], "2": [2, 4, 7], "3": 2, "b": [2, 4, 8], "some": [2, 3, 6, 8], "here": [2, 6, 8], "put": [2, 3, 4], "statu": [2, 3, 4, 5, 8], "ackstatu": [2, 3, 4, 5, 8], "success": [2, 3, 4, 5, 8], "print": [2, 4, 8], "error": [2, 3, 5], "fail": [2, 3, 8], "els": [2, 4], "close_queu": [2, 3, 5, 8], "If": [2, 3, 6, 7, 8], "want": [2, 3, 6, 7, 8], "without": [2, 3, 4], "block": [2, 4, 8], "leverag": [2, 6], "functool": [2, 4], "partial": [2, 4], "bind": [2, 3], "recoveri": 2, "mechan": 2, "on_session_ev": [3, 8], "on_messag": [3, 4, 6, 8], "none": [3, 4, 5, 8], "message_compression_algorithm": 3, "compressionalgorithmtyp": [3, 5], "timeout": [3, 4, 5], "host_health_monitor": [3, 8], "num_processing_thread": 3, "blob_buffer_s": 3, "channel_high_watermark": 3, "event_queue_watermark": 3, "stats_dump_interv": 3, "sourc": 3, "repres": [3, 6], "connect": [3, 4, 5, 7, 8], "object": [3, 4, 6, 8], "manipul": 3, "modifi": 3, "state": [3, 8], "applic": [3, 4, 7, 8], "point": [3, 8], "view": 3, "includ": [3, 6, 8], "open": [3, 4, 7, 8], "start": [3, 4, 8], "stop": [3, 4, 5, 7, 8], "sessionev": [3, 5, 8], "process": [3, 4, 8], "receiv": [3, 4, 6, 7, 8], "option": [3, 4, 5, 6, 8], "messagehandl": [3, 4, 5, 8], "str": [3, 6], "address": 3, "default": [3, 6, 7, 8], "its": [3, 8], "valu": [3, 4, 6, 7], "overrid": [3, 5], "whatev": 3, "via": [3, 8], "argument": [3, 4, 8], "compress": 3, "appli": 3, "union": 3, "float": 3, "maximum": 3, "number": 3, "second": [3, 6], "reason": 3, "either": [3, 4], "simpl": [3, 5, 7], "which": [3, 6, 7, 8], "same": [3, 7], "each": [3, 7], "oper": [3, 8], "instanc": [3, 8], "independ": 3, "basichealthmonitor": [3, 5, 8], "so": [3, 4], "control": [3, 8], "whether": [3, 8], "healthi": [3, 8], "call": [3, 7, 8], "set_healthi": [3, 5, 8], "set_unhealthi": [3, 5, 8], "instead": 3, "hostunhealthi": [3, 5], "hosthealthrestor": [3, 5], "never": [3, 8], "emit": 3, "suspends_on_bad_host_health": [3, 4, 8], "queueoption": [3, 4, 5, 7, 8], "cannot": 3, "int": [3, 4, 6], "thread": [3, 5, 8], "sdk": 3, "size": 3, "byte": [3, 6, 7, 8], "blob": 3, "buffer": 3, "4k": 3, "cach": 3, "high": 3, "watermark": 3, "channel": 3, "128mb": 3, "reserv": 3, "4mb": 3, "actual": 3, "data": [3, 5, 8], "publish": 3, "tupl": 3, "low": 3, "notif": 3, "threshold": 3, "respect": 3, "warn": 3, "slowconsumerhighwatermark": [3, 5], "reach": [3, 4], "slowconsumernorm": [3, 5], "back": 3, "interv": 3, "dump": 3, "stat": 3, "0": [3, 4, 7, 8], "disabl": 3, "recur": 3, "final": [3, 8], "end": [3, 8], "5min": 3, "must": [3, 6, 8], "multipl": [3, 7, 8], "30": 3, "rang": [3, 6], "60min": 3, "rais": [3, 8], "wa": [3, 4, 8], "brokertimeouterror": [3, 5], "didn": 3, "t": [3, 4, 8], "respond": 3, "within": [3, 8], "amount": 3, "time": [3, 4, 7], "valueerror": 3, "close": [3, 8], "specifi": [3, 8], "after": [3, 4], "method": [3, 8], "return": [3, 8], "longer": [3, 8], "correspond": [3, 6], "valid": [3, 8], "caus": 3, "deadlock": [3, 8], "uniqu": [3, 7, 8], "resourc": [3, 8], "identifi": [3, 4, 8], "creat": [3, 8], "configure_queu": [3, 4, 5, 7, 8], "confirm": [3, 4, 5, 7, 8], "mark": [3, 4], "indic": [3, 8], "framework": [3, 5, 8], "complet": [3, 4], "re": [3, 8], "deliv": [3, 5, 8], "again": [3, 7, 8], "consum": [3, 5], "It": [3, 4, 8], "often": 3, "conveni": 3, "everi": [3, 6, 7, 8], "get_queue_opt": [3, 5, 7], "previous": 3, "given": [3, 4], "uri": [3, 8], "retriev": [3, 6], "affect": 3, "consumpt": [3, 5], "consumer_prior": [3, 7], "max_unconfirmed_messag": [3, 4, 7], "max_unconfirmed_byt": [3, 4, 7], "ignor": [3, 4], "attempt": 3, "those": [3, 7], "won": [3, 8], "reflect": 3, "later": [3, 7], "read": [3, 4, 8], "fals": [3, 4], "futur": 3, "possibl": 3, "tier": 3, "ad": [3, 4], "format": 3, "bool": [3, 5, 6], "enabl": [3, 8], "properti": [3, 5, 8], "property_type_overrid": [3, 6], "payload": 3, "take": [3, 7, 8], "acknowledg": [3, 4, 5, 8], "propertyvaluedict": [3, 5], "associ": [3, 6, 8], "propertytypedict": [3, 5], "teardown": 3, "impli": [3, 4, 8], "tear": 3, "down": 3, "execut": 3, "classmethod": 3, "with_opt": [3, 5], "session_opt": 3, "sessionopt": [3, 5], "construct": 3, "recommend": 3, "wai": [3, 4, 5, 8], "easier": 3, "interfac": 3, "connect_timeout": 3, "disconnect_timeout": 3, "open_queue_timeout": 3, "configure_queue_timeout": 3, "close_queue_timeout": 3, "semant": 3, "keyword": 3, "attribut": 3, "directli": 3, "disconnect": [3, 5], "current": 3, "These": 3, "access": 3, "limit": [3, 4], "faster": 3, "than": [3, 4, 8], "least": 3, "one": [3, 5, 8], "queu": 3, "preced": 3, "compar": 3, "highest": [3, 7], "prioriti": [3, 4, 7], "share": 3, "round": [3, 7], "robin": [3, 7], "fashion": [3, 4, 7], "suspend": [3, 7], "while": [3, 4], "unhealthi": [3, 4], "try": 3, "By": 3, "sensit": 3, "default_max_unconfirmed_messag": [3, 5], "1000": 3, "default_max_unconfirmed_byt": [3, 5, 7], "33554432": 3, "default_consumer_prior": [3, 5], "default_suspends_on_bad_host_health": [3, 5], "mode": [3, 8], "guid": [3, 5, 7], "global": 3, "id": 3, "dictionari": [3, 6], "kei": [3, 6], "name": 3, "dict": [3, 6], "property_typ": [3, 5, 6], "map": 3, "propertytyp": [3, 5, 6], "guarante": [3, 4], "present": [3, 6], "perform": 3, "handl": [3, 4], "valuabl": 3, "deliveri": [3, 4], "itself": 3, "unless": [3, 4], "gener": 3, "correl": 3, "between": 3, "verifi": 3, "flow": 3, "rout": 3, "mani": [3, 7], "particular": [3, 6], "result": [3, 8], "dealt": 3, "constructor": [3, 8], "newli": 3, "tell": [3, 7], "enum": 3, "anyth": 3, "failur": 3, "cancel": [3, 5], "invalid_argu": [3, 5], "limit_byt": [3, 5], "limit_messag": [3, 5], "not_connect": [3, 5], "not_readi": [3, 5], "not_support": [3, 5], "refus": [3, 5], "unknown": [3, 5], "unrecogn": [3, 5], "recogn": 3, "layer": 3, "algorithm": 3, "zlib": [3, 5], "variou": 3, "understood": 3, "char": [3, 5, 6], "short": [3, 5, 6], "int32": [3, 5, 6], "int64": [3, 5, 6], "string": [3, 5, 6], "binari": [3, 5, 6], "expir": 3, "base": 3, "queueevent": [3, 5], "relat": [3, 8], "connectionlost": [3, 5], "lost": 3, "reconnect": [3, 5], "earlier": 3, "staterestor": [3, 5], "restor": 3, "connectiontimeout": [3, 5], "could": [3, 7, 8], "period": 3, "whenev": 3, "becom": 3, "also": [3, 4, 6, 7, 8], "7": [3, 8], "queueresum": [3, 5], "queueresumefail": [3, 5], "queuesuspend": [3, 5], "suspend_on_bad_host_health": 3, "becaus": [3, 4], "consid": 3, "queuesuspendfail": [3, 5], "would": 3, "expect": [3, 6], "unabl": 3, "evid": 3, "unusu": 3, "seriou": 3, "occur": 3, "drop": 3, "establish": 3, "resum": [3, 7], "automat": 3, "becam": 3, "had": 3, "unlik": 3, "queuereopen": [3, 5], "reopen": 3, "loss": 3, "reestablish": 3, "queuereopenfail": [3, 5], "couldn": 3, "accept": [3, 6, 8], "rate": 3, "lowest": 3, "miscellan": 3, "interfaceerror": [3, 5], "behav": 3, "unexpect": 3, "info": 3, "level": 3, "thei": 3, "issu": 3, "modul": [3, 5], "noth": 3, "ever": 3, "outsid": 3, "context": [3, 8], "integr": 3, "subscrib": 3, "hosthealth": [3, 5], "alia": 3, "origin": [3, 7], "expos": 3, "purpos": [3, 8], "retain": 3, "backward": 3, "compat": 3, "code": 3, "prefer": [3, 7], "program": [4, 8], "In": [4, 8], "sent": 4, "fulli": [4, 6], "termin": 4, "copyright": 4, "2019": 4, "2023": 4, "bloomberg": 4, "financ": 4, "p": 4, "spdx": 4, "licens": 4, "apach": 4, "under": 4, "except": [4, 5, 6, 8], "complianc": 4, "obtain": 4, "copi": 4, "http": 4, "www": 4, "org": 4, "law": 4, "agre": 4, "softwar": 4, "distribut": 4, "AS": 4, "basi": 4, "warranti": 4, "OR": 4, "condit": 4, "OF": 4, "kind": 4, "express": 4, "languag": 4, "govern": 4, "permiss": 4, "__future__": 4, "annot": 4, "mmap": 4, "def": [4, 8], "nack": 4, "main": 4, "on_ack_with_ev": 4, "xde": 4, "xad": 4, "x00": 4, "xbe": 4, "xef": 4, "5": 4, "__name__": 4, "__main__": 4, "upon": 4, "sigterm": 4, "handler": [4, 8], "signal": [4, 8], "type": [4, 5, 6, 8], "exit": [4, 8], "msg": 4, "msg_handl": 4, "send": 4, "outstand": [4, 8], "on_sign": 4, "signum": [4, 8], "_frame": 4, "f": 4, "sigint": [4, 8], "ctrl": 4, "c": 4, "implement": [4, 8], "sometim": 4, "help": 4, "python": [4, 5, 6], "standard": 4, "librari": [4, 8], "immedi": 4, "There": [4, 7, 8], "first": [4, 8], "paus": [4, 5, 8], "sentinel": 4, "don": [4, 8], "unintention": 4, "_msg_handl": 4, "consumer2": 4, "100": [4, 7], "break": 4, "offici": 5, "user": [5, 7], "health": 5, "monitor": 5, "exampl": [5, 7, 8], "event": [5, 8], "common": 5, "scenario": 5, "demand": 5, "api": [5, 8], "refer": [5, 8], "class": 5, "enumer": [5, 6], "helper": 5, "function": [5, 8], "util": 5, "changelog": 5, "build": [5, 8], "instruct": 5, "make": [5, 8], "v": 5, "tox": 5, "local": 5, "develop": 5, "work": 5, "target": [5, 6], "index": 5, "search": 5, "page": 5, "arbitrari": 6, "metadata": 6, "pair": 6, "cover": [6, 8], "part": [6, 7], "particularli": 6, "care": 6, "exact": 6, "infer": 6, "Be": 6, "awar": 6, "miss": 6, "abov": [6, 8], "tabl": 6, "describ": 6, "integ": 6, "trigger": 6, "e": 6, "length": 6, "both": [6, 8], "popul": 6, "mean": [6, 8], "denot": 6, "mirror": 6, "section": [6, 8], "sever": 7, "behavior": 7, "document": [7, 8], "show": 7, "adjust": 7, "rel": 7, "meet": 7, "enter": [7, 8], "phase": 7, "where": 7, "larger": 7, "might": 7, "okai": 7, "twice": 7, "normal": 7, "yet": 7, "more_bytes_opt": 7, "non": 7, "ask": 7, "grace": 7, "shutdown": 7, "seen": 7, "choos": 7, "accomplish": 7, "zero": [7, 8], "save": 7, "suppli": 7, "readi": 7, "attach": 7, "backup": 7, "over": 7, "primari": 7, "goe": 7, "offlin": 7, "achiev": 7, "walk": 8, "through": 8, "packag": 8, "doe": 8, "complex": 8, "concept": 8, "basic": 8, "posit": 8, "look": 8, "insid": 8, "per": 8, "sinc": 8, "veri": 8, "heavyweight": 8, "hold": 8, "lot": 8, "system": 8, "respons": 8, "network": 8, "pool": 8, "intern": 8, "memori": 8, "storag": 8, "correctli": 8, "even": 8, "On": 8, "clean": 8, "our": 8, "on_ack_callback": 8, "lead": 8, "That": 8, "addition": 8, "consequ": 8, "few": 8, "finish": 8, "still": 8, "neg": 8, "on_message_callback": 8, "message_handl": 8, "frame": 8, "goodby": 8, "thing": 8, "intend": 8, "To": 8, "elid": 8, "direct": 8, "toward": 8, "inspect": 8, "decod": 8, "know": 8, "encod": 8, "place": 8, "json": 8, "xml": 8, "ber": 8, "perspect": 8, "matter": 8, "transmit": 8, "notifi": 8, "anoth": 8, "altern": 8, "notic": 8, "At": 8, "serv": 8, "flight": 8, "ed": 8, "pleas": 8, "safe": 8, "believ": 8, "suspens": 8}, "objects": {"": [[3, 0, 0, "-", "blazingmq"]], "blazingmq": [[3, 1, 1, "", "Ack"], [3, 1, 1, "", "AckStatus"], [3, 1, 1, "", "BasicHealthMonitor"], [3, 1, 1, "", "CompressionAlgorithmType"], [3, 4, 1, "", "Error"], [3, 1, 1, "", "Message"], [3, 1, 1, "", "MessageHandle"], [3, 1, 1, "", "PropertyType"], [3, 2, 1, "", "PropertyTypeDict"], [3, 2, 1, "", "PropertyValueDict"], [3, 1, 1, "", "QueueOptions"], [3, 1, 1, "", "Session"], [3, 1, 1, "", "SessionOptions"], [3, 1, 1, "", "Timeouts"], [3, 0, 0, "-", "testing"]], "blazingmq.Ack": [[3, 2, 1, "", "guid"], [3, 2, 1, "", "queue_uri"], [3, 2, 1, "", "status"]], "blazingmq.AckStatus": [[3, 2, 1, "", "CANCELED"], [3, 2, 1, "", "INVALID_ARGUMENT"], [3, 2, 1, "", "LIMIT_BYTES"], [3, 2, 1, "", "LIMIT_MESSAGES"], [3, 2, 1, "", "NOT_CONNECTED"], [3, 2, 1, "", "NOT_READY"], [3, 2, 1, "", "NOT_SUPPORTED"], [3, 2, 1, "", "REFUSED"], [3, 2, 1, "", "SUCCESS"], [3, 2, 1, "", "TIMEOUT"], [3, 2, 1, "", "UNKNOWN"], [3, 2, 1, "", "UNRECOGNIZED"]], "blazingmq.BasicHealthMonitor": [[3, 3, 1, "", "set_healthy"], [3, 3, 1, "", "set_unhealthy"]], "blazingmq.CompressionAlgorithmType": [[3, 2, 1, "", "NONE"], [3, 2, 1, "", "ZLIB"]], "blazingmq.Message": [[3, 2, 1, "", "data"], [3, 2, 1, "", "guid"], [3, 2, 1, "", "properties"], [3, 2, 1, "", "property_types"], [3, 2, 1, "", "queue_uri"]], "blazingmq.MessageHandle": [[3, 3, 1, "", "confirm"]], "blazingmq.PropertyType": [[3, 2, 1, "", "BINARY"], [3, 2, 1, "", "BOOL"], [3, 2, 1, "", "CHAR"], [3, 2, 1, "", "INT32"], [3, 2, 1, "", "INT64"], [3, 2, 1, "", "SHORT"], [3, 2, 1, "", "STRING"]], "blazingmq.QueueOptions": [[3, 2, 1, "", "DEFAULT_CONSUMER_PRIORITY"], [3, 2, 1, "", "DEFAULT_MAX_UNCONFIRMED_BYTES"], [3, 2, 1, "", "DEFAULT_MAX_UNCONFIRMED_MESSAGES"], [3, 2, 1, "", "DEFAULT_SUSPENDS_ON_BAD_HOST_HEALTH"]], "blazingmq.Session": [[3, 3, 1, "", "close_queue"], [3, 3, 1, "", "configure_queue"], [3, 3, 1, "", "confirm"], [3, 3, 1, "", "get_queue_options"], [3, 3, 1, "", "open_queue"], [3, 3, 1, "", "post"], [3, 3, 1, "", "stop"], [3, 3, 1, "", "with_options"]], "blazingmq.exceptions": [[3, 4, 1, "", "BrokerTimeoutError"]], "blazingmq.session_events": [[3, 1, 1, "", "Connected"], [3, 1, 1, "", "ConnectionLost"], [3, 1, 1, "", "ConnectionTimeout"], [3, 1, 1, "", "Disconnected"], [3, 1, 1, "", "Error"], [3, 1, 1, "", "HostHealthRestored"], [3, 1, 1, "", "HostUnhealthy"], [3, 1, 1, "", "InterfaceError"], [3, 1, 1, "", "QueueEvent"], [3, 1, 1, "", "QueueReopenFailed"], [3, 1, 1, "", "QueueReopened"], [3, 1, 1, "", "QueueResumeFailed"], [3, 1, 1, "", "QueueResumed"], [3, 1, 1, "", "QueueSuspendFailed"], [3, 1, 1, "", "QueueSuspended"], [3, 1, 1, "", "Reconnected"], [3, 1, 1, "", "SessionEvent"], [3, 1, 1, "", "SlowConsumerHighWaterMark"], [3, 1, 1, "", "SlowConsumerNormal"], [3, 1, 1, "", "StateRestored"], [3, 5, 1, "", "log_session_event"]], "blazingmq.session_events.QueueEvent": [[3, 2, 1, "", "queue_uri"]], "blazingmq.session_events.QueueReopenFailed": [[3, 2, 1, "", "queue_uri"]], "blazingmq.session_events.QueueReopened": [[3, 2, 1, "", "queue_uri"]], "blazingmq.session_events.QueueResumeFailed": [[3, 2, 1, "", "queue_uri"]], "blazingmq.session_events.QueueResumed": [[3, 2, 1, "", "queue_uri"]], "blazingmq.session_events.QueueSuspendFailed": [[3, 2, 1, "", "queue_uri"]], "blazingmq.session_events.QueueSuspended": [[3, 2, 1, "", "queue_uri"]], "blazingmq.testing": [[3, 2, 1, "", "HostHealth"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:method", "4": "py:exception", "5": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "exception", "Python exception"], "5": ["py", "function", "Python function"]}, "titleterms": {"build": 0, "instruct": 0, "blazingmq": [0, 5], "python": 0, "sdk": 0, "us": 0, "make": 0, "v": 0, "tox": 0, "local": 0, "develop": 0, "work": 0, "target": 0, "changelog": 1, "acknowledg": 2, "api": 3, "refer": 3, "session": 3, "messag": [3, 6, 7], "class": 3, "health": [3, 8], "monitor": [3, 8], "enumer": 3, "except": 3, "event": [3, 4], "helper": 3, "function": 3, "test": 3, "util": 3, "type": 3, "exampl": 4, "produc": [4, 8], "consum": [4, 6, 7, 8], "thread": 4, "queue": [4, 7], "content": 5, "indic": 5, "tabl": 5, "properti": 6, "post": 6, "With": 6, "overrid": 6, "option": 7, "configur": 7, "set": 7, "common": 7, "scenario": 7, "paus": 7, "consumpt": 7, "demand": 7, "deliv": 7, "all": 7, "one": 7, "user": 8, "guid": 8, "simpl": 8, "host": 8}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx.ext.intersphinx": 1, "sphinx": 60}, "alltitles": {"Build instructions for the BlazingMQ Python SDK": [[0, "build-instructions-for-the-blazingmq-python-sdk"]], "Using make vs. tox": [[0, "using-make-vs-tox"]], "Local Development": [[0, "local-development"]], "Working with Make Targets": [[0, "working-with-make-targets"]], "Changelog": [[1, "changelog"]], "Acknowledgments": [[2, "acknowledgments"]], "API Reference": [[3, "api-reference"]], "Session": [[3, "session"]], "Message Classes": [[3, "message-classes"]], "Health Monitoring": [[3, "health-monitoring"]], "Enumerations": [[3, "enumerations"]], "Exceptions": [[3, "exceptions"]], "Session Events": [[3, "session-events"]], "Helper Functions": [[3, "helper-functions"]], "Testing Utilities": [[3, "module-blazingmq.testing"]], "Helper Types": [[3, "helper-types"]], "Examples": [[4, "examples"]], "Producer": [[4, "producer"]], "Consumer with threading.Event": [[4, "consumer-with-threading-event"]], "Consumer with queue.Queue": [[4, "consumer-with-queue-queue"]], "blazingmq": [[5, "blazingmq"]], "Contents": [[5, "contents"]], "Indices and tables": [[5, "indices-and-tables"]], "Message Properties": [[6, "message-properties"]], "Posting": [[6, "posting"]], "Message With Properties": [[6, "message-with-properties"]], "Properties With Overrides": [[6, "properties-with-overrides"]], "Consuming": [[6, "consuming"]], "Queue Options and Configuration": [[7, "queue-options-and-configuration"]], "Setting Queue Options": [[7, "setting-queue-options"]], "Common Scenarios": [[7, "common-scenarios"]], "Pausing consumption on demand": [[7, "pausing-consumption-on-demand"]], "Delivering all messages to one consumer": [[7, "delivering-all-messages-to-one-consumer"]], "User Guide": [[8, "user-guide"]], "Simple Producer": [[8, "simple-producer"]], "Simple Consumer": [[8, "simple-consumer"]], "Host Health Monitoring": [[8, "host-health-monitoring"]]}, "indexentries": {"ack (class in blazingmq)": [[3, "blazingmq.Ack"]], "ackstatus (class in blazingmq)": [[3, "blazingmq.AckStatus"]], "binary (blazingmq.propertytype attribute)": [[3, "blazingmq.PropertyType.BINARY"]], "bool (blazingmq.propertytype attribute)": [[3, "blazingmq.PropertyType.BOOL"]], "basichealthmonitor (class in blazingmq)": [[3, "blazingmq.BasicHealthMonitor"]], "brokertimeouterror": [[3, "blazingmq.exceptions.BrokerTimeoutError"]], "canceled (blazingmq.ackstatus attribute)": [[3, "blazingmq.AckStatus.CANCELED"]], "char (blazingmq.propertytype attribute)": [[3, "blazingmq.PropertyType.CHAR"]], "compressionalgorithmtype (class in blazingmq)": [[3, "blazingmq.CompressionAlgorithmType"]], "connected (class in blazingmq.session_events)": [[3, "blazingmq.session_events.Connected"]], "connectionlost (class in blazingmq.session_events)": [[3, "blazingmq.session_events.ConnectionLost"]], "connectiontimeout (class in blazingmq.session_events)": [[3, "blazingmq.session_events.ConnectionTimeout"]], "default_consumer_priority (blazingmq.queueoptions attribute)": [[3, "blazingmq.QueueOptions.DEFAULT_CONSUMER_PRIORITY"]], "default_max_unconfirmed_bytes (blazingmq.queueoptions attribute)": [[3, "blazingmq.QueueOptions.DEFAULT_MAX_UNCONFIRMED_BYTES"]], "default_max_unconfirmed_messages (blazingmq.queueoptions attribute)": [[3, "blazingmq.QueueOptions.DEFAULT_MAX_UNCONFIRMED_MESSAGES"]], "default_suspends_on_bad_host_health (blazingmq.queueoptions attribute)": [[3, "blazingmq.QueueOptions.DEFAULT_SUSPENDS_ON_BAD_HOST_HEALTH"]], "disconnected (class in blazingmq.session_events)": [[3, "blazingmq.session_events.Disconnected"]], "error": [[3, "blazingmq.Error"]], "error (class in blazingmq.session_events)": [[3, "blazingmq.session_events.Error"]], "hosthealth (in module blazingmq.testing)": [[3, "blazingmq.testing.HostHealth"]], "hosthealthrestored (class in blazingmq.session_events)": [[3, "blazingmq.session_events.HostHealthRestored"]], "hostunhealthy (class in blazingmq.session_events)": [[3, "blazingmq.session_events.HostUnhealthy"]], "int32 (blazingmq.propertytype attribute)": [[3, "blazingmq.PropertyType.INT32"]], "int64 (blazingmq.propertytype attribute)": [[3, "blazingmq.PropertyType.INT64"]], "invalid_argument (blazingmq.ackstatus attribute)": [[3, "blazingmq.AckStatus.INVALID_ARGUMENT"]], "interfaceerror (class in blazingmq.session_events)": [[3, "blazingmq.session_events.InterfaceError"]], "limit_bytes (blazingmq.ackstatus attribute)": [[3, "blazingmq.AckStatus.LIMIT_BYTES"]], "limit_messages (blazingmq.ackstatus attribute)": [[3, "blazingmq.AckStatus.LIMIT_MESSAGES"]], "message (class in blazingmq)": [[3, "blazingmq.Message"]], "messagehandle (class in blazingmq)": [[3, "blazingmq.MessageHandle"]], "none (blazingmq.compressionalgorithmtype attribute)": [[3, "blazingmq.CompressionAlgorithmType.NONE"]], "not_connected (blazingmq.ackstatus attribute)": [[3, "blazingmq.AckStatus.NOT_CONNECTED"]], "not_ready (blazingmq.ackstatus attribute)": [[3, "blazingmq.AckStatus.NOT_READY"]], "not_supported (blazingmq.ackstatus attribute)": [[3, "blazingmq.AckStatus.NOT_SUPPORTED"]], "propertytype (class in blazingmq)": [[3, "blazingmq.PropertyType"]], "propertytypedict (in module blazingmq)": [[3, "blazingmq.PropertyTypeDict"]], "propertyvaluedict (in module blazingmq)": [[3, "blazingmq.PropertyValueDict"]], "queueevent (class in blazingmq.session_events)": [[3, "blazingmq.session_events.QueueEvent"]], "queueoptions (class in blazingmq)": [[3, "blazingmq.QueueOptions"]], "queuereopenfailed (class in blazingmq.session_events)": [[3, "blazingmq.session_events.QueueReopenFailed"]], "queuereopened (class in blazingmq.session_events)": [[3, "blazingmq.session_events.QueueReopened"]], "queueresumefailed (class in blazingmq.session_events)": [[3, "blazingmq.session_events.QueueResumeFailed"]], "queueresumed (class in blazingmq.session_events)": [[3, "blazingmq.session_events.QueueResumed"]], "queuesuspendfailed (class in blazingmq.session_events)": [[3, "blazingmq.session_events.QueueSuspendFailed"]], "queuesuspended (class in blazingmq.session_events)": [[3, "blazingmq.session_events.QueueSuspended"]], "refused (blazingmq.ackstatus attribute)": [[3, "blazingmq.AckStatus.REFUSED"]], "reconnected (class in blazingmq.session_events)": [[3, "blazingmq.session_events.Reconnected"]], "short (blazingmq.propertytype attribute)": [[3, "blazingmq.PropertyType.SHORT"]], "string (blazingmq.propertytype attribute)": [[3, "blazingmq.PropertyType.STRING"]], "success (blazingmq.ackstatus attribute)": [[3, "blazingmq.AckStatus.SUCCESS"]], "session (class in blazingmq)": [[3, "blazingmq.Session"]], "sessionevent (class in blazingmq.session_events)": [[3, "blazingmq.session_events.SessionEvent"]], "sessionoptions (class in blazingmq)": [[3, "blazingmq.SessionOptions"]], "slowconsumerhighwatermark (class in blazingmq.session_events)": [[3, "blazingmq.session_events.SlowConsumerHighWaterMark"]], "slowconsumernormal (class in blazingmq.session_events)": [[3, "blazingmq.session_events.SlowConsumerNormal"]], "staterestored (class in blazingmq.session_events)": [[3, "blazingmq.session_events.StateRestored"]], "timeout (blazingmq.ackstatus attribute)": [[3, "blazingmq.AckStatus.TIMEOUT"]], "timeouts (class in blazingmq)": [[3, "blazingmq.Timeouts"]], "unknown (blazingmq.ackstatus attribute)": [[3, "blazingmq.AckStatus.UNKNOWN"]], "unrecognized (blazingmq.ackstatus attribute)": [[3, "blazingmq.AckStatus.UNRECOGNIZED"]], "zlib (blazingmq.compressionalgorithmtype attribute)": [[3, "blazingmq.CompressionAlgorithmType.ZLIB"]], "blazingmq": [[3, "module-blazingmq"]], "blazingmq.testing": [[3, "module-blazingmq.testing"]], "close_queue() (blazingmq.session method)": [[3, "blazingmq.Session.close_queue"]], "configure_queue() (blazingmq.session method)": [[3, "blazingmq.Session.configure_queue"]], "confirm() (blazingmq.messagehandle method)": [[3, "blazingmq.MessageHandle.confirm"]], "confirm() (blazingmq.session method)": [[3, "blazingmq.Session.confirm"]], "data (blazingmq.message attribute)": [[3, "blazingmq.Message.data"]], "get_queue_options() (blazingmq.session method)": [[3, "blazingmq.Session.get_queue_options"]], "guid (blazingmq.ack attribute)": [[3, "blazingmq.Ack.guid"]], "guid (blazingmq.message attribute)": [[3, "blazingmq.Message.guid"]], "log_session_event() (in module blazingmq.session_events)": [[3, "blazingmq.session_events.log_session_event"]], "module": [[3, "module-blazingmq"], [3, "module-blazingmq.testing"]], "open_queue() (blazingmq.session method)": [[3, "blazingmq.Session.open_queue"]], "post() (blazingmq.session method)": [[3, "blazingmq.Session.post"]], "properties (blazingmq.message attribute)": [[3, "blazingmq.Message.properties"]], "property_types (blazingmq.message attribute)": [[3, "blazingmq.Message.property_types"]], "queue_uri (blazingmq.ack attribute)": [[3, "blazingmq.Ack.queue_uri"]], "queue_uri (blazingmq.message attribute)": [[3, "blazingmq.Message.queue_uri"]], "queue_uri (blazingmq.session_events.queueevent attribute)": [[3, "blazingmq.session_events.QueueEvent.queue_uri"]], "queue_uri (blazingmq.session_events.queuereopenfailed attribute)": [[3, "blazingmq.session_events.QueueReopenFailed.queue_uri"]], "queue_uri (blazingmq.session_events.queuereopened attribute)": [[3, "blazingmq.session_events.QueueReopened.queue_uri"]], "queue_uri (blazingmq.session_events.queueresumefailed attribute)": [[3, "blazingmq.session_events.QueueResumeFailed.queue_uri"]], "queue_uri (blazingmq.session_events.queueresumed attribute)": [[3, "blazingmq.session_events.QueueResumed.queue_uri"]], "queue_uri (blazingmq.session_events.queuesuspendfailed attribute)": [[3, "blazingmq.session_events.QueueSuspendFailed.queue_uri"]], "queue_uri (blazingmq.session_events.queuesuspended attribute)": [[3, "blazingmq.session_events.QueueSuspended.queue_uri"]], "set_healthy() (blazingmq.basichealthmonitor method)": [[3, "blazingmq.BasicHealthMonitor.set_healthy"]], "set_unhealthy() (blazingmq.basichealthmonitor method)": [[3, "blazingmq.BasicHealthMonitor.set_unhealthy"]], "status (blazingmq.ack attribute)": [[3, "blazingmq.Ack.status"]], "stop() (blazingmq.session method)": [[3, "blazingmq.Session.stop"]], "with_options() (blazingmq.session class method)": [[3, "blazingmq.Session.with_options"]]}}) \ No newline at end of file diff --git a/docs/docs/apidocs/python_apidocs/user_guide.html b/docs/docs/apidocs/python_apidocs/user_guide.html deleted file mode 100644 index c9a5359e9..000000000 --- a/docs/docs/apidocs/python_apidocs/user_guide.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - - User Guide — blazingmq 1.2.0 documentation - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

User Guide

-

The guide will walk you through building a simple producer and consumer using the -blazingmq package. This guide however does not cover some of the more complex -concepts including message properties, queue options, queue configuration and the -Message object. For reference documentation see the API Reference.

-
-

Simple Producer

-

This is the basic example for a BlazingMQ producer posting a single message:

-
import blazingmq
-
-queue_uri = "bmq://bmq.tutorial.workqueue/example_queue"
-with blazingmq.Session(blazingmq.session_events.log_session_event) as session:
-    session.open_queue(queue_uri, write=True)
-    session.post(queue_uri, b"Some message here")
-    session.close_queue(queue_uri)
-
-
-

First, you need create an instance of the Session object. -The only required positional argument is a callback that takes a single argument of -type SessionEvent. For example, the on_session_event callback could look like:

-
def on_session_event(event):
-    print(event)
-
-
-

In the following example however, we use the library function -session_events.log_session_event which provides some default configured logging for -incoming session events:

-
import blazingmq
-
-with blazingmq.Session(blazingmq.session_events.log_session_event) as session:
-    # session can be used inside this block
-
-
-
-

Note

-

There should be only one Session object per process since it is very -heavyweight, holds a lot of state, and consumes both broker and operating system -resources.

-
-

The session is the object responsible for network connections, thread pools, internal -memory and storage. The context manager will make sure that its resources are -correctly managed even if an exception is raised in the block. On enter, the context -manager will ensure that the Session is started and valid and on exit, it will -ensure that the Session is stopped and cleaned up.

-

Using the Session, you can open a queue in write mode. Using write=True enables -our queue for posting messages:

-
session.open_queue(queue_uri, write=True)
-
-
-

Once opened, you can use the queue URI to post a message on the session like:

-
session.post(queue_uri, b"Some message here")
-
-
-

The Session.post optionally also takes an on_ack callback if the user wants to -receive an acknowledgment for the message being posted. This on_ack callback will -be invoked with the result of the post.

-
from blazingmq
-
-def on_ack_callback(ack):
-    if ack.status != blazingmq.AckStatus.SUCCESS:
-        print("Post failed")
-    print("Post success")
-
-session.post(queue_uri, b"Some message here", on_ack=on_ack_callback)
-
-
-
-

Note

-

This is the only way for a producer to ensure that a message was received by the -BlazingMQ framework via the BlazingMQ broker.

-
-
-

Warning

-

Invoking any queue related method on the Session object that invoked -the on_ack or on_session_event callback will lead to a deadlock. That -means invoking Session.open_queue, Session.configure_queue, or -Session.close_queue in the callback will deadlock. Additionally, invoking -Session.stop will also deadlock. This implies that the only acceptable Session -method to be called from the callback is is Session.confirm, and consequently -MessageHandle.confirm.

-
-

You can use this callback to implement a few useful patterns that are documented in -the Acknowledgments section.

-

Additionally, you can associate message properties with messages being posted. This -is documented in Message Properties

-

Finally, you need to close the queue when you have finished using it.

-
session.close_queue(queue_uri)
-
-
-
-

Note

-

Any acknowledgments that are still outstanding will be negatively acknowledged -before Session.close_queue returns.

-
-
-
-

Simple Consumer

-

This is a basic example for a BlazingMQ consumer, printing and confirming all -incoming messages:

-
import blazingmq
-
-import signal
-import threading
-
-def on_message_callback(message, message_handle):
-   print(message.data)
-   message_handle.confirm()
-
-event = threading.Event()
-
-def handler(signum, frame):
-    print("Goodbye!")
-    event.set()
-
-signal.signal(signal.SIGINT, handler)
-
-queue_uri = "bmq://bmq.tutorial.workqueue/example_queue"
-with blazingmq.Session(blazingmq.session_events.log_session_event,
-                       on_message=on_message_callback) as session:
-    session.open_queue(queue_uri, read=True)
-    event.wait()
-    session.configure_queue(queue_uri, blazingmq.QueueOptions(0, 0, 0))
-    session.close_queue(queue_uri)
-
-
-

The first thing you need to do for any BlazingMQ application is to create the -Session. Since we intend to consume messages from a queue opened in read -mode, we also want to specify the optional on_message callback in addition -to the required on_session_event callback:

-
with blazingmq.Session(blazingmq.session_events.log_session_event,
-                       on_message=on_message_callback) as session:
-    # session can be used inside this block
-
-
-
-

Note

-

There should be only one Session object per process since it is very -heavyweight, holds a lot of state, and consumes both broker and operating system -resources.

-
-
-

Note

-

The on_message callback will receive messages for all queues in read mode. If -the program is reading from multiple queues, Message.queue_uri will indicate which -queue this message is associated with.

-
-
-

Warning

-

Invoking any queue related method on the Session object that invoked -the on_message or on_session_event callback will lead to a deadlock. That -means invoking Session.open_queue, Session.configure_queue, or -Session.close_queue in the callback will deadlock. Additionally, invoking -Session.stop will also deadlock. This implies that the only acceptable Session -method to be called from the callback is Session.confirm, and consequently -MessageHandle.confirm.

-
-

You can then use the Session to open a queue. When you are opening a queue in read -mode, you must specify an on_message callback to process incoming messages as -documented above:

-
session.open_queue(queue_uri, read=True)
-
-
-
-

Note

-

You can create a queue that is both a producer and a consumer, -by passing in both read=True and write=True.

-
-

To open the queue you need to provide the URI that uniquely identifies the -queue within the BlazingMQ framework -(bmq://bmq.tutorial.workqueue/example_queue). To open it in read mode, -read=True is used.

-
-

Note

-

The QueueOptions parameter has been elided, and -the default is being used.

-
-

When Session.open_queue method returns, messages directed towards the specified -queue will start being received in the on_message_callback.

-

Once you get a Message object in the callback, you can inspect the data inside -the message:

-
print(message.data)
-
-
-

The data contained inside will be of type bytes. To correctly decode the data -inside the Message object you need to know the encoding that the producer -used when it placed the message in the queue. This could be JSON, XML, BER or -any other type of encoding. From the perspective of BlazingMQ, the encoding -does not matter since only bytes are transmitted.

-

Assuming at this point the processing of the message was successful and you do -not want to receive it again, you can call Session.confirm with this message -passed as an argument. This will notify the BlazingMQ broker that the message -should not be re-delivered to another consumer.

-
session.confirm(message)
-
-
-

Alternatively, an instance of blazingmq.MessageHandle is received along with every message. -It can be used to confirm the message with which it was received. Notice that you don’t -need to pass the message as an argument.

-
message_handle.confirm()
-
-
-

At the end, when the queue has served its purpose, you want to first pause incoming -messages and ensure in-flight callbacks to finish processing by calling -Session.configure_queue with zero-ed queue options:

-
session.configure_queue(queue_uri, blazingmq.QueueOptions(0, 0, 0))
-
-
-

For more about QueueOptions and Session.configure_queue, please refer to -the Queue Options section.

-

Finally, once this returns successfully, you can safely close it by calling -Session.close_queue with the appropriate queue URI:

-
session.close_queue(queue_uri)
-
-
-

Once this method returns, you will no longer receive messages for the queue and the -queue URI can no longer be used for any operations, other than Session.open_queue.

-
-
-

Host Health Monitoring

-

You can pass host_health_monitor=None to the Session constructor if you -don’t want any host health monitoring, in which case you won’t be able to use -the suspends_on_bad_host_health queue option, and you will never get any host -health related session events.

-

For testing purposes, you can pass an instance of BasicHealthMonitor as the -host_health_monitor argument for the Session constructor, and your tests -can control whether the Session believes the host is healthy or not by -calling the set_healthy and set_unhealthy methods of that instance.

-
-

New in version 0.7.0: Host health monitoring and queue suspension

-
-
-
- - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/docs/docs/architecture/client_broker_protocol.md b/docs/docs/architecture/client_broker_protocol.md deleted file mode 100644 index b0f1515e7..000000000 --- a/docs/docs/architecture/client_broker_protocol.md +++ /dev/null @@ -1,1225 +0,0 @@ ---- -layout: default -title: Client/Broker Protocol -parent: Architecture -nav_order: 8 ---- - -# BlazingMQ Client/Broker Protocol -{: .no_toc } - -* toc -{:toc} - -## Introduction - -This article documents the protocol between a BlazingMQ client and broker, and -also goes over some best practices for designing and implementing BlazingMQ -client library. Readers interested in implementing a BlazingMQ client library -may find this article useful. - -Before we dive in, it is worth noting that: - -1. BlazingMQ has native client libraries in C++ and Java. The Python library - is a wrapper over C++ library. BlazingMQ does not have a C library. - -2. In order to provide a good user experience, shield applications from various - transient issues and support high performance, BlazingMQ C++ and Java - libraries are quite stateful, highly asynchronous and carefully designed. - If the goal of author of BlazingMQ client library is to reach as many - audience as possible, they should attempt to do the same with their library - design and implementation. - -3. Ideally, the author should be willing to help us maintain the client library - in the long run. As a provider of an infrastructure framework, we want to - provide good support to our users, and having the author's help in handling - any bug fixes and enhancements in the library will make our job easy! - -4. We have had queries about client libraries in Go, .NET and Rust, so - targeting one of those languages may provide maximum benefits to our users. - - -The rest of this document is divided into three main parts: - -- *BlazingMQ wire protocol*, which goes over format of messages exchanged - between BlazingMQ client and broker. - -- *BlazingMQ client/server interaction*, which goes over the order in which - these messages are exchanged. - -- *Client library design guide*, which goes over some recommendations for - implementing a BlazingMQ client library in a language-agnostic way. - -Let's dive into some details now! - ---- - -## BlazingMQ Wire Protocol - -BlazingMQ wire protocol sits at the lowest level in the BlazingMQ client/server -interaction. BlazingMQ has a custom protocol over TCP. This protocol defines -the format of messages exchanged between BlazingMQ client and broker. There -were four guiding principles when this protocol was designed: - -- *Compactness*: The protocol should have minimal overhead. - -- *Forward and backward compatibility*: The protocol should be easily - extensible while remaining backward compatible. - -- *Batching*: The protocol should support batching of messages wherever - possible. - -- *Efficiency*: The protocol should avoid encoding/decoding overhead for - frequent messages, while still taking into consideration concerns like - endianness, etc. - -### BlazingMQ Network Packet - -Before we get into various types of messages in BlazingMQ wire protocol, let's -understand the layout of a BlazingMQ network packet. - -Every BlazingMQ network packet begins with an 8-byte header called the -`EventHeader` -([C++](https://github.com/bloomberg/blazingmq/blob/ca6491f69eea8d91733fa36ef3e82c4facc734fc/src/groups/bmq/bmqp/bmqp_protocol.h#L727), -[Java](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto/EventHeader.java)). - -The meaning of every field in the header is documented in the files linked -above. Some important things to know about: - -- In BlazingMQ, a full BlazingMQ network packet is often referred to as an - `Event`. - -- The fragment bit `F` is currently unused and always set to zero. - -- Remaining 31 bits capture the entire length of the packet, including the - header, sub-headers, any options, padding, etc. - -- The `Type` field captures - [type](https://github.com/bloomberg/blazingmq/blob/ca6491f69eea8d91733fa36ef3e82c4facc734fc/src/groups/bmq/bmqp/bmqp_protocol.h#L457) - of the packet. Note that a BlazingMQ packet is homogeneous. In other words, - a packet can contain more than one BlazingMQ message, but all of those - messages will be of the same type. For example, if the type of the packet is - `PUT`, all messages which appear in the packet will be `PUT` messages. - -- The `HeaderWords` field captures the size of the `EventHeader` itself. This - helps with backward and forward compatibility as the wire protocol evolves. - Here's how: suppose 4 more bytes are added to `EventHeader` as part of a new - feature implementation, and a new BlazingMQ broker is rolled out and starts - sending BlazingMQ network packets with the additional 4 bytes in the - `EventHeader`. If BlazingMQ brokers derived the size of `EventHeader` using, - `sizeof(EventHeader)` in C++, old BlazingMQ brokers will continue to assume - that the size of `EventHeader` is still 8 bytes, and will interpret the new 4 - bytes as the next part of the packet (e.g., a sub-header, payload, etc). - However, instead of using `sizeof` operators, if BlazingMQ broker code reads - size of the header from the `HeaderWords` field of the received packet, old - brokers will know that `EventHeader` is 12 bytes instead of 8. Obviously, - old brokers will not understand how to interpret those 4 new bytes, but they - will skip it, which is good enough. Almost every header struct in BlazingMQ - wire protocol contains the `HeaderWords` field. - -- Every `EventHeader` is followed by the event-specific details. For example, - if it is a packet of type `PUT`, `EventHeader` will be followed by one or - more pairs of `PutHeader` and message payload (more on this later). - -### Types of Messages - -Now that we understand top level structure of a BlazingMQ network packet, -let's dive into the next level of detail. At a high level, there are two types -of messages in the protocol: - -- **Binary messages**: This type of messages are not encoded/decoded. They are - simple 'structs' (sequence of raw bytes) directly written/read to/from the - wire. This format is used for messages which are exchanged frequently - between client and broker (typically data messages or 'data plane'). Some - examples of such messages are `PutMessage`, `ConfirmMessage`, etc. The goal - is to avoid paying encoding/decoding overhead for frequent messages. - -- **Schema messages**: This type of messages are defined in a schema and are - encoded/decoded using coding schemes like JSON, BER, XML, etc. This format - is used for messages which are infrequent (typically control messages or - 'control plane'). Some examples of such messages are `OpenQueueRequest`, - `CloseQueueRequest`, `DisconnectRequest`, etc. Since such messages are - infrequent, it is okay to pay the overhead of encoding/decoding them in lieu - of flexibility and ease of use. - -Let's look into both of these message types in detail. - -### Binary Messages - -Binary messages in BlazingMQ are defined -[here](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_protocol.h) -for C++, and -[here](https://github.com/bloomberg/blazingmq-sdk-java/tree/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto) -for Java. - -> [!NOTE] -> The C++ header file `bmqp_protocol.h` linked above also contains some -> binary messages which are exchanged only between BlazingMQ brokers. This can -> cause confusion when trying to look at the list of messages which are -> exchanged only between client and broker. A better place to look at the -> messages exchanged between client and broker would be in the Java link above. - -Here's a list of binary messages which are exchanged between BlazingMQ client -and broker, along with their purpose: - -- **PutMessage**: A message posted by the producer to the BlazingMQ queue. This - message contains the payload and any associated metadata that producer wants - to be delivered to the consumer. - -- **AckMessage**: An acknowledgement sent by BlazingMQ queue to the producer in - response to the PUT message. The *AckMessage* carries the success/failure - status, telling the producer if BlazingMQ accepted the *PutMessage* or not. - -- **PushMessage**: A message sent by the BlazingMQ queue to a consumer - application. This message is same as a *PutMessage* except for a few - details. - -- **ConfirmMessage**: A message sent by the consumer to the BlazingMQ queue - indicating that the *PushMessage* was successfully processed by the consumer - and that the BlazingMQ queue can mark the message as consumed and delete it - at any time. - -See [this](#binary-messages-wire-layout) section below which goes over more -details about how binary messages are packed for their wire representation. - -### Schema Messages - -Schema messages in BlazingMQ are defined -[here](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd) -for C++, and [here](https://github.com/bloomberg/blazingmq-sdk-java/tree/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg) for Java. - -> [!NOTE] -> Similar to the note in binary messages, the schema `bmqp_ctrlmsg.xsd` linked -> above also contains some schema messages which are exchanged only between -> BlazingMQ brokers. This can cause confusion when trying to look at the list -> of schema messages which are exchanged only between client and broker. A -> better place to look at the messages exchanged between client and broker -> would be in the Java link above. - -The recommendation is to use the JSON codec for schema messages. Other encodings -like BER, XML, etc are also supported but not recommended. The C++ SDK uses the -[`baljsn`](https://github.com/bloomberg/bde/tree/main/groups/bal/baljsn) codec -for JSON encoding, and the Java SDK uses [`gson`](https://github.com/google/gson) -codec. - -Here's a list of schema messages which are exchanged between BlazingMQ client -and broker, along with their purpose: - -- **NegotiationMessage**: The first message sent by the client to the broker - upon establishing a TCP connection with the broker (see - [this](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg/NegotiationMessageChoice.java)). - It's a choice, and the client always sets the choice to - [`ClientIdentity`](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg/ClientIdentity.java), - and populates various fields in `ClientIdentity` accordingly. Broker - responds with a `NegotiationMessage` as well, but sets - [`BrokerResponse`](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg/BrokerResponse.java) - instead of `ClientIdentity`. A `NegotiationMessage` from the client can be - thought of as an application level handshake with the broker to establish a - BlazingMQ session. The client advertises some of its capabilities, version, and - some other details in the `NegotiationMessage`. Based on this information, - the broker can choose to accept or reject the connection with the client - (e.g., if the client is using a very old version of the SDK, the broker may - refuse to connect with the client). - -- **OpenQueue**: The request that the client sends to the broker to attach to a - queue (see - [this](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg/OpenQueue.java)). - `OpenQueue` contains a - [`QueueHandleParameters`](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg/QueueHandleParameters.java) - field. The client populates each field of `QueueHandleParameters` appropriately. - An `OpenQueue` request can be logically thought as a request by a BlazingMQ - application to get a handle on the queue or connecting to a queue. Note that - an `OpenQueue` request is always followed by a - [`ConfigureQueue`](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg/ConfigureQueueStream.java) - request. - -- **OpenQueueResponse**: The response sent by the broker for an `OpenQueue` - request (see [this](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg/OpenQueueResponse.java)). - -- **ConfigureQueueStream**: The request sent by the client to the broker to - configure the client's configuration for a queue which was opened earlier by - the client by making an `OpenQueue` request (see - [this](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg/ConfigureQueueStream.java)). - The main field in this request is - [`QueueStreamParameters`](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg/ConfigureQueueStream.java). - A producer or consumer application can start using a queue only after sending - an `OpenQueue` request and then a `ConfigureQueueStream` request. A - `ConfigureQueueStream` request is used by the producer/consumer to set its - priority or flow-control parameters for the queue. A producer/consumer can - also send a stand-alone `ConfigureQueueStream` request at any time to do the - same. However, it must send one upon receiving a successful - `OpenQueueResponse` from the broker. - -- **ConfigureQueueStreamResponse**: The message sent by the broker in response - to the `ConfigureQueueStream` request from the client (see - [this](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg/ConfigureQueueStreamResponse.java)). - -- **CloseQueue**: The request sent by the client to the broker to indicate that - client no longer wants to be attached to the queue (see - [this](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg/CloseQueue.java)). - A `CloseQueue` request is the opposite of an `OpenQueue` request. Note that - a `CloseQueue` request is always preceded by an `ConfigureQueueStream` - request. - -- **Disconnect**: The request sent by the client to tear down the BlazingMQ - session with the broker (see - [this](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg/Disconnect.java)). - -- **DisconnectResponse**: The message sent by the broker to the client in - response to a `Disconnect` request (see - [this](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/msg/DisconnectResponse.java)). Once `DisconnectResponse` is - sent by the broker, no other message is sent by it to the client. - -See [this](#schema-messages-wire-layout) section below which goes over more -details about how schema messages are packed for their wire representation. - ---- - -## Binary Messages Wire Layout - -This section explains how binary messages are typically packed for their wire -representation. - -As mentioned earlier in the article, every BlazingMQ network packet starts with -an -`EventHeader`([C++](https://github.com/bloomberg/blazingmq/blob/ca6491f69eea8d91733fa36ef3e82c4facc734fc/src/groups/bmq/bmqp/bmqp_protocol.h#L727), -[Java](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto/EventHeader.java)). - -### Endianness - -When serializing binary messages, one needs to be careful about endianness. -Readers may already be aware that network byte order is big-endian. As of -writing this, BlazingMQ runs on both little-endian (x86) as well as big-endian -(SPARC, PowerPC) architectures. In order to minimize errors when -(de)serializing BlazingMQ network packets, BlazingMQ uses some helper classes. - -In Java, there are two wrapper classes in BlazingMQ -- -[`ByteBufferInputStream`](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/io/ByteBufferInputStream.java) -and -[`ByteBufferOutputStream`](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/io/ByteBufferOutputStream.java) -which under the hood use -[`java.nio.ByteBuffer`](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/ByteBuffer.html), -which in turn takes care of flipping the bytes when reading/writing integers, -doubles, etc. - -In C++, BlazingMQ uses various -[`bdlb::BigEndian`](https://github.com/bloomberg/bde/blob/main/groups/bdl/bdlb/bdlb_bigendian.h) -classes from one of our helper libraries. These classes take care of swapping -the bytes seamlessly. As an example, -[here](https://github.com/bloomberg/blazingmq/blob/69f0f8f5b188ca1eb07b9d262093f949729db538/src/groups/bmq/bmqp/bmqp_protocol.h#L779) -we use the -[`bdlb::BigEndianUint32`](https://github.com/bloomberg/bde/blob/cf44cbb2cc179077f687f5408d92d6949fae75af/groups/bdl/bdlb/bdlb_bigendian.h#L517) -type to represent an `uint32_t` to capture the `fragment` and `length` -fields of an `EventHeader`. - -Let's go over the wire layout of every binary message exchanged between client -and the broker. - -### PUT Event - -A PUT event is a BlazingMQ network packet which is sent by the producer -application to the BlazingMQ backend, with one or more messages destined for -one or more BlazingMQ queues. - -A PUT event wire layout looks like this: - -``` -[EventHeader][PutHeader #1][Option #1][Option #2]...[Option #N][Message Properties][Message Payload][PutHeader #2][Option #1][Option #2]...[Option #N][Message Properties][Message Payload]... -``` - -To describe above layout in words: - -- `EventHeader` represents the top-level header which captures some details of - the entire PUT event (event type, total length, protocol version, etc). - -- `PutHeader #1` represents the header of the first PUT message in the event. - A - [`PutHeader`](https://github.com/bloomberg/blazingmq/blob/e3ddd4fdc8e024e3abff96aa91555f042ce4e565/src/groups/bmq/bmqp/bmqp_protocol.h#L1337) - contains fields like: - - - `MessageWords`: Length of the entire PUT message (including options, - properties, payload and padding) in words (1 word == 4 bytes). - - - `OptionsWords`: Length of all options, if any, in words. - - - `CAT`: Compression algorithm type (see - [this](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqt/bmqt_compressionalgorithmtype.h)). - - - `HeaderWords`: Length of the `PutHeader` itself, in words. - - - `QueueId`: unique integer identifier of the queue that was previously - opened by the client. The `QueueId` integer field is sent by the client in - the `OpenQueue` request to the broker, and then later on, used to identify - that queue in any message or request. - - - `MessageGuid`: Globally unique identifier for a PUT message generated by - the client library. See - [this](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqt/bmqt_messageguid.h) - and - [this](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_messageguidgenerator.h) - for the layout of the GUID and how it is generated by the C++ SDK. - - - `CRC32C`: checksum of the PUT message (checksum of message properties and - payload, see - [this](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_crc32c.h)). - - - `SchemaId`: unique identifier for the sequence of message properties, for - subscriptions. - -- `Option #N` represents one of the many options. **NOTE**: As of now, PUT - messages do not contain any options, but this may change in the future. - -- `Message Properties` represent a list of key/value pairs that a producer can - optionally associate with a PUT message. Each message properties area itself - begins with a - [`MessagePropertiesHeader`](https://github.com/bloomberg/blazingmq/blob/e3ddd4fdc8e024e3abff96aa91555f042ce4e565/src/groups/bmq/bmqp/bmqp_protocol.h#L1075), - followed by *N* [`MessagePropertyHeader`](https://github.com/bloomberg/blazingmq/blob/e3ddd4fdc8e024e3abff96aa91555f042ce4e565/src/groups/bmq/bmqp/bmqp_protocol.h#L1229)s, where - *N* is the number of key/value pairs in the PUT message, followed by the list - of key/value pairs. In other words: - - ``` - [MessagePropertiesHeader][MessagePropertyHeader #1][MessagePropertyHeader #2]... - [MessagePropertyHeader #N][PropertyName #1][PropertyValue #1][PropertyName #2] - [PropertyValue #2]...[PropertyName #n][PropertyValue #N][Word Alignment padding] - ``` - - BlazingMQ broker can peek into the message properties area if needed. For - example, broker can read one or more message properties to evaluate a - subscription expression. - -- `Message Payload` is the payload of the message. BlazingMQ does not - peek into the message payload. Producer application can indicate to the SDK - to compress a PUT message, in which case, SDK will compress only the message - payload (any header, options and message properties are not compressed). - -In both C++ and Java SDKs, there are builder and iterator classes for PUT -event, which encapsulate the logic of building and parsing PUT event -respectively. PUT event builder and iterator in C++ can be found -[here](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_puteventbuilder.h) -and -[here](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_putmessageiterator.h). -PUT event builder and iterator in Java can be found -[here](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto/PutEventBuilder.java) -and -[here](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto/PutMessageIterator.java). - -### ACK Event - -An ACK event is a BlazingMQ network packet which is sent by the broker to the -producer application, with one or more ACK messages indicating success/failure -result for one or more PUT messages previously sent by the producer. - -An ACK event wire layout looks like this: - -``` -[EventHeader][AckHeader][AckMessage #1][AckMessage #2]...[AckMessage #N] -``` - -An ACK event contains one -[`AckHeader`](https://github.com/bloomberg/blazingmq/blob/e3ddd4fdc8e024e3abff96aa91555f042ce4e565/src/groups/bmq/bmqp/bmqp_protocol.h#L1725C19-L1725C19), -followed by one or more -[`AckMessage`](https://github.com/bloomberg/blazingmq/blob/e3ddd4fdc8e024e3abff96aa91555f042ce4e565/src/groups/bmq/bmqp/bmqp_protocol.h#L1849)s. - -Note that unlike a PUT event, there is only one `AckHeader` in an ACK event, -irrespective of the number of `AckMessage`s. - -Let's go over various fields in a `AckHeader`: - -- `HeaderWords`: Size (in words) of the `AckHeader`. - -- `PerMessageWords`: Size (in words) of each `AckMessage`. - -Now let's go over various fields in a `AckMessage`: - -- `Status`: result of the PUT message (was it accepted or rejected by - BlazingMQ, with specific error code in case of failure). - -- `CorrelationId`: **TODO** - -- `MessageGUID`: the 16 byte globally unique identifier of a message. See - [this](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqt/bmqt_messageguid.h) - and - [this](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_messageguidgenerator.h) - for the layout of the GUID and how it is generated by the C++ SDK. - -- `QueueId`: the integer which uniquely identifies the queue. This integer - needs to be unique only between a BlazingMQ client application and the - BlazingMQ backend. It does not need to be globally unique. The integer - value is chosen by the SDK and sent in the `OpenQueue` request. - -In both C++ and Java SDKs, there are builder and iterator classes for ACK -event, which encapsulate the logic of building and parsing ACK event -respectively. ACK event builder and iterator in C++ can be found -[here](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_ackeventbuilder.h) -and -[here](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_ackmessageiterator.h). -PUT event builder and iterator in Java can be found -[here](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto/AckEventBuilder.java) -and -[here](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto/AckMessageIterator.java). - -### PUSH Event - -A PUSH event is a BlazingMQ network packet which is sent by the BlazingMQ -broker to the consumer application, with one or more messages belonging to one -or more BlazingMQ queues. - -A PUSH event wire layout is very similar to the PUT event's layout, and looks -like this: - -``` -[EventHeader][PushHeader #1][Option #1][Option #2]...[Option #N][Message Properties][Message Payload][PushHeader #2][Option #1][Option #2]...[Option #N][Message Properties][Message Payload]... -``` - -Just like PUT event, one PUSH event can contain more than one PUSH message. -Each PUSH message starts with a -[`PushHeader`](https://github.com/bloomberg/blazingmq/blob/e3ddd4fdc8e024e3abff96aa91555f042ce4e565/src/groups/bmq/bmqp/bmqp_protocol.h#L1962), which itself closely resembles a -`PutEvent`, except that there is no `CRC32C` field in `PushHeader`. All the -other fields are same or similar to the ones in `PutHeader`. - -**NOTE**: As mentioned earlier, even though every PUT message in a PUT event -supports zero or more options, currently no options are added in a PUT message. -That is not the case for PUSH messages. A PUSH message can have one option -- -the -[`SubQueueInfos`](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto/SubQueueInfosOption.java). -If present, this option contains one or more -[`SubQueueInfo`](https://github.com/bloomberg/blazingmq/blob/e3ddd4fdc8e024e3abff96aa91555f042ce4e565/src/groups/bmq/bmqp/bmqp_protocol.h#L264) -structs. A `SubQueueInfo` captures details about a sub-stream ("*AppId*") of -the queue. **TODO**: add more details about `SubQueueInfo` option here -(fan-out, rda counter, etc). - -In both C++ and Java SDKs, there are builder and iterator classes for PUSH -event, which encapsulate the logic of building and parsing PUSH event -respectively. PUSH event builder and iterator in C++ can be found -[here](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_pusheventbuilder.h) -and -[here](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_pushmessageiterator.h). -PUSH event builder and iterator in Java can be found -[here](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto/PushEventBuilder.java) -and -[here](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto/PushMessageIterator.java). - - -### CONFIRM Event - -A CONFIRM event is a BlazingMQ network packet which is sent by the consumer -application to the BlazingMQ backend, with one or more CONFIRM messages -indicating that the consumer has processed the corresponding one or more PUSH -messages previously sent by the BlazingMQ broker. - -A CONFIRM event wire layout looks like this: - -``` -[EventHeader][ConfirmHeader][ConfirmMessage #1][ConfirmMessage #2]...[ConfirmMessage #N] -``` - -A CONFIRM event contains one -[`ConfirmHeader`](https://github.com/bloomberg/blazingmq/blob/e3ddd4fdc8e024e3abff96aa91555f042ce4e565/src/groups/bmq/bmqp/bmqp_protocol.h#L2296) -followed by one or more -[`ConfirmMessage`](https://github.com/bloomberg/blazingmq/blob/e3ddd4fdc8e024e3abff96aa91555f042ce4e565/src/groups/bmq/bmqp/bmqp_protocol.h#L2387)s. - -Note that unlike PUT and PUSH events, there is only one `ConfirmHeader` in a -CONFIRM event, irrespective of the number of `ConfirmMessage`s. - -Let's go over various fields in a `ConfirmHeader`: - -- `HeaderWords`: Size (in words) of the `ConfirmHeader`. - -- `PerMessageWords`: Size (in words) of each `ConfirmMessage`. - -Now let's go over various fields in a `ConfirmMessage`: - -- `QueueId`: the integer which uniquely identifies the queue. This integer - needs to be unique only between a BlazingMQ client application and the - BlazingMQ backend. It does not need to be globally unique. The integer - value is chosen by the SDK and sent in the `OpenQueue` request. - -- `MessageGUID`: the 16 byte globally unique identifier of a message. See - [this](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqt/bmqt_messageguid.h) - and - [this](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_messageguidgenerator.h) - for the layout of the GUID and how it is generated by the C++ SDK. - -- `SubQueueId`: the integer which uniquely identifies the sub-stream in the - queue. This integer needs to be unique only between a BlazingMQ client - application and the BlazingMQ backend within the scope of a queue. It does - not need to be globally unique and does not need to be unique across various - queues opened by the same client. The integer value is chosen by the SDK and - sent in the `ConfigureStream` request. - -In both C++ and Java SDKs, there are builder and iterator classes for ACK -event, which encapsulate the logic of building and parsing ACK event -respectively. ACK event builder and iterator in C++ can be found -[here](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_ackeventbuilder.h) -and -[here](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_ackmessageiterator.h). -PUT event builder and iterator in Java can be found -[here](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto/AckEventBuilder.java) -and -[here](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto/AckMessageIterator.java). - ---- - -## Schema Messages Wire Layout - -While the wire layout of binary messages can be non-trivial to implement, -schema messages are (de)serialized fairly easily. Since every schema message's -wire layout is similar, we will describe the layout in general terms instead of -going over every schema message. Wire layout of every schema message looks -like this: - -``` -[EventHeader][Encoded Schema Message] -``` - -Note that schema messages are not batched. One BlazingMQ network event will -contain only one encoded schema message. - -JSON is the recommended encoding to use. The Java SDK uses -[`gson`](https://github.com/google/gson) library for JSON codecs, and wraps the -encoding/decoding logic in two simple -[components](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/codec). -On the outgoing path, the Java SDK also uses -[`SchemaEventBuilder`](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/TcpBrokerConnection.java) -to prepend [`EventHeader`] to the outgoing message. On the incoming side, the -SDK uses `JsonDecoderUtil` as shown -[here](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto/ControlEventImpl.java#L54). - ---- - -## BlazingMQ Client Server Interaction - -Now that we have an understanding of various types of messages (and their wire -layouts) exchanged between BlazingMQ client and broker, it's time to understand -the sequence in which these messages are exchanged. Note that general API and -design guidelines for the SDK are discussed in a -[later](#client-library-design-guide) section. - -Before we go into details, it is worth pointing out these two files from the -BlazingMQ Java repo -- -[`PlainProducerIT.java`](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/test/java/com/bloomberg/bmq/it/PlainProducerIT.java) -and -[`PlainConsumerIT.java`](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/test/java/com/bloomberg/bmq/it/PlainConsumerIT.java). -These two files implement a rudimentary and "raw" BlazingMQ producer and -consumer respectively. By "raw", we mean that this producer and consumer do -not use the Java SDK APIs to talk to the BlazingMQ backend. Instead, they just -create a TCP socket and build, write and read schema and binary messages -themselves. These files can be useful to get a basic understanding of the flow -and order of messages between a BlazingMQ client and broker. We will refer to -these files when describing the message exchange in this section. - -### Starting a Session with BlazingMQ Broker - -There are two steps involved in establishing a session with BlazingMQ broker -- -connecting with the broker over TCP, and afterwards, carrying out a BlazingMQ -protocol specific handshake (aka negotiation). Let's look into these steps in -detail. - -#### TCP Connection - -The first step in a BlazingMQ client/broker interaction is the client initiating -a TCP connection with the broker. - -Before we go into the mechanics of that, it's worth briefly discussing how a -BlazingMQ client can figure out the right TCP endpoint (IP + Port) of the -BlazingMQ broker to connect to. In an enterprise setting, the correct endpoint -would typically be retrieved via some [service -discovery](https://dzone.com/articles/microservices-architectures-what-is-service-discov) -mechanism, where a BlazingMQ client might ask the service discovery APIs to -resolve a BlazingMQ domain to a BlazingMQ cluster endpoint, and pass that -endpoint to BlazingMQ's -[`SessionOptions`](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/main/java/com/bloomberg/bmq/SessionOptions.java#L418C37-L418C37). -Another way could be a using a hard-coded DNS endpoint which points to the -BlazingMQ cluster, and pass that endpoint to the `SessionOptions`. And yet -another approach could be to deploy BlazingMQ in the [*Alternative -Topology*](https://bloomberg.github.io/blazingmq/docs/architecture/clustering/#alternative-deployment) -and have BlazingMQ client applications connect to the local BlazingMQ proxy -which could listen on a fixed port number. - -Coming back to the TCP connection, SDK initiates the connection by calling some -flavor of `connect` API in the underlying language or library being used. As -an example, BlazingMQ Java SDK uses [`netty`](https://netty.io) for its TCP -connection management and initiates a connection as shown -[here](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/net/NettyTcpConnection.java#L370). -On the other hand, the `PlainProducerIT.java` file mentioned above simply uses -the basic -[`connect`](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/test/java/com/bloomberg/bmq/it/PlainProducerIT.java#L80) API -provided by the Java language. - -An important thing to note here is that both the BlazingMQ C++ and Java SDKs -use [non-blocking -I/O](https://beej.us/guide/bgnet/html//#slightly-advanced-techniques), which -can help with asynchronous and flexible design in the SDK, but at the added -cost of more complexity. In our experience, the complexity is worth it, and an -SDK implementation in any language should consider using non-blocking I/O if -possible. - -#### Negotiation - -Once the `connect` operation succeeds, the BlazingMQ SDK will have a TCP -connection established with the broker. The next step is for the SDK to carry -out a handshake with the broker. This is known as *negotiation* in BlazingMQ. -Immediately after establishing a TCP connection, the SDK sends a -[`NegotiationMessage`](https://github.com/bloomberg/blazingmq/blob/69f0f8f5b188ca1eb07b9d262093f949729db538/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L1592) -to the broker. This is a schema message, and hence needs to be encoded. See -the [previous](#schema-messages-wire-layout) section for more details on the -wire layout. Note that `NegotationMessage` is one of the top level schema -messages, the other being -[`ControlMessage`](https://github.com/bloomberg/blazingmq/blob/9b692fe25f74543e954a27e30b6b15b0ae057c8d/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L84). -There is no way to discriminate between these two top level schema messages. -It is implicit that the `NegotiationMessage` will only be used during the -handshake phase, and every other schema message exchanged after that will be -the top level `ControlMessage`. - -A `NegotiationMessage` can be one of three possible sub-types. The SDK always -sends the -[`ClientIdentity`](https://github.com/bloomberg/blazingmq/blob/69f0f8f5b188ca1eb07b9d262093f949729db538/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L1663) -sub-type, which contains various fields as described in its documentation in -the link. -[Here's](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/TcpBrokerConnection.java#L355-L377) -the relevant snippet of code from the Java SDK which populates various fields -in `ClientIdentity`. And -[here's](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/test/java/com/bloomberg/bmq/it/PlainProducerIT.java#L98-L134) -the `PlainProducerIT.java` producer doing the same thing as well as encoding -the message and sending it over the socket to the broker. - -Looking at -[`ClientIdentity`](https://github.com/bloomberg/blazingmq/blob/c8acf1b840fcd9e907d4404f43e5e687edd660f5/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L1708), -one of the fields is -[`GuidInfo`](https://github.com/bloomberg/blazingmq/blob/c8acf1b840fcd9e907d4404f43e5e687edd660f5/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L1646-L1661). Readers should refer to the -documentation in header files of [`MessageGUIDGenerator`](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_messageguidgenerator.h) for more details. - -Once the `NegotiationMessage` has been sent, the SDK waits for the broker to -respond with a `NegotiationMessage` of sub-type -[`BrokerIdentity`](https://github.com/bloomberg/blazingmq/blob/69f0f8f5b188ca1eb07b9d262093f949729db538/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L1712). -The `result` field in the `BrokerResponse` indicates if the BlazingMQ broker -accepted the handshake or not, along with some other information. -[Here's](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/test/java/com/bloomberg/bmq/it/PlainProducerIT.java#L136-L160) -the `PlainProducerIT.java` receiving, decoding and printing the -`NegotiationMessage` from the broker. Note that this simple example is not -checking the `result` field in the response. A SDK must check it though. If -the `result` indicates failure, then the SDK must close the connection with the -broker. - -### Opening a Queue - -Assuming that the SDK has completed a successful handshake with the broker, the -client application will attempt to open a queue. Opening a queue from the SDK -is a two step process (i.e., it requires two pairs of request/response -exchanges with the broker). Both of these steps are encapsulated in the C++ -and Java SDKs by the `openQueue` API, which looks like -[this](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/main/java/com/bloomberg/bmq/Queue.java#L24-L34) -in Java and like -[this](https://github.com/bloomberg/blazingmq/blob/f4a4f55ae74caf24995ca540a0fbf70a33fbd9c3/src/groups/bmq/bmqa/bmqa_session.h#L819-L840) -in the C++ SDK. - -Let's go over the two pairs of request/response exchanges which occur under the -hood when one calls the `openQueue` API: - -#### `OpenQueue` Request - -The -[`OpenQueue`](https://github.com/bloomberg/blazingmq/blob/69f0f8f5b188ca1eb07b9d262093f949729db538/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L177) -request provides a way to the BlazingMQ client to attach to a queue. -`OpenQueue` contains only one field: -[`QueueHandleParameters`](https://github.com/bloomberg/blazingmq/blob/69f0f8f5b188ca1eb07b9d262093f949729db538/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L303). Let's look at various -fields in this type: - -- `uri`: A string which contains the full BlazingMQ queue - [`URI`](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/Uri.java) - to which client wants to attach. - -- `qId`: An integer identifier that the SDK and broker will use to identify any - message for this queue. This integer needs to be unique only between this - SDK client and the broker. A simple implementation would be to start with - zero, and simply increment the value any time the client opens a new queue. - The goal is to avoid passing the full queue URI in every message, and instead - just use this 4-byte integer to save space on the wire. - -- `subQueueIdInfo`: This field's type is - [`SubQueueIdInfo`](https://github.com/bloomberg/blazingmq/blob/9b692fe25f74543e954a27e30b6b15b0ae057c8d/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L364-L380). - This type captures details about the sub-stream of the queue. **TODO** - -- `flags`: An integer which indicates the intent with which a BlazingMQ client - wants to open the queue. Valid values can be found - [here](https://github.com/bloomberg/blazingmq/blob/9b692fe25f74543e954a27e30b6b15b0ae057c8d/src/groups/bmq/bmqt/bmqt_queueflags.h#L46). Note that the `e_ADMIN` is reserved and - should not be used. - -- `readCount`: An integer whose value should be one if the client wants to - attach to the queue as a consumer, and zero otherwise. - -- `writeCount`: An integer whose value should be one if the client wants to - attach to the queue as a producer, and zero otherwise. - -- `adminCount`: An integer whose value should always be zero. - -[Here](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/test/java/com/bloomberg/bmq/it/PlainProducerIT.java#L162-L203), we -see the `PlainProducerIT.java` creating and sending an `OpenQueue` request. - -Upon success, the BlazingMQ broker responds to the `OpenQueue` request by -sending an -[`OpenQueueResponse`](https://github.com/bloomberg/blazingmq/blob/9b692fe25f74543e954a27e30b6b15b0ae057c8d/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L191-L211). Let's go over the three -fields in this type: - -- `originalRequest`: A field whose type is `OpenQueue`, and it simply carries - the `OpenQueue` request sent by the client. - -- `routingConfiguration`: An integer which indicates information about the - message routing strategy of the queue, as indicated by the broker. Possible - values for the flag can be found - [here](https://github.com/bloomberg/blazingmq/blob/9b692fe25f74543e954a27e30b6b15b0ae057c8d/src/groups/bmq/bmqp/bmqp_routingconfigurationutils.h#L51-L61). - -- `deduplicationTimeMs`: An integer which indicates the time interval (in ms) - for which the SDK should keep the unacknowledged PUT messages in the - retransmission buffer before generating a local negative acknowledgement. - This field can be ignored in the initial implementation of the SDK. - -> [!NOTE] -> For every request/response type like `OpenQueue`/`OpenQueueResponse`, the top -> level schema message is always -> [`ControlMessage`](https://github.com/bloomberg/blazingmq/blob/9b692fe25f74543e954a27e30b6b15b0ae057c8d/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L84). -> Readers will notice that the first field in this type is `rId`, which -> represents the request ID. Any time the SDK sends any schema message request -> to the broker, the SDK populates `rId` field with a unique value. The broker -> always echoes back this value in the response, which enables the SDK to -> correlate the response back to the original request, particularly in the -> presence of multiple concurrent pending requests. In the absence of this -> integer, the SDK will not be able to identify the request to which the -> response belongs. This integer can be assigned any value by the SDK, as long -> as it is unique among all the pending requests in the SDK at that time. - -As mentioned before, opening a queue is a two-step process. The first one -`OpenQueue`/`OpenQueueResponse`. Let's look at the second step. Note that a -BlazingMQ client cannot start producing to/consuming from a queue until the -second step is complete. - -#### `ConfigureStream` Request - -As the name suggests, the -[`ConfigureStream`](https://github.com/bloomberg/blazingmq/blob/69f0f8f5b188ca1eb07b9d262093f949729db538/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L274) -request provides a way to the BlazingMQ client to configure its "connection" -with the queue. Note that the connection is being used logically here, and -should not be confused with a TCP connection. This request is mostly a no-op -for producers in the BlazingMQ backend (but the producers still need to send -it). - -This request is very important for consumers in many ways: - -- It enables a consumer to specify one or more subscriptions. - -- It enables a consumer to dynamically alter its subscriptions at any time. - -- It enables a consumer to configure various attributes of a - [subscription](../../features/subscriptions), like priority, [flow - control](../../features/consumer_flow_control), etc. - -Now that we have a high level understanding of this request, let's dig deeper. - -The `ConfigureStream` request contains two fields. The first one is `qId`, -which was explained above. The second one is -[`streamParameters`](https://github.com/bloomberg/blazingmq/blob/9b692fe25f74543e954a27e30b6b15b0ae057c8d/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L287C22-L287C38). -Let's look at the fields of this -[type](https://github.com/bloomberg/blazingmq/blob/9b692fe25f74543e954a27e30b6b15b0ae057c8d/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L382-L398): - -- `appId`: This string contains the name of *appId*, if any, for the consumer. - *AppId*s are specified by consumers who are attaching to a *fan-out* queue. - Consumers of non-fan-out queues, as well as any producers don't need to - specify any appId. - -- `subscriptions`: This field is an array of zero or more - [`Subscription`](https://github.com/bloomberg/blazingmq/blob/9b692fe25f74543e954a27e30b6b15b0ae057c8d/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L455-L471)s. - Each `Subscription` type contains these fields: - - - `sId`: This integer represents a unique identifier for this subscription. - This integer needs to be unique only between this client and the broker. A - simple incrementing - [variable](https://github.com/bloomberg/blazingmq/blob/9b692fe25f74543e954a27e30b6b15b0ae057c8d/src/groups/bmq/bmqt/bmqt_subscription.cpp#L44-L49) - can be used for generating unique `sId`s. - - - `expression`: This field, which is of type - [`Expression`](https://github.com/bloomberg/blazingmq/blob/9b692fe25f74543e954a27e30b6b15b0ae057c8d/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L412C4-L426) - contains the actual subscription expression as a string type as well as the - version of the expression grammar. - - - `consumers`: This field is an array of type - [`ConsumerInfo`](https://github.com/bloomberg/blazingmq/blob/9b692fe25f74543e954a27e30b6b15b0ae057c8d/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L428-L453), - and represents various attributes related to a subscription. - -> [!NOTE] -> As previously mentioned, opening a queue in BlazingMQ is a two-step operation -> -- the client needs to send `OpenQueue` request, followed by -> `ConfigureStream` request. At the API level, both of these steps should be -> hidden by simply exposing something like `openQueue` API, similar to the -> [C++](https://github.com/bloomberg/blazingmq/blob/9b692fe25f74543e954a27e30b6b15b0ae057c8d/src/groups/bmq/bmqa/bmqa_session.h#L819-L840) -> and -> [Java](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/main/java/com/bloomberg/bmq/Queue.java#L24-L34) -> SDKs. - -### Posting Messages (Producers) - -Let's assume that a producer application opened a BlazingMQ queue by following -the steps mentioned in the [above](#opening-a-queue) section. The next step -for the producer application would be to post some messages (PUT messages) on -the queue. - -#### Post API - -Both C++ and Java SDKs support batching of messages i.e., producer application -can send a batch of messages in one shot instead of sending them one by one. -Batching can have a significant impact on the performance. Additionally, in -both SDKs, the `post()` API is asynchronous i.e., the API does not wait for the -BlazingMQ broker to respond with ACK messages. In fact, in some cases, the API -does not write the PUT messages to the TCP socket. Instead, the SDK just -accepts the messages, adds them to an internal buffer, and sends them later. -This can occur if the TCP layer is enforcing some flow control, or in case the -client is not connected to the broker, etc. - -Keeping the above complications aside, the simplest way to send PUT messages is -to do what the [Java -SDK](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/main/java/com/bloomberg/bmq/Queue.java#L109-L115) -does. A public class called `PutMessage` could be created, with data members -like the payload, message properties and a callback which will be invoked by -the SDK when it receives the ACK message for the PUT message from the broker. -`PutMessage` could look like this (in pseudo-code): - -``` -class PutMessage { - ByteArray mesasgePayload; - MessageProperties properties; - AckCallback ackCallback; -} -``` - -Here: - -- `ByteArray` is, well, an array of bytes. - -- `MessageProperties` is a class similar to - [this](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/MessageProperties.java), - with concrete implementation - [here](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/proto/MessagePropertiesImpl.java). - -- `AckCallback` could be similar to - [this](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/AckMessageHandler.java) - Java interface. - -And the `post` API could look like this: - -``` -Result post(PutMessage msg); -``` - -Here, `Result` could be a custom type or enum indicating success or failure. -Alternatively, depending upon best practices in the language, the API could -throw. - -Note that we did not specify the class of which the `post` API is a data -member of. There are at least two options here: - -- The `post` API can be part of a top level object like `Session` or - `Connection`, which represent the BlazingMQ context/session/connection in the - SDK. In this case, the API might look similar to the - [one](https://github.com/bloomberg/blazingmq/blob/c8acf1b840fcd9e907d4404f43e5e687edd660f5/src/groups/bmq/bmqa/bmqa_session.h#L819-L840) - in C++. - -- Alternatively, another approach could be similar to the - [one](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/main/java/com/bloomberg/bmq/Queue.java#L109-L115) - taken by the Java SDK, where `Queue` is represented as a first class object. - -Yet another approach could be making a BlazingMQ `Domain` as a first class -object, such that: - -- One creates a `Session`, `Connection` or `Context` object first -- Then, one opens a `Domain` object from the top-level object -- Then, one can open a `Queue` from the `Domain` object. - -#### `post` API Implementation - -The implementation of the `post` API should simply create a PUT event from the -PUT message(s) specified by the application, by following guidelines -[here](#put-event). Some other things to keep in mind: - -- Ensure that the queue has already been opened by the application. Since the - application is calling `post`, it must have opened the queue with *WRITE* - intent. - -- Ensure that the queue is in the process of being closed or already closed. - -- Ensure that the connection with BlazingMQ broker is up, and not stopping or - disconnected. - -- Ensure that message payload is not empty. By policy, we don't allow other - BlazingMQ SDKs to post empty message payloads. - -One of the fields in `PutHeader` is `MessageGUID`, which was described in -previous sections. MessageGUIDs are generated in the SDK every time `post` -API is invoked. - -### Processing Acknowledgement Messages (Producers) - -After posting one or more messages, the SDK should expect a response from the -BlazingMQ broker in the form of an ACK (acknowledgement) message containing the -result of the `post` operation. Multiple ACK messages can be delivered by the -broker in one ACK event, so the SDK must be able to handle them. The wire -layout of an ACK event was discussed in a [previous](#ack-event) section. - -One of the fields in ACK message is `MessageGUID`, which is used to correlate -the ACK message to its PUT message. For example, when the application calls -the `post` API, SDK should generate a `MessageGUID`, add it to the PUT header -of that message before sending it, and also keep track of the `MessageGUID` -along with any relevant information for that PUT message (e.g., the -`AckCallback` specified by the application for that PUT message). When the ACK -message arrives, SDK can extract `MessageGUID` from it, retrieve the -`AckCallback` and then invoke it to deliver the result to the application. - -### Receiving Messages (Consumers) - -An application which opens a queue as a consumer (i.e., with *READ* intent) -will receive PUSH messages from the broker anytime a new message is posted on -the queue. Like ACK messages, PUSH messages can be delivered in a batch in a -PUSH event, and the SDK must be ready to handle it. - -#### Consume API - -As far as handing over PUSH messages to the application is concerned, it can be -done by asking for a callback from the application when it opens the queue, and -dispatching PUSH messages by invoking that callback. There are various ways to -ask applications for this callback, but the most obvious one could be in the -`openQueue` API (or a flavor of it). For example, the Java SDK has a -[`PushMessageHandler`](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-sdk/src/main/java/com/bloomberg/bmq/PushMessageHandler.java) -interface, which the consumer application should specify when -[creating](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-examples/src/main/java/com/bloomberg/bmq/examples/SimpleConsumer.java#L117C42-L117C42) -a queue. - -Since multiple PUSH messages can appear in a PUSH event, the SDK implementation -must be able to handle that, and it may need to dispatch PUSH messages one by -one in the callback if the callback's signature does not support handing over -multiple PUSH messages to the application in one go. - -#### Consume API Implementation - -The wire layout of a PUSH event was described in a [previous](#push-event) -section. As far as implementation is concerned, the SDK logic should keep some -of these things in mind when receiving and dispatching a PUSH event: - -- Ensure that the queue is still open, and not closed or being closed by the - application. - -- Ensure that the PUSH event parsing passes basic sanity checks e.g., length of - the packet is equal to the length specified in the `EventHeader`, etc - -- Ensure that the `queueId` field specified in the `PushHeader` is valid and - known to the SDK - -### Confirming Messages (Consumers) - -After opening a queue, a consumer application will receive messages which are -being posted on the queue. Some details about handling PUSH messages were -described in the previous section. Once the consumer application processes a -PUSH message by executing its business logic, it needs to indicate to the -BlazingMQ backend that the message has been processed successfully and can be -removed from the queue. This is done by the consumer application sending a -CONFIRM message. - -#### ConfirmMessage API - -Similar to the **Post API**, C++ and Java SDKs support batching of CONFIRM -messages i.e., consumer application can send a batch of CONFIRM messages in one -shot instead of sending them one by one. Batching can improve performance. -Additionally, in both SDKs, the `confirmMessage()` API is asynchronous; i.e., -the API may not immediately write the CONFIRM messages to the TCP socket. -Instead, the SDK just accepts the CONFIRM messages, adds them to an internal -buffer, and sends them later. This can occur if the TCP layer is enforcing -some flow control, or in case the SDK is not connected to the broker, etc. - -Keeping above complications aside, the simplest way to send CONFIRM messages is -to do what the [Java -SDK](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/main/java/com/bloomberg/bmq/PushMessage.java#L70C8-L76) -does. Alternatively, depending upon the API design, the `confirmMessage` -API could be part of a top level object like `Connection`, `Session`, -`Context`, `Domain`, etc, as in the [C++ -SDK](https://github.com/bloomberg/blazingmq/blob/f4a4f55ae74caf24995ca540a0fbf70a33fbd9c3/src/groups/bmq/bmqa/bmqa_session.h#L1052-L1059). - -#### ConfirmMessage API Implementation - -The `confirmMessage` API simply needs to create and send CONFIRM message(s) to -the broker. As explained in the [previous](#confirm-event) section, a CONFIRM -event contains a `ConfirmHeader` followed by one or more `ConfirmMessage`. - -### Configuring a Queue (Standalone) - -The BlazingMQ client/broker protocol also supports a standalone -*Configure Queue* request. Recall that we have already encountered this request -in the **ConfigureStream Request** paragraph of a [previous](#opening-a-queue) -section. Readers should refer back to that discussion for more details on this -request. - -### Closing a Queue - -Once a client application no longer wants to produce to or consumer from a -queue that it previously opened, it should close the queue. Closing a queue -will not delete the queue in BlazingMQ backend. It will simply detach the -application from the queue. - -Just like opening a queue, closing a queue is a two step process (i.e., it -requires two pairs of request/response exchanges with the broker). Both of -these steps are encapsulated in the C++ and Java SDKs by the `closeQueue` API, -which looks like -[this](https://github.com/bloomberg/blazingmq-sdk-java/blob/ed0eb848f5ac2897cfe32cc481575d689a4cb1c2/bmq-sdk/src/main/java/com/bloomberg/bmq/Queue.java#L78-L86) -in Java and like -[this](https://github.com/bloomberg/blazingmq/blob/f4a4f55ae74caf24995ca540a0fbf70a33fbd9c3/src/groups/bmq/bmqa/bmqa_session.h#L961C3-L980) -in the C++ SDK. - -Let's go over the two pairs of request/response exchanges which occur under the -hood when one calls the `closeQueue` API: - -#### `ConfigureStream` Request - -This request has been described in the previous section. When sending this -request as part of closing a queue, any flow control and subscription -parameters in the request are emptied out (or set to null/zero) to indicate -that the client application is about to detach from the queue. - -#### `CloseQueue` Request - -The -[`CloseQueue`](https://github.com/bloomberg/blazingmq/blob/58044d8e4579665fffa0419df820c8be5cdbc2eb/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L242-L260) -request provides a way to the BlazingMQ client to detach from a queue. -`CloseQueue` contains two fields. Let's look at them: - -- `QueueHandleParameters`: this type has been described in a previous section. - -- `isFinal`: this boolean flag indicates if this is the final close-queue - request for the specified queue from the client. - -Upon success, the BlazingMQ broker responds to the `CloseQueue` request by -sending a -[`CloseQueueResponse`](https://github.com/bloomberg/blazingmq/blob/58044d8e4579665fffa0419df820c8be5cdbc2eb/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L262-L272). - -> [!NOTE] -> The `ConfigureStream` request is sent by the SDK in three cases: -> -> 1) As the second step in the open-queue workflow (i.e., when an application -> calls one of the flavors of the `openQueue` APIs). -> -> 2) As a standalone request when an application calls one of the flavors of -> the `configureQueue` APIs. -> -> 3) As the first step in the close-queue workflow (i.e., when application -> calls one of the flavors of the `closeQueue` APIs). - -### Stopping a Session with BlazingMQ Broker - -When a client application decides that it no longer wants to interact with -BlazingMQ, it can tear down its connection/session with the BlazingMQ broker. -This typically happens when the application is shutting down, but in theory, an -application can stop the BlazingMQ session at any time. - -Stopping the BlazingMQ session is typically done by calling a -[`stop`](https://github.com/bloomberg/blazingmq-sdk-java/blob/358eda1e6ea7917e63ee6fb50d15ecd5873dbf56/bmq-sdk/src/main/java/com/bloomberg/bmq/Session.java#L512-L524) -method on the top level Session/Connection/Context object. This method needs -to carry out three things -- it needs to inform the broker about its intent to -disconnect intent and wait for a response from the broker, and then finally it -needs to close the TCP socket with the broker. Let's look into these steps in -detail. - -#### `Disconnect` Request - -The -[`Disconnect`](https://github.com/bloomberg/blazingmq/blob/58044d8e4579665fffa0419df820c8be5cdbc2eb/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L124-L134) -request is sent by the SDK to the broker to indicate that the client about to -close the TCP connection. This is an opportunity for the broker to clean up -any state related to this session. Once the broker has completed the cleanup, -it responds to this request by sending a -[`DisconnectResponse`](https://github.com/bloomberg/blazingmq/blob/58044d8e4579665fffa0419df820c8be5cdbc2eb/src/groups/bmq/bmqp/bmqp_ctrlmsg.xsd#L136-L147). -A guarantee provided by the broker is that once the `DisconnectResponse` has -been sent, the broker will not send any other -message/request/response/notification to the client. Logically, the -*Disconnect* request/response pair can be thought of as a way to ensure that -the "pipe" between client and broker is empty. - -#### Closing the TCP Connection - -Once the SDK receives the `DisconnectResponse`, it can proceed to close the TCP -socket with the broker, and release any resources associated with the -connection. Care must be taken to ensure that the resources are released in -the right order without any dangling references or leaks. - ---- - -## Client Library Design Guide - -Apart from implementing the BlazingMQ wire protocol and the sequence of message -exchanges between SDK and broker correctly, a good SDK should also expose easy -to use (and hard to misuse) APIs, and should have an efficient implementation. -In this section, we will go over some details about the SDK APIs and -implementation which authors of a new SDK may find useful. - -### APIs - -We list some guiding principles for designing BlazingMQ client APIs: - -1. APIs should be designed so that they are easy to use and hard to misuse. - -2. APIs should provide high enough abstraction so that users can focus on - implementing their business logic instead of trying to understand intricate - API interactions. - [This](https://github.com/bloomberg/blazingmq-sdk-java/blob/main/bmq-examples/src/main/java/com/bloomberg/bmq/examples/SimpleProducer.java) Java sample producer is a good - example which demonstrates this. - -3. For certain higher level languages like Python, Ruby, etc., APIs can be - opinionated and expose a minimal "surface area", which can simplify the APIs - while also catering to the needs of the majority of users. - -4. For languages where people often write high performance applications, APIs - should be asynchronous as much as possible, while also providing synchronous - flavor in some cases. - -5. Overall, in our experience, BlazingMQ Java SDK provides a set of APIs which - can be a good starting point for anyone. SDKs in higher level languages - should aim to further simplify the Java SDK APIs, while lower level - languages can implement something similar to Java APIs. - -### Implementation - -We list some implementation details which authors of new BlazingMQ SDKs may -find useful: - -1. The network I/O logic could be made asynchronous (i.e., could use - non-blocking sockets). This is not very important for higher level - languages like Python, etc. but is for languages like Rust, etc. - Non-blocking I/O can enable client applications to achieve higher - throughput, at the cost of higher complexity of SDK implementation. One - could leverage some well known open source libraries which make it easier to - achieve async I/O. For example, the Java SDK uses - [`netty`](https://github.com/bloomberg/blazingmq-sdk-java/tree/main/bmq-sdk/src/main/java/com/bloomberg/bmq/impl/infr/net) - to achieve async I/O fairly easily. - -2. For SDKs which are highly asynchronous in their implementation, it can be - difficult to reason about when multiple events are occurring concurrently. - For example, events like a user-initiated *CloseQueue* operation, network - disconnection with the BlazingMQ broker, and timeout of an outstanding - *OpenQueue* request could occur at the same time, and it might become - unreasonably difficult to reason about the code. As one of the potential - solutions, authors may find a Finite-State Machine-based (FSM) approach easy - to implement and reason about. In this approach, all states, state - transitions, events and actions can be codified in the form of enums, - callbacks, etc. Any incoming or outgoing event (initiated by any entity - like the user, timer, network, etc) on the queue or the top level session - object can be applied to the appropriate FSM (queue or session), and desired - outcome (state transition) and action can be dispatched from the FSM table. - As an example, the C++ SDK takes this approach (but only partially) by - introducing concepts like: - - - [`QueueFSM`](https://github.com/bloomberg/blazingmq/blob/58044d8e4579665fffa0419df820c8be5cdbc2eb/src/groups/bmq/bmqimp/bmqimp_brokersession.h#L456) - - - [`QueueFsmEvent`](https://github.com/bloomberg/blazingmq/blob/58044d8e4579665fffa0419df820c8be5cdbc2eb/src/groups/bmq/bmqimp/bmqimp_brokersession.h#L257) - - - [`QueueStateTransition`](https://github.com/bloomberg/blazingmq/blob/58044d8e4579665fffa0419df820c8be5cdbc2eb/src/groups/bmq/bmqimp/bmqimp_brokersession.h#L320) - - - [`SessionFsm`](https://github.com/bloomberg/blazingmq/blob/58044d8e4579665fffa0419df820c8be5cdbc2eb/src/groups/bmq/bmqimp/bmqimp_brokersession.h#L365) - -3. Testability of the SDK should be kept in mind, and all classes which are - mechanisms should ideally be an interface so that they can be mocked easily. - ---- diff --git a/docs/docs/architecture/clustering.md b/docs/docs/architecture/clustering.md deleted file mode 100644 index e2e085c82..000000000 --- a/docs/docs/architecture/clustering.md +++ /dev/null @@ -1,390 +0,0 @@ ---- -layout: default -title: Clustering -parent: Architecture -nav_order: 2 ---- - -# BlazingMQ Cluster, Storage and Replication -{: .no_toc } - -* toc -{:toc} - -## Introduction - -This article provides a high level overview of clustering, replication and -storage subsystems in BlazingMQ. - -## Clustering - -Like several other distributed storage systems, BlazingMQ stores messages by -leveraging a cluster of commodity machines in order to provide redundancy and -high availability. BlazingMQ clusters can be anywhere from 3-7 machines in -size. Smaller as well as larger sized clusters are possible but not -recommended. In practice, clusters with 5 nodes are ideal. - -### Typical Deployment - -![Typical Deployment](../../../assets/images/TypicalDeployment.png "Typical BlazingMQ Deployment") - -The above figure shows the typical deployment of BlazingMQ. The four nodes in -the middle represent a BlazingMQ cluster where queues are persisted and -replicated. The blue node in the cluster represents a queue's **primary** -node, which is in charge of managing the queue (replication, message routing, -etc.). Orange nodes represent **replicas** which, as the name suggests, are in -charge of storing a local copy of the queue. - -A producer or consumer client application can connect to any node in the -BlazingMQ cluster instead of always requiring a connection to the primary node. -If a client application connects to a replica node, the replica will -automatically make the primary node aware of the client application. It also -means that all messages flowing to and from the client application will go -through the replica. - -### Alternative Deployment - -![Alternative Deployment](../../../assets/images/AlternativeDeployment.png "Alternative BlazingMQ Deployment") - -The above figure shows an alternative deployment of BlazingMQ. As can be seen, -the applications (green nodes) running on machines A and B connect to local -BlazingMQ agents (yellow nodes), which then connect to any node (primary or -replica; blue or orange nodes) in the BlazingMQ cluster. These local BlazingMQ -agents are known as **proxies**. See [*Benefits of Proxy*](#benefits-of-proxy) -section below for more details. - -Proxies are optional in BlazingMQ deployments and should be used only if their -presence is required for performance reasons. If you are just starting with -BlazingMQ, we recommend skipping proxy-aware deployment. - -### Multi Hop Topology - -An interesting aspect of BlazingMQ network topology that is obvious from the -above figure is that client applications don't need to directly connect to a -queue's primary node. There can be any number of hops between an application -and the primary node. In this example, clients connect to the local BlazingMQ -proxy running on their machines, which in turn may connect to a replica node in -the cluster. In fact, a BlazingMQ proxy can connect to another BlazingMQ -proxy, and so on. Moreover, clients don't have to connect to the local proxy. -They can connect to a remote proxy cluster, which in turn connects to the -BlazingMQ cluster hosting the queues, etc. The BlazingMQ network topology is -very flexible in this regard, and generally speaking, a queue's primary node -builds a distribution tree rooted at itself, with replicas and proxies at -intermediate levels in the tree, and producers and consumers at leaf nodes. -Please see the [*Network Topology*](../network_topology) article for an -in-depth discussion as well as to see how its topoloy enables BlazingMQ to -achieve very high fan-out and tremendous bandwidth savings in certain -scenarios. - -### Benefits of Proxies - -A local BlazingMQ proxy can provide several benefits: - -- It hides applications from any changes in the cluster's composition as well - as transient network issues. For example, the entire BlazingMQ cluster could - disappear from the network for a few minutes, and the proxy will hide this - event from the applications by simply buffering any new messages being sent - by the producer applications and retransmit them when conditions improve. - Applications won't get any *DISCONNECTION* events. - -- It aggregates all local TCP connections into just a few connections to - clusters, which allows for a large number of local clients, and also reduces - fail-over times for cluster nodes. - -- Lastly, and arguably most importantly, the proxy carries out fan-out closer - to the user applications. Imagine a scenario where there are *N* consumer - applications running on a machine and *all* applications are interested in - receiving messages posted on a queue. In the absence of the proxy, BlazingMQ - cluster would have to send a message *N* times to this machine. However, due - to the proxy's presence, the message is sent only once by the BlazingMQ - cluster to the local proxy. This local proxy then carries a local fan-out to - *N* consumer applications, thereby dramatically increasing scalability and - performance, and reducing latency and bandwidth requirements for such - scenarios. - -### Quorum based System - -BlazingMQ is a quorum based system, which means that as long as the majority of -the nodes in a BlazingMQ cluster are available, the system will be available to -users. Quorum is required for two reasons -- to maintain continued leadership -in the cluster as well as to provide strong consistency in storage replication. -Both of these concepts are explained later in this article as well as in -[this](../election_rsm) document. - -At a high level, a BlazingMQ cluster manages two types of information -- its -own metadata and the queues (to be specific, messages across various queues). -Let's look deeper into each of them. - -### Cluster Metadata - -Unlike some other distributed systems that depend on a metadata stores like -Apache ZooKeeper to manage their metadata, a BlazingMQ cluster hosts its own -metadata. The decision to manage metadata within a BlazingMQ cluster was made -very early in the design phase of BlazingMQ, for mainly two reasons -- -minimizing dependencies on external software and having flexibility around -metadata management as far as deployment, performance and future enhancements -are concerned. - -Metadata is managed by one node in the cluster, known as the leader node, while -other cluster nodes simply follow the leader node. The leader node is solely -responsible for issuing writes to the metadata, persisting it locally, and also -replicating it to peer nodes ("followers"), which it does by implementing a -replicated state machine similar to (but not exactly same as) the -[*Raft*](https://raft.github.io) consensus algorithm. More details on this -topic can be found [here](../election_rsm). - -Metadata in a BlazingMQ cluster comprises of: - -- The cluster's health and cluster membership. - -- A list of queues being hosted on the cluster. - -- Details about internal *storage shards* configured in the cluster. More - details about *storage shards* can be found in the *Storage* section later in - this document. For now, a shard can be assumed to be a logical file on disk. - The number of *storage shards* in a BlazingMQ cluster is configured - statically. - -- *Storage Shard* -> Primary node mapping. Each *storage shard* is managed by - a node in the cluster, known as the primary node for that shard. A shard is - assigned a primary node by the leader at startup or anytime a shard loses its - primary node. Note that the leader node can assign itself as the primary - node of some or all *storage shards* depending upon the configuration. - -- Queue -> shard mapping. Any time a queue gets created in a BlazingMQ - cluster, the leader node assigns that queue to a *storage shard*. Similarly, - any time a queue qualifies to be garbage-collected, the leader node removes - it from the cluster state. - -- Any internal queue identifiers, and other miscellaneous details. - -Note that cluster metadata does not include contents of the queues. - -### Queues - -Another type of information maintained by a BlazingMQ cluster is the messages -across various queues. - -Any time a new queue comes into existence in a BlazingMQ cluster, the leader -node assigns it to an internal *storage shard*. From that point onwards, the -primary node assigned to that *storage shard* is in charge of managing the -queue. A primary node carries out things like: - -- Receiving all messages arriving on the queue. - -- Persisting messages locally and replicating them to the replica nodes. - -- Acknowledging messages back to the producer applications at the appropriate - time. - -- Choosing the right set of consumers to route newly arriving messages. This - can involve determining consumers' current capacities, consumers' priorities, - any filtering criteria specified by consumers, etc. - -- Bringing a replica node which was recently (re)started up to date by - synchronizing its *storage shards* so that it has the latest messages. - -### Summary of Nodes' Roles - -With the concepts of leader, follower, primary and replica nodes introduced -above, it is worth summarizing them here: - -- **Leader**: A node in a BlazingMQ cluster is elected as leader with a quorum - based election algorithm. This node is in charge of managing BlazingMQ - cluster metadata and replicating it to follower nodes, in addition to - maintaining it in memory. Every leader node gets assigned a unique, - monotonically increasing number called the *term*. - -- **Follower**: A node which maintains a local copy of the metadata (in memory - as well as on disk) and updates it upon receiving notifications from the - leader node. By default, all nodes apart from the leader node in a BlazingMQ - cluster become follower nodes and maintain metadata. - -- **Primary**: A node which manages a *storage shard* in a BlazingMQ cluster - and replicates it to the peer nodes (replicas). The leader node manages the - *storage shard* <-> primary node mapping. The leader node typically assigns - a primary node to a *storage shard* at startup or when an existing primary node - goes away (crash, graceful shutdown, removal, etc). The leader node can - assign itself as the primary node of one or more *storage shards*. Every - primary node gets assigned a monotonically increasing number by the leader - called the *PrimaryLeaseId*. - -- **Replica**: A node which maintains a local copy of the *storage shard* and - updates it upon receiving notifications from the primary node. All nodes - apart from the primary node become replicas of that *storage shard*. - -The following combinations of roles are valid for a BlazingMQ node: - -- A node can be the leader and the primary of one or more *storage shards* and - a replica of the remaining *storage shards*. - -- A node can be a follower and the primary of one or more *storage shards* and - a replica of the remaining *storage shards*. - -- A node can be the leader and a replica of all *storage shards*. - -- A node can be a follower and a replica of all *storage shards*. - ---- - -## Replication - -As mentioned above, the leader node is in charge of replicating cluster -metadata to other nodes in the cluster, and the primary node of each *storage -shard* is in charge of replicating the shard to other nodes. It is worth -pointing out that primary nodes are not elected but assigned by the leader -node. - -Every node in the BlazingMQ cluster has a full copy of cluster metadata as well -as every *storage shard*. In other words, nodes are homogeneous. - -An interesting corollary of the above fact is that adding more nodes in a -BlazingMQ cluster increases availability of the system, but it does not -increase the cluster's capacity. In fact, clients may observe lower throughput -because now the primary node has to carry out additional replication to the new -node. - -Each *storage shard* has its own independent logical stream of replication, -which, among other things, includes sequence numbers for every packet -replicated by the primary node. These sequence numbers are used by the replica -nodes to ensure that they stay in sync with the primary node, as well as to -request any missing parts of the stream at startup or in the event of a primary -node change. Nodes in a BlazingMQ cluster maintain only one TCP connection -with each other, and replication for all *storage shards* occurs over that -connection. - - -### Eventual vs Strong Consistency in Replication - -Upon receiving a new message from the producer, the primary node writes it to -its local storage and replicates it. Depending upon a queue's static -configuration, the primary node may or may not wait for acknowledgements from -replica nodes before returning the result back to the producer. If the queue -is configured in eventual consistency mode, the primary node will not wait for -acknowledgements from replicas with the hope that replicas will eventually -receive the message and apply it locally. - -On the other hand, if the queue is configured in strong consistency mode, the -primary node will wait for acknowledgements from a certain number of replicas -before returning results to the producer. The number of replicas is chosen in -such a way that ensures that a majority of the nodes have a copy of the message -before returning results to the producer. - -Needless to say, while eventual consistency may provide lower latency, it comes -at the risk of potential message loss. Consider a scenario where the primary -node crashes right after returning a "success" result to the producer, but the -replicated message is still sitting somewhere in its memory or socket buffer, -waiting to be sent to the replicas. In this case, one of the replicas will be -promoted as a primary node by the leader node and neither the new primary node -nor other replicas will have the message, leading to message loss even though -the producer received a success notification from the previous primary node. - -We do not recommend using eventual consistency mode unless you can tolerate -message loss. By default, all queues are configured to be strongly consistent. - ---- - -## Storage - -Now that we know about high level concepts of clustering and replication in a -BlazingMQ cluster, it's time to look into the details of the storage layer and -understand how BlazingMQ message brokers interact with local disk. - -### Storage Shard - -A BlazingMQ cluster divides storage into shards, and distributes queues across -these shards. A shard is also known as *partition* in BlazingMQ. A shard can -be thought of as a logical file on disk (see next section for details). A -shard is an internal detail of BlazingMQ and users don't need to know about it. -Every BlazingMQ cluster is statically configured with a number of shards as -well as the total storage capacity of each shard. The number or size of shards -cannot be changed at runtime and requires a broker restart. The number and -size of the shards is chosen considering the total storage capacity as well -as total anticipated number of queues that the cluster will host. Typically, -the number of shards is much less than the total number of queues hosted on a -cluster. For example, having less than 50 shards for a cluster which is -hosting 10,000+ queues is normal. Every node in a BlazingMQ cluster has full -knowledge (and a full copy) of all the shards. - -### Storage Shard Internals - -Until now, a storage shard has been described as a logical file on disk. To be -specific, a shard is a collection of two regular physical files on the -filesystem -- a *JOURNAL* file and a *DATA* file. - -A JOURNAL file is, well, a journal of events. All events, like the arrival of -a message in a queue, confirmation of a message by a consumer, deletion of a -message, creation of a queue, deletion of a queue, etc., are recorded in the -journal. The DATA file is used to store the actual messages themselves. - -Let's walk through an example -- when a message arrives from a producer for a -queue at the queue's primary node, it identifies the shard to which a queue has -been mapped, and "routes" the message to that shard ("routing" implies handing -over the message to the correct subsystem or thread). The shard copies the -message payload to the DATA file, and creates a *MessageRecord* in the JOURNAL -file. One of the fields in the *MessageRecord* is the offset of the message in -the DATA file, which can be used to retrieve the message later. At some time -after writing the message to the files, the primary node replicates it to the -replicas, which then update their DATA and JOURNAL files of the same shard with -the message payload and *MessageRecord* respectively. And some time after -that, the primary node replies to the producer with an acknowledgement. - -BlazingMQ carries out strictly sequential writes to the JOURNAL and DATA files -for performance purposes. In addition, files are memory-mapped, although this -can change in the future. Memory mapping the files brings certain advantages -like avoiding system calls during read/write operations and easier file offset -management. On the other hand, it can pollute the page cache and also -introduce some unpredictability in latency due to page cache misses. BlazingMQ -message brokers do not flush memory-mapped files to disk and rely on the -operating system to periodically flush dirty pages to disk. While in theory -this exposes a crashed node to data loss, in practice this does not happen. -Upon restart, the crashed node synchronizes its storage with peer nodes in the -cluster before going "live". Failure of an entire cluster simultaneously could -indeed result in the loss of committed data, though at Bloomberg we defend -against this with a truly shared nothing architecture. - -### JOURNAL File Details - -As mentioned above, a JOURNAL file contains relevant storage events. These -events are written to the JOURNAL file in the form of various fixed length -records (structs). Types of records: - -- *MessageRecord*: Record containing details about a message, like message - GUID, queue name, time of arrival of message, CRC32C checksum, offset to - message payload in the DATA file, etc. - -- *ConfirmRecord*: Record containing details about confirmation of a message by - a consumer, like consumer ID (if any), message GUID, queue name, time of - confirmation, etc. - -- *DeletionRecord*: Record containing details about deletion of a message, like - message GUID, queue, reason of deletion (processed by all consumers, - garbage-collected due to TTL expiration, purged due to poison pill detection, - etc). - -- *QueueOpRecord*: Record containing details about any queue related operations - like queue creation, deletion, modification, etc. - -- *JournalOpRecord*: A meta record containing periodic markers from the primary - node in the replication stream, etc. - -Every JOURNAL record is 60 bytes in length. Having fixed length records helps -with bidirectional traversals and scans of records during storage recovery -phase at broker startup as well as when the primary node needs to heal a -recently started replica. - - -### DATA File Details - -DATA files are simpler than JOURNAL files, because they just contain message -payload records. Each record starts with a header describing the message -payload record. Note than unlike the JOURNAL file, records in the DATA file -are of variable length. - -More details about BlazingMQ's storage protocol can be found in the -[`mqbs_filestoreprotocol.h`](https://github.com/bloomberg/blazingmq/blob/main/src/groups/mqb/mqbs/mqbs_filestoreprotocol.h) -header file. This file contains definitions of all the `struct`s as they are -laid out on disk. To ensure consistency, data is written to disk in network -byte order. - ---- diff --git a/docs/docs/architecture/election_rsm.md b/docs/docs/architecture/election_rsm.md deleted file mode 100644 index 2851028b9..000000000 --- a/docs/docs/architecture/election_rsm.md +++ /dev/null @@ -1,438 +0,0 @@ ---- -layout: default -title: Leader Election -parent: Architecture -nav_order: 6 ---- - -# Leader Election and State Machine Replication in BlazingMQ -{: .no_toc } - -* toc -{:toc} - -## Summary - -This articles introduces readers to the leader election algorithm in BlazingMQ. -The article explains the motivation for having a **leader** node in a given -BlazingMQ cluster, and then goes on to explain the leader election algorithm -implementation, which is inspired by the algorithm proposed in the -[*Raft*](https://raft.github.io/) consensus protocol. The article also -discusses an extension to the leader election algorithm (what Raft refers to as -*PreVote*), which helps BlazingMQ's leader election implementation achieve -stability during network disruptions. Note that *Raft* is a state machine -replication algorithm, and indeed, BlazingMQ's replication model is also -inspired by it, although with some important differences. This article -primarily focuses only on BlazingMQ's leader election algorithm, and explains -state machine replication only briefly. Similarly, differences with *Raft* are -discussed briefly. - ---- - -## Introduction - -Before we jump into the nitty-gritty of the leader election algorithm, let's -first look at why some distributed systems like BlazingMQ need a node in their -clusters to act as a coordinator or "leader". - -A distributed system often needs to carry out some bookkeeping and management -of its workload as well as nodes in the cluster. These responsibilities can -take various forms for different distributed systems, including but not limited -to: - -- Keeping an eye on the health of nodes in the cluster (e.g., demoting an - unhealthy node, synchronizing a newly joined node, etc.) - -- Distributing work across nodes in the cluster (e.g., assigning a primary node - to a stream of data, distributing ranges of keys across nodes in the cluster, - etc.) - -- Storing and replicating any metadata required to bootstrap the cluster upon - restart - -In order to avoid conflicting decisions, only one node in the cluster (the -"leader") should be authorized to carry out such work, while other nodes (the -"followers") must honor the decisions made by the leader node. - -It is worth noting that not all distributed systems require a leader node to -work. In such systems, each node can act as a coordinator for a request that -it receives from the user. Such systems are out of the scope of this article. - -### Responsibilities of the Leader Node in BlazingMQ - -At this point, it is worth discussing the role of a leader node in BlazingMQ -cluster. A BlazingMQ leader node performs the following responsibilities: - -- **Managing Cluster Metadata**: A BlazingMQ cluster hosts its metadata itself, - instead of relying on an external metadata store like *Apache ZooKeeper*, - *etcd*, etc. It is the responsibility of the leader to store and replicate - metadata among nodes in the cluster. See [*Cluster - Metadata*](../clustering#cluster-metadata) section for more details about - metadata. - -- **Synchronizing New Nodes**: The leader node is also in charge of bringing a - new node (which just restarted or joined the BlazingMQ cluster) up to date - with cluster's metadata and other information which helps the new node catch - up with other nodes. - -- **Checking the Health of Peer Nodes**: Leader node keeps an eye on the health - of peer nodes, and may choose to assign another node as the primary upon - detecting a failing or crashed primary node. - ---- - -## The Leader Election Algorithm in BlazingMQ - -As mentioned previously, a BlazingMQ cluster elects a node as the leader which -acts as a coordinator for the cluster's metadata and healthiness of nodes. The -leader node maintains a replicated state machine to ensure that the cluster's -metadata is persisted at the majority of the nodes. This section explains the -leader election algorithm at a high level. It is by no means exhaustive and -deliberately avoids any formal specification or proof. Readers looking for an -exhaustive explanation should refer to the *Raft* -[paper](https://raft.github.io/raft.pdf), which acts as a strong inspiration -for BlazingMQ's leader election algorithm. - -### Naïve Leader Election Algorithm - -Instead of jumping into the final version of algorithm, let's try to write one, -starting from something simple. Here's our first attempt: - -1. When a node in the BlazingMQ cluster detects the absence of a leader, it - proposes election by sending an `ElectionProposal` request to the peer - nodes. - -2. Peers can respond to the `ElectionProposal` request with a *yes* or a *no*, - depending upon their elector state machine. - -3. If the proposing node gets support from the majority of the peer nodes, it - becomes the leader. Here, majority would mean `N/2 + 1`, where `N` is the - total number of nodes in the cluster. Enforcing quorum ensures that at any - given time, there is no more than one leader in the BlazingMQ cluster. - -4. New leader starts sending periodic heartbeats to the peers ("followers"). - -5. Follower nodes periodically check for heartbeats from the leader. If a - configured number of consecutive heartbeats are missed, then the follower - may assume that the leader node has disappeared, and may decide to propose - an election immediately or after some time. - - -### Problems with the Naïve Algorithm - -While the above algorithm looks reasonable enough, it has several problems: - -- **Concurrent Election Proposals**: It cannot handle concurrent election - proposals. Let's say the two follower nodes notice that the leader has - disappeared, and decide to propose an election at the same time. As a - result, other nodes would receive multiple election proposals, one from each - of the nodes proposing an election. How should a node decide which proposal - to respond to with a *yes* and which one with a *no*? - -- **Unneeded Election Proposals**: It cannot handle unneeded election - proposals. Let's say a follower node already views a node as the leader, but - then receives an election proposal from another node. Should the follower - node continue to follow the original leader, or should it support the second - one? What if the second one has more up-to-date information? There is no - way for the follower node to figure that out from the proposal. - -- **Stale Leader Detection**: It cannot detect a stale leader. Let's say a - follower node already views a node as the leader, but then starts receiving - leader heartbeats from another node as well. How does the follower node - determine which of the two leaders is the stale one? - -- **Ordering Leader Updates**: It cannot help nodes to order updates published - by the leader. Given two updates, there is no way to figure out which update - originated from an old leader and which one from a new leader. - - -### Introducing Election *Term* - -All of the above problems can be solved by introducing a monotonically -increasing integer in our election algorithm. Here are the details: - -- Every message exchanged within the algorithm (e.g., `ElectionProposal`, - `ElectionProposalResponse`, `LeaderHeartbeat`, etc) will contain an integer. - -- Every node will maintain its own copy of the integer. - -- A node will *always* honor an election request/notification/heartbeat message - if the message contains a higher value for this integer than its own copy - (and will also update its own copy with the higher value). - -This integer can be thought of as a logical clock, a generation count, a -fencing token, or as *Raft* calls it: an election *term*. - - -### Updated Algorithm using Term - -Here's the updated algorithm which now uses a term: - -1. When a node in the BlazingMQ cluster detects the absence of a leader, it - proposes an election by sending an `ElectionProposal` request to the peer - nodes containing `proposedTerm == ++selfTerm`. - -2. A peer node responds to `ElectionProposal` with a: - - - *Yes* if `proposedTerm > peer's selfTerm`, and also updates `selfTerm = - proposedTerm`. - - - *No* if `proposedTerm <= peer's selfTerm` - -3. If the proposing node gets support from the majority of the peer nodes, it - transitions to leader (at this point the leader's `selfTerm == - proposedTerm`). - -4. The new leader starts sending periodic heartbeats to the peers - ("followers"). Every `Heartbeat` message contains the leader's term. - -5. Follower nodes periodically check for heartbeats from the leader and ensure - that `selfTerm == term in heartbeat message`. If a configured number of - consecutive heartbeats are missed, then follower may assume that the leader - node has disappeared. - -Additional notes on elector term: - -- One can see that every leader will have a unique term associated with it, and - a newer leader will have a higher term than the previous leader. This can - help followers detect and ignore stale leaders. - -- A leader can also use its term to create composite sequence numbers to be - used in any application-level messages sent by the leader. These sequence - numbers can be of the form *(Term, Counter)* where *Counter* is an integer - starting from zero for every new leader. In BlazingMQ, these composite - sequence numbers are referred to as *Leader Sequence Numbers* or *LSNs*. So - a leader with a term of 5 can issue messages with LSNs *(5, 1)*, *(5,2)* and - so on. LSNs can also be used to order messages from the leader as well as to - ignore messages from stale leaders. For example, a message LSN *(5, 2)* is - newer than a message with LSN *(4, 1000)*. - -- Lastly, what *Raft* refers to as a term is referred to as *view*, *ballot - number*, *proposal number*, *round number*, *epoch*, etc by other similar - systems like *Paxos*, *Apache ZooKeeper* etc. Moreover, what we refer to as - *Leader Sequence Number* in BlazingMQ is referred to as *Log Sequence - Number*, *ZXID*, etc by other systems. - - -### Elector State Machine - -At a given time, every participating node can be in one of the three states: - -- *FOLLOWER*: a follower node is not the leader and has not proposed an - election. It may or may not be aware of the leader. - -- *CANDIDATE*: a candidate node is not the leader, but has a pending election - proposal. - -- *LEADER*: a leader node is one which currently enjoys support of the majority - of the nodes in the cluster. - -Some general notes on these elector states: - -- A node always starts as a *FOLLOWER* with `selfTerm = 0`. Upon start up, the - node waits a configured amount of time in order to discover the existing - leader, if one exists. - -- A *FOLLOWER* node will transition to *CANDIDATE* and propose an election if - it cannot find a leader node in the configured time. - -- A *CANDIDATE* waits for a configured amount of time to hear from all or the - majority of its peers for its election proposal. - -- If a *CANDIDATE* receives an election proposal or a heartbeat with higher - term, the *CANDIDATE* transitions back to *FOLLOWER* and supports the node - with higher term. - -- Similarly, if a *LEADER* receives an election proposal or a heartbeat with - higher term, it transitions back to *FOLLOWER* and supports the node with - higher term. - -A node will *always* honor an election proposal or heartbeat message with -higher term, irrespective of its role. - -### Elector Algorithm: Node Startup Scenario - -Let's walk through a common scenario where a node starts up and joins the peers -participating in the election: - -1. The new node starts up as a *FOLLOWER* with `selfTerm = 0` and waits for the - configured amount of time to discover the existing leader, if any. - -2. If the node discovers a leader via heartbeat messages, it updates `selfTerm - = leaderTerm`, and also sends an unsolicited `ElectionProposal` response to - the leader node, letting it know that it supports the leader. - -3. If the node does not find the leader node, it waits for some additional time - (random interval between 0-3 seconds) before transitioning to a *CANDIDATE* - and proposing an election with `++selfTerm`. The reason for waiting a - random time interval before proposing an election is explained in the third - bullet of the next section. - - -### Elector Algorithm: Leader Crash Scenario - -Let's walk through another common scenario where the leader node crashes or -stops gracefully: - -1. Once a *FOLLOWER* node starts following a *LEADER* node, it schedules a - periodic event to check for heartbeat messages from the leader. - -2. If three consecutive heartbeats are missed, the follower waits for a random - time interval (between 0-3 seconds) before proposing an election with - `++selfTerm`. - -3. The additional random wait interval prevents multiple *FOLLOWER* nodes from - proposing elections simultaneously. This helps to avoid failed election - proposals, which helps with faster convergence to elect a new leader. - - -### Differences from *Raft*'s Consensus Algorithm - -BlazingMQ's leader election and state machine replication differs from that of -*Raft* in one way: in *Raft*s leader election, only the node having the most -up-to-date log can become the leader. If a follower receives an election -proposal from a node with stale view of the log, it will not support it. This -ensures that the elected leader has up-to-date messages in the replicated -stream, and simply needs to sync up any followers which are not up to date. A -good thing about this choice is that messages always flow from leader to -follower nodes. - -BlazingMQ's elector implementation relaxes this requirement. Any node in the -cluster can become a leader, irrespective of its position in the log. This -adds additional complexity in that a new leader needs to synchronize its state -with the followers and that a follower node may need to send messages to the -new leader if the latter is not up to date. However, this deviation from -*Raft* and the custom synchronization protocol comes in handy because it allows -BlazingMQ to avoid flushing (`fsync`) every message to disk. Readers familiar with -Apache Kafka -[internals](https://jack-vanlightly.com/blog/2023/4/24/why-apache-kafka-doesnt-need-fsync-to-be-safe) -will see similarities between the two systems here. - -An additional benefit of this deviation is the case when we specifically want a -particular node to become leader for testing, troubleshooting, or simulating -disaster recovery scenarios. On some occasions, the target node could be -behind in the replicated state machine, and would not be elected as the leader -in the original *Raft* algorithm. - ---- - -## Extending the Leader Election Algorithm - -In the previous sections, we discussed a couple of scenarios (node start and -leader crash) and saw how the election algorithm handles them well. Let's -discuss a couple of scenarios where the BlazingMQ algorithm could do better. - -### Non-sticky Leader - -![Non-sticky Leader](../../../assets/images/nonStickyLeader.png "Non-sticky -Leader") - -The figure above demonstrates a setup where there are 4 nodes in a cluster. In -the absence of any disturbance, all 4 nodes connect to each other over TCP, -creating full mesh. However, let's assume that due to network disruption, node -B gets isolated from the other 3 nodes. Let's also assume that node A is the -leader with a term of 10. Note that even after node B gets isolated, node A -continues to enjoy support of the majority of the nodes in the cluster and thus -continues to be the leader as perceived by itself and nodes C and D. - -However, since node B is isolated, it cannot see node A and its elector state -machine eventually transitions to *CANDIDATE*, bumps up it's local term to 11 -and proposes an election. Inevitably, this election round fails after a -timeout. Node B then waits for random time interval and proposes an election -yet again, this time with a term of 12, which fails yet again. The cycle -continues and node B's term keeps on incrementing with every failed election. - -Now, let's assume that network heals and node B is no longer isolated from its -peers. Node B will eventually receive heartbeats from node A with a term of -10, which node B will ignore since its own term is higher than that. -Additionally, node B will propose an election with a term higher than 10. -Nodes A, C, and D, upon receiving this proposal, will support node B because of -higher term in the proposal, and node A will transition from *LEADER* to -*FOLLOWER*. Eventually, node B will transition to *LEADER* with the other 3 -nodes following it. - -While our algorithm works correctly (at a given time, there is only one leader) -one can see that there was an unnecessary leadership switch from node A to node -B. It would be ideal if node A continued to be the leader, with node B simply -following it upon re-joining the cluster. - -### Leader Ping-Pong - -![Leader Ping-Pong](../../../assets/images/leaderPingPong.png "Leader Ping -Pong") - -The figure above demonstrates another scenario which is more disruptive than -the one discussed in the previous section. - -In this scenario, let's assume that node A is the leader with a term of 10 with -the other three nodes following it. Then, due to a network disturbance, let's -assume that node B gets disconnected from node A, while still being connected -to nodes C and D. - -In this scenario, node B will detect the dropped connection (or missed leader -heartbeats) from node A, and will eventually transition to *FOLLOWER* and then -become a *CANDIDATE* and propose an election with term 11. Node A will not -receive this proposal, but nodes C and D will, and both of them will support -node B because of higher term in the election proposal. Node B will get -support from the majority of the nodes and will transition to *LEADER*. - -Node A will come to know that nodes C and D no longer support it as the leader -when it receives an `InvalidHeartbeat` message from one or both of them with -the latest term (11). Node A will transition to *FOLLOWER*, and since it -cannot see the current leader (node B), it will propose an election with a term -of 12. Again, nodes C and D will support this election, and node A will end up -being the leader with a term of 12. - -The cycle will repeat with node B becoming a leader with a term of 13, then -node A becoming a leader with a term of 14, and so on. Leadership will keep -bouncing between nodes A and B. While at a given time, there will be only one -leader, this scenario can be extremely disruptive for an application. - -### Solution: The `ElectionScouting` Request - -The problems of *non-sticky leaders* and *leader ping-pong* discussed above can -be solved by introducing an `ElectionScouting` request (*Raft* calls this as -*PreVote* request): - -1. A node, instead of sending an `ElectionProposal` request with `proposedTerm - = ++selfTerm`, sends an `ElectionScouting` request with `proposedTerm = - selfTerm + 1`. In other words, the node specifies an incremented term in - the `ElectionScouting` request but *does not* bump up its own term. For - example, a node with term 10 will specify term 11 in `ElectionScouting` - request. Logically, an `ElectionScouting` request asks this question to the - peer nodes: *"If I were to propose an election with the specified term, will - you support me?"*. - -2. A node which receives `ElectionScouting` request responds as per this logic: - - If it already perceives another node as the leader, it responds to the - `ElectionScouting` request with a *No*. - - If it does not perceive any node as the leader, it responds with a *Yes* - if `selfNode < proposedNode`, otherwise a *No*. - -Introducing the `ElectionScouting` request ensures that a node does not -needlessly bump up its own term every time it proposes an election, without -even knowing if peers will support its proposal or not. - -Additionally, the logic in second bullet ensures that if a peer is already -aware of a leader, it will not honor an `ElectionScouting` request from another -node, even if the request contains a higher term. Note that the rule of -honoring a message with higher term still applies to all other -requests/notifications/heartbeats, except for `ElectionScouting` requests. - -Readers will notice that the two enhancements above ensure that the election -algorithm is no longer susceptible to the *non-sticky leader* and *leader -ping-pong* scenarios previously mentioned. - ---- - -## Testing - -Just like BlazingMQ's other subsystems, its leader election implementation (and -general replicated state machinery) is tested with unit and integration tests. -In addition, we periodically run chaos testing on BlazingMQ using our Jepsen -chaos testing suite, which we will be publishing soon as open source. We have -also tested our implementation with a TLA+ -[specification](https://github.com/bloomberg/blazingmq/tree/main/etc/tlaplus) -for BlazingMQ's elector state machine. - ---- diff --git a/docs/docs/architecture/high_availability.md b/docs/docs/architecture/high_availability.md deleted file mode 100644 index aab9a76cd..000000000 --- a/docs/docs/architecture/high_availability.md +++ /dev/null @@ -1,337 +0,0 @@ ---- -layout: default -title: High Availability -parent: Architecture -nav_order: 4 ---- - -# High Availability in BlazingMQ -{: .no_toc } - -* toc -{:toc} - -## Summary - -This article introduces readers to a high level design and implementation of -high availability in BlazingMQ. Readers are encouraged to read the *Network -Topology* [article](../network_topology) and also get familiar with various -[message routing patterns](../../features/message_routing_strategies) in -BlazingMQ before reading this article. - -## Introduction - -### BlazingMQ Network Topology - -As described in the *Network Topology* [article](../network_topology) and shown -in the figure below, BlazingMQ builds a distribution tree for every queue. The -tree is rooted at a queue's primary node. Producer and consumer applications -are represented as leaf nodes. - -![Distribution Tree for Broadcast Queue](../../../assets/images/tree2.png) - -This topology structure helps BlazingMQ achieve bandwidth savings in very high -fan-out ratio setups (a scenario where every message posted on the queue needs -to go to every consumer attached to that queue). - -### What is High Availability? - -Failure is inevitable in any distributed system. While total failure can be -minimized or even avoided in a well designed distributed system, partial -failures occur all the time as a result of misconfigurations, software bugs, -machine crashes, network or disk issues, etc. Any formidable distributed -system must shield applications from such transient failures and allow them to -work seamlessly while healing itself in the background. - -While there is no agreed upon definition for a "highly available" system, such -a system generally remains available for an extended period of time to its -users and minimizes downtime (both scheduled and unscheduled). Often, -availability is expressed in -[*nines*](https://en.wikipedia.org/wiki/High_availability#%22Nines%22) and is -calculated as a percentage of time the system was functional from users' -perspective throughout a given year. The more *nines* a system has, the more -available it is to the users. - ---- - -## Clustering - -In message queuing systems like BlazingMQ, high availability is achieved via -clustering and replication. Every queue in BlazingMQ is stored on disk and -replicated across a group of machines such that the queue continues to be -accessible to applications in case some machines in the cluster become -unavailable. Theoretically, as long as at least one machine in the cluster is -available, queue remains accessible. - -In a BlazingMQ cluster, a node is dynamically assigned as primary for a queue -such that all writes to the queue go through that node. Primary node also -ensures that queue is replicated to other nodes (replicas) in the cluster. We -believe that there is already enough literature available on the topic of -clustering and replication and we won't go into more details about it in this -article. - -While clustering and replication solve the problem of high availability to an -extent, BlazingMQ network topology provides an additional challenge. As can be -seen in the distribution tree in figure above, failure of any node or link in -the tree directly affects BlazingMQ's availability to the applications. The -higher the failing node in the tree, the higher the impact on BlazingMQ's -availability to users. In fact, a node which is simply restarting also affects -BlazingMQ's availability. - -The rest of the article documents BlazingMQ's data life cycle and approach to -seamlessly handle failing or restarting nodes in the distribution tree. - ---- - -## Terminology - -Before we go further, lets quickly go over some BlazingMQ terminology which -will be useful in the rest of the article. - -- *PUT*: A message sent (or "posted") by the producer to the queue. - -- *ACK*: An acknowledgement sent by BlazingMQ to the producer, informing - whether the *PUT* message was successfully accepted or not. BlazingMQ tries - as much as possible to accept the *PUT* message and send successful *ACK*s. - However there are scenarios where BlazingMQ may not accept *PUT* messages - sent by a producer: the queue getting full, a long standing network issue, - etc. BlazingMQ guarantees is that producer will receive an *ACK* for every - *PUT* message. - -- *PUSH*: A message sent by BlazingMQ to the consumer. This is effectively the - same message as the corresponding *PUT*. - -- *CONFIRM*: A message sent by the consumer to BlazingMQ indicating that it has - processed a specific *PUSH* message. Once a *CONFIRM* message is received, - BlazingMQ is free to mark that message as deleted in the queue. - -- *GUID*: A globally unique identifier assigned to every *PUT* message by - BlazingMQ framework. A *GUID* is used to identify a message throughout its - lifetime, and as such, the *ACK* message sent to the producer by BlazingMQ - contains the *GUID* that was assigned to the corresponding *PUT* message. - Additionally, *PUSH* message sent by BlazingMQ to the consumer contains the - *GUID* that was assigned to the corresponding *PUT* message, and lastly, - *CONFIRM* message sent by consumer to BlazingMQ contains the same *GUID*. - Each *GUID* is 16 bytes in length. - -- *Upstream*: Direction from a BlazingMQ client application to queue's primary - node. *PUT* and *CONFIRM* messages always travel upstream. - -- *Downstream*: Direction from a queue's primary node to a BlazingMQ client - application. *ACK* and *PUSH* messages always travel downstream. - ---- - -## BlazingMQ Data Life Cycle - -![BlazingMQ Data Path](../../../assets/images/dataPath.png) - -The figure above shows the path for various data messages in BlazingMQ. *PUT* -and *CONFIRM* messages travel from client applications to primary node (i.e., -upstream) while *ACK* and *PUSH* messages travel from primary node to client -applications (i.e., downstream). - -Several things can go wrong in this data path: - -- TCP connection(s) can drop due to network issues, missing heartbeats, etc. - -- BlazingMQ nodes can crash. - -- BlazingMQ nodes can undergo graceful shutdown or restart. - -In the absence of any buffering and retransmission logic in BlazingMQ nodes, -any of the above conditions will lead to: - -- Lost *PUT* messages and thus producers receiving an *ACK* message indicating - failure. - -- Lost *ACK* messages and thus producers not receiving any *ACK* messages for - the *PUT* messages that they posted on the queue. - -- Duplicate *PUT* messages being posted on the queue if a producer application - sends the same *PUT* message again upon receiving a failed *ACK* message. - -- Lost *CONFIRM* messages leading to duplicate *PUSH* messages to consumers. - -Clearly, none of the above scenarios are acceptable. Let's see in the -following sections how BlazingMQ handles these scenarios. - ---- - -## High Availability in BlazingMQ - -All problems listed in the previous section have been solved by introducing -these three principles in BlazingMQ nodes: - -- Buffering and retransmission when node to the right is failing (see previous - figure). - -- Maintaining a history of message identifiers (*GUID*s) of the *PUT* messages - posted on the queue. - -- Introducing a shutdown sequence for nodes stopping gracefully. - -Let's look into each of the above in detail. - -### Buffering and Retransmission - -Looking at the previous figure, one can see that in case of a failing node or -link, the node to the left of it is in the best position to buffer and retry -any messages until the failing node heals or a fail-over event occurs (i.e., -left node connects to another healthy node on the right). - -As an example, lets assume that replica 1 in the figure is failing. One can -see that in such case, *PUT* messages sent by proxy 1 to replica 1 run the risk -of getting lost. If such scenario occurs, producer application will forever -keep waiting for an *ACK* for its *PUT* message. This is an extremely -unpleasant user experience, since BlazingMQ is not only failing to accept a -*PUT* message from the producer, but also failing to notify producer about it. - -One way to solve this would be for proxy 1 to keep a list of *GUID*s of -unacknowledged *PUT*s. If upstream node fails, explicitly send a failed *ACK* -for every *GUID* in the unacknowledged list. This will ensure that producer -application now gets notified of BlazingMQ's failure to accept the *PUT* -message. While this is an improvement, it is still not ideal as the producer -application now has to resend the *PUT* message (potentially several times). - -A better way would be for proxy 1 to retransmit unacknowledged *PUT* messages -once replica 1 becomes healthy again, or when proxy 1 fails over to another -replica, whichever occurs first. This approach will provide seamless user -experience for producer applications, and increase the chances of a successful -*ACK* instead of a failed *ACK*. - -BlazingMQ adopts the following approach where every node along the path of a -*PUT* message from producer to primary node keeps an *in-memory retransmission -buffer* for *PUT* messages. A new *PUT* message is buffered unconditionally, -is purged upon receiving an *ACK* message and retransmitted if a fail-over -event occurs. This buffer is bound by both size and time, to ensure that a -BlazingMQ node's memory does not grow beyond the configured limit, and so that -producer applications can expect an *ACK* (success or failure) within the -configured time interval. - -The presence of this retransmission buffer ensures that producer applications -don't see any transient issues in the BlazingMQ back-end. In fact, today the -entire BlazingMQ cluster (all replicas and primary node) can disappear from the -network for a few minutes, and producer applications won't notice any failure -from BlazingMQ APIs. Now this's high availability! - -On the *PUSH* message path, the replicated persistent storage acts as the -retransmission buffer, and as such, there is no need for a separate in-memory -retransmission buffer for *PUSH* messages. Consider a scenario in the figure -where proxy 2 fails, leading to loss of in-flight *PUSH* messages. In this -case, once a new path is established between replica 2 and the consumer, -replica 2 can simply use the replicated persistent storage to retrieve messages -that need to be sent to the consumer. - -### History of *GUID*s - -Readers may have noticed that if a node retransmits a *PUT* message after a -fail-over scenario, there is a risk of duplicate messages i.e., same message -could appear twice in the queue. In above figure, this can occur if replica 1 -failed right after forwarding a *PUT* message to the primary node. Depending -upon the sequence of events, a primary node may or may not receive the message. -If it receives it, it will replicate and "commit" it in the queue. However, -once proxy 1 fails over to another replica, it will retransmit this *PUT* -message, leading to the same message being posted twice on the queue. - -BlazingMQ solves this problem by having the primary node maintain a history of -*GUID*s of *PUT* messages previously posted on the queue. This history is -bound by a configurable time interval. At a high level, history is represented -as a custom hash table where *GUID* is the key. This logic ensures downstream -nodes can retransmit PUT messages without creating duplicates, thereby -providing a better user experience. - -### Shutdown Sequence of Stopping Nodes - -Nodes in BlazingMQ can undergo graceful shutdown or restart, and we want -BlazingMQ to provide a seamless user experience in this scenario as well. -Specifically, we don't want producer or consumer applications to notice any -failure when a node along the *PUT* or *PUSH* data paths is restarted or -shutting down. Additionally, we want to ensure that the node shutting down -does not take any additional work and drains any pending work in a timely -manner. - -Shutdown sequence is implemented with the help of pairs of -*StopRequest*/*StopResponse*. A node which is shutting down informs its peer -nodes (both upstream and downstream) of this action by sending them -*StopRequest*. Upon receiving a *StopRequest*, peer nodes stop sending any -*PUT* and *PUSH* messages to the node. Peer nodes keep any new *PUT* messages -in the retransmission buffer (described above) and *PUSH* messages stay in the -replicated storage. This ensures that the node shutting down does not get any -new work. *ACK* and *CONFIRM* messages are still sent to the node by peers. -This is necessary to ensure that any pending *PUT* and *PUSH* messages no -longer remain pending and remaining work at the node shutting down is drained. - -Lets walk through as example. In above figure, if replica 1 is shutting down, -it will send *StopRequest*s to proxy 1 and primary nodes. Upon receiving the -request, proxy 1 (the downstream node) will stop sending *PUT* messages and -keep them in retransmission buffer. It will continue to forward *CONFIRM* -messages, if any, to the replica. On the other side, the primary node will -stop sending *PUSH* messages to the replica (primary may send them along -another route, if applicable). The primary node will, however, continue to -send *ACK* messages, which replica will forward to proxy 1. After a while, all -*PUSH* messages which are pending (i.e., unconfirmed) along the route will be -confirmed by consumer(s), and at that time, all pending work will be drained. -At this time proxy 1 will send *StopResponse* to the replica and the link -between them will be considered 'frozen'. In other words, once *StopResponse* -has been sent, no further communication will occur between the two nodes. - -In the scenario shown in above figure, there is only one downstream (proxy 1) -and one upstream node (primary) for replica 1. However, in practice, there can -be tens or hundreds of downstream and more than one upstream nodes for the node -shutting down. In such case, there will be a *StopRequest*/*StopResponse* pair -for every such combination. - -Peers are required to respond back with *StopResponse* within a configured time -interval. The chosen time interval has interesting effect -- a low value may -not be enough to receive *CONFIRM* messages from consumers for all pending -*PUSH* messages (some consumers take several seconds or even minutes to process -and confirm messages, which is the whole point of a message queue!). In such -scenario, those unconfirmed *PUSH* messages will be sent by primary node to -another consumer, if any, on a different route, and as such, the same *PUSH* -message could end up being processed twice by two different consumers in an -application ecosystem. This is within contract, as BlazingMQ provides *at -least once* delivery guarantees. On the other hand, choosing a higher time -interval for *StopResponse* will lead to delayed fail over and delayed delivery -of *ACK* and *PUSH* messages to producers and consumers respectively. In -practice, the value of time interval varies for each BlazingMQ cluster, and is -chosen keeping in mind the latency requirements and typical *CONFIRM* times of -applications using that BlazingMQ cluster. - ---- - -## Extending High Availability to Client Libraries - -Readers may have noticed that the high availability support described above -ensures uninterrupted service to BlazingMQ users in cases when a replica or a -primary node fails or restarts, but not when a proxy node fails or restarts. -This is indeed a correct observation. If currently if BlazingMQ proxy node -(i.e., the node immediately connected to the client) goes bad, producer -applications will receive failed *ACK*s messages. Additionally, when such -producers attempt to post the same message again after conditions have -improved, the message may appear twice in the queue. This is because the first -copy of the message, which was posted while the proxy node failed, may or may -not have reached the primary node. Moreover, the second copy of the message -will be assigned a new *GUID* by the proxy (recall that *GUID*s are assigned by -the BlazingMQ node immediately connected to the client). - -A simple solution for this is to update BlazingMQ client libraries to have the -same high availability logic that exists in BlazingMQ nodes. And this is -exactly what has been done! BlazingMQ C++ client library has been updated to -contain a retransmission buffer, generate *GUID*s and support -*StopRequest*/*StopResponse* work flow. More details about it can be found in -[this](../high_availability_sdk) article. - ---- - -## Conclusion - -Addition of high availability support in BlazingMQ has undoubtedly improved -BlazingMQ user experience and has helped provide uninterrupted service to users -in case of transient issues in BlazingMQ back-end, including network and -hardware. Applications can rely on BlazingMQ to buffer and retry messages -seamlessly. Additionally, BlazingMQ nodes can be restarted at any time without -service interruption, which helps BlazingMQ maintainers during software -upgrades, machine or network maintenance, etc. - ---- diff --git a/docs/docs/architecture/high_availability_sdk.md b/docs/docs/architecture/high_availability_sdk.md deleted file mode 100644 index b2923e9c1..000000000 --- a/docs/docs/architecture/high_availability_sdk.md +++ /dev/null @@ -1,178 +0,0 @@ ---- -layout: default -title: High Availability in Client Libraries -parent: Architecture -nav_order: 5 ---- - -# High Availability in Client Libraries -{: .no_toc } - -* toc -{:toc} - -## Introduction - -This article introduces readers to the notion of high availability ("HA") in -BlazingMQ client libraries (also referred to as SDKs). We will see how high -availability in client libraries helps users write simpler applications than -before, while protecting applications from transient issues in the BlazingMQ -back-end, network issues, etc. - -High availability in client libraries complements [*High Availability in -BlazingMQ Back-end*](../high_availability), and they work together to provide a -seamless experience to BlazingMQ applications in case of framework crashes, -machine issue, network faults, etc. - ---- - -## Motivation - -Looking at BlazingMQ's [network topology](../network_topology), one can see -that there are several points of failure along the *producer -> primary node* -as well as *primary node -> consumer* paths: - -1. Links between proxy and cluster nodes can go down - -2. Links among cluster nodes can go down - -3. Any number of nodes in the cluster can crash - -4. Links between applications and proxies can go down (as a result of proxy - crash etc). - -Any of these events disrupt data flow and can impact applications. As a result -of HA in BlazingMQ back-end, applications are protected from events in 1-3 -(readers can refer to [HA in BlazingMQ back-end](../high_availability) article -for more details). - -However, event (4) can still impact applications. If BlazingMQ node to which -applications are connected to (typically referred as "BlazingMQ proxy" or -"local BlazingMQ proxy") goes down, applications can notice this behavior: - -1. Producer application will get an error when attempting to post a *PUT* - message - -2. Consumer application will get an error which attempting to confirm a - message - -3. Producer or consumer application will get an error when attempting to: - - open a new queue - - configure an existing queue - - close a queue - -Any of these events can be very disruptive for applications and they need to -implement a non-trivial state machine to handle scenarios where new work needs -to be submitted to BlazingMQ, but SDK is not connected to BlazingMQ proxy. -Lets take the example of a producer application and see how it gets affected: - -- A producer application needs to start buffering any *PUT* messages while - connection with BlazingMQ proxy is down, and then transmit them once - connectivity with BlazingMQ is reestablished. - -- Additionally, status of pending *PUT* messages (messages for which *ACK*s - were not received before connection with BlazingMQ went down) becomes - unknown. They may or may not have reached the BlazingMQ queue. Due to this - ambiguity, prior to HA work, BlazingMQ SDK would generate negative *ACK*s for - such *PUT* messages with `status = UNKNOWN`, indicating to the producer - application that the message may or may not have made it to the queue. Some - applications could choose to retransmit such *PUT* messages upon - reconnectivity, with the possibility that same message could now appear in - the queue twice. It is worth noting that the two copies of this message - would have different Message GUIDs assigned to them, making it further - challenging for consumer applications to deduplicate such copies. - ---- - -## Design - -Just like high availability in BlazingMQ back-end, all cases described above can -be solved by buffering any work submitted to the SDK when connectivity is down, -and transmitting buffered work and retransmitting any pending work upon -reconnection. HA in BlazingMQ SDK takes the same approach. Specifically: - -1. All *PUT* messages which are submitted by producer application are buffered - by the SDK in a collection, irrespective of the state of connectivity with - BlazingMQ back-end. This means that once the queue has been successfully - opened by the producer application, it can continue to post *PUT* messages - without worrying about connection's status. This is one of the most - important changes in the behavior of the SDK. Previously, producer - application would get a `NOT_CONNECTED` error code from the API when - attempting to post *PUT* message during disconnection, and would need to - buffer such *PUT* messages. This is no longer required. - -2. In addition, SDK now generates and assigns a unique `bmqt::MessageGUID` to - every *PUT* message submitted by the application. Prior to HA in SDK, GUIDs - were assigned by the first BlazingMQ back-end (hop closest to the producer - application, typically the local BlazingMQ proxy). Motivation for this - change will be explained shortly. - -3. Upon receiving *ACK* message from BlazingMQ, SDK removes the corresponding - *PUT* message from the collection mentioned in (1) above, since that *PUT* - message is no longer pending (unacknowledged). - -4. When connection with BlazingMQ proxy is down, any new *PUT* messages - submitted by the application will continue to be buffered in the collection - in (1). - -5. Once the connection is restored and all queues are reopened, all *PUT* - messages in the collection are transmitted to BlazingMQ back-end. It is - important to note that some of these *PUT* message could have been sent to - BlazingMQ back-end prior to connection drop and SDK was waiting for *ACK*s - for them. Moreover, some of these *PUT* messages could have been accepted - by BlazingMQ queue. Such *PUT* messages will be seamlessly deduped by - BlazingMQ back-end, because BlazingMQ primary node maintains a history of - *MessageGUIDs* seen in the last few minutes (configurable), and if a *PUT* - message arrives on the queue with a *GUID* which exists in the historical - list of *GUID*s, it is simply acknowledged back without being added to the - queue. This ensures that producer application does not see any error, and - only one copy of the message appears in the queue. For this logic to work - correctly, it is important that the source (SDK) itself generates and - assigns a *GUID* to every *PUT* message, as discussed in (2) above. - -6. Unlike *PUT* messages, *CONFIRM* messages will not be buffered by the SDK if - connection to BlazingMQ proxy is down. While this may seem inconsistent, - there is a good reason for this behavior -- very often, there are multiple - consumers attached to a queue. If a BlazingMQ node loses route to the - consumer which is processing *PUSH* messages and sending *CONFIRM*s, it is - extremely likely that the BlazingMQ node will pick another consumer on a - different route and start delivering those unconfirmed *PUSH* messages to - the new consumer immediately. As such, even if original consumer buffers - *CONFIRM* messages when it is disconnected to BlazingMQ proxy and transmits - them upon reconnection, those *CONFIRM* messages will simply be ignored by - BlazingMQ primary node as they are stale, and those *PUSH* messages will get - processed twice -- once by original consumer and then by new consumer. Note - that this behavior is within contract, as BlazingMQ provides *at least once* - delivery guarantee by design. We do have some ideas to minimize such - duplicate *PUSH* messages, and we may work on it in the near future. - -7. *OpenQueue* and *ConfigureQueue* requests will be buffered during - disconnection and transmitted upon reconnection. Additionally, if a request - is pending while connection goes down, it will not be failed, but instead - seamlessly resent upon reconnection. - -8. Lastly, *CloseQueue* request is not buffered during disconnection. Queue is - simply marked as closed in the SDK and a response is generated locally. - Upon reconnection, this queue is not reopened, effectively leaving the queue - in the closed state. - -### TCP High Watermark Handling - -Prior to HA logic in SDK, if TCP connection between SDK and BlazingMQ proxy is -flow-controlled such that SDK receives a push back from TCP socket when -attempting to send something, the SDK would buffer messages up to a certain -limit (typically 128MB), and any attempt to send messages beyond that limit -would return `BW_LIMIT` (*Bandwidth Limit*) error to the application, and in -some cases, would simply drop the TCP connection. - -This is no longer the case. SDK will continue to accept messages from the -application even when it is getting a push back from TCP socket, and instead of -enforcing a size limit, it now enforces a time limit of 5 seconds -(non-configurable, hard-coded in the SDK) for the TCP channel to be "open" -again. After this time interval, if TCP channel is still flow-controlled, SDK -will return `BW_LIMIT` error to the application. It is important to note that -the wait for this time interval occurs in the application thread which calls -the SDK API to send message. This is done to ensure that the push back -indicated by TCP layer is exposed all the way back to the application. - ---- diff --git a/docs/docs/architecture/index.md b/docs/docs/architecture/index.md deleted file mode 100644 index 0d1ff0a35..000000000 --- a/docs/docs/architecture/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: default -title: Architecture -nav_order: 5 -has_children: true -permalink: /architecture ---- - -# [](#architecture)Architecture diff --git a/docs/docs/architecture/network_topology.md b/docs/docs/architecture/network_topology.md deleted file mode 100644 index 976f9ea12..000000000 --- a/docs/docs/architecture/network_topology.md +++ /dev/null @@ -1,145 +0,0 @@ ---- -layout: default -title: Network Topology -parent: Architecture -nav_order: 3 ---- - -# BlazingMQ Network Topology -{: .no_toc } - -* toc -{:toc} - -## Introduction - -This document introduces readers to BlazingMQ's network topology and describes -how its unique topology enables BlazingMQ to provide flexible deployments, high -bandwidth savings and very high fan-out ratio (10,000+ and beyond). - ---- - -## Network Topology - -As seen in the [*Clustering*](../clustering#clustering) section of another -article, a BlazingMQ setup can be deployed in a typical or an alternative -topology. - -![Typical Deployment](../../../assets/images/TypicalDeployment.png "Typical BlazingMQ Deployment") - -The above figure shows a typical deployment of BlazingMQ. The four nodes in -the middle represent a BlazingMQ cluster. The blue node in the cluster -represents a queue’s primary node, while the orange nodes represent -replicas. Producer/consumer applications can connect to any node in the -BlazingMQ cluster instead of always requiring to connect to the primary node. - -![Alternative Deployment](../../../assets/images/AlternativeDeployment.png "Alternative BlazingMQ Deployment") - -Above figure shows an alternate deployment of BlazingMQ. As can be seen, -applications (green nodes) connect to local BlazingMQ agents (yellow nodes), -which then connect to any node in the BlazingMQ cluster. These local BlazingMQ -agents are known as proxies and are optional in a BlazingMQ deployment. - -An important conclusion can be made from above -- client applications don't -need to directly connect to a queue's primary, and there can be any number of -hops between an application and the primary node. This leads to an interesting -design in BlazingMQ as discussed in the next section. - ---- - -## Distribution Tree - -There is another more generic way to redraw the above two figures for a given -queue: - -![Distribution Tree](../../../assets/images/tree1.png) - -In the above figure, blue node is queue's primary, orange nodes are the -replicas, yellow nodes are proxies and green nodes are client applications. As -mentioned previously, the case of producers is simple, so we will assume that -all green nodes are consumer applications. - -As can be seen from the figure, for every queue, BlazingMQ builds a -distribution tree rooted at queue's primary node, and as new links are -established or existing links are torn down due to nodes (primary, replica, -proxy, application) starting or stopping, BlazingMQ readjusts the routes in the -affected sub-tree as necessary. This readjustment of routes occurs dynamically --- every node at a given level attempts to establish a healthy connection with -at least one node from the upper level. - ---- - -## Message Flow in the Distribution Tree - -An interesting feature of the topology shown in the previous figure is that it -optimizes message flow for queues in fan-out and broadcast modes. Consider -this setup: - -![Distribution Tree for Broadcast Queue](../../../assets/images/tree2.png) - -In this figure, there are hundreds of consumers for a broadcast queue. In the -absence of a distribution tree, all consumers would connect directly with the -primary node, which would then need to carry out the fan-out to all those -consumers by itself. While this approach works up to a certain number of -consumers (as well as the traffic rate), it does not scale well. After a -certain threshold, primary node's network gets saturated and/or consumers start -seeing higher latency. - -In a distribution tree, however, the primary node (and in fact, every -intermediate node) carry out a fan-out to only a handful of nodes connected to -it from the lower level, thereby ensuring a message is disseminated to all -consumers in an efficient way. This approach effectively implements -application level multicast (note that we are using the term 'multicast' in a -logical sense; all communication occurs over TCP). - -This topology ensures that BlazingMQ can achieve very high (theoretically -infinite) fan-out ratio. If at any time, we notice that the fan-out ratio is -putting pressure on bandwidth or latency for nodes in particular level (yellow -nodes), we can simply add another level of nodes (gray nodes) below the -affected level in the tree, thereby reducing the fan-out ratio at all nodes in -the affected level. - -This tree-based topology has been very successful at Bloomberg for supporting -applications which demand very large number of consumers for a queue in fan-out -or broadcast mode. BlazingMQ's topology provides tremendous bandwidth saving -in such scenarios, and also helps cut down the latency of message delivery to -consumers, as each node has to do minimal fan-out of a message. - -This approach is used to run queues with over 6,000 consumers in some Bloomberg -production environments. - -Another benefit of a tree based architecture is efficient fail-overs. Imagine -a scenario where primary node crashes or goes down gracefully. In the approach -where all producer and consumer applications are connecting directly to the -primary, they will now fail over to the new primary, and the new primary will -see a deluge of incoming connections and requests (thousands or more). This -can slow down the fail over process and introduce undesirable latency for -applications. In the case of BlazingMQ's tree based approach, fail overs are -very fast as only the affected sub-tree needs readjustment. So in the scenario -where primary node crashes, the new primary receives fail over requests only -from the replica nodes and the nodes connected to it from one level below, -instead of thousands of requests from all producer and consumer applications. - -A question that may arise in this setup is the effect of multi-hop architecture -on message latency. Since a message has to travel through several hops, -additional latency is unavoidable. In most set ups, BlazingMQ provides an end -to end median latency in single digit milliseconds. Ultimately, it comes down -to carrying out end to end benchmarking in a production-like setup, reviewing -the latency and bandwidth numbers, and then adjusting number of consumers or -number of levels in the tree. - ---- - -## Conclusion - -The distribution tree based approach works very well for certain high fan-out -use cases. While this approach comes at the cost of additional deployment -footprint, it makes up for that by leading to network bandwidth savings for -high traffic and high fan-out queues. - -How BlazingMQ manages to prevent or minimize disruption in message flow for -applications in distribution tree like topology is an interesting topic. -Please see [this](../high_availability) article for details about BlazingMQ's -high availability design. - ---- diff --git a/docs/docs/architecture/network_transport.md b/docs/docs/architecture/network_transport.md deleted file mode 100644 index 871b9ec13..000000000 --- a/docs/docs/architecture/network_transport.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: default -title: Network Transport -parent: Architecture -nav_order: 7 ---- - -# Network Transport in BlazingMQ -{: .no_toc } - -* toc -{:toc} - -This article provides brief overview of the network transport layer of -BlazingMQ. - -## Transport Type - -BlazingMQ exclusively uses TCP for all communication within the cluster as well -as with clients. TCP provides nice properties of ordering and retransmissions -of packets, which makes the implementation of networking logic simpler in -BlazingMQ. - -## Transport Library - -Instead of implementing various low level network building blocks from scratch, -BlazingMQ leverages Bloomberg's [Network Transport -Framework](https://github.com/bloomberg/ntf-core), which was published as open -source in March 2023. NTF enables BlazingMQ to implement non-blocking -asynchronous network I/O in an efficient manner. In the words of its authors: - -*"The Network Transport Framework (NTF) is an open-source collection of -libraries for asynchronous network programming for scalable, high-performance -applications.* - -*In general, NTF provides building blocks and higher-level abstractions for -asynchronously sending and receiving data between processes. More specifically, -NTF provides an abstraction around the differences in the native networking -APIs offered by the supported operating system, and introduces many useful -features commonly required by networked applications. The principle feature of -the sockets of this library is the introduction of virtual send and receive -queues, which provide a message-oriented, thread-safe (concurrent), send and -receive API for sockets using transports with either datagram semantics or -stream semantics. Additionally, these virtual queues allow users to operate -sockets both reactively (i.e. in the Unix readiness model) or proactively -(i.e. in the Windows I/O completion model), regardless of the operating system -and interface to that operating system (e.g. select, kqueue, epoll, io_uring, -I/O completion ports etc.) NTF supports both stream sockets using TCP and -datagram sockets using UDP communicating over either IPv4 or IPv6 networks. NTF -also supports local (aka Unix) domain sockets for efficiently communicating -between processes on the same machine.* - -*The mechanisms in NTF are scalable, efficient, and multi-threaded. Its -libraries are intended for applications needing to manage anywhere from a -single socket to many thousands of simultaneous sockets."* - -### Transport Abstraction - - In its implementation, BlazingMQ abstracts the transport by using -[`bmqio`](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqio/bmqio_channel.h) -interface, which enables BlazingMQ to plug in any implementation which conforms -to it. In fact, BlazingMQ was using a legacy network transport library instead -of NTF some time back. We have also experimented with plugging in -[`boost::asio`](https://www.boost.org/doc/libs/1_82_0/doc/html/boost_asio.html) -as the transport implementation, and using it or another implementation remains -a future possibility. - -## Wire Protocol - -BlazingMQ uses a custom wire protocol over TCP, the details of which can be -found in -[this](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqp/bmqp_protocol.h) -header file. There were four guiding principles when this protocol was -designed: - -- *Compactness*: The protocol should have minimal overhead. - -- *Forward and backward compatibility*: The protocol should be easily - extensible while remaining backward compatible. - -- *Batching*: The protocol should support batching of messages wherever - possible. - -- *Efficiency*: The protocol should avoid encoding/decoding overhead for - frequent messages, while still taking into consideration concerns like - endianness, etc. - -Additionally, several components in the -[`bmqp`](https://github.com/bloomberg/blazingmq/tree/main/src/groups/bmq/bmqp) -package provide utilities to build and parse network packets conforming to the -wire protocol. - ---- diff --git a/docs/docs/community/index.md b/docs/docs/community/index.md deleted file mode 100644 index a86facb30..000000000 --- a/docs/docs/community/index.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: default -title: Community -nav_order: 10 -has_children: false -permalink: /community ---- - -# [](#community)Community -{: .no_toc } - -* toc -{:toc} - -Here is a list of community blogposts about BlazingMQ, tools that integrate -with BlazingMQ, and other external projects using BlazingMQ. We haven’t -looked through all of these, so they may be out-of-date or may not work -anymore. Still, you may find inspiration from some of these resources. - -We’re looking to grow this list, so please [get in touch with us][get-in-touch] -if you have written about or used BlazingMQ in your project. Better yet, [edit -this page][edit-this-page] and then [send us a PR][contributing-guidelines]! - -## Blogposts - - - Andy Pearce’s series of blogposts on the features and architecture of - BlazingMQ: [BlazingMQ: Introduction][andy-pearce-introduction] and - [BlazingMQ: Clustering and Message Flow][andy-pearce-clustering-message-flow]. - -[andy-pearce-clustering-message-flow]: https://www.andy-pearce.com/blog/posts/2024/Jul/blazingmq-clustering-and-message-flow/ -[andy-pearce-introduction]: https://www.andy-pearce.com/blog/posts/2024/Jun/blazingmq-introduction/ -[contributing-guidelines]: https://github.com/bloomberg/.github/blob/main/CONTRIBUTING.md -[edit-this-page]: https://github.com/bloomberg/blazingmq/edit/main/docs/docs/community/index.md -[get-in-touch]: https://github.com/bloomberg/blazingmq/discussions diff --git a/docs/docs/contributions/index.md b/docs/docs/contributions/index.md deleted file mode 100644 index 934727de7..000000000 --- a/docs/docs/contributions/index.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default -title: Contributions -nav_order: 9 -has_children: false -permalink: /contributions ---- - -# [](#contributions)Contributions - -{: .no_toc } - -We welcome your contributions to help us improve and extend BlazingMQ! - -We welcome issue reports [here](https://github.com/bloomberg/blazingmq/issues); -be sure to choose the proper issue template for your issue, so that we can be -sure you're providing the necessary information. - -Before sending a [Pull Request](https://github.com/bloomberg/blazingmq/pulls), -please make sure you read our [Contribution -Guidelines](https://github.com/bloomberg/.github/blob/main/CONTRIBUTING.md). diff --git a/docs/docs/faqs/faq_general.md b/docs/docs/faqs/faq_general.md deleted file mode 100644 index c733ef987..000000000 --- a/docs/docs/faqs/faq_general.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -layout: default -title: General FAQs -parent: FAQs -nav_order: 2 ---- - -# General FAQs - -## What platforms are supported by BlazingMQ? - -BlazingMQ can run on Linux and Solaris operating systems. The minimum -required versions of these operating systems are as follows: - -| Operating System | Version | -| ---------------- | ------- | -| Linux | 3.10.0 | -| Solaris | 5.11 | - -Any operating system not listed above, or any operating system listed but with -a version less than the minimum specified version is not supported. - -For development, BlazingMQ can also be built on Darwin, though production usage -on Darwin is not supported. - -BlazingMQ message broker and C++ client library requires the following minimum -compiler versions. Any compiler not listed, or any compiler listed but with a -version less than the minimum specified version is not supported. - -| Compiler | Version | -| -------- | ------- | -| GCC | 7.3 | -| clang | 10.0.1 | -| Solaris Studio | 5.13 | - -BlazingMQ message broker and C++ client library require the C++03 version of -the C++ language standard, or any version above it. - -BlazingMQ Java client library is supported on JDK 8, JDK 11 and JDK 17. - ---- - -## In what languages are BlazingMQ client libraries available? - -BlazingMQ client libraries are available in C++, Java and Python. C++ and Java -client libraries are available in the initial open source release, and Python -client library will follow soon. - ---- - -## How do I get started with BlazingMQ? - -[This](../../getting_started/blazingmq_in_action) article is a good starting -point to set up a local BlazingMQ environment and play around with it. - ---- - -## Does BlazingMQ provide guaranteed message delivery? - -When a producer application posts a message on a BlazingMQ queue, BlazingMQ -guarantees that it will either reliably accept the message or reliably inform -the producer that it failed to do so. - -Above statement may come as a surprise to some readers, but the fact is that no -framework can guarantee 100% success for its APIs. BlazingMQ may refuse to -accept a new message in a queue for various reasons like queue storage quota -getting full, a long running network outage, etc. - -To summarize, BlazingMQ provides these guarantees: - -- It will always notify the producer of the result of a *post* operation. The - result can be a failure in some rare scenarios due to reasons mentioned - above. - -- Once a message has been accepted by BlazingMQ, it is guaranteed to be - delivered to consumer application(s), as long as the message is not - garbage-collected by BlazingMQ due to message's *TTL* expiration. - ---- - -## Can the same message be delivered more than once to consumer(s)? - -Yes. BlazingMQ provides *at-least-once* delivery guarantee. BlazingMQ can -send a message more than once to the same or different consumer. This never -occurs in steady state but can occur in these scenarios: - -- A consumer crashes without confirming a message -- A node in BlazingMQ back-end crashes -- A node in BlazingMQ back-end restarts gracefully - -A consumer application must be able to handle duplicate delivery. - ---- - -## Do queues need to be created or declared upfront in BlazingMQ? - -No. Applications don't need to bother with creating or deleting queues. Once -they have registered their BlazingMQ namespace ("domain") with the BlazingMQ -cluster, their applications can simply open a queue (via the `openQueue` API) -and BlazingMQ will automatically create the queue if it does not exist. - -Similarly, once a queue is empty and there are no producers and consumers -attached to the queue, BlazingMQ will garbage-collect the queue automatically -after a period of inactivity. - ---- - -## How many queues can I create under my BlazingMQ namespace? - -As mentioned above, a queue is created automatically by BlazingMQ when it is -opened for the first time by applications. The representation of a queue in -BlazingMQ cluster is very cheap and one can create tens of thousands of queues -in their BlazingMQ namespace. However, having tens of thousands of queues can -make events like application restart, BlazingMQ node restart or fail-over take -longer than usual (up to 10 seconds). This is because as part of fail-over -operation, all those queues may need to be opened again, and routes for all the -applications using those queues may need to be re-established. - -Additionally, having tens of thousands of queues may make troubleshooting -extremely difficult as events across all those queues will be interspersed with -each other. - -Quite often, the need for having thousands of queues can be eliminated by -application level sharding -- grouping some streams together into one queue, -thereby reducing number of queues from thousands to hundreds or tens. - -Having said that, some BlazingMQ namespaces have several thousands of queues. - ---- - -## How does BlazingMQ compare to RabbitMQ and Apache Kafka? - -An article comparing these three frameworks can be found -[here](../../introduction/comparison). - ---- - -## Where can I find performance numbers for BlazingMQ? - -Details about BlazingMQ latency numbers can be found in -[this](../../performance/benchmarks) article. - ---- - -## How do I configure and deploy a BlazingMQ message broker, cluster or domain? - -Details about configuration and deployment can be found -[here](../../../installation). - ---- diff --git a/docs/docs/faqs/faq_programming.md b/docs/docs/faqs/faq_programming.md deleted file mode 100644 index 2ca3d7138..000000000 --- a/docs/docs/faqs/faq_programming.md +++ /dev/null @@ -1,239 +0,0 @@ ---- -layout: default -title: Programming FAQs -parent: FAQs -nav_order: 3 ---- - -# Programming FAQs - -## Where is the reference documentation for BlazingMQ APIs? - -C++ SDK documentation can be found -[here](../../apidocs/cpp_apidocs/index.html). - -Java SDK documentation can be found -[here](../../apidocs/java_apidocs/index.html). - ---- - -## What are the different modes in which a queue can be opened? - -A queue can be opened in *READ* mode, *WRITE* mode or *READ|WRITE* mode which -are self-explanatory. If *WRITE* mode is specified, additional `e_ACK` flag -can also be specified while opening the queue. - ---- - -## What's the purpose of correlation ID in BlazingMQ C++ and Java APIs? - -When using BlazingMQ C++ or Java SDK, applications can receive events -asynchronously. In order to enable applications to identify these events -efficiently, each user action which can result in the delivery of an -asynchronous event to the application takes an ID. For example, when opening a -queue, the application needs to specify a `bmqt::CorrelationID` to the -`bmqa::QueueId` instance, so that the open-queue result via -`bmqa::SessionEventHandler::onSessionEvent` can be correlated with the -open-queue request. Another example is posting a message: the application -can specify a correlation ID when posting a message, so that message's -acknowledgement status can be correlated to the message. - -A correlation ID can be used as a key in associative containers, and can be -used to retrieve some context needed to process the asynchronous event. For -example, if a consumer application has opened multiple queues, upon receiving a -message, it can retrieve the correlation ID of the queue containing the message -via `bmqa::Message::QueueId`, followed by a call to -`bmqa::QueueId::correlationId`, and use that correlation ID to retrieve that -queue's context, which may include things like the message processing callback -for that queue, etc. - ---- - -## Does Correlation ID need to be unique every time I specify it? - -Yes, so that every asynchronous event can be uniquely identified by the -application. Note that it needs to be unique *only* within the context of a -`bmqa::Session` instance, not across your entire application ecosystem. - ---- - -## What does the e_ACK flag mean in `bmqa::Session::openQueue*` APIs? Do I need to specify a correlation ID every time? - -[*Correlation ID*](../../apidocs/cpp_apidocs/group__bmqt__correlationid.html) -is an identifier specified by the producer in a *PUT* message to correlate an -*ACK* message sent by the broker in response to that *PUT* message. An *ACK* -message notifies the producer that the corresponding *PUT* message has been -accepted by the broker (success) or rejected (failure; due to the queue being -full, long running network issue, etc). - -If a producer has specified the `e_ACK` flag while opening the queue, then it -*must* specify a correlation ID for each message. If the producer attempts to -build a message without a correlation ID, -[`bmqa::MessageEventBuilder::packMessage`](../../apidocs/cpp_apidocs/classbmqa_1_1MessageEventBuilder.html#a101f3eea6233a4ff2b78b6b8072e3c50) -will return -[`bmqt::EventBuilderResult::e_MISSING_CORRELATION_ID`](../../apidocs/cpp_apidocs/structbmqt_1_1EventBuilderResult.html#a04d8f1ec70faff7c9dce79d82c14844ca056766d02f68b50ea998c4a4a6490ad3). -In other words, the SDK ensures that the application specifies a correlation ID -for each message. - -If the producer has not specified the `e_ACK` flag while opening the queue, -specifying correlation ID in a *PUT* message is optional. The general idea is -that if an application considers a particular message important and wants to -ensure that broker has accepted that message, it can specify a correlation ID, -so that the broker sends an *ACK* message (with success/failure status) for -that message. - -A critical application which needs to keep track of the status of every message -that was posted to the queue should specify a correlation ID for each message, -and should also specify the `e_ACK` flag while opening the queue in order to -ensure that no message without a correlation ID is accidentally posted to the -queue. - ---- - -## When does a producer application get ACK messages? - -A broker will send an *ACK* message to the producer for each message that the -producer posted with a correlation ID, irrespective of an `e_ACK` flag provided -by the producer while opening the queue. -For domains configured with [strong consistency](../docs/features/consistency_levels/#strong-consistency), the broker only sends an *ACK* once -the message has been replicated to a quorum number of nodes. - ---- - -## What is an *Event Queue*? I see references to it in my BlazingMQ application logs. - -Messages received by the BlazingMQ client library from a BlazingMQ broker are -processed in an internal thread, and then enqueued in a buffer known as an -*Event Queue* to be dispatched to an application in the BlazingMQ SDK's event -handler thread. The *Event Queue* is just an in-memory inbound buffer, and is -in *no* way related to the BlazingMQ queue, which is hosted on the BlazingMQ -cluster. - -Various events like *ACK*, *PUSH*, responses, etc. are popped off from the -event queue and delivered to the application in the BlazingMQ SDK's event -handler thread, in methods like `bmqa::Session:onSessionEvent` and -`bmqa::Session::onMessageEvent`. If the application carries out expensive -business logic in these methods, the event handler thread will not be able to -pop off events from the event queue in a timely manner, thereby leading to the -growth of the event queue as new events are sent by BlazingMQ broker. - -In such cases, if the length of the event queue grows beyond the configured -high-watermark value, the SDK will emit an `e_SLOWCONSUMER_HIGHWATERMARK` event -as a warning to the application. - -The `SessionOptions` parameters `eventQueueLowWatermark` and -`eventQueueHighWatermark` can be used to configure high and low watermarks for -the event queue. - -If an application repeatedly encounters `e_SLOWCONSUMER_HIGHWATERMARK` event, -it is likely an indication that the application is slow at processing events or -needs to carry out processing of events in a thread different from BlazingMQ's -event handler thread (a thread pool, etc). Additionally, the application can -also bump up the value of `eventQueueHighWatermark` to a higher value, but it -should be done cautiously because doing so may potentially hide slowness in the -application. - ---- - -## I don't want BlazingMQ to push all messages to my consumer at once. How can I implement flow control? - -Flow control can be easily enforced by a consumer application by specifying -appropriate values in the -[`bmqt::QueueOptions`](../../apidocs/cpp_apidocs/classbmqt_1_1QueueOptions.html) -parameter when opening or configuring a queue. - -`bmqt::QueueOptions` contains two variables which are pertinent to flow -control: `MaxUnconfirmedMessages` and `MaxUnconfirmedBytes`. The former -determines the maximum number of messages that the broker can deliver to the -consumer for that queue, without having the consumer confirm them. The latter -determines the same for maximum number of bytes. If any of these values are -reached for a consumer, the broker will not send any new messages until the -consumer confirms some of the messages. Such a consumer is said to have -reached its capacity. - -In the meantime, messages will remain safely in the broker and may be -distributed to other consumers if applicable. - -Note that the flow control parameters can be changed at any time by the -consumer using the `configureQueue` API. This can be very useful for -consumers. At interesting use of the `configureQueue` API is that consumers -can tell BlazingMQ to not send them any more messages by specifying a value of -zero for both `MaxUnconfirmedMessages` and `MaxUnconfirmedBytes`. - -Additionally, consumers can specify a value of 1 for `MaxUnconfirmedMessages` -in the `openQueue` or `configureQueue` APIs which will ensure that BlazingMQ -will send only one message at a time to the consumers. This can be useful for -consumers where each message represents a heavy job and can run for hours. - -While it is okay for consumers to reach capacity on some occasions, they must -not stay in that state forever. This would cause the queue to fill up and -eventually reach its quota, which leads to new messages being rejected by -BlazingMQ and the producer receiving failed *ACK* messages. BlazingMQ raises -several alarms in the scenario of stuck consumers and queues getting full. - ---- - -## When does BlazingMQ redeliver a message to another consumer? - -In general, as far as BlazingMQ is concerned, once a message has been delivered -to the consumer, it is 'processing' it, and BlazingMQ does not make any -assumption about how long the processing step should take. However, BlazingMQ -redelivers a message to another consumer, if available, in *any* of these -conditions: - -- The original consumer crashes without confirming the message -- The original consumer closes the queue without confirming the message -- The original consumer stops BlazingMQ session without confirming the message -- The TCP connection between original consumer and broker drops due to network - issue - ---- - -## Can I open multiple queues from one `bmqa::Session` object? - -Yes. Any number of queues can be opened from one `bmqa::Session` object, and -creating multiple queues per session object is the recommended approach, -instead of creating one `bmqa::Session` object per queue. - ---- - -## Should I open and close a queue repeatedly in my application? - -No! The recommended approach is to open the queue when the application starts -(or needs it first), and then keep the queue open until it is no longer needed. -An application must not open and close a queue within a span of a few seconds ( -or even a few minutes). Particularly, applications must not open a queue, post -a message, close the queue right away, and then repeat this pattern. A queue -can be thought of as an equivalent to a database handle, which should not be -acquired and released repeatedly. - -While the representation of a queue in a BlazingMQ cluster is cheap, the -creation, opening and closing of a queue are expensive operations. Creation of -a queue requires consensus among nodes of the BlazingMQ cluster, and opening -and closing of a queue require 2 sets of requests and responses along the route -of the application and the queue's primary node. One can see how opening and -closing a queue repeatedly in a short span of time may keep the BlazingMQ -cluster unnecessarily busy. - ---- - -## Can the `openQueue` API fail? - -Yes, it can fail, due to any of the reasons listed below: - -- An application attempts to open a queue for a namespace (BlazingMQ domain) - which is not yet registered. - -- An application attempts to open a queue for a BlazingMQ domain from a machine - which is not configured for that BlazingMQ domain. - -- A bad configuration deployed in BlazingMQ back-end (rare, but has non-zero - probability). - -- A long-standing network issue leads to a connection failure between the - application and the BlazingMQ back-end, or within various BlazingMQ nodes in - the back-end (rare, but has non-zero probability). - -- A bug in the BlazingMQ back-end - ---- diff --git a/docs/docs/faqs/index.md b/docs/docs/faqs/index.md deleted file mode 100644 index ceb6d0a44..000000000 --- a/docs/docs/faqs/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: default -title: FAQs -nav_order: 4 -has_children: true -permalink: /faqs ---- - -# [](#faqs)FAQs diff --git a/docs/docs/features/compression.md b/docs/docs/features/compression.md deleted file mode 100644 index 756b67a6a..000000000 --- a/docs/docs/features/compression.md +++ /dev/null @@ -1,181 +0,0 @@ ---- -layout: default -title: Compression -parent: Features -nav_order: 5 ---- - -# Compression -{: .no_toc } - -* toc -{:toc} - -## Summary - -* Producer applications can indicate to the BlazingMQ SDK to compress a - message. BlazingMQ SDK will compress the message payload before sending - it to the BlazingMQ back-end. - -* On the consumer side, upon receiving a compressed message, BlazingMQ SDK will - seamlessly decompress it before presenting it to the application layer. - -* The BlazingMQ broker is not involved in the compression/decompression of the - message. - ---- - -## Pros & Cons - -### Pros - -* *Reduced Network I/O:* A compressed message will lead to less data being sent - over the network, thereby reducing transit latency as well as network - bandwidth usage. Depending upon the nature of the message, compression can - reduce the message size up to one-third of the original. - -* *Reduced Storage Quota:* A compressed message will lead to reduced usage of - disk as well as BlazingMQ domain quota. This means that applications will be - able to store more messages with the same quota. In certain scenarios, it - can also help the BlazingMQ back-end, particularly in storage replication and - synchronization. For *in-memory* queues, compressed messages will also help - bring down the BlazingMQ broker's memory consumption. - -### Cons - -* *Higher CPU Usage:* There are no free lunches in life! The above mentioned - advantages come at the cost of additional CPU cycles in the producer and - consumers applications (note that BlazingMQ back-end does not decompress - messages). - -* *Potentially Higher Latency:* Since producers compress messages, and - consumers decompress messages, there will be some additional latency overhead - involved in end-to-end message processing. This latency may or may not be - higher than the gains obtained in the transit and storage replication latency - mentioned above. As always, latency-sensitive applications must carry out - careful end-to-end benchmarking with production-like traffic. - ---- - -## General Guidelines for Enabling Compression - -* Compression is useful for scenarios where the message payload contains textual - data of around 1KB or more. In our benchmarks where messages contained randomly - generated strings, we found meaningful gains when the message length was more - than 1KB. - -* Producers should not enable compression in BlazingMQ SDK if message is - already compressed. - ---- - -## Implementation Notes - -### API and Sample Producer Snippet -{:.no_toc} - -In order to enable compression for a message, producers can use the newly added -API: - -* C++: `bmqa::Message::setCompressionAlgorithmType` -* Java: `PutMessage::setCompressionAlgorithm` - -Sample C++ snippet: - -```c++ - -// (Unrelated details omitted for brevity) - -// Create message instance. -bmqa::Message& message = builder.startMessage(); - -// Set the compression algorithm type for the message. -message.setCompressionAlgorithmType(bmqt::CompressionAlgorithmType::e_ZLIB); - -// Set message payload. Note that order of invocation of -// 'setCompressionAlgorithmType' and 'setDataRef' does not matter. -message.setDataRef(text.c_str(), text.length()); - -// Add message to the builder. -int rc = builder.packMessage(queueId); - -``` - -### Supported Compression Types -{:.no_toc} - -Currently, the BlazingMQ SDK supports *ZLIB* compression. In the future, -support for additional compression algorithms can be provided as deemed -necessary. - -### *ZLIB* Performance -{:.no_toc} - -In our benchmark tests, we noticed that for strings larger than 1KB and -containing randomly generated alphanumeric characters, *ZLIB* resulted in a -compression ratio of around 1.6. One should expect *ZLIB* to perform even -better in practical scenarios where a message is likely to contain repeated -patterns. - ---- - -## Important Notes - -* Note that enabling compression in a producer application is only a hint to - the BlazingMQ SDK. The SDK may not compress the message if compression's - cost outweighs the benefits. As a rule of thumb, the SDK will generally - ignore the compression hint if message size is less than 1KB, but note that - this is an implementation detail, and must not be relied upon for any - purposes. - -* The BlazingMQ SDK does not enable compression by default. A producer needs - to explicitly enable compression on a message. This may change in subsequent - versions of the SDK. - -* Only the message payload is compressed. Message properties are not - compressed in order to ensure that the BlazingMQ message broker can read the - properties efficiently if needed (for example, properties are read by the - broker for evaluating subscriptions). - -* Consumer applications do not have to worry about detecting compression and - carrying out decompression. The BlazingMQ SDK hides this detail from the - consumer, and always presents a decompressed message to the application. - -* In the producer application, compression is carried out in the user thread - (i.e., the thread which invokes `bmqa::MessageEventBuilder::packMessage` in - C++ and `Queue.post` or `Queue.flush` in Java). - -* On the consumer side: - - - C++ SDK: Decompression is carried out when the application invokes - `bmqa::Message::getData`, which is typically invoked by applications in an - *event-handler* thread in async mode, and in user thread in sync mode (note - that some applications may have a different thread management). - - - Java SDK: Decompression is carried out in an internal SDK thread, which is - different from the *I/O* as well as the *event-handler* thread. - ---- - -## Compression Stats - -A BlazingMQ client can be configured to periodically report various internal -metrics to the application log (this is switched on by default). As part of -every report, these two compression related metrics are logged as part of the -*Queue Stats* section: - -- Average compression ratio for all messages for that queue in the last 300 - seconds (delta). - -- Average compression ratio for all the messages from the beginning (absolute). - -Note that the accumulated size of messages reported in the stats is calculated -from the compressed size of the messages. This, along with -the compression ratio mentioned above, would help consumer applications get an -idea about their actual message sizes as well as the effectiveness of -compression. - -The SDK also reports a final summary of the average compression ratio when the -application is stopped. - ---- diff --git a/docs/docs/features/consistency_levels.md b/docs/docs/features/consistency_levels.md deleted file mode 100644 index c18d3910d..000000000 --- a/docs/docs/features/consistency_levels.md +++ /dev/null @@ -1,138 +0,0 @@ ---- -layout: default -title: Consistency Levels -parent: Features -nav_order: 6 ---- - -# Consistency Levels in Storage Replication -{: .no_toc } - -* toc -{:toc} - -## Introduction - -Distributed systems, particularly distributed data stores, offer different -consistency levels for various operations initiated by clients. The -consistency level of a system defines the ordering and visibility of operations -in the system. - -Knowing the consistency level of a distributed system can help users design -their applications, as well as understand the scenarios in which operations -initiated by them can succeed or fail. - -Several consistency levels exist in the world of distributed systems, but in -the context of messaging systems like BlazingMQ, only two consistency levels -are worth discussing -- *Eventual Consistency* and *Strong Consistency*. The -former is sometimes also referred to as *Weak Consistency*. - -The rest of this section describes eventual and strong consistency levels in -the context of BlazingMQ, compares the two consistency levels and also goes -over some additional considerations, which will help BlazingMQ users choose the -correct level of consistency for their BlazingMQ domains. - ---- - -## Eventual Consistency - -For a queue that is configured with the eventual consistency level in -BlazingMQ, when the primary node of the queue receives a *PUT* message, it -writes the message to its local storage, *asynchronously* sends it to the -replicas, and immediately sends the *ACK* back to the producer application, -without waiting for any confirmation from the replicas. - -This configuration relies on the fact that the message will *eventually* reach -the replicas, which will then apply and store the message in their local -storages respectively. - -Readers may have noticed that there is a chance of message loss in eventual -consistency mode. This can occur when the primary node crashes (or goes down -gracefully) immediately after sending the *ACK* to the producer, but before the -message could be replicated to all or to the majority of the replicas (the -message could still be in the user or kernel space TCP socket buffers). -Additionally, it is also possible for the replicated message to get lost -because of a network split etc, in which case replicas will not receive the -message. This is the risk that comes with eventual consistency. - -However, the latency numbers for eventually consistent queues are very -attractive. Since a primary node performs minimal work between receiving a -*PUT* and sending an *ACK*, the producer application can expect the *ACK* -fairly quickly. Additionally, consumers will also see the corresponding *PUSH* -message earlier, because the primary node sends it right away to the consumer -application, without waiting for acknowledgements from replicas. - -So when choosing an eventual consistency level, BlazingMQ users should know -that while this consistency level will give low latency numbers, there is a -non-zero probability of a message getting lost. - -We recommend using eventual consistency only in exceptional circumstances. - ---- - -## Strong Consistency - -A strong consistency level in BlazingMQ solves the problem of potential message -loss, which can occur in eventual consistency mode as described above. This is -done by ensuring that the primary node waits for acknowledgements (known as -*Replica Receipts* in BlazingMQ lingo) from a sufficient number of replicas -*before* sending *ACK* and *PUSH* messages to the producer and the consumer -applications respectively. - -This ensures that even if the primary node crashes after sending an *ACK* -message, replicas are guaranteed to have the *PUT* message, and as one of the -replicas gets promoted to the role of primary, it will be able to send that -message to the consumer application. - -The number of replicas which must send a receipt to the primary node for a -message to be considered "committed" is derived from the size of the BlazingMQ -cluster. In a cluster having 4 nodes, the primary node will wait for receipts -from 2 replicas, which will ensure that the message ends up in at least 3 nodes -(2 replicas plus 1 primary). Similarly, in a cluster of 6 nodes, the primary -node will wait for receipts from 3 replicas, thereby ensuring that the message -has been stored in at least 4 nodes. Generally speaking, to ensure strong -consistency, BlazingMQ ensures that a total of `N/2 + 1` nodes in the cluster -have recorded the message, where `N` is the total number of nodes in the -cluster. - -While strong consistency provides higher message guarantees, it can come with -some latency overhead. However, we have introduced several optimizations in -the strong consistency implementation in BlazingMQ, and our tests have -indicated that latency numbers for strong consistency are only slightly higher -than the ones for eventual consistency. - -Some of the optimizations in the implementation include: - -- Replicas sending a receipt message to the primary for a batch of messages, - instead of a receipt for every message. - -- Replicas further optimizing the receipt code path by taking into - consideration if the link between the replica and the primary is overloaded, - and trying to conflate the receipt messages. - ---- - -## Other Considerations - -### Timeouts at Primary Node -{:.no_toc} - -Since the primary node waits for replicas to send replication receipts, it is -possible for this operation to time out due to widespread BlazingMQ cluster or -network issues. In such scenario, the primary node will issue a negative *ACK* -with an *UNKNOWN* status to the producer application, and will give up on -delivering this message to the consumer(s). Note that the message can still be -delivered in the scenario where the current primary node goes down and a replica -which received the message (and perhaps even sent its receipt) gets promoted as -the new primary. In such case, the new primary will send the message to the -consumer. Hence the *UNKNOWN* status in negative *ACK*. This timeout is -configurable. - -### Flushing Messages to Disk -{:.no_toc} - -Note that BlazingMQ does not flush messages to disk in either consistency level -before sending an *ACK* to the producer. Instead, it relies on the OS to do so -periodically. - ---- diff --git a/docs/docs/features/consumer_flow_control.md b/docs/docs/features/consumer_flow_control.md deleted file mode 100644 index d3aa045b4..000000000 --- a/docs/docs/features/consumer_flow_control.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: default -title: Consumer Flow Control -parent: Features -nav_order: 7 ---- - -# Consumer Flow Control -{: .no_toc } - -* toc -{:toc} - -BlazingMQ delivers messages to consumer applications using a push model i.e. -BlazingMQ message broker pushes new messages as quickly as possible to the -consumers. In order to ensure that consumers do not get overwhelmed and can -implement flow control, BlazingMQ provide consumer applications APIs to specify -maximum number and/or bytes of messages (or "flow control parameters") that -BlazingMQ broker can send them. Consumers can specify flow control parameters -when they are attaching to a queue via the -[`openQueue`](../../apidocs/cpp_apidocs/classbmqa_1_1Session.html#a7b62b74a9a4d4dd3e24765d6e54e8c9a) -API , and also update them anytime later on via the -[`configureQueue`](../../apidocs/cpp_apidocs/classbmqa_1_1Session.html#af10950d3245e8acf6a4fc4403c7f433a) -API. Flow control parameters are captured in `maxUnconfirmedMessages` and -`maxUnconfirmedBytes` parameters of -[`bmqt::QueueOptions`](../../apidocs/cpp_apidocs/group__bmqt__queueoptions.html). - -Once BlazingMQ has sent the specified number of messages or bytes to the -consumer instance, it will not send any new messages to it, and such consumer -is considered to be "at capacity". Any new messages arriving in the BlazingMQ -queue will stay in the queue and will be delivered to the consumer only when -consumer processes (i.e., confirms) pending messages that were delivered -previously. BlazingMQ keeps track of outstanding messages sent to every -consumer to determine if a consumer instance is at capacity or not. - -As an example, if a consumer instance wants no more than 1,000 messages or 100MB -worth of messages, it can specify that in the flow control API. Specifying the -value of zero of number or bytes of messages leads to effectively pausing the -consumer -- BlazingMQ sees that consumer has no capacity and thus does not -route any messages to it. This can be used by consumer to pause itself -temporarily in case it is not able to process messages for some reason. -Similarly, specifying a value of 1 of number of messages is equivalent to -pulling one message at a time from the queue. - -Lastly, flow control parameters can be specified for every -[subscription](../subscriptions) separately if desired. - ---- diff --git a/docs/docs/features/distributed_trace.md b/docs/docs/features/distributed_trace.md deleted file mode 100644 index 716834648..000000000 --- a/docs/docs/features/distributed_trace.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: default -title: Distributed Trace -parent: Features -nav_order: 8 ---- - -# Distributed Trace -{: .no_toc } - -* toc -{:toc} - -## Introduction - -The BlazingMQ C++ SDK can integrate with any distributed tracing framework for -telemetry purposes. The SDK is not tied to a specific tracing library or -implementation. Instead it provides hooks such that external tracing logic can -be injected. See next section for implementation details. - -If a tracing implementation is provided, the BlazingMQ C++ SDK has the ability -to create spans for control messages sent to the BlazingMQ broker on behalf of -the client. This includes: - -* Session-Start and Session-Stop operations -* Queue-Open, Queue-Close, and Queue-Configure operations - -Future work may also support creating spans for `PUT` and `CONFIRM` messages. - ---- - -## Code Snippet - -### C++ SDK - -Clients may enable Distributed Trace by installing two objects through the -session options: - -- A **context** responsible for defining the "current" span for a thread - -- A **tracer** responsible for creating new spans - -Users can inject their custom distributed tracing logic by providing concrete -implementations for these interfaces: - -- [`bmqpi::DTSpan`](../../apidocs/cpp_apidocs/group__bmqpi__dtspan.html) -- [`bmqpi::DTContext`](../../apidocs/cpp_apidocs/group__bmqpi__dtcontext.html) -- [`bmqpi::DTTracer`](../../apidocs/cpp_apidocs/group__bmqpi__dttracer.html) - -The custom implementation can then be installed through the session options as -shown below. - -```cpp - -// Assuming that `MyDTContext` and `MyDTTracer` are concrete implementations of -// `bmqpi::DTContext` and `bmqpi::DTTracer`: - -// Instantiate custom distributed trace objects. -bsl::shared_ptr dtContext(new MyContext()); -bsl::shared_ptr dtTracer(new MyTracer()); - -// Configure the session-options. -bmqt::SessionOptions sessionOptions; -options.setTraceOptions(dtContext, dtTracer); - -// Instantiate the session object. -bmqa::Session session(sessionOptions); - -// Session-start will produce spans for each request sent to the BlazingMQ -// broker on behalf of the client. -session.start(); - -// If a span is already active when an SDK operation is invoked, it will be -// used as a parent for any spans created by the session object. - -``` - -### Java and Python SDKs - -Distributed trace support is not yet available in the Java and Python SDKs. - ---- diff --git a/docs/docs/features/host_health_monitoring.md b/docs/docs/features/host_health_monitoring.md deleted file mode 100644 index 58cdce159..000000000 --- a/docs/docs/features/host_health_monitoring.md +++ /dev/null @@ -1,265 +0,0 @@ ---- -layout: default -title: Host Health Monitoring -parent: Features -nav_order: 8 ---- - -# Host Health Monitoring -{: .no_toc } - -* toc -{:toc} - -## Introduction - -The **Host Health Monitoring** feature allows BlazingMQ SDK clients to -automatically suspend queues when the machine running the application becomes -unhealthy. Applications using this feature can inject their custom logic to -check the machine's health in the BlazingMQ SDK. The SDK will periodically -invoke the custom logic and if the logic tells the SDK that the machine is -unhealthy, the SDK will suspend the queues that expressed interest in getting -suspended. - ---- - -## Code Snippets - -### C++ SDK - -Users can implement their custom host health monitoring logic by implementing -[`bmqpi::HostHealthMonitor`](../../apidocs/cpp_apidocs/group__bmqpi__hosthealthmonitor.html). - -The custom class can then be installed through the session options as shown -below. - -```cpp - -class MyHostHealthMonitor : public bmqpi::HostHealthMonitor { - // Details elided -}; - -bsl::shared_ptr monitor(new MyHostHealthMonitor()); -if (err = monitor->start()) { - // error handling -} - -bmqt::SessionOptions sessionOptions; -options.setHostHealthMonitor(monitor); - -bmqa::Session session(sessionOptions); - -// 'QueueOptions' are used to opt in to suspension on unhealthy hosts. -bmqt::QueueOptions queueOptions; -queueOptions.setSuspendsOnBadHostHealth(true); - -// This queue will suspend when 'monitor' reports that the host is unhealthy. -bmqa::OpenQueueStatus status = session.openQueueSync(&otherId, - k_OTHER_URL, - bmqt::QueuFlags::e_READ, - queueOptions); - -// Queues opened with default options *will not* suspend on an unhealthy host. -status = session.openQueueSync(&queueId, - k_QUEUE_URL, - bmqt::QueueFlags::e_READ); -``` - -The `monitor` notifies the `bmqa::Session` when the host becomes unhealthy, -allowing the `bmqa::Session` to suspend all queues that are sensitive to host -health. A suspended queue behaves in the following ways: - -* **Consumers**: The queue is configured to receive no further messages from - the broker (`maxUnconfirmedMessages := 0; maxUnconfirmedBytes := 0; - consumerPriority := INT_MIN`). Any previously received CONFIRM messages can - still be sent. can still be sent. - -* **Producers**: Attempts to pack messages targeting a suspended queue will be - rejected by `bmqa::MessageEventBuilder::pack()`. Clients may still attempt to - `POST` existing packed events. - -* **Reconfiguration**: Configuration changes to a suspended queue will only - take effect when it resumes. - -Please note: - -- The SDK will by default assume that no queues are sensitive to host health - even if the application has installed a `HostHealthMonitor`. Clients must - explicitly enable host-health suspension through the `bmqt::QueueOptions` - when opening a queue. - -- If a queue is sensitive to host health, and it is opened while the host is - already unhealthy, it will be initialized into suspended state. - -#### Using the `bmqa::ManualHostHealthMonitor` class -{:.no_toc} - -BlazingMQ C++ SDK also includes the `bmqa::ManualHostHealthMonitor` class. This -class **does not** monitor machine status, but instead relies on clients to -explicitly set the host health through a class method. - -```cpp -bsl::shared_ptr monitor( - new bmqa::ManualHostHealthMonitor()); - -bmqt::SessionOptions sessionOptions; -options.setHostHealthMonitor(monitor); - -bmqa::Session session(sessionOptions); -if (rc = session.start()) { - // error handling -} - -// ... -// Set up queues -// ... - -monitor->setState(bmqt::HostHealthState::e_UNHEALTHY); - // Notifies 'session' that host is now unhealthy. -``` - -While most projects will not use this type for production code, it can be -useful for unit-testing code paths that are only reached during 'machine -unhealthy' events. Less commonly, an application might use -`bmqa::ManualHostHealthMonitor` to integrate BlazingMQ with a different system -that is being used to report host health. - -### Java SDK - -Similar to C++ SDK, Java users can implement their custom host health -monitoring logic by implementing -[`com.bloomberg.bmq.HostHealthMonitor`](../../apidocs/java_apidocs/com/bloomberg/bmq/HostHealthMonitor.html) -interface. - -The custom class can then be installed through the session options as shown -below. - -```java -// Create custom monitor implementation. -com.enterprise.blazingmq.MyHostHealthMonitor monitor = - new com.enterprise.blazingmq.MyHostHealthMonitor(); - -// Start the monitor. -// Do not forget to call 'stop()' in order to stop the monitoring in case -// BlazingMQ session is stopped and the app is closing. -monitor.start(); - -// Configure session options -SessionOptions sessionOptions = SessionOptions.builder() - .setHostHealthMonitor(monitor) - .build(); - -// Create and start session -Session session = new Session(sessionOptions, - this); // SessionEventHandler - -session.start(Duration.ofSeconds(15)); - -// Create queues -Queue queue1 = d_session.getQueue(uri1, // Queue uri - QueueFlags.setReader(0), // Queue mode (=READ) - this, // QueueEventHandler - this, // AckMessageHandler - this); // PushMessageHandler - -Queue queue2 = d_session.getQueue(uri2, // Queue uri - QueueFlags.setReader(0), // Queue mode (=READ) - this, // QueueEventHandler - this, // AckMessageHandler - this); // PushMessageHandler - -// Configure queue options which are used to opt in to suspension on unhealthy hosts. -QueueOptions queueOptions = QueueOptions.builder() - .setSuspendsOnBadHostHealth(true) - .build(); - -// Queue1 *will* suspend when 'monitor' reports that the host is unhealthy. -queue1.open(queueOptions, Duration.ofSeconds(15)); - -// Queue2 opened with default options *will not* suspend on an unhealthy host. -queue2.open(QueueOptions.createDefault(), Duration.ofSeconds(15)); -``` - ---- - -## Host Health Transitions - -BlazingMQ SDK issues two session-level events and two queue-level events -related to Host Health. Clients must install a Host Health monitor in their -application to observe these event. - -**Session Event** - -- `e_HOST_UNHEALTHY`: The host running the application has become unhealthy. - -- `e_HOST_HEALTH_RESTORED`: The health of the host running the application has - been restored. - -In Java SDK, the events are `HostUnhealthy` and `HostHealthRestored` -(interfaces with `type` property set to `HOST_UNHEALTHY_SESSION_EVENT` and -`HOST_HEALTH_RESTORED_SESSION_EVENT` accordingly). - -**Queue Events** - -- `e_QUEUE_SUSPENDED`: A queue has been suspended because of an unhealthy host. - -- `e_QUEUE_RESUMED`: A queue has resumed when the health of the host has been - restored. - -In Java SDK the events are `SuspendQueueResult` and `ResumeQueueResult` -(interfaces with `type` property set to `QUEUE_SUSPENDED` and `QUEUE_RESUMED` -accordingly). - -### Queue Semantics - -An `e_QUEUE_SUSPENDED` event signals that no further messages will be delivered -to that queue until an `e_QUEUE_RESUMED` event is received. The -`bmqa::MessageEventBuilder` will reject messages from the time that an -`e_QUEUE_SUSPENDED` event is read, until the time that an analogous -`e_QUEUE_RESUMED` event is read. - -In Java SDK `com.bloomberg.bmq.Queue` will reject messages to pack/post from -the time that an `QUEUE_SUSPENDED` event is read, until the time that an -analogous `QUEUE_RESUMED` event is read. - -### Session Semantics - -Host Health session events are only issued when the health of the **whole -application state** has changed. This distinction becomes important in certain -corner cases, such as when the health of a host is "flapping" between healthy -and unhealthy states. At such times, the BlazingMQ SDK will not issue the -`e_HOST_HEALTH_RESTORED` event until every queue has resumed **and** the host -is healthy. Conversely, the BlazingMQ SDK will only issue the -`e_HOST_UNHEALTHY` event when passing from an entirely healthy state into a -partially unhealthy one. - -Consequently, during an event in which a recently healthy machine again enters -an unhealthy state before every suspended queue could be resumed, neither -`e_HOST_UNHEALTHY` nor `e_HOST_HEALTH_RESTORED` would be published (since the -SDK does not consider the whole application to have ever reentered a healthy -state). - -As a corollary of this behavior, a client reading an `e_HOST_HEALTH_RESTORED` -event can assume that every queue has resumed operation until a subsequent -`e_HOST_UNHEALTHY` event is observed. - ---- - -## Error Behavior - -A host may become unhealthy for many reasons, so it's important that the -BlazingMQ SDK be able to reliably suspend a queue. The failure of a suspend -request is treated as evidence of an unusually serious problem with the -connection to the broker; if a suspend request cannot be completed, then the -session connection is dropped (this would also impact queues not configured to -be sensitive to Host Health). The BlazingMQ SDK will then undergo the usual -process to attempt to reestablish a connection. - -This same "nuclear option" does not apply to queue resumption. If a queue -cannot be resumed, the error is reported as a status on the `e_QUEUE_RESUMED` -event message. We recommend clients check for such errors (however unlikely), -and decide whether it is best to close the queue, attempt again to reconfigure -it, etc. Note that the SDK will publish the `e_HOST_HEALTH_RESTORED` session -event regardless of errors encountered while resuming individual queues. - ---- diff --git a/docs/docs/features/index.md b/docs/docs/features/index.md deleted file mode 100644 index 561d0be16..000000000 --- a/docs/docs/features/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: default -title: Features -nav_order: 2 -has_children: true -permalink: /features ---- - -# [](#features)Features - -In addition to providing durable and highly available queues, BlazingMQ also -supports a rich set of features which help BlazingMQ users implement a variety -of use cases. This section provides an overview of them. diff --git a/docs/docs/features/message_routing_strategies.md b/docs/docs/features/message_routing_strategies.md deleted file mode 100644 index bfe853569..000000000 --- a/docs/docs/features/message_routing_strategies.md +++ /dev/null @@ -1,176 +0,0 @@ ---- -layout: default -title: Message Routing Strategies -parent: Features -nav_order: 2 ---- - -# Message Routing Patterns -{: .no_toc } - -* toc -{:toc} - -The most interesting aspect of BlazingMQ is the various ways in which it can -route messages to consumer applications attached to a queue. Given a queue, -any number of producers and consumers can attach to it. The case of multiple -producers is straightforward -- every producer can post messages to the queue. -It becomes more interesting when multiple consumers are attached to the same -queue -- BlazingMQ may decide to route a newly arrived message to: - -- A specific consumer instance -- A subset of consumer instances -- All consumer instances - -BlazingMQ may choose one or more consumer instances based on one or more of the -following attributes: - -- A round-robin strategy -- Capacity and/or priority advertised by the consumer(s) -- Any criteria (filter) specified by the consumer(s) -- Routing strategy with which the queue is configured - -Across all of the above, the most important aspect is the routing strategy of a -queue (also referred to as "queue mode" in some places in BlazingMQ). Routing -strategy is something that is statically configured when the BlazingMQ domain -(application namespace) is registered with the BlazingMQ framework. - -## Work Queue - -![Work Queue](../../../assets/images/wq.png "Work Queue Mode") - -In work queue mode, BlazingMQ routes messages arriving in the queue in a -round-robin fashion to the attached consumers, such that a message goes to only -one consumer. This mode ensures that messages are load balanced across all -consumers. BlazingMQ marks a message as deleted once the consumer confirms the -message. In case a consumer goes away without confirming messages, BlazingMQ -reroutes those messages to other consumer instances, if there are any. It -should be obvious that in work queue mode, the order of message processing by -the consumers can be different from the order of arrival of messages in the -queue. - -An extremely attractive feature of this mode is that as a new consumer attaches -to the queue, BlazingMQ starts sending a subset of the messages to the new -consumer. This means that applications can increase their processing capacity -by simply spinning up a new consumer instance, without making any code or -configuration changes or having to worry about creating additional queues. No -consumer attached to the queue stays idle. In theory, an application can watch -the queue's size, and decide to spin up new consumer instances if the queue is -growing, or wind down existing instances if the queue's size has gone below a -low watermark. - ---- - -## Consumer Priority Mode - -![Consumer Priority Mode](../../../assets/images/priority.png "Consumer Priority Mode") - -In this mode, consumers attaching to a queue can also declare their priorities, -and BlazingMQ routes messages *only* to the consumer with the highest priority. -If multiple consumers with the same highest priority exist, BlazingMQ routes -messages across those consumers in a round-robin fashion. BlazingMQ marks a -message as deleted once the consumer confirms the message. Readers may notice -that the work queue mode described above is just a simpler case of priority -mode where all consumers have same priority. In fact, there is no separate -routing strategy called "work queue" in code or configuration, and BlazingMQ -back-end does not treat "work queue" as a special mode. - -Consumer priorities give applications finer control over message processing, in -that applications can direct the traffic to a specific consumer instance or -machine as desired, by playing with consumers' priorities. - -Additionally, consumers can dynamically update their priorities via an API -provided in the BlazingMQ SDK. One way in which this feature can be leveraged -by applications is to have a primary/backup setup for their consumers, by -ensuring that one consumer has highest priority while other consumer instances -have a lower priority. Additionally, in case applications have multiple such -queues, they can configure consumers' priorities such that primary consumers -for their queues are evenly spread across the application cluster, thereby -ensuring equal usage of resources. Moreover, the ability to adjust consumer -priority dynamically also enables consumer applications to integrate well with -other patterns like leader election -- a consumer instance elected as a leader -can bump up its priority to a higher value, thereby ensuring that it is the -only one consuming from the queue. - ---- - -## Fan-out Mode - -![Fan-out Mode](../../../assets/images/fan-out.png "Fan-out Mode") - -In both work queue and priority modes, a message goes to only one consumer -instance. However, there are use cases where each message posted on the queue -needs to go to all consumers attached to the queue. This is where fan-out mode -comes into the picture. - -In this mode, consumers identify themselves with a string identifier when -attaching to the queue (called *AppId* in BlazingMQ). *AppId*s are needed so -that BlazingMQ can uniquely identify consumers across restarts, and need to be -registered with the BlazingMQ framework upfront. So for example, if users of a -BlazingMQ queue have registered five *AppId*s with BlazingMQ, they can bring up -five consumers, each using one of the *AppId*s, and each consumer will receive -every message posted on the queue. - -Consumers in fan-out mode can consume from the queue at their own pace and can -also process and confirm messages in a different order. Logically, one can -think of each *AppId* getting its own copy of the queue. However, under the -hood, BlazingMQ maintains only one queue and thus, only one copy of the message -in the storage (of course, replication leads to *N* copies of the message, -where *N* is the replication factor). Storing the message only once -irrespective of number of *AppId*s can lead to significant storage savings, -especially in the case of a high number of *AppId*s (i.e., having a high -fan-out ratio). - -BlazingMQ marks a message as deleted once *all* consumers have confirmed the -message. - -A powerful feature supported in fan-out mode is that multiple consumers can use -the same *AppId* and also specify priorities. In such scenario, BlazingMQ -sends messages only to the consumer with the highest priority in *that* *AppId* -group. If in an *AppId* group, multiple consumers with highest priority exist, -messages are routed in a round-robin fashion across them. Thus, BlazingMQ -ensures that one consumer in each *AppId* group receives every message posted -on the queue. - -Readers will notice that consumer priority mode is just a simpler case of -fan-out mode, where there is only one (default) *AppId*. - ---- - -## Broadcast Mode - -![Broadcast Mode](../../../assets/images/bcast.png "Broadcast Mode") - -Broadcast mode is unique and significantly different from other queue modes -found in BlazingMQ and in other message queuing systems. In this mode, -messages arriving on a queue are neither persisted on disk nor buffered in -memory. Instead, they are immediately dispatched to the consumers attached to -the queue at that instant and then "dropped" by BlazingMQ. BlazingMQ makes no -effort to keep messages for consumers which may arrive at a later time. As a -consequence, broadcast mode provides an *at most once* delivery guarantee, -contrasting with the *at least once* delivery guarantee provided by all other -queue modes. Additionally, consumers can specify a priority when attaching to -the queue, and BlazingMQ routes all messages to all consumers having highest -priority. - -Apart from providing no persistence, another important way in which broadcast -mode differs from fan-out mode is that the number of consumers in broadcast -mode is dynamic. In other words, new consumers can attach to the queue at any -time, and existing consumers can leave the queue any time without invoking any -special API or without registering new consumers or *AppId*s with the BlazingMQ -framework. - -Broadcast mode can be useful for scenarios where occasional message loss is -acceptable for applications e.g., tick-type data stream, analytics, health -check notifications, cache invalidation notifications, or when applications -have other means to retry/recover lost messages. - -Broadcast mode makes BlazingMQ a very attractive messaging system to users, -because along with the queue modes described above, BlazingMQ can provide them -with a mix of both *at most once* as well as *at least once* delivery -guarantees in their application ecosystems, and they don't need to pick any -another messaging system for their *at most once* delivery requirements. -Broadcast mode has exactly same set of APIs as other queue modes which means -applications don't have to treat broadcast mode as a special case. - ---- diff --git a/docs/docs/features/plugins.md b/docs/docs/features/plugins.md deleted file mode 100644 index 7eaac383b..000000000 --- a/docs/docs/features/plugins.md +++ /dev/null @@ -1,267 +0,0 @@ ---- -layout: default -title: Plugins -parent: Features -nav_order: 9 ---- - -# Plugins -{: .no_toc } - -* toc -{:toc} - -## Prometheus plugin - -### Overview -This plugin gathers BlazingMQ broker statistic and sends it to [Prometheus](https://prometheus.io/) monitoring system. Both `push` and `pool` modes of interaction with Prometheus are supported. - -### Configuration -By default, plugin is disabled. To enable and configure it, edit `bmqbrkcfg.json` file as follows: - -1. Enable plugin and provide path to plugin library - ```json - "appConfig": { - ... - "plugins": { - "libraries": [""], - "enabled": ["PrometheusStatConsumer"] - } - } - ``` - -2. Provide plugin configuration - ```json - "appConfig": { - "stats": { - "snapshotInterval": 1, - "plugins": [ - ... - { - "name": "PrometheusStatConsumer", - "publishInterval": 10, - "prometheusSpecific": { - "host": "localhost", - "port": 9091, - "mode": "E_PUSH" - } - } - ], - ... - } - } - ``` - -where - -1. Common plugins configuration - - - `snapshotInterval`: represents how often stats are computed by broker - internally, in seconds (typically every 1s); - -2. Prometheus plugin configuration - - - `name`: plugin name, must be "PrometheusStatConsumer"; - - `publishInterval`: Specified as a number of seconds. Must be a multiple of the `snapshotInterval`. - - in `push` mode: it is the time period (in seconds) to send statistic to Prometheus Push Gateway; - - in `pull` mode: it is time (in seconds) to update statistic; - - `host` - - in `push` mode: Prometheus Push Gateway URL; - - in `pull` mode: Prometheus exposer (local http server) URL that should be accessible by Prometheus to pull the statistic, usually Host IP address; - - `port` - - in `push` mode: Prometheus Push Gateway port, usually 9091; - - in `pull` mode: Prometheus exposer port that should be accessible by Prometheus to pull the statistic; - - `mode`: interaction with Prometheus mode: `E_PUSH` or `E_PULL`; - -### Build and Run plugin in demo environment -To build Prometheus plugin, pass '--plugins prometheus' argument to the build script, e.g. -```bash -bin/build-ubuntu.sh --plugins prometheus -``` -To run plugin in demo environment, perform the following steps: - -1. Set plugin configuration: - - For `push` mode: - ```json - { - "host": "localhost", - "port": 9091, - "mode": "E_PUSH" - } - ``` - - For `pull` mode: - ```json - { - "host": "localhost", - "port": 8080, - "mode": "E_PULL" - } - ``` - -2. Run BlazingMQ broker, it will automatically load and configure the plugin; - -3. Run Prometheus and Grafana services in Docker: - ```bash - docker compose -f docker/plugins/prometheus/docker-compose.yml up - ``` - -4. In browser open link `http://localhost:9090/` with Prometheus UI to analyze available metrics; - -5. [Optional] In browser open link `http://localhost:3000/` with Grafana UI to analyze available metrics: - - Select `Prometrheus` data source; - - Set `http://prometheus:9090` as Prometheus server URL; - -### Integration tests -Test plan: -1. Test Prometheus plugin in 'push' mode: - - Run Prometheus (in docker); - - Run broker with local cluster and enabled Prometheus plugin in sandbox (temp folder); - - Put several messages into different queues; - - Request metrics from Prometheus and compare them with expected metric values. -2. Test Prometheus plugin in 'pull' mode: - - Run Prometheus (in docker); - - Run broker with local cluster and enabled Prometheus plugin in sandbox (temp folder); - - Put several messages into different queues; - - Request metrics from Prometheus and compare them with expected metric values. - -Prerequisites: -1. bmqbroker, bmqtool and prometheus plugin library should be built; -2. Python3 should be installed; -3. Docker should be installed, user launching the test script must be included into the group 'docker'. -```bash -Usage: ./src/plugins/prometheus/tests/prometheus_prometheusstatconsumer_test.py [-h] -p PATH -options: - -h, --help show this help message and exit - -p PATH, --path PATH path to BlazingMQ build folder, e.g. './build/blazingmq' -``` - -### Labels -The following labels may be used by each metric, whenever applicable. Refer to each individual metric documentation for restrictions which may apply. - -|Label Name|Description| -|----------|-----------| -|Instance|instance id of the broker (e.g. A), or 'default'| -|Cluster|name of the cluster (e.g. bmqc01/A)| -|Domain|name of the domain (e.g. my.domain)| -|Tier|value of the tier (e.g. pd)| -|Queue|name of the queue (e.g. my_queue)| -|Role|role of the broker with regard to this queue (possible values are 'PRIMARY', 'PROXY', 'REPLICA')| -|RemoteHost|name of the 'upstream' node or '_none_'| -|AppId|application ID (e.g. my_app), applicable only in fanout mode, if feature is configured, see 'appIdTagDomains' setting| - -### Available BlazingMQ metrics -This section lists all the metrics reported to Prometheus by BlazingMQ brokers. Note that any metric whose value is 0 is not published. The only exception to this rule is queue.heartbeat which is always published. - -In this section, report interval refers to how often stats are being published in `push` mode (typically every 30s) and snapshot represents how often stats are computed internally (typically every 1s). - -Note that all metrics published to Prometheus are also dumped by BlazingMQ broker on the local machine in a file, which is located at this location: - - /localBMQ/logs/stat.* - -These stat files can come in handy when Prometheus is unavailable or when metrics during certain time interval are missing from Prometheus for some reason. - -### System metrics -System metrics represent BlazingMQ broker's overall operating system metrics. Every broker reports them, with 'Instance' label which is always set. - -#### CPU - -|Metric Name|Description| -|-----------|-----------| -|brkr_system_cpu_all|Average snapshot value over report interval window for the total system CPU usage.| -|brkr_system_cpu_sys|Average snapshot value over report interval window for the total CPU usage.| -|brkr_system_cpu_usr|Average snapshot value over report interval window for the total user CPU usage.| - -#### Operating System - -|Metric Name|Description| -|-----------|-----------| -|brkr_system_mem_res|Maximum snapshot value over report interval window for the resident memory usage.| -|brkr_system_mem_virt|Maximum snapshot value over report interval window for the virtual memory usage.| - -#### Memory - -|Metric Name|Description| -|-----------|-----------| -|brkr_system_os_pagefaults_minor|Total number of times over the report interval window, a page fault serviced without any I/O activity. In this case, I/O activity is avoided by reclaiming a page frame from the list of pages awaiting reallocation.| -|brkr_system_os_pagefaults_major|Total number of times over the report interval window, a page fault serviced that required I/O activity.| -|brkr_system_os_swaps|Total number of times the process was swapped out of main memory over the report interval window.| -|brkr_system_os_ctxswitch_voluntary|Total number of times, over the report interval window, a context switch resulted because the process voluntarily gave up the processor before its time slice was completed.| -|brkr_system_os_ctxswitch_voluntary|Total number of times, over the report interval window, a context switch resulted because a higher priority process ran, or the current process exceeded its time slice.| - -#### Network metrics - -|Metric Name|Description| -|-----------|-----------| -|brkr_system_net_local_in_bytes|Total number of 'bytes' received by the broker from local TCP connections over the report interval window.| -|brkr_system_net_local_out_bytes|Total number of 'bytes' sent by the broker to local TCP connections over the report interval window.| -|brkr_system_net_remote_in_bytes|Total number of 'bytes' received by the broker from remote TCP connections over the report interval window.| -|brkr_system_net_remote_out_bytes|Total number of 'bytes' sent by the broker to remote TCP connections over the report interval window.| - -### Broker metrics -Broker summary metrics represent high level aggregated view of the activity on that broker. Every broker reports them, with 'Instance' label. - -|Metric Name|Description| -|-----------|-----------| -|brkr_summary_queues_count|Maximum snapshot'd value over the report interval window for the number of opened queues (including inactive not yet gc’ed queues).| -|brkr_summary_clients_count|Maximum snapshot'd value over the report interval window for the number of clients connected to the broker.| - -### Cluster metrics -Every broker reports this metric for each of the clusters it has created, with the following tags: 'Instance', 'Cluster' and 'Role'. If the 'Role' is 'PROXY', the 'RemoteHost' tag is also set (but can have the value '_none_'). - -|Metric Name|Description| -|-----------|-----------| -|cluster_healthiness|Represents whether this cluster is healthy, as perceived from this host. If the cluster was considered healthy during the entire report interval, a value of 1 is reported; on the other hand, if the cluster was unhealthy for at least one snapshot during the report interval, a value of 2 is reported. Cluster being considered healthy means different things depending on if the host is a proxy to the cluster or a member of the cluster. If it is a proxy, having an active upstream node is sufficient for it to be healthy. For a member, it means being aware of an active leader, all partitions assigned to an active primary, etc.| - -### Cluster partitions metrics -The following metrics are reported for each partition, only by the primary of the partition, with the 'Cluster' and 'Instance' tags set. Note that in the following metrics name \ represents the partition id (0 based integer). - -|Metric Name|Description| -|-----------|-----------| -|cluster_\_rollover_time|The time (in nanoseconds) it took for the rollover operation of the partition. Note that if more than one rollover happened for the partition during the report interval, then the maximum time is reported. This metric can be used to see how long, but also how often, rollover happens for a partition.| -|cluster_\_journal_outstanding_bytes|The maximum observed outstanding bytes in the journal file of the partition over the report interval. Note that this value is internally updated at every sync point being generated, and therefore is not an absolute exact value, but a rather close estimate.| -|cluster_\_data_outstanding_bytes|The maximum observed outstanding bytes in the data file of the partition over the report interval. Note that this value is internally updated at every sync point being generated, and therefore is not an absolute exact value, but a rather close estimate.| - -### Domain metrics -Domain metrics represent high level metrics related to a domain. Only the leader node of the cluster reports them, with the 'Cluster', 'Domain', 'Tier' and 'Instance' tags set. - -|Metric Name|Description| -|-----------|-----------| -|domain_cfg_msgs|The configured domain messages capacity, used to compute percentage of resource used.| -|domain_cfg_bytes|The configured domain bytes capacity, used to compute percentage of resource used.| -|domain_queue_count|The maximum snapshot'd value over the report interval window for the number of opened queues (including inactive not yet gc’ed queues) on that domain.| - -### Queue metrics -Queue metrics represent detailed, per queue, metrics. For each of them, the following tags are set: 'Cluster', 'Domain', 'Tier', 'Queue', 'Role' (which value can only be one of 'PRIMARY', 'REPLICA' or 'PROXY') and instanceName. 'AppId' tag could be applied on 'queue.confirm_time_max' and 'queue.queue_time_max' metrics in fanout mode if this feature is configured (see 'appIdTagDomains' setting). - -|Metric Name|Description| -|-----------|-----------| -|queue_producers_count|The maximum snapshot'd value over the report interval window for the number of aggregated producers downstream of that broker. When looking at the primary reported stats, this gives the global view.| -|queue_consumers_count|The maximum snapshot'd value over the report interval window for the number of aggregated consumers downstream of that broker. When looking at the primary reported stats, this gives the global view.| -|queue_put_msgs|Total number of 'put' messages for the queue received by this broker from its downstream clients over the report interval window.| -|queue_put_bytes|Total cumulated bytes of all 'put' messages (only application payload, excluding bmq protocol overhead) for the queue received by this broker from its downstream clients over the report interval window.| -|queue_push_msgs|Total number of 'push' messages for the queue received by this broker from its upstream connections over the report interval window.| -|queue_push_bytes|Total cumulated bytes of all 'push' messages (only application payload, excluding bmq protocol overhead) for the queue received by this broker from its upstream connections over the report interval window.| -|queue_ack_msgs|Total number of 'ack' messages (both positive acknowledgments as well as negative ones) for the queue received by this broker from its upstream connections over the report interval window.| -|queue_ack_time_avg|Represent the average time elapsed between when a put message was received by the downstream and when its corresponding ack was received for the messages posted during the report interval window. Note that this metric is only reported at the primary and at the first hop, that is intermediary hops do not report it. On the primary, this represents how long it took for the message to be stored and replicated in the storage, on the last hop this represents the clients perceived 'post' time.| -|queue_ack_time_max|Represent the maximum time elapsed between when a put message was received by the downstream and when its corresponding ack was received for the messages posted during the report interval window. Note that this metric is only reported at the primary and at the first hop, that is intermediary hops do not report it. On the primary, this represents how long it took for the message to be stored and replicated in the storage, on the last hop this represents the clients perceived 'post' time.| -|queue_nack_msgs|Total number of failed 'nack’ (i.e. failed 'ack') generated by this broker, over the report interval window.| -|queue_confirm_msgs|Total number of 'confirm' messages for the queue received by this broker from its downstream clients over the report interval window.| -|queue_confirm_time_avg|This metric is only reported by the first hop, and represent the average time elapsed between when a message is pushed down to the client, and when the client confirms it, for the messages pushed during the report interval window.| -|queue_confirm_time_max|This metric is only reported by the first hop, and represent the maximum time elapsed between when a message is pushed down to the client, and when the client confirms it, for the messages pushed during the report interval window.| -|queue_heartbeat|This metric is always reported for every queue, so that there is guarantee to always (i.e. at any point in time) be a time series containing all the tags that can be leveraged in Prometheus| - -Metrics in the following section are reported only by the node primary of the queue. - -|Metric Name|Description| -|-----------|-----------| -|queue_gc_msgs|The number of messages which have been garbage collected from the queue (i.e. purged due to TTL expiration) over the report interval window.| -|queue_cfg_msgs|The configured queue messages capacity, used to compute percentage of resource used.| -|queue_cfg_bytes|The configured queue bytes capacity, used to compute percentage of resource used.| -|queue_content_msgs|The maximum snapshot'd value over the report interval window for the number of messages pending in the queue.| -|queue_content_bytes|The maximum snapshot'd value over the report interval window for the cumulated bytes of all messages pending in the queue.| -|queue_queue_time_avg|Represent the average time elapsed between when the message was received by the primary, and when it was pushed downstream to the next hop consumer for the messages pushed during the report interval window. This basically represents how long a message stayed in the queue due to no (usable) consumer available. Note that if the primary has switched between the put and the push, then the reported time only has seconds precision.| -|queue_queue_time_max|Represent the maximum time elapsed between when the message was received by the primary, and when it was pushed downstream to the next hop consumer for the messages pushed during the report interval window. This basically represents how long a message stayed in the queue due to no (usable) consumer available. Note that if the primary has switched between the put and the push, then the reported time only has seconds precision.| -|queue_reject_msgs|Total number of rejected messages for the queue (where the number delivery attempts reaches 0) over the report interval window.| -|queue_nack_noquorum_msgs|Total number of messages NACKed due to primary timing out waiting for quorum replication receipts.| - ---- diff --git a/docs/docs/features/poison_pill_detection.md b/docs/docs/features/poison_pill_detection.md deleted file mode 100644 index a029a8d25..000000000 --- a/docs/docs/features/poison_pill_detection.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: default -title: Poison Pill Detection -parent: Features -nav_order: 4 ---- - -# Poison Pill Detection -{: .no_toc } - -* toc -{:toc} - -## Introduction - -BlazingMQ has a built-in bad message ("poison pill") detection mechanism which -auto detects and purges poison pill messages from the queue. This helps -applications prevent a widespread outage in the scenario where a poison pill -message is causing consumer applications to crash repeatedly. - -## Motivation - -Let's understand the motivation in more detail. One can attach multiple -consumers to a BlazingMQ queue. Additionally, any time a consumer goes away -without confirming messages that were sent to it, BlazingMQ re-routes those -messages to other consumer(s), if available. If a message is acting as a -poison pill and crashing consumers, BlazingMQ will continue to re-route to that -message to any available consumer, until that message is confirmed by a -consumer, or is removed from the queue as a result of message TTL expiration or -is manually purged from the queue. Typically, messages are configured with -higher values of TTL (10 minutes or more), and purging a specific message or -entire queue requires manual intervention. It is easy to see how a poison pill -message can lead to widespread application outage by repeatedly bringing down -consumers and keeping them down for an extended period of time. - -## Solution - -BlazingMQ limits retransmissions of poison pill messages up to the limit -specified in the BlazingMQ domain configuration (typical recommended value is -five). Once the retransmission counter of a message reaches zero, the message -is auto-purged from the queue. Additionally, the payload of the offending -message is dumped in a file which can be inspected for troubleshooting -purposes. - - -## Caveats - -Note that this feature can introduce some additional latency in case BlazingMQ -detects a message as *potentially* poisonous. BlazingMQ users might be aware -that BlazingMQ delivers messages to consumer applications in batches for -performance reasons. If one message in a batch is poisonous and causes a -consumer to crash, BlazingMQ declares the entire batch as *potentially* -poisonous, and a throttled delivery algorithm kicks in, which attempts to -pinpoint the message which is actually poisonous. As the message continues to -crash consumers and its transmission counter inches towards zero, the algorithm -throttles the batch of messages aggressively to find the culprit. This -throttling can introduce a delay of up to 5 seconds (configurable) in message -transmission to consumers. Note that this feature does not introduce *any* -throttling or overhead in the absence of consumer crashes. - ---- diff --git a/docs/docs/features/subscriptions.md b/docs/docs/features/subscriptions.md deleted file mode 100644 index 1b9a0802a..000000000 --- a/docs/docs/features/subscriptions.md +++ /dev/null @@ -1,443 +0,0 @@ ---- -layout: default -title: Subscriptions -parent: Features -nav_order: 3 ---- - -# Subscriptions -{: .no_toc } - -* toc -{:toc} - -## Introduction - -Subscriptions provide consumer applications a powerful mechanism to only -receive the messages from a queue that match a specified expression. -In essence, subscriptions allow the user to achieve topic-based message -filtering and/or message routing. - -In the absence of subscriptions, a consumer attached to a queue can receive -and should be able to process any and all messages posted on the queue. In -other words, the queue is viewed as a logical stream of homogeneous data. -While this may work in some or most cases, there are scenarios where this -is limiting. - -For example, a user may prefer one set of consumers to handle messages of a -certain type, and another set of consumers to handle messages of a certain -other type. Or, a user may have a queue of messages that should all be -processed by some consumer applications, but certain applications may only be -interested in a certain subset of messages and want to ignore messages of a -certain type. This is where subscriptions come in -- they enable consumer -applications to "subscribe" to messages of a certain type and enable users -to filter out messages for certain applications but not others, thereby -*logically* converting a queue into a stream of heterogeneous data. - -Concretely speaking, producer applications can put any interesting message -attributes in the *message properties* section of the message (*message -properties* are a list of key/value pairs that a producer can associate with a -message), and consumers can request BlazingMQ to filter messages using one or -more of those *message properties*. - -For example, if a message contains these three properties: - -- `CustomerId = 1234` -- `DestinationId = "ABC"` -- `OrderType = EXPRESS` - -A consumer can provide a filter ("subscription expression") like so to "match" -the above message: - -- `CustomerId == 1234 && OrderType == EXPRESS` - -In this case, a message having the properties as shown above will be routed -to the consumer with the above filter (note that if a property is not specified -in the subscription expression, it is considered to be a wildcard). - -Similarly, users can spin up any number of consumers, each with different -filters. Users have to ensure that every message can be processed by at least -one consumer. - -## Detailed Overview - -This section provides an in-depth overview of subscriptions -- motivation, high -level design, selective implementation details, etc. This section assumes that -reader is familiar with various routing strategies (aka 'queue modes') as well -as general BlazingMQ terminology like *PUT*, *PUSH*, *ACK*, *CONFIRM* messages, -etc. - -### Subscription Types - -BlazingMQ provides two types of subscriptions: - -- Application Subscriptions (message filtering) -- Consumer Subscriptions (message routing) - -Users can leverage either or both types of subscriptions to achieve the desired -behavior. The two types of subscriptions are described below. - -#### Application Subscriptions - -Application Subscriptions provide the ability to filter out messages from an -application's queue in the BlazingMQ broker. - -When a message is produced to a queue, BlazingMQ will evaluate all Application -Subscriptions and _auto-confirm_ the message on behalf of an application if -the message does not match the application's subscription expression. Since -BlazingMQ only routes unconfirmed messages to consumers, consumers will only -receive messages that match the configured Application Subscription. - -Application Subscriptions are specified in the domain's configuration: - -* Application Subscriptions are configured and evaluated per-*AppId* for fanout -queues. - - Note the BlazingMQ broker will still store each message until it is - confirmed by all *AppIds*, either via auto-confirm or a consumer. -* Application Subscriptions are configured with an empty *AppId* (i.e. -`appId=""`) for priority and broadcast queues. Auto-confirms apply to all -consumers of these queues. - -#### Consumer Subscriptions - -Consumer subscriptions allow each consumer instance to express the messages -it is capable of processing when it attaches to the queue. This allows users -to define the subset of consumers that BlazingMQ can route any given message -to. - -When a message is produced to a queue, BlazingMQ will evaluate all Application -Subscriptions (as described above), and then evaluate Consumer Subscriptions -to determine which consumers are capable of processing the message. Then, all -standard routing logic (i.e. consumer priorities, round-robin, respecting -`maxUnconfirmed*` configurations) is used to deliver the message to a consumer. - -Notes: - -- BlazingMQ will only route a message to a consumer if the message matches that -consumer's subscription. If a consumer has no subscription, BlazingMQ can route -any message to it. - -- If there is no matching consumer subscription for a message, the message will -remain in the queue, unconfirmed, until a consumer configures a subscription -matching the message. The message will count against the configured -queue/domain quota limits until it is confirmed or expires due to TTL. - -- Each consumer instance can specify a different subscription. - -- Users have to ensure that every message can be processed by at least -one consumer. - -### Background -{:.no_toc} - -1. Consider a scenario where multiple consumers are attached to a queue in work - queue or priority mode. Without subscriptions, there is no way for consumers - to specify any restrictions on the messages that BlazingMQ will route to - them. All consumers must be in a position to process any message posted on - the queue. As an example, let’s assume that all messages being posted to the - queue have an attribute called `CustomerId` with various possible values - representing different customers. There could be a case where some consumers - can process only those messages where `CustomerId == 1000` while others can - process messages only where `CustomerId == 2000` and so on. - -2. Consider a slight variation of above scenario, such that although every - consumer can process message with any `CustomerId`, but in order to provide - better isolation and QoS, owners of the consumer application want to - dedicate a set of consumers for every firm. So *M* consumers are dedicated - for `CustomerId == 1000` , *N* consumers for `CustomerId == 2000` , etc. - -3. Consider another scenario where one or more consumers are attached to a - queue, but none of them are ever interested in messages where `CustomerId` - is different from 1000 or 2000 . Such a scenario can occur where one team is - producing on the queue and other teams are consuming from it, and the later - don’t control the types of messages being posted on the queue. - -Without subscriptions, there is no way in BlazingMQ in which users can -implement a solution for these scenario. Some workarounds exist. Let's look at -them: - -- Scenarios (1) and (2) can be solved by creating one BlazingMQ queue for each - `CustomerId` and having producer(s) post a message on the appropriate - queue. This solution can work as long as the total number of `CustomerId`s - (and thus, queues) is limited to a few hundred (a large number of queues - impacts applications’ and BlazingMQ cluster’s startup and failover - times). Moreover, producer and consumer applications would have to agree on - the naming convention of the queues. - -- Scenario (3) can be implemented by consumer applications by simply confirming - those messages which they are not interested in. However, such messages are - still routed to the consumers, which leads to wasted network bandwidth and - CPU. - -### Design -{:.no_toc} - -Scenarios described in the previous section can be solved by introducing the -notion of subscriptions in BlazingMQ, and routing a message to consumer(s) with -matching subscription(s). Here’s how subscriptions work at a high level: - -- Producers add any ‘interesting’ attributes of the message in its *message - properties*. - -- Users specify one or more Application Subscriptions in the domain configuration - for one or more *AppIds*. Each *AppId* can have one or more boolean expression - containing one or more message properties. If there is no subscription for an - *AppId*, the application will receive all messages. - -- Consumers specify one or more boolean expressions when opening the - queue. Each expression can contain one or more message properties. As an - example, an expression can look like: - - - `CustomerId == 1000` - - `CustomerId == 2000 && DestinationId == "ABC"` - - `CustomerId >= 1000 && CustomerId <= 2000` - - where `CustomerId` and `DestinationId` are message properties. Every such - expression will be a subscription and we will be using these two terms - interchangeably. Of course, subscriptions are optional and if a consumer does - not specify any subscriptions, it will receive all of the messages posted on - the queue. - -- In addition to specifying subscriptions when opening the queue (using the - `openQueue` API), consumers will also be able to specify them when - configuring the queue (`configureQueue` API). Consumers will be able to tweak - existing subscriptions, remove an existing subscription or add a new - subscription using the `configureQueue` API. In that regard, subscriptions - will be completely dynamic. - -- In addition, consumers will also be able to specify certain options like - priority and flow-control parameters for each subscription. Recall that - currently, these options – `bmqt::QueueOptions` – are specified for the - entire queue. However, after the introduction of subscriptions, consumers - will be able to specify different values for each subscription. This means - that priorities will now be applicable at the subscription level. For - example, a consumer application can advertise priority 10 for one - subscription, and priority 5 for another. These priorities will be taken into - consideration by BlazingMQ when routing messages (as is currently the - case). In addition, it will also help BlazingMQ provide some determinism when - routing a message in a queue having multiple subscriptions (see *Order of - Evaluation* bullet in *Implementation Details* section below). - -- Existing APIs will continue to work and consumer applications which do not - use subscriptions will not need to make any changes. - -- In the BlazingMQ back-end, upon the arrival of a new message, the BlazingMQ - primary node will first check each Application Subscription. The message - will be auto-confirmed for each application that does not have a matching - subscription. If there is a matching Application Subscription, Blazing will - then try to match the message with a consumer's subscription and route the - message to the corresponding consumer instance. See *Implementation Details* - section below for more info. - -- Multiple expressions can be provided when using Application and/or Consumer - Subscriptions. The BlazingMQ primary node will check if a message matches - each provided expression, resulting in an implicit "OR" between expressions. - -### Implementation Details -{:.no_toc} - -The *Design* section above gives a high level overview of the feature. There -are, however, some additional details which are worth specifying. - -1. **Overlapping Consumer Subscriptions**: if consumers specify overlapping - subscriptions (e.g., `CustomerId == 0` and `CustomerId >= 0` ), BlazingMQ - will not make any attempt to merge those subscriptions, and the two - subscriptions will be treated independently of each other. **NOTE**: While - overlapping subscriptions are supported as described in this and next - bullet, having overlapping subscriptions is questionable and can be - confusing, and generally speaking, should be avoided. - -2. **Order of Evaluation**: A very common scenario would be a queue having - consumers with different subscriptions. When a message arrives in a queue, - BlazingMQ primary node takes the greedy approach and routes the message to - the first matching subscription. A natural question that arises is in what - order will the primary node evaluate subscriptions? BlazingMQ primary node - will attempt to order subscriptions by priority and evaluate them from - highest to lowest priority. This will help provide some determinism to the - order of evaluation and can also help users implement interesting - scenarios. As an example, taking the case of overlapping subscriptions in - the previous bullet, if `CustomerId == 0` subscription has priority 10 and - `CustomerId >= 0` subscription has priority 5, BlazingMQ will always try to - route a message with `CustomerId = 0` attribute to the `CustomerId == 0` - subscription. - -3. **Order of Message Delivery**: Messages will be evaluated for matching - subscriptions in the order that they arrive on the queue. So if a matching - subscription exists for every message, messages will be dispatched to - consumer(s) in order. Of course, if there are multiple consumers, each with - different subscriptions, messages could be processed by out of order. This - behavior will be same as priority as well as fan-out modes. Order of - delivery will not be guaranteed in case messages are re-routed due to - consumer crashes. Again, this behavior will be same as priority as well as - fan-out modes. - -4. **Spillover to Lower Priority Consumers**: If multiple consumers attach to a - queue with the same subscription but with different priorities, BlazingMQ - will route messages only to the consumer with highest priority. If there are - multiple consumers with highest priority, BlazingMQ will round-robin - messages across them. More importantly, if highest priority consumers reach - capacity (flow-controlled), messages will not be spilled to lower priority - consumers. This behavior is similar to the existing logic in various queue - modes in BlazingMQ. - -5. **Merging of Subscriptions**: In case multiple consumers specify the same - subscription, BlazingMQ back-end will seamlessly merge them by combining the - options advertised by the consumers for that subscription. For example, if - consumer A subscribes to `CustomerId == 1000` with priority 10 and capacity - X , and consumer B subscribes to `CustomerId == 1000` with priority 10 and - capacity Y , the two subscriptions will be merged by an intermediate hop in - BlazingMQ back-end and advertised to the primary node as `CustomerId == 1000` - with priority 10 and capacity X + Y . Two subscriptions will be determined - to be same if they compare equal lexicographically. Merging of subscriptions - will ensure that load-balancing across consumers having same subscription - works seamlessly. - -6. **Evaluating Expressions**: BlazingMQ primary node will match subscriptions - by reading corresponding message properties from the message and evaluating - the expression. For example, while evaluating the `CustomerId == 1000` - expression, primary node will read `CustomerId` property from the message - and compare its value against `1000` to determine a match. It is worth - noting that BlazingMQ back-end can read a property in a message extremely - efficiently (in `O(1)` time) – we essentially build a hashtable on the wire. - -## Expression Language - -The expression language for subscriptions implements basic string and integer -manipulation, as a tiny subset of the C programming language. - -### Expression -{:.no_toc} - -- An expression consists of a combination of: - - Identifiers - - Integer, string and boolean literals - - Arithmetic, relational and boolean operators - - Parentheses -- Spaces, tabs and line feeds are ignored -- The language has three types: integer, string, and boolean -- The final result of an expression must be a boolean -- Limited to 128 characters in length - -### Identifiers -{:.no_toc} - -- Identifiers consist of a combination of upper and lower-case alphabetical - letters, digits, and underscores. - -- The first character may not be an underscore. - -- Property names are case sensitive. Example of valid identifiers are: `ask`, - `Ask`, `askPrice`, `ask_price`, `sp500`; note that `ask` and `Ask` are - different identifiers. - -- Examples of _invalid_ identifiers are: - - `_ask` (begins with underscore) - - `1Y` (begins with digit) - - `a+b` (would be parsed as three tokens: `a`, `+`, and `b`). - -- When an identifier is evaluated, the value of the eponymous property, in the - current message, is returned. - -- Note that the identifiers in an expression are not necessarily all evaluated - (see boolean operators below). - -### Integer Literals -{:.no_toc} - -- Integer literals consist of a sequence of digits, possibly preceded by the - minus sign. - -### String Literals -{:.no_toc} - -- String literals consist of a sequence of characters, enclosed in double - quotes. - -- To insert a double quote or a backslash in the sequence, prefix it - with a backslash (thus: `"a\"b"` is the string `a"b`, and `"a\\b"` is the - string `a\b`). - -- No character other than `"` or `\` is allowed after a `\`. This is the syntax - of strings in the C language. - -### Boolean Literals -{:.no_toc} - -- Boolean literals are `true` and `false`. - -### Arithmetic Operators -{:.no_toc} - -- Arithmetic operators are: - - `+` - - `-` - - `*` - - `/` - - `%` (modulus) -- They require two integer arguments. - -### Relational Operators -{:.no_toc} - -- Relational operators are: - - `=` - - `!=` - - `<` - - `<=` - - `>` - - `>=` - -- They require two arguments of the same type. - -### Boolean Operators -{:.no_toc} - -- Boolean operators are: - - `&&` - - `||` (junctions) - - `!` (negation). - -- Negation requires one argument -- Junctions require two boolean arguments -- Junctions are short-circuiting: if the left side of `&&` is `false`, or if - the left side of `||` is `true`, the right side is not evaluated. - - As a consequence, identifiers in an expression do not all need to have a - corresponding property of the right type. - - For example, `type == "i" && shares 1000 || shares == "all"` is valid as - long as the value of `type` and the type of `shares` are properly correlated. - `order == "limit" and limit == 0` can be used to detect the messages that - represent a Limit Order with a silly limit value, and e.g. log an error - message. - -### Operator Precedence -{:.no_toc} - - - Operator precedence and associativity are the same as in C; from high - precedence to low: - -| Operator | Associativity | -| ----------------- | ------------- | -| `!` | Right | -| `*` `/` `%` | Left | -| `+` `-` | Left | -| `<` `<=` `>` `>=` | Left | -| `==` `!=` | Left | -| `&&` | Left | -| `||` | Left | - -- Expressions between parentheses are evaluated first, starting with the - innermost. - -- Operations with higher precedence are evaluated before operations - with lower precedence. For example, `a*x+b>0` is evaluated as `((a*x)+b)>0`. - -- When two operators have the same precedence, they are evaluated from left to - right, except for `!` which is evaluated right to left. For example, in - `a-b-c` is evaluated as `(a-b)-c`. `!!ok` is evaluated as `!(!ok)`. - -For a formal specification, see [Flex -rules](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqeval/bmqeval_simpleevaluatorscanner.l) -for the tokenizer and the [Bison -grammar](https://github.com/bloomberg/blazingmq/blob/main/src/groups/bmq/bmqeval/bmqeval_simpleevaluatorparser.y). - ---- diff --git a/docs/docs/getting_started/blazingmq_in_action.md b/docs/docs/getting_started/blazingmq_in_action.md deleted file mode 100644 index 4cbfc27ae..000000000 --- a/docs/docs/getting_started/blazingmq_in_action.md +++ /dev/null @@ -1,152 +0,0 @@ ---- -layout: default -title: BlazingMQ in Action -parent: Getting Started -nav_order: 2 ---- - -# BlazingMQ in Action -{: .no_toc } - -* toc -{:toc} - -The BlazingMQ project comes with an out-of-the-box docker cluster meant for -experimentation. We'll walk through bringing up a BlazingMQ broker, demonstrate -some tooling, and highlight a few BlazingMQ features. This image is meant for -demo purposes only. - -To begin, first clone the BlazingMQ -[project](https://github.com/bloomberg/blazingmq) and run the following -commands from repo's root directory: - -```sh -$ docker compose -f docker/single-node/docker-compose.yaml up --build -d -$ docker compose -f docker/single-node/docker-compose.yaml run bmqtool -$ bmqtool -b tcp://bmqbrkr:30114 -``` - -This command will bring up a BlazingMQ cluster with a default domain -provisioned according to a config file. It will then drop you into a shell -which can run a CLI program called `bmqtool`. Note that by default, BlazingMQ -broker listens on port number 30114. - -## BlazingMQ CLI - -BlazingMQ comes with a CLI tool to help test and interact with the broker -called `bmqtool`. This program has several uses, including acting as a producer -and/or consumer application. We will walk through its most basic workflow: the -client REPL. The included docker compose workflow should get you started: - -```sh -$ docker compose -f docker/single-node/docker-compose.yaml up bmqtool - -> help -``` - -### Creating your first queue - -When you start up `bmqtool`, it should drop you into its default CLI mode. By -default the tool does not begin a **session** with the broker in this mode. To -open a connection with the BlazingMQ back-end, you'll need to `start` a -**session**: - -```sh -> start - -10MAY2023_15:27:19.305 (140195584415616) INFO m_bmqtool_interactive.cpp:140 --> Starting session: [ async = false ] -... -10MAY2023_15:27:19.311 (140195584415616) INFO m_bmqtool_interactive.cpp:151 <-- session.start(5.0) => SUCCESS (0) -``` - -{: .highlight } -**Note:** `bmqtool` may print log lines hiding the CLI prompt `>`. -The CLI will still take commands you type into the CLI even if the `>` is not visible. - -Now we may open our first **queue**! We will open the queue both as a producer -and consumer. This means that any messages that we post will be echoed back to -us. Note that a queue does not need to be created or declared upfront in -BlazingMQ. It is automatically created under the hood by the system when it is -opened for the first time. - -```sh -> open uri - -open uri="bmq://bmq.test.persistent.priority/my-first-queue" flags="read,write,ack" -``` - -The `open` command takes two parameters: the **queue**'s URI and -permissions. Note that we are passing *write* and *read* flags when opening the -queue. Producing messages to **queues** is done through the `post` -operation. Try it out now: - -```sh -> post uri="bmq://bmq.test.persistent.priority/my-first-queue" payload=["hello world"] -``` - -Since we opened the queue in the *read* mode as well, the message will be -echoed back to us. This can be checked by the `list` command: - -```sh -> list - -12MAY2023_16:47:45.073 (139815379564416) INFO m_bmqtool_interactive.cpp:648 Unconfirmed message listing: 1 messages - # 1 [40000000001068A4B4B275EDF7D3228F] Queue: '[ uri = bmq://bmq.test.persistent.priority/my-first-queue correlationId = [ autoValue = 2 ] ]' = 'hello world' -``` - -**Messages** are composed of a payload and an optional set of properties, which -can act as metadata for the message. A property can be represented as a JSON -object like so: - -```json -{ - "name": "string", - "value": "any", - "type": "string" -} -``` - -**Queues** are opened in namespaces called **domains.** If an opened **queue** -doesn't exist, then it will be created. **Domains** also help define default -configurations for **queues**. We'll look at how to configure custom -**domains** later. - -Once a message is delivered to a queue, it may be read by consumers and -confirmed. In BlazingMQ, this is done with the `confirm` operation. - -```sh -> confirm uri="bmq://bmq.test.persistent.priority/my-first-queue" guid="40000000001068A4B4B275EDF7D3228F" -``` - -Notice as part of the `confirm` operation we must pass a GUID, which matches -the one from the output of the `list` command. - -And that's it! We just ran a BlazingMQ client application which acted as a -producer and a consumer for a queue, posted a message and consumed it! - -More hands-on examples of playing around with BlazingMQ can be found in -[this](../more_fun_with_blazingmq) article, where we see some intermediate and -advanced features of BlazingMQ in action. - -We also encourage readers to visit these articles to learn more about -BlazingMQ: - -- [*Concepts*](../../introduction/concepts), which explains some terminology - mentioned in this article, like *domain*, *queue*, *queue uri*, *message*, - etc. - -- Our [C++](https://github.com/bloomberg/blazingmq/tree/main/src/tutorials) - and - [Java](https://github.com/bloomberg/bmq-sdk-java/tree/main/bmq-examples) - tutorials. - -- C++ and Java API reference [documentation](../../../apidocs) - -- BlazingMQ [architecture](../../architecture/clustering) - -## Building - -[bin/build-ubuntu.sh](bin/build-ubuntu) and -[bin/build-darwin.sh](bin/build-darwin) build BlazingMQ and its dependencies, -respectively, on Ubuntu 22.04.2 LTS and Darwin 22.6.0. They can serve as a basis -to build BlazingMQ on other systems. \ No newline at end of file diff --git a/docs/docs/getting_started/client_examples.md b/docs/docs/getting_started/client_examples.md deleted file mode 100644 index a4992016d..000000000 --- a/docs/docs/getting_started/client_examples.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: Client Examples -parent: Getting Started -nav_order: 4 ---- - -# BlazingMQ Client Examples - -- C++ client examples can be found -[here](https://github.com/bloomberg/blazingmq/tree/main/src/tutorials). - -- Java client examples can be found -[here](https://github.com/bloomberg/blazingmq-sdk-java/tree/main/bmq-examples/src/main/java/com/bloomberg/bmq/examples). diff --git a/docs/docs/getting_started/index.md b/docs/docs/getting_started/index.md deleted file mode 100644 index 3f6b7f55b..000000000 --- a/docs/docs/getting_started/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: default -title: Getting Started -nav_order: 3 -has_children: true -permalink: /getting_started ---- - -# [](#getting-started)Getting Started diff --git a/docs/docs/getting_started/more_fun_with_blazingmq.md b/docs/docs/getting_started/more_fun_with_blazingmq.md deleted file mode 100644 index a9cfa9d40..000000000 --- a/docs/docs/getting_started/more_fun_with_blazingmq.md +++ /dev/null @@ -1,230 +0,0 @@ ---- -layout: default -title: More Fun with BlazingMQ -parent: Getting Started -nav_order: 3 ---- - -# More Fun with BlazingMQ -{: .no_toc } - -* toc -{:toc} - -BlazingMQ has several features for handling message delivery. We'll go over a -few common situations, each of which can be demoed using the `docker compose` -workflow in [BlazingMQ in Action](../blazingmq_in_action). - -As a reminder, here's the setup for bmqtool and a single broker node: - -```sh -$ docker compose -f docker/single-node/docker-compose.yaml up --build -d -$ docker compose -f docker/single-node/docker-compose.yaml run bmqtool -$ bmqtool -b tcp://bmqbrkr:30114 -``` - -{: .highlight } -**Note:** `bmqtool` may print log lines hiding the CLI prompt `>`. -The CLI will still take commands you type into the CLI even if the `>` is not visible. - ---- - -## Redelivery - -Open a queue as a reader & writer, post a message, and observe that the -consumer has received the message with `list`. - -```sh -> start -> open uri="bmq://bmq.test.persistent.priority/redelivery" flags="read,write" -> post uri="bmq://bmq.test.persistent.priority/redelivery" payload=["hello world"] -> list - # 1 [400000000002FAC11F098B1B47064911] Queue: '[ uri = bmq://bmq.test.persistent.priority/redelivery correlationId = [ autoValue = 2 ] ]' = 'hello world' -``` - -Then shutdown the consumer without confirming the message. Start it again, and -show that message was redelivered to it. - -```sh -> bye -$ bmqtool -b tcp://bmqbrkr:30114 -> start -> open uri="bmq://bmq.test.persistent.priority/redelivery" flags="read" -> list - # 1 [400000000002FAC11F098B1B47064911] Queue: '[ uri = bmq://bmq.test.persistent.priority/redelivery correlationId = [ autoValue = 2 ] ]' = 'hello world' -``` - ---- - -## Round Robin - -Start two instances of `bmqtool`. - -```sh -# bmqtool 1 -> start -> open uri="bmq://bmq.test.persistent.priority/round-robin" flags="read,write" -``` - -```sh -# bmqtool 2 -> start -> open uri="bmq://bmq.test.persistent.priority/round-robin" flags="read" -``` - -In the first one, post the following: - -```sh -# bmqtool 1 -> post uri="bmq://bmq.test.persistent.priority/round-robin" payload=["alice", "bob", "charlie"] -``` - -Now run `list` in each `bmqtool` instance. You should see each message was -distributed in a round-robin fashion: - -```sh -# bmqtool 1 -> list - # 1 [40000000027B90A85281EBBE64922B68] Queue: '[ uri = bmq://bmq.test.persistent.priority/round-robin correlationId = [ autoValue = 2 ] ]' = 'alice' - # 2 [40000200027B90A8DE20EBBE64922B68] Queue: '[ uri = bmq://bmq.test.persistent.priority/round-robin correlationId = [ autoValue = 2 ] ]' = 'charlie' -``` - -```sh -# bmqtool 2 -> list - # 1 [40000100027B90A8C96FEBBE64922B68] Queue: '[ uri = bmq://bmq.test.persistent.priority/round-robin correlationId = [ autoValue = 2 ] ]' = 'bob' -``` - ---- - -## Rebalancing - -If a consumer shuts down with unconfirmed messages, those messages will be -redelivered to other active consumers. Start multiple consumers, and post a -message: - -```sh -# bmqtool 1 -> start -> open uri="bmq://bmq.test.persistent.priority/rebalance" flags="read,write" -> post uri="bmq://bmq.test.persistent.priority/rebalance" payload=["alice"] -``` - -```sh -# bmqtool 2 -> start -> open uri="bmq://bmq.test.persistent.priority/rebalance" flags="read" -``` - -`list` both consumers to show that one received the message and the other -didn't: - -```sh -# bmqtool 1 -> list -Unconfirmed message listing: 1 messages - # 1 [40000000007A7B1DCAB1E7ED0CDB2FD1] Queue: '[ uri = bmq://bmq.test.persistent.priority/rebalance correlationId = [ autoValue = 8 ] ]' = 'alice' -``` - -```sh -# bmqtool 2 -> list -Unconfirmed message listing: 0 messages -``` - -Now kill the consumer that received the message and `list` in the other to -confirm that the message was resent: - -```sh -# bmqtool 1 -> bye -``` - -```sh -# bmqtool 2 -> list -Unconfirmed message listing: 1 messages - # 1 [40000000007A7B1DCAB1E7ED0CDB2FD1] Queue: '[ uri = bmq://bmq.test.persistent.priority/rebalance correlationId = [ autoValue = 19 ] ]' = 'alice' -``` - ---- - -## Consumer Priority - -- Show [consumer - priorities](../../features/message_routing_strategies#consumer-priority-mode) - in action. Bring up two consumers, one with higher and another with lower - priority. See that all messages are routed to the higher priority consumer. - -Consumers can be configured with priority. A higher priority will cause -messages to be delivered with preference. The default priority is 0. Let's open -two consumers, one with the default and one with a higher priority: - -```sh -# bmqtool 1 -> start -> open uri="bmq://bmq.test.persistent.priority/priority" flags="read" consumerPriority=0 -``` - -```sh -# bmqtool 2 -> start -> open uri="bmq://bmq.test.persistent.priority/priority" flags="read,write" consumerPriority=1 -> post uri="bmq://bmq.test.persistent.priority/priority" payload=["alice", "bob", "charlie"] -``` - -Now run `list` in each to show that the higher priority consumer received all -three messages: - -```sh -# bmqtool 1 -> list -Unconfirmed message listing: 0 messages -``` - -```sh -# bmqtool 2 -> list -Unconfirmed message listing: 3 messages - # 1 [400000000005289E9887B8D6F559F164] Queue: '[ uri = bmq://bmq.test.persistent.priority/priority correlationId = [ autoValue = 2 ] ]' = 'alice' - # 2 [400001000005289EF052B8D6F559F164] Queue: '[ uri = bmq://bmq.test.persistent.priority/priority correlationId = [ autoValue = 2 ] ]' = 'bob' - # 3 [400002000005289EFD2BB8D6F559F164] Queue: '[ uri = bmq://bmq.test.persistent.priority/priority correlationId = [ autoValue = 2 ] ]' = 'charlie' -``` - ---- - -## Subscriptions - -- Show [subscriptions](../../features/subscriptions) in action. Bring up two - consumers, both specifying a different subscription expression, see that - first message, which satisfies first expression, is routed to consumer 1. - Similary, second message satisfying second expression is routed to consumer - 2. - -Consumers can open queues that receive messages conditionally based on message -properties. - -Bring up a consumer and open a queue with a subscription: - -```sh -> start -> open uri="bmq://bmq.test.persistent.priority/subscription" flags="read,write" subscriptions=[{"expression": "x > 0"}] -``` - -Now `post` a message that fails to match `x > 0` in the message properties and observe the consumer fails to receive it: - -```sh -> post uri="bmq://bmq.test.persistent.priority/subscription" payload=["alice"] messageProperties=[{"name": "x", "value": "0", "type": "E_INT"}] -> list -Unconfirmed message listing: 0 messages -``` - -Now send a message with `x > 0`: - -```sh -> post uri="bmq://bmq.test.persistent.priority/subscription" payload=["alice"] messageProperties=[{"name": "x", "value": "1", "type": "E_INT"}] -> list - # 1 [40000400011AFF060B5DC6A7FA905D3D] Queue: '[ uri = bmq://bmq.test.persistent.priority/subscription correlationId = [ autoValue = 24 ] ]' = 'alice', with properties: [ x (INT32) = 1 ] -``` - ---- diff --git a/docs/docs/home.md b/docs/docs/home.md deleted file mode 100644 index 9511ad039..000000000 --- a/docs/docs/home.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: home -title: Home -nav_order: 0 -description: "" -permalink: / ---- - -## Clustering and Quorum-based Replication - -Built on the [solid foundation](docs/architecture/clustering) of -industry-standard best practices in the domain of distributed systems to -provide highly-available queues. - -{% include animation.html asset_path="assets/animations/animations/bmq/message-paths/index.html" height="44%" %} - ---- - -## Message Routing Strategies - -Provides a set of [message routing -strategies](docs/features/message_routing_strategies) to help applications -implement complex message processing pipelines. - -### Routing Strategy - Work Queue - -{% include animation.html asset_path="assets/animations/animations/bmq/work-queue-mode/index.html" height="44%" %} - -### Routing Strategy - Consumer Priority - -{% include animation.html asset_path="assets/animations/animations/bmq/priority-mode/index.html" height="44%" %} - ---- - -## Multi-Hop Network Topology - -Supports a unique multi-hop network -[topology](docs/architecture/network_topology) leading to a distribution tree -for each queue, thereby leading to network bandwidth savings for certain use -cases. - -{% include animation.html asset_path="assets/animations/animations/bmq/distribution-tree/index.html" height="82%" %} - ---- diff --git a/docs/docs/installation/configuration.md b/docs/docs/installation/configuration.md deleted file mode 100644 index fec94a83a..000000000 --- a/docs/docs/installation/configuration.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -layout: default -title: Configuration -parent: Installation -nav_order: 2 ---- - -# BlazingMQ Configuration -{: .no_toc } - -* toc -{:toc} - -BlazingMQ is a highly flexible system, with the BlazingMQ message broker at its -core. A broker, or _node_, participates in a _cluster_, which manages a -collection of _domains_. This leads to three configurable entities in the -system -- BlazingMQ message broker, BlazingMQ cluster and BlazingMQ domain. -Configurations for all of them are expressed as a set of JSON files, located in -a directory passed to message broker process (`bmqbrkr`) on the command line. - -The structure of the directory is: - -* `root/` - * `bmqbrkrcfg.json` - * `clusters.json` - * `domains/` - * `domain1.json` - * `domain2.json` - * ... - - -## Broker Configuration - -`bmqbrkrcfg.json` contains configuration that is specific to an instance of the -broker, i.e. a single process running `bmqbrkr`. It specifies various low-level -parameters, like number of worker threads, initial size of memory pools, the -location and the format of the log files, etc. - -The more important parameters in this file are: - -* `appConfig/hostName` \ - The name of the host, as it will appear in the cluster configuration - file. Can be overriden on the command line with `-h` or `--hostName`. - -* `appConfig/brokerInstanceName` \ - The name of the broker instance, used to identify a broker if more than - one broker runs on the same host. Set to "default" otherwise. Can be - overriden on the command line with `-i` or `--instanceId`. - -* `appConfig/hostDataCenter` \ - The name of the "data center" of the host. In some circumstances, a broker - will prefer to use a connection with another broker in the same data - center, for performance. Can be overriden on the command line with `-d` or - `--hostDataCenter`. - -* `appConfig/hostDataCenter/networkInterfaces/tcpInterface/port` \ - The port that the broker listens to. Can be overriden on the command line - with `-p` or `--port`. - -For a complete list of settings, see the configuration -[schema](https://github.com/bloomberg/blazingmq/blob/main/src/groups/mqb/mqbcfg/mqbcfg.xsd). -The top level object is `Configuration`. For a sample configuration, see the -Docker -[example](https://github.com/bloomberg/blazingmq/blob/main/docker/cluster/config/bmqbrkrcfg.json). - ---- - -## Cluster Configuration - -`clusters.json` specifies all the clusters known to the broker. It contains -two optional keys - `myClusters` and `proxyClusters`. The associated values -are arrays of objects. Either keys are optional, and either arrays can be -empty, but not at the same time. - -The objects in the `myClusters` array each specify a cluster that a broker -instance is a member, or _node_, of. They consist of: - -* `name` \ - The name of the cluster. - -* `nodes` \ - An array of objects describing the nodes in the cluster. They consist of: - * `name` \ - The name of the node. - * `id` \ - An integer node identifier, unique within the cluster. - * `dataCenter` \ - The data center of the node. Proxies will use connections to brokers - in the same data center, if available. - * `transport/tcp/endpoint` \ - A string in the form `"tcp://{hostName}:{port}"` - -* `partitionConfig` \ - Specifies the location of the - [partitions](../../architecture/clustering#storage-shard) used to store - the messages, maximum file sizes, whether to pre-allocate and prefault - storage, etc. - -* `elector` \ - Settings for the leader election subsystem: quorum, maximum attempts to - open a queue, and various timeouts. - -* `queueOperations` \ - Settings for queue operations (mostly timeouts). - -* `clusterMonitorConfig` \ - Controls how long transitional cluster states can perdure before raising - an alert in the broker logs. - -* `messageThrottleConfig` \ - Sets limits on the rate at which a producer can post messages. - -The objects in the `proxyClusters` array specify the clusters the broker can -proxy to. They are similar to the `myClusters` objects, but they lack the -`masterAssignment`, `partitionConfig` and `elector` keys. - -For a complete list of settings, see the configuration -[schema](https://github.com/bloomberg/blazingmq/blob/main/src/groups/mqb/mqbcfg/mqbcfg.xsd). -The top level object is `ClustersDefinition`. For a sample configuration, see -the Docker -[example](https://github.com/bloomberg/blazingmq/blob/main/docker/cluster/config/clusters.json). - ---- - -## Domain Configurations - -Each file corresponds to one BlazingMQ domain that the broker can handle. It -contains either a _definition_ or a _redirection_. For a complete list of -settings, see the -[schema](https://github.com/bloomberg/blazingmq/blob/main/src/groups/mqb/mqbconfm/mqbconf.xsd). -The top level object is `DomainVariant`. For sample configurations, see the -Docker -[example](https://github.com/bloomberg/blazingmq/tree/main/docker/cluster/config/domains). - -### Domain Definition - -The more important parameters in the `definition` object are: - -* `definition/location` \ - The name of the cluster to contact to open a queue in the domain. It must - be a name listed in the `myClusters` section of `clusters.json`, in which - case the broker handles the request; or a name listed in `proxyClusters`, - in which case the broker forwards the request. - -* `definition/parameters/mode` \ - The queue mode, either `priority`, `broadcast`, or `fanout`. - -* `definition/parameters/maxDeliveryAttempts` \ - The maximum number of times the cluster should attempt to deliver the same - message. Any value other than zero enables [poison pill - detection](../../features/poison_pill_detection). - -* `definition/parameters/consistency` \ - `eventual` or `strong`. Select - the [consistency](../../architecture/clustering#eventual-vs-strong-consistency-in-replication) - model. - -* `definition/parameters/storage/config` \ - `fileBacked` or `inMemory`. Specifies whether messages are kept on disk - (typical for priority and fanout domains), or in memory (required for - broadcast domains, allowed for 1-node clusters). - -* `definition/parameters/mode/fanout/appIDs` \ - For fanout mode only, a list of appId names. - -The other parameters configure per-domain and per-queue message and byte -quotas, maxima for the number of producers, consumers, and queues, etc. - -### Domain Redirection - -Redirection is similar to a symbolic link, i.e. it gives an additional name to -an existing domain. Unlike symlinks, only one level of redirection is allowed, -and it is performed only by the first broker that handles the open queue -request. - -A redirection consists of a single key-value pair: `redirect` and the new -domain name. - ---- diff --git a/docs/docs/installation/deployment.md b/docs/docs/installation/deployment.md deleted file mode 100644 index a44c35ec3..000000000 --- a/docs/docs/installation/deployment.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -layout: default -title: Deployment -parent: Installation -nav_order: 3 ---- - -# BlazingMQ Deployment -{: .no_toc } - -* toc -{:toc} - -As mentioned in the [configuration](../configuration) article, BlazingMQ is a -highly flexible system, with the BlazingMQ message broker at its core. A -broker, or _node_, participates in a _cluster_, which manages a collection of -domains. A cluster can consist of a single node, which results in better speed; -or of several nodes, which results in better availability and reliability in -presence of network or other failures. - -Designing a BlazingMQ system thus involves deciding: - -- how many clusters to create -- how many brokers to assign to each cluster - -Once this is done, it must be expressed as a set of JSON files, as described in -the [configuration](../configuration) article, and placed in a configuration -directory, which is passed on the command line to the broker when it is -started. As it operates, the broker reads and writes various files. -`bmqbrkrcfg.json` specifies the _log_ directory; `clusters.json` specifies, for -each cluster, a _storage_ and an _archive_ directory. These three directories -must be created prior starting the broker. - -When it starts, the broker creates a file (`bmqbrkr.pid`) and a named pipe -(`bmqbrkr.ctl`) in the current directory, which must thus be writable. - -Brokers operate in the background, as "services" or "daemons". Thus, it often -makes sense to run them under a dedicated Unix account. However, this is not -mandatory: an application that runs under a normal user account could run a -BlazingMQ broker as part of its implementation. - -The following sections describe in more details two typical configurations, and -implements them in a set of Docker containers. Together, they provide a -template for deployment that should cover the majority of use cases, and -provide a good starting point for creating more complex installations. - -Much of the -[Dockerfile](https://github.com/bloomberg/blazingmq/blob/main/docker/Dockerfile) -has to do with buiding the broker from the sources, drawing the dependencies -from various sources. In the end, `bmqbrkr` and `bmqtool` are installed in -`/usr/local/bin`. - -The section relevant to deployment is at the bottom: - -```sh -RUN addgroup bmq \ - && adduser bmq --home /var/local/bmq --system --ingroup bmq --shell /usr/bin/bash -USER bmq -WORKDIR /var/local/bmq -RUN mkdir -p logs storage/archive -``` - -In English, these lines: -* create a `bmq` group -* create a `bmq` system user, with `/var/local/bmq` as its home directory -* in the home directory, create log, storage and archive directories -* set the default user for Docker commands to `bmq`, and the default current - directory to `bmq`'s. - -The resulting image does not contain a configuration directory. Instead, each -example maps a `config` directory on the host to `/etc/local/bmq` inside the -container(s). - ---- - -## Single Node - -In this example (see the [docker-compose.yaml](https://github.com/bloomberg/blazingmq/blob/main/docker/single-node/docker-compose.yaml) file), -a single machine, called _earth_, runs a broker that acts as the single node of -a cluster named "local". The `hostName` in -[`bmqbrkrcfg.json`](https://github.com/bloomberg/blazingmq/blob/main/docker/single-node/config/bmqbrkrcfg.json) -is set to "earth". "localhost" would work as well, but an arbitrary value would -not, as the broker resolves the name in `hostName`. - -The `hostDataCenter` is set to "UNUSED"; any value work, as this setting -is irrelevant in single-node configurations. - -The broker is started with the command: - -```sh -/usr/local/bin/bmqbrkr /etc/local/bmq -``` - -Note that this counts on the Docker image setting `bmq` as the default user, -and `/var/local/bmq` as the default directory. - -The example can be run (from the root of the BlazingMQ source directory) with: - -```sh -$ docker-compose -f docker/single-node/docker-compose.yaml up --detach -``` - -To interact with the broker: -```sh -$ docker-compose -f docker/single-node/docker-compose.yaml exec bmqbrkr bmqtool -``` - -```sh -> start -> open uri="bmq://bmq.test.persistent.priority/qqq" flags="read,write" -> post uri="bmq://bmq.test.persistent.priority/qqq" payload=["foo"] -> list -``` -(etc) - ---- - -## Cluster - -In this example (see the [docker-compose.yaml -file](https://github.com/bloomberg/blazingmq/blob/main/docker/cluster/docker-compose.yaml)), -four machines in two data centers (_gallifrey_ and _skaro_ in _WHO_, _pacem_ -and _lusus_ in _HYPERION_) each run a broker. They are all nodes in the -_planets_ cluster. - -It looks each machine needs its own set of configuration files, or, at least, -its own `bmqbrkrcfg.json`, because, on each machine, the value of `hostName` -needs to be the machine's name. Moreover, `hostDataCenter` must be set to -either _WHO_ or _HYPERION_, depending on the machine. Fortunately, these -settings can be overriden from the command line, with the `-h/--hostName` and -`-d/--hostDataCenter` - -Thus, on _gallifrey_, the broker is started with the command: - -```sh -/usr/local/bin/bmqbrkr -h gallifrey -d WHO /etc/local/bmq -``` - -And on _pacem_: - -```sh -/usr/local/bin/bmqbrkr -h pacem -d HYPERION /etc/local/bmq -``` - -The example can be run (from the root of the BlazingMQ source directory) with: - -```sh -$ docker-compose -f docker/cluster/docker-compose.yaml up --detach -``` - -This example also creates an additional machine - _earth_ - from which -`bmqtool` can be run. Since the tool and the broker are not on the same machine -this time, it is necessary to specify the broker's endpoint: - -```sh -$ docker-compose -f docker/cluster/docker-compose.yaml run bmqtool bash -bmq@earth:~$ bmqtool -b tcp://skaro:30114 -> start -``` diff --git a/docs/docs/installation/index.md b/docs/docs/installation/index.md deleted file mode 100644 index b2ba17774..000000000 --- a/docs/docs/installation/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: default -title: Installation -nav_order: 7 -has_children: true -permalink: /installation ---- - -# [](#installation)Installation diff --git a/docs/docs/introduction/architecture_overview.md b/docs/docs/introduction/architecture_overview.md deleted file mode 100644 index fcba0fc9d..000000000 --- a/docs/docs/introduction/architecture_overview.md +++ /dev/null @@ -1,187 +0,0 @@ ---- -layout: default -title: Architecture Overview -parent: Introduction -nav_order: 4 ---- - -# Architecture Overview -{: .no_toc } - -* toc -{:toc} - -Here's a high-level overview of BlazingMQ's architecture, -including details like clustering, typical network topology, and some common -terminology. - -For additional information on BlazingMQ's's architecture and internal design, -please see the [*Architecture*](../../../architecture) section. - -## Introduction - -BlazingMQ's infrastructure consists of message brokers and clients (producer and -consumer applications) running in a distributed environment. Clients don't -talk to each other directly -- they only connect to BlazingMQ brokers. Client libraries -are available in C++, Java, and Python. - -In BlazingMQ, a queue represents a logical stream of data over which producer -and consumer applications exchange messages. Queues enable producers and -consumers to temporally and spatially isolate from one another, thereby ensuring -they are decoupled. - -Queues are persisted on disk and replicated across machines in the BlazingMQ -cluster. Queues are grouped into domains: a domain provides a namespace for -applications and encapsulates common configuration associated with the queues, -like routing mode, the queue's storage quota, message TTL, and other parameters. -See also [*Concepts*](../concepts) for more details about BlazingMQ -domains. - -BlazingMQ optionally supports the notion of tiers -- a queue can have multiple -isolated instances across different tiers, such as *dev*, *alpha*, *beta*, *uat*, -*qa*, *prod*, etc. - -BlazingMQ provides the following guarantees for messages: - -- **Guarantee of Delivery** - - - Any message posted by a producer application that is successfully accepted - by BlazingMQ is guaranteed to be delivered to the consumer application(s) *at - least once*. This means that consumers may receive duplicates in case of a - software crash, hardware issues or network glitch. Note that a [*broadcast - mode*](../../features/message_routing_strategies#broadcast-mode) routing - strategy is an exception to this rule, since it provides *at most once* delivery - guarantee by design. - - - Note that not all messages posted by a producer application are guaranteed - to be successfully accepted by BlazingMQ. A message can be rejected by - BlazingMQ due to reasons like a queue's storage quota limit being reached, a - long-running network issue, etc. So, to rephrase the above bullet, - BlazingMQ either reliably delivers the message to the consumer or reliably - tells the producer that the message was not accepted. - -- **Guarantee of Ordering** - - - Messages are delivered in the publishing order, unless the queue has - multiple consumers attached to it, along with a configuration (static or - dynamic) which allows multiple consumers to consume messages from the - queue concurrently. - ---- - -## Clustering - -### Typical Deployment - -![Typical Deployment](../../../assets/images/TypicalDeployment.png "Typical BlazingMQ Deployment") - -The above figure shows the typical deployment of a BlazingMQ setup. The four nodes -in the middle represent a BlazingMQ cluster where queues are persisted and -replicated. The blue node represents the queue's primary node, which is in charge of -managing the queue (replication, message routing, etc.). Orange nodes -represent replicas which, as the name suggests, are in charge of storing a -local copy of the queue. - -Producer/consumer applications can connect to any node in the BlazingMQ cluster -instead of always being required to connect to the primary node. If a client -application connects to a replica node, the replica will automatically make the -primary node aware of the client application, and all messages flowing to/from -the client application will go through the replica. - -More details about BlazingMQ's clustering and alternative deployments can be -found [here](../../architecture/clustering), as well as in other entries in the -[*Architecture*](../../../architecture) section. - ---- - -## Terminology - -This section reviews some common terminology used in BlazingMQ. Additional -details about some of these concepts can be found [here](../concepts). - -- *BlazingMQ Cluster*: A group of machines where queues are hosted. The - typical size of a BlazingMQ cluster varies from 3-7 machines. Application - tasks generally don't run on BlazingMQ cluster machines, unless the BlazingMQ - cluster is co-located. Co-location can help achieve the lowest possible latency. - -- *BlazingMQ Domain*: A namespace owned by an application using BlazingMQ. A - domain encapsulates various configuration parameters like queue quota, - message expiration time (TTL), queue mode (priority, fan-out, broadcast), - consistency level (eventual or strong), etc. In addition, a domain can also - capture the list of tiers. A domain is represented as `bmq://foo.bar.baz`. - See [`bmqt::URI`](../../apidocs/cpp_apidocs/group__bmqt__uri.html) for more - details. - -- *Queue*: A queue represents a logical stream of data in BlazingMQ over which - producer and consumer applications exchange messages. A queue enables - producers and consumers to temporally and spatially isolate from one another, - thereby ensuring that they are decoupled from each other. A queue is - identified by a URI, which takes the form of `bmq://foo.bar.baz/myQueueName` - where `bmq://foo.bar.baz` is the domain and `myQueueName` is the queue name. - See [`bmqt::URI`](../../apidocs/cpp_apidocs/group__bmqt__uri.html) for more - details. - -- *Producer*: A BlazingMQ client application which sends ("posts") messages to - a queue. - -- *Consumer*: A BlazingMQ client application which receives ("consumes") - messages from a queue. An application can be both the producer and consumer - for the same or different queues. - -- *BlazingMQ Broker*: A back-end application which is part of the BlazingMQ - framework, and participates as a member of a BlazingMQ cluster. A broker can - be either a primary or a replica for a queue hosted on that cluster. - -- *BlazingMQ Proxy*: An *optional* back-end application which is part of the - BlazingMQ framework, and runs on client machines. A proxy is not a member of - a BlazingMQ cluster, but communicates with the cluster on behalf of client - applications. It's the same executable as the BlazingMQ broker but with a - different configuration. In fact, a BlazingMQ broker instance can act as a - proxy for some queues and a cluster member for other queues, though such - configurations are very rare. - -- *Primary*: The node in a BlazingMQ cluster which is managing a queue. All - writes for a queue go though its primary node. The primary node is also in charge - of a queue's replication to other members in the cluster. At a given - time, there can be only one primary mode for a given queue. - -- *Replica*: A node in BlazingMQ cluster which holds a copy of the queue. - Replicas cannot initiate a write operation on the queue, although they push - new messages to consumer applications when requested to do so by the primary node. - A replica can be promoted to a primary node if the existing primary node goes - down. All nodes in a BlazingMQ cluster which are not the primary node for a queue - act as its replicas. - -- *Leader*: A node in a BlazingMQ cluster which is in charge of managing the - BlazingMQ cluster, including things like cluster metadata, cluster - membership, health of cluster nodes, list of partitions, list of all active - queues, primary node(s), etc. A leader's goal is to ensure that every node - in the cluster has up-to-date metadata information, so that the node can make - the right decision. A node in a BlazingMQ cluster can act as both a leader and a primary. - -- *PUT*: A message sent (or "posted") by the producer to the queue. - -- *ACK*: An acknowledgement sent by BlazingMQ to the producer, informing the - producer if the *PUT* message was successfully accepted or not. Note that - the API to post a *PUT* message is asynchronous, and thus, an *ACK* message - delivers the result to the producer. Also note that while BlazingMQ tries as - much as possible to accept the *PUT* message and send successful *ACK*s, - there are scenarios where a producer may receive a negative *ACK*, which - indicates that *PUT* message could not be accepted by BlazingMQ. Reasons for - a negative *ACK* could be the queue quota getting full, a long-standing - network issue, etc. Note, what BlazingMQ guarantees is that the producer - will receive an *ACK* for every *PUT* message. - -- *PUSH*: A message sent by BlazingMQ to the consumer. This is effectively the - same message as the corresponding *PUT*. - -- *CONFIRM*: A message sent by the consumer to BlazingMQ indicating it has - processed a specific *PUSH* message. Once a *CONFIRM* message is received, - BlazingMQ is free to mark that message as deleted in the queue. Note that a - consumer can send *CONFIRM* messages in any order. For example, if a - consumer receives 5 *PUSH* messages, it can choose to send *CONFIRM*s for - messages 2 and 4, and keep messages 1, 3 and 5 for later processing. This is - a very powerful feature and this is what enables BlazingMQ to implement work - queues, as well as for consumers to implement multi-threaded logic. - ---- diff --git a/docs/docs/introduction/comparison.md b/docs/docs/introduction/comparison.md deleted file mode 100644 index c2365e4bd..000000000 --- a/docs/docs/introduction/comparison.md +++ /dev/null @@ -1,335 +0,0 @@ ---- -layout: default -title: Comparison With Alternative Systems -parent: Introduction -nav_order: 5 ---- - -# Comparison With Alternative Systems -{: .no_toc } - -* toc -{:toc} - -## Introduction - -We compare BlazingMQ with two relevant and prominent open source distributed messaging systems -- RabbitMQ and Apache Kafka. While Apache -Kafka doesn’t advertise itself as a message queue system, we include it here -because it is widely used for its messaging features and overlaps with both -BlazingMQ and RabbitMQ as far as its features and usage are concerned. - -In the enterprise environment where BlazingMQ originated, all three systems -have been offered as managed services in production and complemented each other -in a complete messaging infrastructure package. Some of the insights presented -in this comparison are drawn from the wealth of knowledge accumulated over the -years by offering all three technologies as a service. - -One of the goals of this document is to demonstrate that there is a unique -combination of simplicity, performance, fault tolerance, and features that -makes BlazingMQ competitive as a distributed messaging system. - -We also highlight that there may be no simple answer to the question “Which -messaging system should I use?” due to the complexity of factors involved. Readers looking for a straightforward answer to that question will likely be -disappointed. We deliberately avoid making a recommendation for a specific -messaging system because, as we will see, each system is unique and better than -the others in some aspects while lacking in other areas. Potential users are -encouraged to carry out their own research and comparison of these systems, -keeping in mind their current and potential future use cases. - -We assume the reader has a high-level understanding of distributed -messaging systems. However, in order to keep the document accessible to a -wider audience, we deliberately avoid using terminology specific to any of the -systems under consideration. - -In order to understand and compare these three systems, we decompose their -architecture and functionality across critical dimensions like storage and -replication, message routing, fault tolerance, features, etc. In the next -sections, we survey these systems across these dimensions. - ---- - -## Storage - -### Delivery Guarantees and Message Lifetime - -All three messaging systems offer ‘at-least once’ message delivery guarantee -which requires persistence (storage) and inevitably, replication. Apart from -storage, another important aspect in the life cycle of produced messages is -data routing (i.e., the logic of distributing messages among consumers). Kafka -stands apart from BlazingMQ and RabbitMQ -([Streams](https://www.rabbitmq.com/streams.html) aside) here by decoupling -storage from data routing. Reads in Kafka are not destructive (i.e., a -message’s lifetime does not depend on message delivery or message processing). -Messages are deleted according to the configured cleanup policy (e.g., based on -time, size, compaction). This design choice permits Kafka consumers to read -from the “past” (rewind or replay). This also requires each Kafka consumer to -know the offset from where to read the data. - -On the other hand, BlazingMQ and RabbitMQ keep messages only until they are -consumed. Consumers in these systems cannot go back to access messages which -were previously processed. - -### Storage and Routing - -BlazingMQ and RabbitMQ further differ in message storage in the following ways: - -- BlazingMQ stores messages first and then routes, while RabbitMQ routes (via - Exchange) before storing (to a queue). BlazingMQ’s approach ensures that the - cost of storage and replication is constant, irrespective of fan-out ratio - (number of consumers); however, this requires BlazingMQ to know the fan-out - ratio up front. Meanwhile, RabbitMQ's approach offers the flexibility of any - number of consumers joining the fan-out routing. But this comes at the expense of higher - costs (CPU, disk, and network bandwidth), proportional to the number of - routing destinations. - -- At the storage level, BlazingMQ differs from RabbitMQ by maintaining a log of - messages on disk. In other words, BlazingMQ does not delete a message from - the disk right away; it simply marks it as deleted or consumed. It deletes the - entire log when the log reaches its maximum configured size and all messages - in the log have been marked as consumed. On the other hand, RabbitMQ classic - queues keep track of messages in Erlang’s distributed database (Mnesia) and - deletes the messages from disk as they are consumed. At present, RabbitMQ quorum - queues store the complete message in the Raft log (stored on disk) and - truncate the log when safely possible. - ---- - -## Data Routing - -As mentioned earlier, data routing is the logic of distributing messages among -consumers. Consumers can compete with each other, advertise -different priorities, request selective messages (interest-based routing), or -even be absent while messages are produced. - -All three messaging systems recognize simple routing modes such as round-robin -and fan-out, and also dynamically adapt to changing consumers. As we will see -below, BlazingMQ and RabbitMQ share several similarities in data routing and -provide more flexibility, while Kafka stands out with its design choices in -routing. - -### Load Balancing - -In BlazingMQ and RabbitMQ, consumer(s) explicitly attach to queue(s); the -systems do not attempt to assign consumers to queues. On one hand, this -gives consumers finer control over which queues to consume from. On the -other hand, this requires them to know queue names a priori. Consumer groups -in Kafka, however, assign partitions to consumers and ensures that every -partition is assigned. Alternatively, consumers can assign a specific set of -partitions manually. - -In both BlazingMQ and RabbitMQ, multiple consumers can attach to a queue -configured in a round-robin mode, and the system will load balance messages -across all consumers. In other words, adding new consumers to a queue -automatically increases processing capacity. This may not be possible in Kafka -if there are no partitions to consume from. For example, if a fifth consumer -joins a Kafka topic with four partitions (and four consumers), the new consumer -will stay idle. In Kafka, load balancing of messages can occur across -partitions in a topic from the producer side (i.e., messages can be posted -across different partitions in a topic at the time they are produced). In -other words, unlike in BlazingMQ and RabbitMQ, adding a new consumer in Kafka -does not decrease the load on existing consumers; adding new partitions does. - -### Consumer Priority - -BlazingMQ and RabbitMQ both support the notion of priority in consumers (not to -be confused with priorities in queues, which are supported by RabbitMQ -- with some caveats). Priorities in consumers allow applications to control the -flow of messages across their consumer instances and implement a desired -failover behavior (messages will flow to lower priority consumers when higher -priority consumers go away). In the case of RabbitMQ specifically, a large -enough flow can direct messages to lower priority consumers even while higher -priority consumers are still present. Kafka, however, does not support -priorities in consumers. Furthermore, failover of consumers in Kafka may lead -to a significant change in the partition <=> consumer assignment mapping. - -### Topic Based Routing - -Both BlazingMQ and RabbitMQ support topic-based routing, where queues/consumers -can specify criteria (a filter or an expression) such that only those messages -which satisfy the given criteria are routed to the consumer(s)/queues(s). In -other words, topic-based routing gives applications the ability to support -heterogeneous consumers by breaking the stream of data into a dynamic, -non-fixed number of independent logical sub-streams using flexible criteria and -produced data. - -### Broadcast Routing Strategy - -BlazingMQ supports [*broadcast -strategy*](../../features/message_routing_strategies#broadcast-mode) for -message routing which provides ‘at-most once’ delivery guarantees. This is a -direct consequence of the fact that, in this strategy, BlazingMQ neither -persists messages on disk nor buffers them in memory. Instead, they are -immediately dispatched to the consumers attached to the queue at that instant -and then "dropped" by BlazingMQ. BlazingMQ makes no effort to keep messages -for consumers which may arrive at a later time. As a result of no buffering, -persistence, or replication of messages, broadcast strategy has -[better](../../performance/benchmarks#broadcast-routing-strategy) latency and -throughput numbers compared to other routing strategies. To the best of our -knowledge, this routing strategy is unique to BlazingMQ. This strategy can be -useful for scenarios where consistently lower latency is extremely -important and occasional data loss is acceptable. - ---- - -## Cluster Topology - -The topology of the system affects both its functionality (particularly data -routing), as well as performance. The topology of a system includes composition and placement of cluster nodes, as well as any other participating nodes. - -### Cluster Membership - -BlazingMQ replicates data across a fixed sized cluster. All cluster nodes in -BlazingMQ are equal as far as storage is concerned. In other words, every -cluster node in BlazingMQ has a full copy of the data. This means that the replication factor for every queue in a -BlazingMQ cluster is equal to the size of the cluster. This property has an interesting outcome – adding a new node -in a BlazingMQ cluster increases its availability, but not throughput or -capacity. While this approach simplifies BlazingMQ’s replication and cluster -state management logic, it comes at the expense of fixed cluster size. Cluster -size or membership in BlazingMQ can be changed only by restarting all nodes in -the cluster and requires some operational overhead. - -RabbitMQ supports a wide range of possible deployment/replication -topologies. Clusters can change size at runtime, and individual queues can -operate with different - and dynamically configurable - replication sizes and -patterns (provided that policies on both the broker and clients are configured -appropriately). - -Kafka dissociates replication factor with cluster size, and adding more nodes -in a Kafka cluster increases the cluster’s capacity. Kafka achieves this by -spreading partition replicas across the cluster such that each node in the -cluster replicates a subset of all the partitions hosted in the cluster. - -### Dependency on Other Systems - -BlazingMQ does not depend on any other software framework. RabbitMQ runs on -the Erlang VM. Both systems are self-sufficient and can host their data, as -well as metadata, by themselves. This is unlike Kafka, which requires Apache -ZooKeeper for storing metadata. However, Kafka is in the process of getting -rid of its dependency on ZooKeeper and will soon store its data and metadata -within the Kafka cluster itself. Lastly, Kafka runs on the Java Virtual Machine. - -### Proxies - -A unique feature of BlazingMQ is the presence of proxy nodes. BlazingMQ -applications have the option to connect to proxies instead of connecting -directly to the BlazingMQ cluster nodes. Proxies don’t participate in data -storage and replication, but they are part of routing, and are particularly helpful -with very large fan-out ratio scenarios. Proxies also protect applications -from transient network issues in the BlazingMQ cluster by providing seamless -buffering, retransmission, or retries of messages as appropriate. - -As a result of proxies, BlazingMQ dynamically creates a distribution tree for every queue, -which is rooted at the queue’s primary node. Replicas are the primary's child nodes, -and proxies are replicas’ child nodes. Producer and consumer applications -for the queue appear as leaf nodes in this tree. See [*Network -Topology*](../../architecture/network_topology) for more details. -Unlike BlazingMQ, applications using RabbitMQ and Kafka connect directly to -cluster nodes, and neither of these systems support the notion of proxies, as found in BlazingMQ. - ---- - -## Fault Tolerance - -All three systems support 'at-least once' guarantees of message delivery, which -requires persistence, as well as replication. They also support strongly -consistent replication, where a producer is notified of success when N nodes in -the cluster have accepted the messages, where the value of N is configurable -and can be chosen to ensure consistency (by perhaps sacrificing availability) -in scenarios like network splits. Note, however, that classic mirrored queues -in RabbitMQ are [known](https://aphyr.com/posts/315-jepsen-rabbitmq) to be -susceptible to loss of consistency during network partitions, which led to the -development of *Raft*-based "quorum queues" in RabbitMQ v3.8. BlazingMQ -successfully passes our chaos tests built on top of -[Jepsen](https://github.com/jepsen-io/jepsen) and our chaos testing suite will -be published as open source in the coming months. - ---- - -## BlazingMQ Use Cases - -There are several use cases at Bloomberg which BlazingMQ solves optimally. -While we cannot provide specific details about these use cases, we capture enough -information for readers to appreciate how BlazingMQ supports them. - -### High fan-out ratio with high data volume - -Courtesy of its multi-hop network topology and its ability to build a -multi-level distribution tree for a queue as described [here](../../architecture/network_topology), one area where BlazingMQ -excels is in its support of high fan-out with high data volumes. Consider a scenario where -there are thousands of consumers (*N*) attached to the queue, all of which are interested in -receiving every message posted in the queue, and the producer posts at a rate -of hundreds of messages per second (*M*). In such case, due to fan-out, the -messaging system would needs to deliver an aggregated *M * N* messages per -second. Picking *N* = 5000, and *M* = 1000, the aggregate comes out to be -5,000,000 messages per second on the outbound. In the absence of a -distribution tree, the BlazingMQ primary node would have been required to -support this outbound rate. However, due to its topology, BlazingMQ primary -node may see a fan-out of only 10s (i.e., *N* = 10), leading to *drastic* -improvements in latency, as well as bandwidth savings. - -### Storage Savings - -As mentioned in one of the previous sections, an interesting property of -BlazingMQ is that messages are stored once, irrespective of the number of -consumers in the fan-out mode (recall that BlazingMQ stores the message before -routing it). This can lead to bandwidth and capacity savings, especially for -queues with a higher number of consumers. There are several instances at -Bloomberg where queues have fan-out ratios of 50+, which immediately leads to -storage savings of 50x when compared to RabbitMQ. - -### High number of dynamic queues - -Some applications prefer to create a large number of queues (hundreds or -thousands) in order to have fine-grained control over various data streams in -their ecosystem. Applications can implement their own sharding schemes to -distribute messages across these queues. In addition, some of these queues are -long-lived, while others are short-lived. For example, a well-known queue -which contains financial trade messages could be long-lived, while a queue -which represents private communication between two processes could be short-lived. BlazingMQ helps applications achieve such design for various reasons – -in BlazingMQ, queues are cheap, do not need to be declared up front (queues are -created automatically when they are opened for the first time), and are garbage -collected automatically when they are empty and unused for some time. There -are several instances at Bloomberg in which a BlazingMQ domain has close to -10,000 queues. - -### Mixed workload: different delivery guarantees for different data streams - -There are occasions where an application ecosystem has different data streams -in their workflows, some of which require higher delivery guarantees (e.g., financial -trade processing workflow), while others are okay with lower guarantees (e.g., -cache invalidation notifications). BlazingMQ has proven to be a good fit for -such scenarios since it can provide both guarantees depending on the queue mode -– priority or fan-out mode for at-least once delivery guarantees, and broadcast -mode for at-most once delivery guarantees. This is convenient for applications -because they can use the same middleware and same set of APIs in their -applications and leverage both delivery guarantees, instead of using another -middleware or raw TCP for *at-most once* delivery guarantees and a message -queue for *at-least once* delivery guarantees. For some BlazingMQ users at -Bloomberg, certain queues are priority or fan-out mode, while others are -broadcast mode, and applications are using these queues to implement a variety -of workflows like request/response, fan-out, one-way notifications, etc. For -example, some applications broadcast requests to all instances of their -workers because they may not know up front which worker can handle the request, -while workers reply to the request over a priority queue back to the requester. - -### Good combination of features, performance and reliability - -Finally, BlazingMQ provides a good user experience along with its broad set -of features, so users can rely on BlazingMQ for both good performance and reliability. In most cases, BlazingMQ provides a median latency of ~5ms or -less with high data volumes, hides applications from transient network, software -and hardware issues, as well as provides a set of features to help users -implement their distributed messaging ecosystem in an efficient manner. - ---- - -## Conclusion - -In the last few decades, the world has moved towards extremely large, data-intensive workloads, and the need for reliable and efficient messaging systems has also -increased and diversified. As we demonstrated in this document, no one system can provide a perfect solution across all dimensions for all -applications. On several occasions, Bloomberg engineers have chosen BlazingMQ -over RabbitMQ and Apache Kafka for their messaging needs because it has provided them with a -clear advantage and solved their use cases in the most optimal way. As -we continue to evolve BlazingMQ in the coming months and years, we expect it to -become an even more compelling messaging solution for engineers outside of -Bloomberg as well. - ---- diff --git a/docs/docs/introduction/concepts.md b/docs/docs/introduction/concepts.md deleted file mode 100644 index e6c6cb145..000000000 --- a/docs/docs/introduction/concepts.md +++ /dev/null @@ -1,218 +0,0 @@ ---- -layout: default -title: Concepts -parent: Introduction -nav_order: 3 ---- - -# BlazingMQ Concepts -{: .no_toc } - -Let's review some high level, user-facing concepts in BlazingMQ. - -* toc -{:toc} - -## Domain - -A domain is the top level namespace for a BlazingMQ user. A domain captures -all the necessary attributes like storage quota, message expiration time (TTL), -routing strategy (priority, fan-out, broadcast), etc. Multiple queues can be -created in a domain, and all such queues inherit their domain's attributes. A -domain can be thought of as a collection of segregated streams of data, where -each queue in the domain represents one data stream. - -Queues in a domain do not need to be declared or created upfront. A queue will be -created automatically when it is used for the first time. - -Depending on their needs, a BlazingMQ user can have multiple domains (with -each domain containing one or more queues). This is usually needed when a user -wants different sets of data streams, with each set behaving differently for storage quota, routing, and other configurations. - -### Domain Attributes - -A domain has several configuration parameters which dictate various functional -aspects of the domain. A detailed overview of domain configuration can be -found [here](../../installation/configuration#domain-configurations), but let's -go over some of the important attributes: - -- **Routing Strategy** - - This attribute describes the routing strategy to be used by a BlazingMQ cluster - for the queues belonging to the domain. More details about various routing - strategies can be found [here](../../features/message_routing_strategies). - -- **Storage Attributes** - - These attributes describe storage-related configuration settings for a - BlazingMQ domain. They include: - - - Maximum storage quota for the domain - - Maximum storage quota for a queue in the domain (usually smaller than - domain's quota) - - Note that *storage quota* captures numbers, as well as bytes, of messages. - -- **Message TTL** - - Amount of time after which messages will be garbage-collected by BlazingMQ if - not consumed by the application. TTL duration can vary from a few minutes to - a few days. - -- **Maximum Delivery Attempts** - - Total number of times a message will be transmitted to consumers if a - consumer crashes without confirming the message, indicating that the message is - likely a poison pill message. The recommended value is five. See [*Poison - Pill Detection*](../../features/poison_pill_detection) for more details. - -- **Deduplication Time Interval** - - Total time interval for which a BlazingMQ cluster will keep track of - *MessageId*s of the messages posted on the queue for the purpose of - deduplication. See [*High - Availability*](../../architecture/high_availability) for more details. - -- **Replication Consistency** - - Type of consistency for storage replication. There are two choices -- - eventual and strong. Strong consistency is strongly recommended (pun - unintentional). See [this](../../features/consistency_levels) for more - details. - -- Miscellaneous Settings - - A BlazingMQ domain contains some other configuration parameters described - below: - - - *MaxConsumers*: Maximum number of consumers that can attach to a queue - - - *MaxProducers*: Maximum number of producers that can attach to a queue - - - *MaxQueues*: Maximum number of queues that can be created in a domain - - - *MaxIdleTime*: Amount of time interval after which BlazingMQ cluster will - log an error message in its log if no messages were confirmed by the - consumers during that interval. This error message can be used to raise an - alarm in certain deployments. - ---- - -## Queue - -A queue in BlazingMQ represents a stream of data over which producer and -consumer applications exchange data. A queue decouples applications from one -another by acting as an intermediary, so that applications don't have to worry -about each other's physical locations or lifetimes. In other words, a -queue provides temporal and spatial isolation between various applications. - -In addition, a queue also protects consumer applications from bursty traffic by -absorbing data spikes and enabling consumers to consume messages at their own -pace. - -### Identifying a Queue - -A queue in BlazingMQ is identified by its *Uniform Resource Identifier* (URI). -The queue URI follows [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) -and typically looks like `bmq://foo.bar.baz/quux`, where: - -- Leading `bmq` is the URI scheme - -- `foo.bar.baz` is the BlazingMQ domain name (the URI authority) - -- `quux` is the BlazingMQ queue name within the `foo.bar.baz` domain namespace - (the URI path) - -More details about the format of a BlazingMQ queue URI can be found -[here](../../apidocs/cpp_apidocs/group__bmqt__uri.html). Applications can -address a queue by its URI. - -### Lifetime of a Queue - -Queues in BlazingMQ are completely dynamic, and applications don't have to worry -about managing a BlazingMQ queue's lifetime. They do not need to be explicitly -created or declared before being used. When an application gets a handle on a -queue (by using one of the flavors from `openQueue` API), the queue is -automatically created under the hood by a BlazingMQ cluster if it does not already exist. - -Similarly, applications don't have to worry about deleting a queue. A BlazingMQ -cluster automatically garbage-collects a queue if it has no outstanding -messages and no applications are attached to it. - -This feature removes the burden on applications to manage a queue's lifetime. It also enables a usage pattern where two or more applications -create BlazingMQ queues which are tied to their own lifetimes. For example, while running, a -pair of producer/consumer applications can exchange messages over a unique -queue for their "private" communication, forget about the queue -when they exit, and create a new one upon restart. - -On the other hand, some applications will continue to use the same queue -in production for many months and years. - -### Persistence and Durability - -A very important attribute of a BlazingMQ queue is its durability. All queues are -persisted and replicated. [Learn more](../../architecture/clustering) about clustering, storage, and replication in BlazingMQ. - -### Ordering in a Queue - -Each BlazingMQ queue is assigned a primary node in the BlazingMQ cluster, and -that primary node enforces an order on the messages arriving in the queue. -Depending upon the queue's [*Routing -Strategies*](../../features/message_routing_strategies), consumers attached to -the queue may or may not see messages in order. Additionally, consumers can -see out of order messages in case a consumer application crashes or shuts down -without confirming that all of the messages were routed to it. - ---- - -## Message - -A message is the basic unit of information that is exchanged between producer -and consumer applications. In BlazingMQ, a message contains various attributes -like: - -- **Message Payload** - -This field contains the message's contents. BlazingMQ APIs provide setter and -getter functions for the message payload as binary data. Message payload is -completely opaque to BlazingMQ and no parts of the system peek into it. -Applications can serialize and deserialize messages using their favorite codecs -(Protobuf, Avro, JSON, etc.). - -- **Message Properties** - -A producer application can associate an optional list of key/value pairs with -every message. These key/value pairs are known as message properties in -BlazingMQ. Applications can capture any meta information in the message -properties, which could be useful for tracing, logging, and routing in the -application ecosystem. - -- **Message Identifier** - -BlazingMQ assigns a unique message identifier to every message published by the -producer application. This identifier is sent back to the producer in the -message's acknowledgement notification, as well as to the consumer. BlazingMQ -message brokers also use these identifiers to deduplicate any retransitted -messages by maintaining a moving window of previously seen identifiers. - -### Message Acknowledgement - -For every message a producer application publishes, it receives a reply -for it from BlazingMQ indicating the operation's result. This reply is known -at *message acknowledgement* or *acknowlegement* or just *ACK* in BlazingMQ. -Acknowledgement can be negative, which indicates BlazingMQ's failure to accept -the message for various reasons (like a queue's storage quota has been reached, a long -running network connectivity issue, etc). However, BlazingMQ tries to minimize -negative acknowledgements as much as possible by seamlessly buffering and -retransmitting messages whenever possible. - -In order to support high throughput workflows, acknowledgements are delivered -asynchronously to the producer applications and may be delivered in batches. - -### Message Confirmation - -Once a consumer application has finished processing the message, it needs to -notify BlazingMQ so the message can be removed from the queue. This notification is called *message confirmation* or *confirmation* or -just *CONFIRM* in BlazingMQ. BlazingMQ client library provides an API to send confirmation to the queue. - ---- diff --git a/docs/docs/introduction/index.md b/docs/docs/introduction/index.md deleted file mode 100644 index f23266b38..000000000 --- a/docs/docs/introduction/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: default -title: Introduction -nav_order: 1 -has_children: true -permalink: /introduction ---- - -# [](#introduction)Introduction diff --git a/docs/docs/introduction/overview.md b/docs/docs/introduction/overview.md deleted file mode 100644 index ad96b9765..000000000 --- a/docs/docs/introduction/overview.md +++ /dev/null @@ -1,141 +0,0 @@ ---- -layout: default -title: Overview -parent: Introduction -nav_order: 2 ---- - -# BlazingMQ Overview -{: .no_toc } - -* toc -{:toc} - -## What is BlazingMQ? - -BlazingMQ is generic message-oriented middleware usable for building -decentralized applications which communicate using message queues. BlazingMQ -provides durable, fault-tolerant, highly performant, and highly available -queues, along with features like various message routing strategies (e.g., work -queues, priority, fan-out, broadcast, etc.), compression, strong consistency, -poison pill detection, etc. - -Message queues generally provide a loosely-coupled, asynchronous -communication channel ("queue") between application services (producers and -consumers) that send messages to one another. You can think about it like a mailbox for -communication between application programs, where the 'producer' drops a message -in a mailbox and the 'consumer' picks it up at its own leisure. Messages placed -into the queue are stored until the recipient retrieves and processes them. In other -words, producer and consumer applications can temporally and spatially isolate -themselves from each other by using a message queue to facilitate communication. - -Within Bloomberg, the BlazingMQ framework processes billions of messages and -terabytes of data every day and is used in production by thousands of applications. - -BlazingMQ client libraries are available in C++, Java and Python. Within -Bloomberg, client applications and BlazingMQ clusters both run in a variety of -environments, and BlazingMQ attempts to provide a consistent user experience -across heterogeneous deployments. In general, BlazingMQ clusters can be hosted -anywhere and do not depend on any other Bloomberg-specific or open source -frameworks. - ---- - -## Benefits of BlazingMQ - -BlazingMQ's goal is to provide application developers with a well supported, feature rich, and highly -performant message queuing framework. Here's a summary of its benefits: - -### Durability and High Availability -{: .no_toc } - -It provides durable, highly available, and efficient queues, which enables -asynchronous and loosely-coupled communication between applications. Queues -can be replicated across data centers, thereby ensuring business continuity in -case of disaster recovery (DR) scenarios. - -### Transport Abstraction -{: .no_toc } - -It abstracts the transport and network, and producer and consumer applications -don't need to worry about the underlying transport or one another's geographic -locations. - -### Message Routing Strategies -{: .no_toc } - -It enables applications to implement various enterprise architecture patterns -as a result of its rich set of message routing strategies -- work queue, -priority, fan-out, broadcast, request/response, etc. See [*Routing -Patterns*](../../features/message_routing_strategies) for more details. - -### Rich Feature Set -{: .no_toc } - -In addition to the above, it comes with additional features like compression, -poison pill detection, a pluggable architecture, configurable consistency, a rich -set of APIs in C++, Python, and Java SDKs, etc. See -[*Features*](../../../features) for more details. - -### High Performance -{: .no_toc } - -It provides low latency and high throughput at enterprise scale. Applications -can rely on BlazingMQ to be highly performant. See -[*Performance*](../../performance/benchmarks) for more details. - -### Reliability -{: .no_toc } - -It provides a high level of reliability and attempts to protect applications -from transient network or hardware disturbances. A BlazingMQ cluster can -disappear from the network for a few (configurable) minutes, during which time producer -applications can continue to submit work to it without noticing any errors. -See [*High Availability*](../../architecture/high_availability) for -more details. - -### Extensive Metrics -{: .no_toc } - -It provides a rich set of monitoring metrics to help users determine and -understand the behavior of their applications, as well as the BlazingMQ clusters. - ---- - -## Motivation for BlazingMQ - -BlazingMQ's development at Bloomberg more than eight years ago began at a time when similar open source -and proprietary systems were immature, did not possess features we were -looking for, had exorbitant licensing fees, or had questions about their -reliability and performance. In addition, Bloomberg engineers had prior -experience building other in-house middleware frameworks, and the decision to -implement an in-house message queuing system was determined to be the right -one. - -Over the last several years, BlazingMQ has become a compelling message queuing -solution at Bloomberg, thanks to its performance, reliability, and features. -See [*Comparison with Alternatives*](../comparison) where we carry out -a high-level comparison of BlazingMQ with two of the most similar and dominant message queueing -systems today. - ---- - -## Open Source Release - -This is BlazingMQ's first open source release, and we are publishing BlazingMQ -message brokers, as well as client libraries in C++ and Java in this release. -As with any mature enterprise system, BlazingMQ has a thriving ecosystem around -it within Bloomberg, comprising of configuration management, self-service, -Python client libraries, transport adapters, monitoring, alarming and testing -(stress, fuzz, chaos, etc.). Most of these systems are closely integrated with -Bloomberg enterprise, so publishing them as-is in the open is not -feasible. In the coming months, we will be working towards publishing some of -these systems as open source as well to ensure that BlazingMQ's ecosystem continues to -grow outside of Bloomberg. Details can be found in the BlazingMQ -[*Roadmap*](../roadmap) section. - -We hope that you'll give BlazingMQ a shot! Please don't hesitate to [reach -out](https://github.com/bloomberg/blazingmq/issues) to us if you have any -questions or feedback! - ---- diff --git a/docs/docs/introduction/roadmap.md b/docs/docs/introduction/roadmap.md deleted file mode 100644 index 80a056957..000000000 --- a/docs/docs/introduction/roadmap.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -layout: default -title: Roadmap -parent: Introduction -nav_order: 6 ---- - -# BlazingMQ Roadmap -{: .no_toc } - -* toc -{:toc} - -BlazingMQ is an actively evolving product and we have several enhancements in the areas of security, stability, scalability, user-facing -features, tooling, etc. in the pipeline. This document lists some of these short-, medium- and -long-term projects. As with any large enterprise software framework, the priority -of these projects can change. If you'd like to see a feature or enhancement in -BlazingMQ, please reach out to us! - -## Short-Term - -### Testing Suites -{: .no_toc } - -BlazingMQ has various test suites which will be published as open source in the -coming months after general cleanup and refactoring: - -- Integration test suite - -- Chaos test suite built on top of [Jepsen](https://github.com/jepsen-io/jepsen) - -- Stress and performance test suite - -- Fuzz test suite - ---- - -## Medium-Term - -### Security: Authentication -{: .no_toc } - -Authentication and encryption in transit will be added to BlazingMQ by adopting -TLS support. - -### Security: Authorization -{: .no_toc } - -In order to give clients better control over their namespaces and queues, -support for authorization will be added to BlazingMQ. Users will be able to -configure which identities are permissioned to access their BlazingMQ queues. - -### Overload Control -{: .no_toc } - -BlazingMQ brokers will be updated to detect when they are overloaded (high -memory, large volume of pending work, etc.). In turn, they will start -throttling producer applications which are producing messages at a higher rate than normal -and/or have a lot of pending (unacknowledged) messages piled up in the brokers. - -### Stuck Consumer Detection -{: .no_toc } - -Any consumers which have not confirmed their messages in a configurable amount -of time will be assumed to be dead and removed from the set of working -consumers. This will ensure that consumers which are deadlocked or are stuck -for some reason don't hold on to unprocessed messages forever. - -### Adminstrative Tooling -{: .no_toc } - -A set of command line tools and scripts which can be used to manage and interact with a BlazingMQ cluster will be published as open source. Several such tools already exist, while some other new tools and scripts will be developed. - ---- - -## Long-Term - -### Distributed Tracing Support -{: .no_toc } - -BlazingMQ contains pluggable support for distributed tracing. However, this -support is partial and currently available only for a subset of requests in its -control plane. BlazingMQ will be updated to support full-fledged distributed tracing across both its control and data planes. - -### Higher Storage Quota -{: .no_toc } - -BlazingMQ's storage layer will be updated to ensure that it can leverage as much -of the storage/disk as available in the cluster, such that queues with -terabytes worth of quota can be supported. - -### Source and Sink Connectors -{: .no_toc } - -Support for various source and sink connectors will be added in BlazingMQ for -easier integration with other systems. - -### Multi-level Consumer Priority Support -{: .no_toc } - -BlazingMQ's message routing logic will be updated to ensure that messages can be routed to lower priority consumers when those with highest priority are at capacity. Currently, if highest priority consumers are unable to accept any more messages, new messages stay in the queue and are not routed to lower priority consumers. - ---- diff --git a/docs/docs/performance/benchmarks.md b/docs/docs/performance/benchmarks.md deleted file mode 100644 index 335b234d1..000000000 --- a/docs/docs/performance/benchmarks.md +++ /dev/null @@ -1,164 +0,0 @@ ---- -layout: default -title: Benchmarks -parent: Performance -nav_order: 2 ---- - -# BlazingMQ Performance -{: .no_toc } - -* toc -{:toc} - -## Introduction - -Benchmarking any complex distributed system like BlazingMQ can be tricky -because there are several moving parts - there is no one latency number for -BlazingMQ, and any performance numbers are affected by factors including but -not limited to: - -- Size of the BlazingMQ cluster and replication factor - -- Storage (no persistence, in-memory, HDD, SSD, etc) - -- Hardware and network capabilities - -- Producer message rate, message size and batch size - -- Producer publishing pattern (smooth vs bursty) - -- Number of consumers (fan-out ratio) - -- Network topology (location of producers/consumers, cluster nodes, etc) which - has direct impact on ping latency among nodes - -- BlazingMQ message broker configuration (number of threads, initial size of - various memory pools, etc) - - -## Benchmarking Setup - -We provide results of a recent benchmark of BlazingMQ with this setup: - -- Six nodes in the BlazingMQ cluster - -- Each node with local SSDs attached to it - -- Nodes geographically spread across such that `ping` latency between them was - around 1.5 milliseconds - -- Producer and consumer applications were running on other nodes and instead of - connecting directly to the BlazingMQ cluster, they connected to BlazingMQ - proxies (see [*Alternative - Deployment*](../../architecture/clustering#alternative-deployment) for - details about BlazingMQ proxies). - -- Queues storage replication was configured for strong consistency i.e., - primary node waited for acknowledgement from enough replicas such that the - majority of the nodes recorded the message before returning success to the - producer applications. So in this case, primary waited for acknowledgement - from three replica nodes before replying to the producer. This ensured that - a total of four nodes (primary and three replicas) recorded the message. - -- Queues with various [*routing - strategies*](../../features/message_routing_strategies) were - tested. - -It is worth mentioning that the cluster setup described above is an extreme one -and the geographical distance between cluster nodes becomes a non-negligible -factor in the final results. We provide some benchmarking results from a more -friendly setup later in the article. - -How to interpret the tables below: - -- Latency number indicates the difference between the time a message was sent - to the queue by the producer and the time it was received by the consumer. - All latency numbers are in milliseconds. - -- Message size was 1KB and compression was disabled. - -- In the *Scenario* column, *Q*, *P* and *C* letters represent a queue, a - producer and a consumer respectively. For example: - - `1Q, 1P, 1C` in the first column means one producer, one consumer and one - queue. - - `10Q, 10P, 10C` means 10 queues, 10 producers and 10 consumers, such that - there is one producer and one consumer for each queue. - - `1Q, 1P, 5C` means one queue with one producer and five consumers, and each - consumer receiving every message posted on the queue. - -- Second column, *"Total Produce Rate"* indicates the total produce rate - accumulated across all producers running in that scenario. - -- Similarly, *"Total Consume Rate"* indicates the total consume rate - accumulated across all consumers running in that scenario. - -### Priority Routing Strategy - -| Scenario | Total Produce Rate (msgs/sec) | Total Consume Rate (msgs/sec) | Median (p50) | Average | p90 | p99 | -|------------------|-------------------------------|-------------------------------|--------------|---------|------|-------| -| 1Q, 1P, 1C | 60,000 | 60,000 | 4.5 | 5.4 | 7.3 | 19.8 | -| 10Q, 10P, 10C | 120,000 | 120,000 | 3.9 | 12.0 | 6.8 | 201.9 | -| 50Q, 50P, 50C | 100,000 | 100,000 | 3.9 | 7.3 | 8.7 | 87.9 | -| 100Q, 100P, 100C | 100,000 | 100,000 | 4.7 | 12.4 | 20.3 | 165.6 | - - -### Fan-out Routing Strategy - -| Scenario | Total Produce Rate (msgs/sec) | Total Consume Rate (msgs/sec) | Median (p50) | Average | p90 | p99 | -|------------|-------------------------------|-------------------------------|--------------|---------|-----|-----| -| 1Q, 1P, 5C | 20,000 | 100,000 | 4.4 | 4.7 | 4.8 | 8.2 | - - -### Broadcast Routing Strategy - -| Scenario | Total Produce Rate (msgs/sec) | Total Consume Rate (msgs/sec) | Median (p50) | Average | p90 | p99 | -|-------------|-------------------------------|-------------------------------|--------------|---------|-----|-----| -| 1Q, 1P, 1C | 160,000 | 160,000 | 4.5 | 5.1 | 5.5 | 8.8 | -| 1Q, 1P, 5C | 110,000 | 550,000 | 3.7 | 3.8 | 4.1 | 7.2 | -| 1Q, 1P, 10C | 20,000 | 200,000 | 2.8 | 3.0 | 3.6 | 5.4 | - ---- - -## Benchmarking in Friendly Setup - -We ran our BlazingMQ benchmarks in a friendlier setup which was different from -the above setup in these ways: - -- Three nodes in the BlazingMQ cluster - -- Nodes geographically spread across such that `ping` latency between them was - less than 30 microseconds. - -- Primary node waited for acknowledgement from one replica before replying to - the producer, thereby ensuring that at least two nodes (primary and one - replica) had recorded the message before replying to the producer. - - -### Priority Routing - -| Scenario | Total Produce Rate (msgs/sec) | Total Consume Rate (msgs/sec) | Median (p50) | Average | p90 | p99 | -|------------------|-------------------------------|-------------------------------|--------------|---------|-----|------| -| 1Q, 1P, 1C | 60,000 | 60,000 | 1.5 | 1.7 | 2.1 | 4.9 | -| 10Q, 10P, 10C | 120,000 | 120,000 | 1.1 | 2.1 | 2.7 | 35.7 | -| 50Q, 50P, 50C | 100,000 | 100,000 | 0.7 | 1.5 | 1.1 | 23.1 | -| 100Q, 100P, 100C | 100,000 | 100,000 | 0.9 | 2.5 | 2.7 | 43.8 | - - -### Fan-out Routing Strategy - -| Scenario | Total Produce Rate (msgs/sec) | Total Consume Rate (msgs/sec) | Median (p50) | Average | p90 | p99 | -|------------|-------------------------------|-------------------------------|--------------|---------|-----|------| -| 1Q, 1P, 5C | 20,000 | 100,000 | 0.6 | 0.7 | 0.8 | 3.0 | -| 1Q, 1P, 5C | 30,000 | 150,000 | 1.4 | 2.4 | 5.2 | 15.1 | - - -### Broadcast Routing Strategy - -| Scenario | Total Produce Rate (msgs/sec) | Total Consume Rate (msgs/sec) | Median (p50) | Average | p90 | p99 | -|-------------|-------------------------------|-------------------------------|--------------|---------|-----|-----| -| 1Q, 1P, 1C | 160,000 | 160,000 | 2.0 | 2.0 | 2.3 | 2.9 | -| 1Q, 1P, 5C | 110,000 | 550,000 | 1.7 | 1.8 | 1.9 | 4.0 | -| 1Q, 1P, 10C | 20,000 | 200,000 | 0.6 | 0.6 | 0.9 | 1.2 | - ---- diff --git a/docs/docs/performance/index.md b/docs/docs/performance/index.md deleted file mode 100644 index d8c513fe9..000000000 --- a/docs/docs/performance/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: default -title: Performance -nav_order: 6 -has_children: true -permalink: /performance ---- - -# [](#performance)Performance diff --git a/docs/lib/tasks/search.rake b/docs/lib/tasks/search.rake deleted file mode 100644 index d1f9fd47e..000000000 --- a/docs/lib/tasks/search.rake +++ /dev/null @@ -1,88 +0,0 @@ -namespace :search do - desc 'Generate the files needed for search functionality' - task :init do - puts 'Creating search data json file...' - mkdir_p 'assets/js' - touch 'assets/js/zzzz-search-data.json' - puts 'Done.' - puts 'Generating content...' - - File.open('assets/js/zzzz-search-data.json', 'w') do |f| - f.puts '--- -permalink: /assets/js/search-data.json ---- -{ -{%- assign i = 0 -%} -{%- assign pages_array = "" | split: "" -%} -{%- assign pages_array = pages_array | push: site.html_pages -%} -{%- if site.just_the_docs.collections -%} - {%- for collection_entry in site.just_the_docs.collections -%} - {%- assign collection_key = collection_entry[0] -%} - {%- assign collection_value = collection_entry[1] -%} - {%- assign collection = site[collection_key] -%} - {%- if collection_value.search_exclude != true -%} - {%- assign pages_array = pages_array | push: collection -%} - {%- endif -%} - {%- endfor -%} -{%- endif -%} -{%- for pages in pages_array -%} - {%- for page in pages -%} - {%- if page.title and page.search_exclude != true -%} - {%- assign page_content = page.content -%} - {%- assign heading_level = site.search.heading_level | default: 2 -%} - {%- for j in (2..heading_level) -%} - {%- assign tag = \'\' -%} - {%- assign title = titleAndContent[0] | replace_first: \'>\', \'

\' | split: \'

\' -%} - {%- assign title = title[1] | strip_html -%} - {%- assign content = titleAndContent[1] -%} - {%- assign url = page.url -%} - {%- if title == page.title and parts[0] == \'\' -%} - {%- assign title_found = true -%} - {%- else -%} - {%- assign id = titleAndContent[0] -%} - {%- assign id = id | split: \'id="\' -%} - {%- if id.size == 2 -%} - {%- assign id = id[1] -%} - {%- assign id = id | split: \'"\' -%} - {%- assign id = id[0] -%} - {%- capture url -%}{{ url | append: \'#\' | append: id }}{%- endcapture -%} - {%- endif -%} - {%- endif -%} - {%- unless i == 0 -%},{%- endunless -%} - "{{ i }}": { - "doc": {{ page.title | jsonify }}, - "title": {{ title | jsonify }}, - "content": {{ content | replace: \'