Skip to content
This repository has been archived by the owner on Mar 21, 2024. It is now read-only.

Commit

Permalink
Merge pull request #38 from golemcloud/fix_worker_connect
Browse files Browse the repository at this point in the history
Fix worker connect
  • Loading branch information
senia-psm committed Dec 6, 2023
2 parents 650223f + 3f26c71 commit eb3f71d
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 14 deletions.
21 changes: 15 additions & 6 deletions src/clients/template.rs
Original file line number Diff line number Diff line change
Expand Up @@ -203,8 +203,11 @@ impl TemplateClient for TemplateClientLive {
let content = templates_resp.text().await?;

if status.is_success() {
let templates: Vec<Template> = serde_json::from_str(&content)
.map_err(|err| GolemError(format!("Failed to parse response as json: {err:?}, content: {content}")))?;
let templates: Vec<Template> = serde_json::from_str(&content).map_err(|err| {
GolemError(format!(
"Failed to parse response as json: {err:?}, content: {content}"
))
})?;
let views = templates.iter().map(|c| c.into()).collect();
Ok(views)
} else {
Expand Down Expand Up @@ -279,8 +282,11 @@ impl TemplateClient for TemplateClientLive {
let content = resp.text().await?;

if status.is_success() {
let template: Template = serde_json::from_str(&content)
.map_err(|err| GolemError(format!("Failed to parse response as json: {err:?}, content: {content}")))?;
let template: Template = serde_json::from_str(&content).map_err(|err| {
GolemError(format!(
"Failed to parse response as json: {err:?}, content: {content}"
))
})?;
Ok((&template).into())
} else {
Err(GolemError(format!(
Expand Down Expand Up @@ -338,8 +344,11 @@ impl TemplateClient for TemplateClientLive {
let content = resp.text().await?;

if status.is_success() {
let template: Template = serde_json::from_str(&content)
.map_err(|err| GolemError(format!("Failed to parse response as json: {err:?}, content: {content}")))?;
let template: Template = serde_json::from_str(&content).map_err(|err| {
GolemError(format!(
"Failed to parse response as json: {err:?}, content: {content}"
))
})?;
Ok((&template).into())
} else {
Err(GolemError(format!(
Expand Down
51 changes: 43 additions & 8 deletions src/clients/worker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -253,9 +253,10 @@ impl WorkerClient for WorkerClientLive {

url.set_scheme(ws_schema)
.map_err(|_| GolemError("Can't set schema.".to_string()))?;

url.path_segments_mut()
.map_err(|_| GolemError("Can't get path.".to_string()))?
.push("v1")
.push("v2")
.push("templates")
.push(&template_id.0.to_string())
.push("workers")
Expand Down Expand Up @@ -345,13 +346,24 @@ impl WorkerClient for WorkerClientLive {

match msg {
None => {}
Some(msg) => match msg {
InstanceConnectMessage::Message { message } => {
Some(msg) => match msg.event {
WorkerEvent::Stdout(StdOutLog { message }) => {
print!("{message}")
}
InstanceConnectMessage::Error { error } => {
eprintln!("Connection error: {error}")
WorkerEvent::Stderr(StdErrLog { message }) => {
print!("{message}")
}
WorkerEvent::Log(Log {
level,
context,
message,
}) => match level {
0 => tracing::trace!(message, context = context),
1 => tracing::debug!(message, context = context),
2 => tracing::info!(message, context = context),
3 => tracing::warn!(message, context = context),
_ => tracing::error!(message, context = context),
},
},
}
});
Expand All @@ -365,9 +377,32 @@ impl WorkerClient for WorkerClientLive {
}

#[derive(Deserialize, Debug)]
enum InstanceConnectMessage {
Message { message: String },
Error { error: InstanceEndpointError },
struct InstanceConnectMessage {
pub event: WorkerEvent,
}

#[derive(Deserialize, Debug)]
enum WorkerEvent {
Stdout(StdOutLog),
Stderr(StdErrLog),
Log(Log),
}

#[derive(Deserialize, Debug)]
struct StdOutLog {
message: String,
}

#[derive(Deserialize, Debug)]
struct StdErrLog {
message: String,
}

#[derive(Deserialize, Debug)]
struct Log {
pub level: i32,
pub context: String,
pub message: String,
}

#[derive(Deserialize, Debug)]
Expand Down

0 comments on commit eb3f71d

Please sign in to comment.