Fork Vasum on GitHub Official Vasum Wiki on Tizen.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
command-line-interface.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Contact: Mateusz Malicki <m.malicki2@samsung.com>
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License
17  */
18 
24 #ifndef CLI_COMMAND_LINE_INTERFACE_HPP
25 #define CLI_COMMAND_LINE_INTERFACE_HPP
26 
27 #include <vasum-client.h>
28 
29 #include <map>
30 #include <vector>
31 #include <functional>
32 #include <ostream>
33 #include <string>
34 
35 namespace vasum {
36 namespace cli {
37 
38 #define MODE_COMMAND_LINE (1 << 0)
39 #define MODE_INTERACTIVE (1 << 1)
40 
41 typedef std::vector<std::string> Args;
42 
43 struct ArgSpec {
44  std::string name;
45  std::string description;
46  std::string format;
47 };
48 
53 
54 public:
58  typedef std::function<void(const Args& argv)> ExecutorCallback;
59 
63  typedef std::vector<ArgSpec> ArgsSpec;
64 
69  : mAvailability(0) {}
70 
81  CommandLineInterface(const ExecutorCallback& executorCallback,
82  const std::string& name,
83  const std::string& description,
84  const unsigned int& availability,
85  const ArgsSpec& argsSpec)
86  : mExecutorCallback(executorCallback),
87  mName(name),
88  mDescription(description),
89  mAvailability(availability),
90  mArgsSpec(argsSpec) {}
91 
97  static void connect();
98 
102  static void disconnect();
103 
109  static void executeCallback(const std::function<VsmStatus(VsmClient)>& fun);
110 
114  const std::string& getName() const;
115 
119  const std::string& getDescription() const;
120 
126  void printUsage(std::ostream& out) const;
127 
133  bool isAvailable(unsigned int mode) const;
134 
142  void execute(const Args& argv) const;
143 
144  const std::vector<std::string> buildCompletionList(const Args& argv) const;
145 
146 private:
148 
150  const std::string mName;
151  const std::string mDescription;
152  const unsigned int mAvailability;
154 };
155 
161 void lock_queue(const Args& argv);
162 
168 void unlock_queue(const Args& argv);
169 
175 void set_active_zone(const Args& argv);
176 
182 void create_zone(const Args& argv);
183 
189 void destroy_zone(const Args& argv);
190 
196 void shutdown_zone(const Args& argv);
197 
203 void start_zone(const Args& argv);
204 
209 void console_zone(const Args& argv);
210 
216 void lock_zone(const Args& argv);
217 
223 void unlock_zone(const Args& argv);
224 
229 void get_zones_status(const Args& argv);
230 
236 void get_zone_ids(const Args& argv);
237 
243 void get_active_zone(const Args& argv);
244 
250 void grant_device(const Args& argv);
251 
257 void revoke_device(const Args& argv);
258 
264 void create_netdev(const Args& argv);
265 
271 void destroy_netdev(const Args& argv);
272 
280 void netdev_list(const Args& argv);
281 
287 void netdev_add_ip_addr(const Args& argv);
288 
294 void netdev_del_ip_addr(const Args& argv);
295 
301 void netdev_up(const Args& argv);
302 
308 void netdev_down(const Args& argv);
309 
315 void clean_up_zones_root(const Args& argv);
316 
317 } // namespace cli
318 } // namespace vasum
319 
320 #endif /* CLI_COMMAND_LINE_INTERFACE_HPP */
void create_zone(const Args &argv)
Parses command line arguments and call vsm_create_zone.
Definition: command-line-interface.cpp:313
const std::vector< std::string > buildCompletionList(const Args &argv) const
Definition: command-line-interface.cpp:159
void start_zone(const Args &argv)
Parses command line arguments and call vsm_start_zone.
Definition: command-line-interface.cpp:350
Class that implements command pattern.
Definition: command-line-interface.hpp:52
Definition: command-line-interface.hpp:43
void netdev_del_ip_addr(const Args &argv)
Parses command line arguments and call vsm_netdev_del_ipv4_addr, vsm_netdev_del_ipv6_addr.
Definition: command-line-interface.cpp:642
std::function< void(const Args &argv)> ExecutorCallback
Definition: command-line-interface.hpp:58
void netdev_add_ip_addr(const Args &argv)
Parses command line arguments and call vsm_netdev_set_ipv4_addr, vsm_netdev_set_ipv6_addr.
Definition: command-line-interface.cpp:610
void * VsmClient
vasum-server's opaque client pointer.
Definition: vasum-client.h:173
const std::string mDescription
Definition: command-line-interface.hpp:151
CommandLineInterface(const ExecutorCallback &executorCallback, const std::string &name, const std::string &description, const unsigned int &availability, const ArgsSpec &argsSpec)
Construct command.
Definition: command-line-interface.hpp:81
void netdev_up(const Args &argv)
Parses command line arguments and call vsm_netdev_up.
Definition: command-line-interface.cpp:674
void netdev_list(const Args &argv)
Parses command line arguments and prints result of vsm_zone_get_netdevs, vsm_lookup_netdev_by_name, vsm_netdev_get_ipv4_addr, vsm_netdev_get_ipv6_addr.
Definition: command-line-interface.cpp:557
static void connect()
Set the class (static) in a connected state.
Definition: command-line-interface.cpp:189
std::string name
Definition: command-line-interface.hpp:44
void unlock_queue(const Args &)
Parses command line arguments and call vsm_set_active_zone.
Definition: command-line-interface.cpp:297
void grant_device(const Args &argv)
Parses command line arguments and call vsm_grant_device.
Definition: command-line-interface.cpp:478
void netdev_down(const Args &argv)
Parses command line arguments and call vsm_netdev_down.
Definition: command-line-interface.cpp:687
void clean_up_zones_root(const Args &)
Parses command line arguments and call vsm_clean_up_zones_root.
Definition: command-line-interface.cpp:700
std::vector< std::string > Args
Definition: command-line-interface.hpp:41
void unlock_zone(const Args &argv)
Parses command line arguments and call vsm_unlock_zone.
Definition: command-line-interface.cpp:405
CommandLineInterface()
Dummy constructor (for stl usage)
Definition: command-line-interface.hpp:68
bool isAvailable(unsigned int mode) const
Check if the command is available in specific mode.
Definition: command-line-interface.cpp:281
void destroy_netdev(const Args &argv)
Parses command line arguments and call vsm_destroy_netdev.
Definition: command-line-interface.cpp:544
static void disconnect()
Disconnect the class from a vasum client.
Definition: command-line-interface.cpp:210
const std::string mName
Definition: command-line-interface.hpp:150
void console_zone(const Args &argv)
Parses command line arguments and call lxc-console.
Definition: command-line-interface.cpp:361
void lock_queue(const Args &)
Parses command line arguments and call vsm_set_active_zone.
Definition: command-line-interface.cpp:292
static VsmClient client
Definition: command-line-interface.hpp:147
void get_zones_status(const Args &argv)
Parses command line arguments and prints list of zone with some useful informations (id...
Definition: command-line-interface.cpp:416
std::vector< ArgSpec > ArgsSpec
Definition: command-line-interface.hpp:63
std::string description
Definition: command-line-interface.hpp:45
static void executeCallback(const std::function< VsmStatus(VsmClient)> &fun)
Execute a callback passing the connected VsmClient.
Definition: command-line-interface.cpp:232
void lock_zone(const Args &argv)
Parses command line arguments and call vsm_lock_zone.
Definition: command-line-interface.cpp:394
const std::string & getDescription() const
Get the command description.
Definition: command-line-interface.cpp:247
void destroy_zone(const Args &argv)
Parses command line arguments and call vsm_destroy_zone.
Definition: command-line-interface.cpp:328
void printUsage(std::ostream &out) const
Print usage to stream.
Definition: command-line-interface.cpp:252
This file contains the public API for Vasum Client.
const std::string & getName() const
Get the command name.
Definition: command-line-interface.cpp:242
VsmStatus
Completion status of libvasum-client's functions.
Definition: vasum-client.h:193
const ArgsSpec mArgsSpec
Definition: command-line-interface.hpp:153
void set_active_zone(const Args &argv)
Parses command line arguments and call vsm_set_active_zone.
Definition: command-line-interface.cpp:302
void create_netdev(const Args &argv)
Parses command line arguments and call vsm_create_netdev_*.
Definition: command-line-interface.cpp:501
const unsigned int mAvailability
Definition: command-line-interface.hpp:152
void get_active_zone(const Args &)
Parses command line arguments and call vsm_get_active_zone_id.
Definition: command-line-interface.cpp:468
void revoke_device(const Args &argv)
Parses command line arguments and call vsm_revoke_device.
Definition: command-line-interface.cpp:490
void shutdown_zone(const Args &argv)
Parses command line arguments and call vsm_shutdown_zone.
Definition: command-line-interface.cpp:339
void get_zone_ids(const Args &)
Parses command line arguments and call vsm_get_zone_ids.
Definition: command-line-interface.cpp:453
std::string format
Definition: command-line-interface.hpp:46
void execute(const Args &argv) const
Do the work.
Definition: command-line-interface.cpp:286
const ExecutorCallback mExecutorCallback
Definition: command-line-interface.hpp:149