- libs/rpc/proto/: admin.proto with 8 RPC methods - libs/rpc/admin/: tonic server impl (SessionAdminService), client wrapper (AdminGrpcClient), types, generated/ tonic-prost build output - libs/rpc/build.rs: tonic-prost-build two-step (proto -> message types + manual service defs) - libs/rpc/lib.rs: module re-exports - libs/session_manager/: session manager types used by admin service
94 lines
3.9 KiB
Rust
94 lines
3.9 KiB
Rust
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
let proto_file = "proto/admin.proto";
|
|
let out_dir = "admin/generated";
|
|
std::fs::create_dir_all(out_dir)?;
|
|
|
|
tonic_prost_build::configure()
|
|
.out_dir(out_dir)
|
|
.compile_protos(&[proto_file], &["proto/"])?;
|
|
|
|
let service = tonic_prost_build::manual::Service::builder()
|
|
.name("SessionAdmin")
|
|
.package("admin")
|
|
.method(
|
|
tonic_prost_build::manual::Method::builder()
|
|
.name("list_workspace_sessions")
|
|
.route_name("ListWorkspaceSessions")
|
|
.input_type("crate::admin::generated::admin::ListWorkspaceSessionsRequest")
|
|
.output_type("crate::admin::generated::admin::ListWorkspaceSessionsResponse")
|
|
.codec_path("tonic_prost::ProstCodec")
|
|
.build(),
|
|
)
|
|
.method(
|
|
tonic_prost_build::manual::Method::builder()
|
|
.name("list_user_sessions")
|
|
.route_name("ListUserSessions")
|
|
.input_type("crate::admin::generated::admin::ListUserSessionsRequest")
|
|
.output_type("crate::admin::generated::admin::ListUserSessionsResponse")
|
|
.codec_path("tonic_prost::ProstCodec")
|
|
.build(),
|
|
)
|
|
.method(
|
|
tonic_prost_build::manual::Method::builder()
|
|
.name("kick_user_from_workspace")
|
|
.route_name("KickUserFromWorkspace")
|
|
.input_type("crate::admin::generated::admin::KickUserFromWorkspaceRequest")
|
|
.output_type("crate::admin::generated::admin::KickUserFromWorkspaceResponse")
|
|
.codec_path("tonic_prost::ProstCodec")
|
|
.build(),
|
|
)
|
|
.method(
|
|
tonic_prost_build::manual::Method::builder()
|
|
.name("kick_user")
|
|
.route_name("KickUser")
|
|
.input_type("crate::admin::generated::admin::KickUserRequest")
|
|
.output_type("crate::admin::generated::admin::KickUserResponse")
|
|
.codec_path("tonic_prost::ProstCodec")
|
|
.build(),
|
|
)
|
|
.method(
|
|
tonic_prost_build::manual::Method::builder()
|
|
.name("get_user_status")
|
|
.route_name("GetUserStatus")
|
|
.input_type("crate::admin::generated::admin::GetUserStatusRequest")
|
|
.output_type("crate::admin::generated::admin::GetUserStatusResponse")
|
|
.codec_path("tonic_prost::ProstCodec")
|
|
.build(),
|
|
)
|
|
.method(
|
|
tonic_prost_build::manual::Method::builder()
|
|
.name("get_user_info")
|
|
.route_name("GetUserInfo")
|
|
.input_type("crate::admin::generated::admin::GetUserInfoRequest")
|
|
.output_type("crate::admin::generated::admin::GetUserInfoResponse")
|
|
.codec_path("tonic_prost::ProstCodec")
|
|
.build(),
|
|
)
|
|
.method(
|
|
tonic_prost_build::manual::Method::builder()
|
|
.name("get_workspace_online_users")
|
|
.route_name("GetWorkspaceOnlineUsers")
|
|
.input_type("crate::admin::generated::admin::GetWorkspaceOnlineUsersRequest")
|
|
.output_type("crate::admin::generated::admin::GetWorkspaceOnlineUsersResponse")
|
|
.codec_path("tonic_prost::ProstCodec")
|
|
.build(),
|
|
)
|
|
.method(
|
|
tonic_prost_build::manual::Method::builder()
|
|
.name("is_user_online")
|
|
.route_name("IsUserOnline")
|
|
.input_type("crate::admin::generated::admin::IsUserOnlineRequest")
|
|
.output_type("crate::admin::generated::admin::IsUserOnlineResponse")
|
|
.codec_path("tonic_prost::ProstCodec")
|
|
.build(),
|
|
)
|
|
.build();
|
|
|
|
tonic_prost_build::manual::Builder::new()
|
|
.out_dir(out_dir)
|
|
.build_transport(true)
|
|
.compile(&[service]);
|
|
|
|
Ok(())
|
|
}
|