jsonpiler 0.11.0

a Json syntax programming language for Windows
Documentation
use super::*;
use crate::prelude::*;
impl Server {
  pub(crate) fn error(&mut self, id: IdKind, code: i64, log: LogMsg) {
    let (method, start) =
      self.requests.remove(&id).unwrap_or_else(|| (String::new(), Instant::now()));
    let stamp = time_stamp();
    let time = format_micros(start);
    let msg = format!("{stamp} [error({id})] <-- {method} {code}: {} in {time}", log.msg);
    self.log(LogMsg::new(log.msg_type, msg, log.verbose));
    let err = ObjectN(vec![("code".into(), IntN(code)), ("message".into(), StrN(log.msg))]);
    self.write(
      &ObjectN(vec![
        ("jsonrpc".into(), StrN("2.0".into())),
        ("id".into(), id.into()),
        ("error".into(), err),
      ])
      .to_string(),
    )
  }
  pub(crate) fn log_only_error(&mut self, start: Instant, log: LogMsg) {
    let stamp = time_stamp();
    let time = format_micros(start);
    let msg = format!("{stamp} [error] <-- error: {} in {time}", log.msg);
    self.log(LogMsg::new(MsgType::Error, msg, log.verbose));
  }
  pub(crate) fn notify(&mut self, method: &str, args: JsonNoPos) {
    if !matches!(method, "window/logMessage") {
      let stamp = time_stamp();
      let msg = format!("{stamp} [notify] <-- {method}");
      self.log(LogMsg::new(MsgType::Info, msg, Some(args.to_string())));
    }
    self.write(
      &ObjectN(vec![
        ("jsonrpc".into(), StrN("2.0".into())),
        ("method".into(), StrN(method.into())),
        ("params".into(), args),
      ])
      .to_string(),
    )
  }
  pub(crate) fn response(&mut self, id: IdKind, result: JsonNoPos) {
    let (method, start) =
      self.requests.remove(&id).unwrap_or_else(|| (String::new(), Instant::now()));
    let stamp = time_stamp();
    let time = format_micros(start);
    let msg = format!("{stamp} [response({id})] <-- {method} in {time}");
    self.log(LogMsg::new(MsgType::Info, msg, Some(result.to_string())));
    self.write(
      &ObjectN(vec![
        ("jsonrpc".into(), StrN("2.0".into())),
        ("id".into(), id.into()),
        ("result".into(), result),
      ])
      .to_string(),
    )
  }
}