Qpid Proton C++ 0.33.0
connection_driver.hpp
Go to the documentation of this file.
1#ifndef PROTON_IO_CONNECTION_DRIVER_HPP
2#define PROTON_IO_CONNECTION_DRIVER_HPP
3
4/*
5 *
6 * Licensed to the Apache Software Foundation (ASF) under one
7 * or more contributor license agreements. See the NOTICE file
8 * distributed with this work for additional information
9 * regarding copyright ownership. The ASF licenses this file
10 * to you under the Apache License, Version 2.0 (the
11 * "License"); you may not use this file except in compliance
12 * with the License. You may obtain a copy of the License at
13 *
14 * http://www.apache.org/licenses/LICENSE-2.0
15 *
16 * Unless required by applicable law or agreed to in writing,
17 * software distributed under the License is distributed on an
18 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19 * KIND, either express or implied. See the License for the
20 * specific language governing permissions and limitations
21 * under the License.
22 *
23 */
24
25#include "../connection_options.hpp"
26#include "../error_condition.hpp"
27#include "../fwd.hpp"
28#include "../internal/config.hpp"
29#include "../types_fwd.hpp"
30
31#include <proton/connection_driver.h>
32
33#include <string>
34
37
38namespace proton {
39
40class work_queue;
41class proton_handler;
42
43namespace io {
44
48 char* data;
49 size_t size;
50
52 mutable_buffer(char* data_=0, size_t size_=0) : data(data_), size(size_) {}
53};
54
58 const char* data;
59 size_t size;
60
62 const_buffer(const char* data_=0, size_t size_=0) : data(data_), size(size_) {}
63};
64
93class
94PN_CPP_CLASS_EXTERN connection_driver {
95 public:
97 PN_CPP_EXTERN connection_driver();
98
100 PN_CPP_EXTERN connection_driver(const std::string&);
101
102 PN_CPP_EXTERN ~connection_driver();
103
107 void configure(const connection_options& opts=connection_options(), bool server=false);
108
111 PN_CPP_EXTERN void connect(const connection_options& opts);
112
119 PN_CPP_EXTERN void accept(const connection_options& opts);
120
125
128 PN_CPP_EXTERN void read_done(size_t n);
129
132 PN_CPP_EXTERN void read_close();
133
137 PN_CPP_EXTERN const_buffer write_buffer();
138
141 PN_CPP_EXTERN void write_done(size_t n);
142
145 PN_CPP_EXTERN void write_close();
146
154 PN_CPP_EXTERN timestamp tick(timestamp now);
155
168 PN_CPP_EXTERN void disconnected(const error_condition& = error_condition());
169
171 PN_CPP_EXTERN bool has_events() const;
172
184 PN_CPP_EXTERN bool dispatch();
185
187 PN_CPP_EXTERN proton::connection connection() const;
188
190 PN_CPP_EXTERN proton::transport transport() const;
191
193 PN_CPP_EXTERN proton::container* container() const;
194
195 private:
196 void init();
198 connection_driver& operator=(const connection_driver&);
199
200 std::string container_id_;
201 messaging_handler* handler_;
202 pn_connection_driver_t driver_;
203};
204
205} // io
206} // proton
207
208#endif // PROTON_IO_CONNECTION_DRIVER_HPP
Options for creating a connection.
Definition: connection_options.hpp:67
A connection to a remote AMQP peer.
Definition: connection.hpp:45
A top-level container of connections, sessions, and links.
Definition: container.hpp:50
Describes an endpoint error state.
Definition: error_condition.hpp:40
Unsettled API - An AMQP driver for a single connection.
Definition: connection_driver.hpp:94
void disconnected(const error_condition &=error_condition())
Inform the engine that the transport been disconnected unexpectedly, without completing the AMQP conn...
void read_done(size_t n)
Indicate that the first n bytes of read_buffer() have valid data.
void connect(const connection_options &opts)
Call configure() with client options and call connection::open() Options applied: container::id(),...
bool dispatch()
Dispatch all available events and call the corresponding messaging_handler methods.
connection_driver()
An engine without a container id.
proton::container * container() const
Get the container associated with this connection_driver, if there is one.
connection_driver(const std::string &)
Create a connection driver associated with a container id.
proton::connection connection() const
Get the AMQP connection associated with this connection_driver.
void configure(const connection_options &opts=connection_options(), bool server=false)
Configure a connection by applying exactly the options in opts (including proton::messaging_handler) ...
void accept(const connection_options &opts)
Call configure() with server options.
bool has_events() const
There are events to be dispatched by dispatch()
void read_close()
Indicate that the read side of the transport is closed and no more data will be read.
timestamp tick(timestamp now)
Indicate that time has passed.
const_buffer write_buffer()
The engine's write buffer.
void write_close()
Indicate that the write side of the transport has closed and no more data can be written.
proton::transport transport() const
Get the transport associated with this connection_driver.
void write_done(size_t n)
Indicate that the first n bytes of write_buffer() have been written successfully.
mutable_buffer read_buffer()
The engine's read buffer.
Handler for Proton messaging events.
Definition: messaging_handler.hpp:69
A 64-bit timestamp in milliseconds since the Unix epoch.
Definition: timestamp.hpp:35
A network channel supporting an AMQP connection.
Definition: transport.hpp:37
The main Proton namespace.
Definition: annotation_key.hpp:33
Unsettled API - A pointer to an immutable memory region with a size.
Definition: connection_driver.hpp:57
size_t size
Number of bytes in the buffer.
Definition: connection_driver.hpp:59
const char * data
Beginning of the buffered data.
Definition: connection_driver.hpp:58
const_buffer(const char *data_=0, size_t size_=0)
Construct a buffer starting at data_ with size_ bytes.
Definition: connection_driver.hpp:62
Unsettled API - A pointer to a mutable memory region with a size.
Definition: connection_driver.hpp:47
size_t size
Number of bytes in the buffer.
Definition: connection_driver.hpp:49
char * data
Beginning of the buffered data.
Definition: connection_driver.hpp:48
mutable_buffer(char *data_=0, size_t size_=0)
Construct a buffer starting at data_ with size_ bytes.
Definition: connection_driver.hpp:52