Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mobject-store
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
13
Issues
13
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sds
mobject-store
Commits
11082aae
Commit
11082aae
authored
Dec 07, 2017
by
Matthieu Dorier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
passing server context down to io chain visitor
parent
c758ae36
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
63 additions
and
28 deletions
+63
-28
core-read-op.cpp
src/server/core/core-read-op.cpp
+3
-0
fake-read-op.cpp
src/server/fake/fake-read-op.cpp
+2
-1
fake-write-op.cpp
src/server/fake/fake-write-op.cpp
+8
-4
mobject-server-context.h
src/server/mobject-server-context.h
+38
-0
mobject-server.c
src/server/mobject-server.c
+6
-17
visitor-args.h
src/server/visitor-args.h
+6
-5
mobject-client-test.c
tests/mobject-client-test.c
+0
-1
No files found.
src/server/core/core-read-op.cpp
View file @
11082aae
...
...
@@ -49,16 +49,19 @@ void read_op_exec_omap_get_keys(void* u, const char* start_after, uint64_t max_r
mobject_store_omap_iter_t
*
iter
,
int
*
prval
)
{
auto
vargs
=
static_cast
<
server_visitor_args_t
>
(
u
);
omap_iter_create
(
iter
);
}
void
read_op_exec_omap_get_vals
(
void
*
u
,
const
char
*
start_after
,
const
char
*
filter_prefix
,
uint64_t
max_return
,
mobject_store_omap_iter_t
*
iter
,
int
*
prval
)
{
auto
vargs
=
static_cast
<
server_visitor_args_t
>
(
u
);
omap_iter_create
(
iter
);
}
void
read_op_exec_omap_get_vals_by_keys
(
void
*
u
,
char
const
*
const
*
keys
,
size_t
num_keys
,
mobject_store_omap_iter_t
*
iter
,
int
*
prval
)
{
auto
vargs
=
static_cast
<
server_visitor_args_t
>
(
u
);
omap_iter_create
(
iter
);
}
void
read_op_exec_end
(
void
*
u
)
...
...
src/server/fake/fake-read-op.cpp
View file @
11082aae
...
...
@@ -59,7 +59,8 @@ void read_op_exec_read(void* u, uint64_t offset, size_t len, buffer_u buf, size_
*
prval
=
-
1
;
return
;
}
fake_db
[
name
].
read
(
vargs
->
mid
,
vargs
->
client_addr
,
vargs
->
bulk_handle
,
margo_instance_id
mid
=
vargs
->
srv_ctx
->
mid
;
fake_db
[
name
].
read
(
mid
,
vargs
->
client_addr
,
vargs
->
bulk_handle
,
buf
.
as_offset
,
offset
,
len
,
bytes_read
);
*
prval
=
0
;
}
...
...
src/server/fake/fake-write-op.cpp
View file @
11082aae
...
...
@@ -69,7 +69,8 @@ void write_op_exec_write(void* u, buffer_u buf, size_t len, uint64_t offset)
if
(
fake_db
.
count
(
name
)
==
0
)
{
std
::
cerr
<<
"[FAKE-BACKEND-WARNING] (write) Object "
<<
name
<<
" does not exist, it will be created"
<<
std
::
endl
;
}
fake_db
[
name
].
write
(
vargs
->
mid
,
vargs
->
client_addr
,
vargs
->
bulk_handle
,
buf
.
as_offset
,
offset
,
len
);
margo_instance_id
mid
=
vargs
->
srv_ctx
->
mid
;
fake_db
[
name
].
write
(
mid
,
vargs
->
client_addr
,
vargs
->
bulk_handle
,
buf
.
as_offset
,
offset
,
len
);
}
void
write_op_exec_write_full
(
void
*
u
,
buffer_u
buf
,
size_t
len
)
...
...
@@ -79,7 +80,8 @@ void write_op_exec_write_full(void* u, buffer_u buf, size_t len)
if
(
fake_db
.
count
(
name
)
==
0
)
{
std
::
cerr
<<
"[FAKE-BACKEND-WARNING] (write_full) Object "
<<
name
<<
" does not exist, it will be created"
<<
std
::
endl
;
}
fake_db
[
name
].
write_full
(
vargs
->
mid
,
vargs
->
client_addr
,
vargs
->
bulk_handle
,
buf
.
as_offset
,
len
);
margo_instance_id
mid
=
vargs
->
srv_ctx
->
mid
;
fake_db
[
name
].
write_full
(
mid
,
vargs
->
client_addr
,
vargs
->
bulk_handle
,
buf
.
as_offset
,
len
);
}
void
write_op_exec_writesame
(
void
*
u
,
buffer_u
buf
,
size_t
data_len
,
size_t
write_len
,
uint64_t
offset
)
...
...
@@ -89,7 +91,8 @@ void write_op_exec_writesame(void* u, buffer_u buf, size_t data_len, size_t writ
if
(
fake_db
.
count
(
name
)
==
0
)
{
std
::
cerr
<<
"[FAKE-BACKEND-WARNING] (writesame) Object "
<<
name
<<
" does not exist, it will be created"
<<
std
::
endl
;
}
fake_db
[
name
].
writesame
(
vargs
->
mid
,
vargs
->
client_addr
,
vargs
->
bulk_handle
,
buf
.
as_offset
,
offset
,
data_len
,
write_len
);
margo_instance_id
mid
=
vargs
->
srv_ctx
->
mid
;
fake_db
[
name
].
writesame
(
mid
,
vargs
->
client_addr
,
vargs
->
bulk_handle
,
buf
.
as_offset
,
offset
,
data_len
,
write_len
);
}
void
write_op_exec_append
(
void
*
u
,
buffer_u
buf
,
size_t
len
)
...
...
@@ -99,7 +102,8 @@ void write_op_exec_append(void* u, buffer_u buf, size_t len)
if
(
fake_db
.
count
(
name
)
==
0
)
{
std
::
cerr
<<
"[FAKE-BACKEND-WARNING] (append) Object "
<<
name
<<
" does not exist, it will be created"
<<
std
::
endl
;
}
fake_db
[
name
].
append
(
vargs
->
mid
,
vargs
->
client_addr
,
vargs
->
bulk_handle
,
buf
.
as_offset
,
len
);
margo_instance_id
mid
=
vargs
->
srv_ctx
->
mid
;
fake_db
[
name
].
append
(
mid
,
vargs
->
client_addr
,
vargs
->
bulk_handle
,
buf
.
as_offset
,
len
);
}
void
write_op_exec_remove
(
void
*
u
)
...
...
src/server/mobject-server-context.h
0 → 100644
View file @
11082aae
/*
* (C) 2017 The University of Chicago
*
* See COPYRIGHT in top-level directory.
*/
#ifndef __SERVER_MOBJECT_CONTEXT_H
#define __SERVER_MOBJECT_CONTEXT_H
#include <margo.h>
//#include <sds-keyval.h>
#include <bake-bulk-server.h>
#include <bake-bulk-client.h>
//#include <libpmemobj.h>
#include <ssg-mpi.h>
#ifdef __cplusplus
extern
"C"
{
#endif
struct
mobject_server_context
{
/* margo, bake, sds-keyval, ssg state */
margo_instance_id
mid
;
/* TODO bake, sds-keyval stuff */
ssg_group_id_t
gid
;
bake_target_id_t
bake_id
;
/* server shutdown conditional logic */
ABT_mutex
shutdown_mutex
;
ABT_cond
shutdown_cond
;
int
shutdown_flag
;
int
ref_count
;
};
#ifdef __cplusplus
}
#endif
#endif
src/server/mobject-server.c
View file @
11082aae
...
...
@@ -4,7 +4,7 @@
* See COPYRIGHT in top-level directory.
*/
//
#define FAKE_CPP_SERVER
#define FAKE_CPP_SERVER
#include <assert.h>
#include <mpi.h>
...
...
@@ -17,6 +17,7 @@
#include <ssg-mpi.h>
#include "mobject-server.h"
#include "src/server/mobject-server-context.h"
#include "src/rpc-types/write-op.h"
#include "src/rpc-types/read-op.h"
//#include "src/server/print-write-op.h"
...
...
@@ -32,20 +33,6 @@
#include "src/server/core/core-write-op.h"
#endif
struct
mobject_server_context
{
/* margo, bake, sds-keyval, ssg state */
margo_instance_id
mid
;
/* TODO bake, sds-keyval stuff */
ssg_group_id_t
gid
;
bake_target_id_t
bake_id
;
/* server shutdown conditional logic */
ABT_mutex
shutdown_mutex
;
ABT_cond
shutdown_cond
;
int
shutdown_flag
;
int
ref_count
;
}
;
static
int
mobject_server_register
(
mobject_server_context_t
*
srv_ctx
);
static
void
mobject_server_cleanup
(
mobject_server_context_t
*
srv_ctx
);
...
...
@@ -221,11 +208,12 @@ static hg_return_t mobject_write_op_ult(hg_handle_t h)
assert
(
ret
==
HG_SUCCESS
);
const
struct
hg_info
*
info
=
margo_get_info
(
h
);
margo_instance_id
mid
=
margo_hg_handle_get_instance
(
h
);
server_visitor_args
vargs
;
vargs
.
object_name
=
in
.
object_name
;
vargs
.
pool_name
=
in
.
pool_name
;
vargs
.
mid
=
margo_hg_handle_get_instance
(
h
);
vargs
.
srv_ctx
=
margo_registered_data
(
mid
,
info
->
id
);
vargs
.
client_addr
=
info
->
addr
;
vargs
.
bulk_handle
=
in
.
write_op
->
bulk_handle
;
...
...
@@ -270,11 +258,12 @@ static hg_return_t mobject_read_op_ult(hg_handle_t h)
read_response_t
resp
=
build_matching_read_responses
(
in
.
read_op
);
const
struct
hg_info
*
info
=
margo_get_info
(
h
);
margo_instance_id
mid
=
margo_hg_handle_get_instance
(
h
);
server_visitor_args
vargs
;
vargs
.
object_name
=
in
.
object_name
;
vargs
.
pool_name
=
in
.
pool_name
;
vargs
.
mid
=
margo_hg_handle_get_instance
(
h
);
vargs
.
srv_ctx
=
margo_registered_data
(
mid
,
info
->
id
);
vargs
.
client_addr
=
info
->
addr
;
vargs
.
bulk_handle
=
in
.
read_op
->
bulk_handle
;
...
...
src/server/visitor-args.h
View file @
11082aae
...
...
@@ -3,17 +3,18 @@
#include <margo.h>
#include "libmobject-store.h"
#include "src/server/mobject-server-context.h"
#ifdef __cplusplus
extern
"C"
{
#endif
typedef
struct
{
const
char
*
object_name
;
const
char
*
pool_name
;
margo_instance_id
mid
;
hg_addr_t
client_addr
;
hg_bulk_t
bulk_handle
;
const
char
*
object_name
;
const
char
*
pool_name
;
struct
mobject_server_context
*
srv_ctx
;
hg_addr_t
client_addr
;
hg_bulk_t
bulk_handle
;
}
server_visitor_args
;
typedef
server_visitor_args
*
server_visitor_args_t
;
...
...
tests/mobject-client-test.c
View file @
11082aae
...
...
@@ -73,7 +73,6 @@ int main(int argc, char** argv)
mobject_store_omap_iter_t
iter4
;
int
prval4
;
mobject_store_read_op_omap_get_vals
(
read_op
,
start_after2
,
filter_prefix2
,
3
,
&
iter4
,
&
prval4
);
// Add "omap_get_vals_by_keys" operation
const
char
*
keys
[]
=
{
"matthieu"
,
"robl"
};
mobject_store_omap_iter_t
iter5
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment