blob: c8acf78cca57b06727730f6d048c9d455a77a746 [file] [log] [blame]
Neale Ranns812ed392017-10-16 04:20:13 -07001/*
2 * Copyright (c) 2017 Cisco and/or its affiliates.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at:
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef __VOM_CONNECTION_H__
17#define __VOM_CONNECTION_H__
18
Neale Rannsfd920602017-11-23 12:15:00 -080019#include <memory>
Neale Ranns812ed392017-10-16 04:20:13 -070020#include <string>
21
Neale Rannsfd920602017-11-23 12:15:00 -080022/**
23 * Forward declarations
24 */
25namespace vapi {
26class Connection;
27};
Neale Ranns812ed392017-10-16 04:20:13 -070028
29namespace VOM {
30/**
31 * A representation of the connection to VPP
32 */
33class connection
34{
35public:
36 /**
37 * Constructor
38 */
39 connection();
40 /**
41 * Destructor
42 */
43 ~connection();
44
45 /**
46 * Blocking [re]connect call - always eventually succeeds, or the
47 * universe expires. Not much this system can do without one.
48 */
49 void connect();
50
51 /**
52 * Blocking disconnect
53 */
54 void disconnect();
55
56 /**
57 * Retrun the VAPI context the commands will use
58 */
59 vapi::Connection& ctx();
60
61private:
62 /**
63 * The VAPI connection context
64 */
Neale Rannsfd920602017-11-23 12:15:00 -080065 std::unique_ptr<vapi::Connection> m_vapi_conn;
Neale Ranns812ed392017-10-16 04:20:13 -070066
67 /**
68 * The name of this application
69 */
70 const std::string m_app_name;
71};
72};
73
74/*
75 * fd.io coding-style-patch-verification: ON
76 *
77 * Local Variables:
78 * eval: (c-set-style "mozilla")
79 * End:
80 */
81
82#endif