Skip to content

Commit 0022d7f

Browse files
committed
exposed messages and added docs
1 parent 9c4d4f9 commit 0022d7f

6 files changed

Lines changed: 53 additions & 72 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "rusty-tracks"
3-
version = "0.0.9"
3+
version = "0.0.10"
44
authors = ["David Lengweiler <dave.lengw@gmail.com>"]
55
description = "Rust client to connect to DataTracks."
66
homepage = "https://github.com/data-tracks/RustyTracks"

src/connection/admin.rs

Lines changed: 42 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
use crate::connection::Connection;
22
use crate::messages::{CreatePlan, DeletePlan, Plan, Plans, StartPlan, StopPlan};
3-
use flatbuffers::FlatBufferBuilder;
3+
use flatbuffers::{FlatBufferBuilder, WIPOffset};
44
use std::ops::{Deref, DerefMut};
5-
use track_rails::message_generated::protocol;
65
use track_rails::message_generated::protocol::{ByName, ByNameArgs, CreatePlanRequest, CreatePlanRequestArgs, DeletePlanRequest, DeletePlanRequestArgs, Filter, FilterArgs, FilterType, GetPlansRequest, GetPlansRequestArgs, Message, MessageArgs, OkStatus, OkStatusArgs, Payload, StartPlanRequest, StartPlanRequestArgs, Status, StopPlanRequest, StopPlanRequestArgs};
76

87
pub struct Admin{
@@ -15,79 +14,74 @@ impl Admin {
1514
Admin{ connection }
1615
}
1716

17+
/// Start an already created plan.
1818
pub fn start_plan(&mut self, id: usize) -> Result<(), String> {
1919
let mut builder = FlatBufferBuilder::new();
2020

2121
let start = StartPlanRequest::create(&mut builder, &StartPlanRequestArgs{ id: id as u64 });
2222

23-
let status = OkStatus::create(&mut builder, &OkStatusArgs{});
24-
25-
let msg = Message::create(&mut builder, &MessageArgs {
26-
data_type: Payload::StartPlanRequest,
27-
data: Some(start.as_union_value()),
28-
status_type: Status::OkStatus,
29-
status: Some(status.as_union_value()),
30-
});
31-
32-
builder.finish(msg, None);
33-
let msg = builder.finished_data().to_vec();
23+
let msg = Self::wrap_msg(&mut builder, Payload::StopPlanRequest, start.as_union_value());
3424

3525
self.write_all(&msg)?;
3626

37-
let _: StartPlan = self.read_msg()?;
27+
let _: StartPlan = self.receive()?;
3828
Ok(())
3929
}
4030

41-
pub(crate) fn stop_plan(&mut self, id: usize) -> Result<(), String> {
31+
/// Try to stop a created plan.
32+
pub fn stop_plan(&mut self, id: usize) -> Result<(), String> {
4233
let mut builder = FlatBufferBuilder::new();
4334

4435
let stop = StopPlanRequest::create(&mut builder, &StopPlanRequestArgs{ id: id as u64 });
4536

46-
let status = OkStatus::create(&mut builder, &OkStatusArgs{});
37+
let msg = Self::wrap_msg(&mut builder, Payload::StopPlanRequest, stop.as_union_value());
38+
39+
self.write_all(&msg)?;
4740

48-
let msg = Message::create(&mut builder, &MessageArgs {
49-
data_type: Payload::StopPlanRequest,
50-
data: Some(stop.as_union_value()),
41+
let _: StopPlan = self.receive()?;
42+
Ok(())
43+
}
44+
45+
fn wrap_msg(builder: &mut FlatBufferBuilder, payload: Payload,data: WIPOffset<flatbuffers::UnionWIPOffset>) -> Vec<u8> {
46+
let status = OkStatus::create(builder, &OkStatusArgs{});
47+
48+
let msg = Message::create(builder, &MessageArgs {
49+
data_type: payload,
50+
data: Some(data),
5151
status_type: Status::OkStatus,
5252
status: Some(status.as_union_value()),
5353
});
54-
5554
builder.finish(msg, None);
56-
let msg = builder.finished_data().to_vec();
57-
58-
self.write_all(&msg)?;
59-
60-
let _: StopPlan = self.read_msg()?;
61-
Ok(())
55+
builder.finished_data().to_vec()
6256
}
6357

58+
59+
/// Create a new plan with a given name and according to the provided schema.
60+
///
61+
/// # Arguments
62+
///
63+
/// * `name`: the name of the plan
64+
/// * `plan`: the schema of the plan
65+
///
66+
/// returns: Result<usize, String>
6467
pub fn create_plan<Name: AsRef<str>, Plan: AsRef<str>>(&mut self, name: Name, plan: Plan) -> Result<usize, String> {
6568
let mut builder = FlatBufferBuilder::new();
6669

6770
let name = builder.create_string(name.as_ref());
6871
let plan = builder.create_string(plan.as_ref());
6972

70-
let create = CreatePlanRequest::create(&mut builder, &CreatePlanRequestArgs{ name: Some(name), plan: Some(plan) }).as_union_value();
71-
72-
let status = OkStatus::create(&mut builder, &OkStatusArgs { }).as_union_value();
73-
74-
let msg = protocol::Message::create(&mut builder, &MessageArgs{
75-
data_type: Payload::CreatePlanRequest,
76-
data: Some(create),
77-
status_type: Status::OkStatus,
78-
status: Some(status),
79-
});
73+
let create = CreatePlanRequest::create(&mut builder, &CreatePlanRequestArgs{ name: Some(name), plan: Some(plan) });
8074

81-
builder.finish(msg, None);
82-
let msg = builder.finished_data();
75+
let msg = Self::wrap_msg(&mut builder, Payload::CreatePlanRequest, create.as_union_value());
8376

84-
self.write_all(msg)?;
77+
self.write_all(&msg)?;
8578

86-
let res: CreatePlan = self.read_msg()?;
79+
let res: CreatePlan = self.receive()?;
8780

8881
Ok(res.id)
8982
}
9083

84+
/// Get all registered plans, running as well as stopped.
9185
pub fn get_plans(&mut self) -> Result<Vec<Plan>, String> {
9286
self.get_plans_by_name("*")
9387
}
@@ -104,44 +98,30 @@ impl Admin {
10498
// send request
10599
let get_plan = GetPlansRequest::create(&mut builder, &GetPlansRequestArgs { name: Some(filter) }).as_union_value();
106100

107-
let status = OkStatus::create(&mut builder, &OkStatusArgs { }).as_union_value();
108-
109-
let msg = Message::create(&mut builder, &MessageArgs{
110-
data_type: Payload::GetPlansRequest,
111-
data: Some(get_plan),
112-
status_type: Status::OkStatus,
113-
status: Some(status),
114-
});
101+
let msg = Self::wrap_msg(&mut builder, Payload::GetPlansRequest, get_plan);
115102

116-
builder.finish(msg, None);
117-
let msg = builder.finished_data().to_vec();
118103
self.write_all(&msg)?;
119104

120105
// wait response
121-
let res: Plans = self.read_msg()?;
106+
let res: Plans = self.receive()?;
122107

123108
Ok(res.0)
124109

125110
}
126111

112+
/// Delete a specified plan.
127113
pub fn delete_plan(&mut self, id: usize) -> Result<(), String> {
128114
let mut builder = FlatBufferBuilder::new();
129115

130116
// send request
131-
let delete = DeletePlanRequest::create(&mut builder, &DeletePlanRequestArgs{ id: id as u64, }).as_union_value();
132-
let status = OkStatus::create(&mut builder, &OkStatusArgs { }).as_union_value();
133-
let msg = Message::create(&mut builder, &MessageArgs{
134-
data_type: Payload::DeletePlanRequest,
135-
data: Some(delete),
136-
status_type: Status::OkStatus,
137-
status: Some(status),
138-
});
139-
builder.finish(msg, None);
140-
let msg = builder.finished_data().to_vec();
117+
let delete = DeletePlanRequest::create(&mut builder, &DeletePlanRequestArgs{ id: id as u64, });
118+
119+
let msg = Self::wrap_msg(&mut builder, Payload::DeletePlanRequest, delete.as_union_value());
120+
141121
self.write_all(&msg)?;
142122

143123
// wait for response
144-
let _: DeletePlan = self.read_msg()?;
124+
let _: DeletePlan = self.receive()?;
145125

146126
Ok(())
147127
}

src/connection/connection.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ impl Connection {
3838

3939

4040
pub fn send<V:Into<Value>>(&mut self, msg: V) -> Result<(), String> {
41-
let msg = self.wrap_send(msg.into());
41+
let msg = self.wrap(msg.into());
4242
self.write_all(&msg)
4343
}
4444

45-
pub fn receive(&mut self) -> Result<Message, String> {
46-
self.read_msg()
45+
pub fn receive_msg(&mut self) -> Result<Message, String> {
46+
self.receive()
4747
}
4848

4949
pub fn admin(self) -> Result<Admin, String> {
@@ -82,13 +82,13 @@ impl Connection {
8282
}
8383

8484

85-
let msg: messages::RegisterResponse = self.read_msg()?;
85+
let msg: messages::RegisterResponse = self.receive()?;
8686
debug!("{:?}", msg);
8787
self.permissions = msg.permissions;
8888
Ok(())
8989
}
9090

91-
pub fn read_msg<Msg>(&mut self) -> Result<Msg, String> where
91+
pub fn receive<Msg>(&mut self) -> Result<Msg, String> where
9292
Msg: for<'a> TryFrom<protocol::Message<'a>, Error = String> {
9393
let mut buf = [0u8; 4];
9494
self.stream.read_exact(&mut buf).map_err(|e| e.to_string())?;
@@ -101,7 +101,7 @@ impl Connection {
101101
Msg::try_from(msg)
102102
}
103103

104-
pub(crate) fn wrap_send(&mut self, msg: Value) -> Vec<u8> {
104+
pub(crate) fn wrap(&mut self, msg: Value) -> Vec<u8> {
105105
let mut builder = FlatBufferBuilder::new();
106106

107107
let millis = SystemTime::now()

src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ mod value;
66
pub use connection::Client;
77
pub use connection::Connection;
88
pub use connection::Permission;
9+
pub use messages::*;
910

1011

1112

src/test.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ mod tests{
2222
let mut connection = client.connect().unwrap();
2323

2424
for _ in 0..10{
25-
let value = connection.receive().unwrap();
25+
let value = connection.receive_msg().unwrap();
2626
println!("{:?}", value);
2727
}
2828
}
@@ -126,7 +126,7 @@ mod tests{
126126
let client = Client::new("localhost", output_port);
127127
let mut connection = client.connect().unwrap();
128128

129-
println!("{:?}", connection.read_msg::<Train>().unwrap());
129+
println!("{:?}", connection.receive::<Train>().unwrap());
130130

131131
}
132132

0 commit comments

Comments
 (0)