Qpid Proton C++ API  0.32.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 
38 namespace proton {
39 
40 class work_queue;
41 class proton_handler;
42 
43 namespace 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 
57 struct const_buffer {
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 
93 class
94 PN_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 
124  PN_CPP_EXTERN mutable_buffer read_buffer();
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
proton::error_condition
Describes an endpoint error state.
Definition: error_condition.hpp:40
proton::io::connection_driver::connect
void connect(const connection_options &opts)
Call configure() with client options and call connection::open() Options applied: container::id(),...
proton::io::connection_driver
Unsettled API - An AMQP driver for a single connection.
Definition: connection_driver.hpp:94
proton::io::connection_driver::transport
proton::transport transport() const
Get the transport associated with this connection_driver.
proton::io::const_buffer
Unsettled API - A pointer to an immutable memory region with a size.
Definition: connection_driver.hpp:57
proton::container
A top-level container of connections, sessions, and links.
Definition: container.hpp:50
proton::io::connection_driver::has_events
bool has_events() const
There are events to be dispatched by dispatch()
proton::io::connection_driver::accept
void accept(const connection_options &opts)
Call configure() with server options.
proton::io::connection_driver::configure
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) ...
proton::io::mutable_buffer::mutable_buffer
mutable_buffer(char *data_=0, size_t size_=0)
Construct a buffer starting at data_ with size_ bytes.
Definition: connection_driver.hpp:52
proton::io::connection_driver::dispatch
bool dispatch()
Dispatch all available events and call the corresponding messaging_handler methods.
proton::io::const_buffer::data
const char * data
Beginning of the buffered data.
Definition: connection_driver.hpp:58
proton::io::connection_driver::connection_driver
connection_driver()
An engine without a container id.
proton::connection
A connection to a remote AMQP peer.
Definition: connection.hpp:45
proton::connection_options
Options for creating a connection.
Definition: connection_options.hpp:67
proton::io::mutable_buffer::data
char * data
Beginning of the buffered data.
Definition: connection_driver.hpp:48
proton::io::connection_driver::connection_driver
connection_driver(const std::string &)
Create a connection driver associated with a container id.
proton::io::connection_driver::read_close
void read_close()
Indicate that the read side of the transport is closed and no more data will be read.
proton::io::connection_driver::connection
proton::connection connection() const
Get the AMQP connection associated with this connection_driver.
proton::io::connection_driver::write_done
void write_done(size_t n)
Indicate that the first n bytes of write_buffer() have been written successfully.
proton::messaging_handler
Handler for Proton messaging events.
Definition: messaging_handler.hpp:69
proton::io::connection_driver::disconnected
void disconnected(const error_condition &=error_condition())
Inform the engine that the transport been disconnected unexpectedly, without completing the AMQP conn...
proton::io::mutable_buffer
Unsettled API - A pointer to a mutable memory region with a size.
Definition: connection_driver.hpp:47
proton::io::connection_driver::read_buffer
mutable_buffer read_buffer()
The engine's read buffer.
proton::io::const_buffer::const_buffer
const_buffer(const char *data_=0, size_t size_=0)
Construct a buffer starting at data_ with size_ bytes.
Definition: connection_driver.hpp:62
proton::io::connection_driver::read_done
void read_done(size_t n)
Indicate that the first n bytes of read_buffer() have valid data.
proton::transport
A network channel supporting an AMQP connection.
Definition: transport.hpp:37
proton::io::connection_driver::tick
timestamp tick(timestamp now)
Indicate that time has passed.
proton::io::mutable_buffer::size
size_t size
Number of bytes in the buffer.
Definition: connection_driver.hpp:49
proton
The main Proton namespace.
Definition: annotation_key.hpp:33
proton::io::connection_driver::container
proton::container * container() const
Get the container associated with this connection_driver, if there is one.
proton::io::connection_driver::write_close
void write_close()
Indicate that the write side of the transport has closed and no more data can be written.
proton::io::const_buffer::size
size_t size
Number of bytes in the buffer.
Definition: connection_driver.hpp:59
proton::timestamp
A 64-bit timestamp in milliseconds since the Unix epoch.
Definition: timestamp.hpp:35
proton::io::connection_driver::write_buffer
const_buffer write_buffer()
The engine's write buffer.