After the Drogon framework is compiled and installed, a command line program drogon_ctl is also installed in the system, for convenience, also installed an identical copy dg_ctl. Users can choose according to their preferences.

The main function of the program is to make it easy for users to create various drogon project files. Use the dg_ctl help command to see the functions it supports, as follows:

$ dg_ctl help
usage: drogon_ctl <command> [<args>]
commands list:
create                  create some source files(Use 'drogon_ctl help create' for more information)
help                    display this message
version                 display version of this tool
press                   Do stress testing(Use 'drogon_ctl help press' for more information)

Version subcommand

The version subcommand is used to print the drogon version currently installed on the system, as follows:

$ dg_ctl version
  __| |_ __ ___   __ _  ___  _ __
 / _` | '__/ _ \ / _` |/ _ \| '_ \
| (_| | | | (_) | (_| | (_) | | | |
 \__,_|_|  \___/ \__, |\___/|_| |_|

drogon ctl tools
git commit:d4710d3da7ca9e73b881cbae3149c3a570da8de4
compile config:-O3 -DNDEBUG -Wall -std=c++17 -I/root/drogon/trantor -I/root/drogon/lib/inc -I/root/drogon/orm_lib/inc -I/usr/local/include -I/usr/include/uuid -I/usr/include -I/usr/include/mysql

Create sub command

The create subcommand is used to create various objects. It is currently the main function of drogon_ctl. Use the dg_ctl help create command to print detailed help for this command, as follows:

$ dg_ctl help create
Use create command to create some source files of drogon webapp

Usage:drogon_ctl create <view|controller|filter|project|model> [-options] <object name>

drogon_ctl create view <csp file name> [-o <output path>] [-n <namespace>]|[--path-to-namespace] //create HttpView source files from csp file

drogon_ctl create controller [-s] <[namespace::]class_name> //create HttpSimpleController source files

drogon_ctl create controller -h <[namespace::]class_name> //create HttpController source files

drogon_ctl create controller -w <[namespace::]class_name> //create WebSocketController source files

drogon_ctl create filter <[namespace::]class_name> //create a filter named class_name

drogon_ctl create project <project_name> //create a project named project_name

drogon_ctl create model <model_path> //create model classes in model_path

View creation

The dg_ctl create view command is used to generate source files from csp files, see the View section. In general, this command does not need to be used directly. It is better practice to configure the cmake file to executed this command automatically. The command example is as follows, assuming the csp file is UsersList.csp.

dg_ctl create view UsersList.csp

Controller creation

The dg_ctl create controller command is used to help the user create the controller's source files. The three controllers currently supported by drogon can be created by this command.

dg_ctl create controller SimpleControllerTest
dg_ctl create controller webapp::v1::SimpleControllerTest

The last parameter is the controller's class name, which can be prefixed by a namespace.

dg_ctl create controller -h ControllerTest
dg_ctl create controller -h api::v1::ControllerTest
dg_ctl create controller -w WsControllerTest
dg_ctl create controller -w api::v1::WsControllerTest

Filter creation

The dg_ctl create filter command is used to help the user create the source files for filters, see the Filter section.

dg_ctl create filter LoginFilter
dg_ctl create filter webapp::v1::LoginFilter

Create project

The best way the user creates a new Drogon application project is via the drogon_ctl command, as follows:

dg_ctl create project ProjectName

After the command is executed, a complete project directory will be created in the current directory. The directory name is ProjectName, and the user can directly compile the project in the build directory (cmake .. && make). Of course, it does not have any business logic.

The directory structure of the project is as follows:

├── build                         Build folder
├── CMakeLists.txt                Project cmake configuration file
├── cmake_modules                 Cmake scripts for third-party libraries lookup
│   ├── FindJsoncpp.cmake
│   ├── FindMySQL.cmake
│   ├── FindSQLite3.cmake
│   └── FindUUID.cmake
├── config.json                   The configuration file of the drogon application, please refer to the introduction section of the configuration file.
├── controllers                   The directory where the controller source files are stored
├── filters                       The directory where the filter files are stored
├──                       Main program
├── models                        The directory of the database model file, model source file creation see 11.2.5
│   └── model.json
├── tests                         The direftory for unit/integration tests
│   └──              Entry point for tests
└── views                         The directory where view csp files are stored, the source file does not need to be manually created by the user, and csp files are automatically preprocessed to obtain view source files when the project is compiled.

Create models

Use the dg_ctl create model command to create database model source files. The last parameter is the directory where models is stored. This directory must contain a model configuration file named model.json to tell dg_ctl how to connect to the database and which tables to be mapped.

For example, if you want to create models in the project directory mentioned above, execute the following command in the project directory:

dg_ctl create model models

This command will prompt the user that the file will be overwritten directly. After the user enters y, it will generate all the model files.

Other source files need to reference model classes should include model header files, such as:

#include "models/User.h"

Note that the models directory name is included to distinguish between multiple data sources in the same project. See ORM.

Stress Testing

One can use the dg_ctl press command to do a stress testing, there are several options for this command.

  • -n num Set the number of requests(default : 1)
  • -t num Set the number of threads(default : 1), Set the number to the number of CPUs to achieve maximum performance
  • -c num Set the number of concurrent connections(default : 1)
  • -q No progress indication(default: no)

For example, users can test an HTTP server as follows:

dg_ctl press -n1000000 -t4 -c1000 -q http://localhost:8080/
dg_ctl press -n 1000000 -t 4 -c 1000

12 AOP

Discussions (1)

Hussain 2 years ago 0

Following error on request. 20201127 11:53:21.810378 UTC 23207 DEBUG [handleError] [] - SO_ERROR = 104 Connection reset by peer -

Add Discussion as Guest

Log in