Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
anbox
提交
d11a281d
A
anbox
项目概览
openeuler
/
anbox
通知
24
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
anbox
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d11a281d
编写于
1月 03, 2017
作者:
S
Simon Fels
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Terminate process when container manager disconnects or container start fails
上级
7a2cef31
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
26 addition
and
3 deletion
+26
-3
src/anbox/cmds/run.cpp
src/anbox/cmds/run.cpp
+4
-0
src/anbox/container/client.cpp
src/anbox/container/client.cpp
+17
-3
src/anbox/container/client.h
src/anbox/container/client.h
+5
-0
未找到文件。
src/anbox/cmds/run.cpp
浏览文件 @
d11a281d
...
@@ -144,6 +144,10 @@ anbox::cmds::Run::Run(const BusFactory &bus_factory)
...
@@ -144,6 +144,10 @@ anbox::cmds::Run::Run(const BusFactory &bus_factory)
}));
}));
container
::
Client
container
(
rt
);
container
::
Client
container
(
rt
);
container
.
register_terminate_handler
([
&
]()
{
WARNING
(
"Lost connection to container manager, terminating."
);
trap
->
stop
();
});
container
::
Configuration
container_configuration
;
container
::
Configuration
container_configuration
;
container_configuration
.
bind_mounts
=
{
container_configuration
.
bind_mounts
=
{
{
qemu_pipe_connector
->
socket_file
(),
"/dev/qemu_pipe"
},
{
qemu_pipe_connector
->
socket_file
(),
"/dev/qemu_pipe"
},
...
...
src/anbox/container/client.cpp
浏览文件 @
d11a281d
...
@@ -18,11 +18,11 @@
...
@@ -18,11 +18,11 @@
#include "anbox/container/client.h"
#include "anbox/container/client.h"
#include "anbox/config.h"
#include "anbox/config.h"
#include "anbox/container/management_api_stub.h"
#include "anbox/container/management_api_stub.h"
#include "anbox/logger.h"
#include "anbox/network/local_socket_messenger.h"
#include "anbox/network/local_socket_messenger.h"
#include "anbox/rpc/channel.h"
#include "anbox/rpc/channel.h"
#include "anbox/rpc/message_processor.h"
#include "anbox/rpc/message_processor.h"
#include "anbox/rpc/pending_call_cache.h"
#include "anbox/rpc/pending_call_cache.h"
#include "anbox/logger.h"
namespace
ba
=
boost
::
asio
;
namespace
ba
=
boost
::
asio
;
namespace
bs
=
boost
::
system
;
namespace
bs
=
boost
::
system
;
...
@@ -43,7 +43,17 @@ Client::Client(const std::shared_ptr<Runtime> &rt)
...
@@ -43,7 +43,17 @@ Client::Client(const std::shared_ptr<Runtime> &rt)
Client
::~
Client
()
{}
Client
::~
Client
()
{}
void
Client
::
start_container
(
const
Configuration
&
configuration
)
{
void
Client
::
start_container
(
const
Configuration
&
configuration
)
{
management_api_
->
start_container
(
configuration
);
try
{
management_api_
->
start_container
(
configuration
);
}
catch
(
const
std
::
exception
&
e
)
{
ERROR
(
"Failed to start container: %s"
,
e
.
what
());
if
(
terminate_callback_
)
terminate_callback_
();
}
}
void
Client
::
register_terminate_handler
(
const
TerminateCallback
&
callback
)
{
terminate_callback_
=
callback
;
}
}
void
Client
::
read_next_message
()
{
void
Client
::
read_next_message
()
{
...
@@ -54,7 +64,11 @@ void Client::read_next_message() {
...
@@ -54,7 +64,11 @@ void Client::read_next_message() {
void
Client
::
on_read_size
(
const
boost
::
system
::
error_code
&
error
,
void
Client
::
on_read_size
(
const
boost
::
system
::
error_code
&
error
,
std
::
size_t
bytes_read
)
{
std
::
size_t
bytes_read
)
{
if
(
error
)
BOOST_THROW_EXCEPTION
(
std
::
runtime_error
(
error
.
message
()));
if
(
error
)
{
if
(
terminate_callback_
)
terminate_callback_
();
return
;
}
std
::
vector
<
std
::
uint8_t
>
data
(
bytes_read
);
std
::
vector
<
std
::
uint8_t
>
data
(
bytes_read
);
std
::
copy
(
buffer_
.
data
(),
buffer_
.
data
()
+
bytes_read
,
data
.
data
());
std
::
copy
(
buffer_
.
data
(),
buffer_
.
data
()
+
bytes_read
,
data
.
data
());
...
...
src/anbox/container/client.h
浏览文件 @
d11a281d
...
@@ -34,11 +34,15 @@ namespace container {
...
@@ -34,11 +34,15 @@ namespace container {
class
ManagementApiStub
;
class
ManagementApiStub
;
class
Client
{
class
Client
{
public:
public:
typedef
std
::
function
<
void
()
>
TerminateCallback
;
Client
(
const
std
::
shared_ptr
<
Runtime
>
&
rt
);
Client
(
const
std
::
shared_ptr
<
Runtime
>
&
rt
);
~
Client
();
~
Client
();
void
start_container
(
const
Configuration
&
configuration
);
void
start_container
(
const
Configuration
&
configuration
);
void
register_terminate_handler
(
const
TerminateCallback
&
callback
);
private:
private:
void
read_next_message
();
void
read_next_message
();
void
on_read_size
(
const
boost
::
system
::
error_code
&
ec
,
void
on_read_size
(
const
boost
::
system
::
error_code
&
ec
,
...
@@ -50,6 +54,7 @@ class Client {
...
@@ -50,6 +54,7 @@ class Client {
std
::
shared_ptr
<
ManagementApiStub
>
management_api_
;
std
::
shared_ptr
<
ManagementApiStub
>
management_api_
;
std
::
shared_ptr
<
rpc
::
MessageProcessor
>
processor_
;
std
::
shared_ptr
<
rpc
::
MessageProcessor
>
processor_
;
std
::
array
<
std
::
uint8_t
,
8192
>
buffer_
;
std
::
array
<
std
::
uint8_t
,
8192
>
buffer_
;
TerminateCallback
terminate_callback_
;
};
};
}
// namespace container
}
// namespace container
}
// namespace anbox
}
// namespace anbox
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录