Qpid Proton C++ API  0.18.1
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();
197  connection_driver(const connection_driver&);
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
size_t size
Number of bytes in the buffer.
Definition: connection_driver.hpp:59
A top-level container of connections, sessions, and links.
Definition: container.hpp:55
Unsettled API - A pointer to an immutable memory region with a size.
Definition: connection_driver.hpp:57
A connection to a remote AMQP peer.
Definition: connection.hpp:43
Options for creating a connection.
Definition: connection_options.hpp:65
mutable_buffer(char *data_=0, size_t size_=0)
Construct a buffer starting at data_ with size_ bytes.
Definition: connection_driver.hpp:52
const char * data
Beginning of the buffered data.
Definition: connection_driver.hpp:58
char * data
Beginning of the buffered data.
Definition: connection_driver.hpp:48
A 64-bit timestamp in milliseconds since the Unix epoch.
Definition: timestamp.hpp:35
size_t size
Number of bytes in the buffer.
Definition: connection_driver.hpp:49
A handler for Proton messaging events.
Definition: messaging_handler.hpp:62
const_buffer(const char *data_=0, size_t size_=0)
Construct a buffer starting at data_ with size_ bytes.
Definition: connection_driver.hpp:62
A network channel supporting an AMQP connection.
Definition: transport.hpp:37
Unsettled API - A pointer to a mutable memory region with a size.
Definition: connection_driver.hpp:47
Unsettled API - An AMQP driver for a single connection.
Definition: connection_driver.hpp:93
The main Proton namespace.
Definition: annotation_key.hpp:33
Describes an endpoint error state.
Definition: error_condition.hpp:40