Example #1
0
static int apipe_write(
    const char* path,
    const char* buf,
    size_t count,
    off_t offset,
    struct fuse_file_info* info) {
  if (count == 0) return 0;

  struct PP_Var req_var = nspawn_dict_create();
  nspawn_dict_setstring(req_var, "command", "nacl_apipe_write");
  nspawn_dict_setint(req_var, "pipe_id", info->fh);
  struct PP_Var data = PSInterfaceVarArrayBuffer()->Create(count);
  if (data.type == PP_VARTYPE_NULL) return -EIO;
  void *p = PSInterfaceVarArrayBuffer()->Map(data);
  if (count > 0 && !p) {
    nspawn_var_release(data);
    nspawn_var_release(req_var);
    return -EIO;
  }
  memcpy(p, buf, count);
  PSInterfaceVarArrayBuffer()->Unmap(data);
  nspawn_dict_set(req_var, "data", data);

  struct PP_Var result_var = nspawn_send_request(req_var);
  int ret = nspawn_dict_getint(result_var, "count");
  nspawn_var_release(result_var);

  return ret;
}
Example #2
0
void nspawn_dict_setint(struct PP_Var dict_var,
                        const char* key,
                        int32_t v) {
    nspawn_dict_set(dict_var, key, PP_MakeInt32(v));
}
Example #3
0
void nspawn_dict_setstring(struct PP_Var dict,
                           const char* key,
                           const char* value) {
    struct PP_Var value_var = PSInterfaceVar()->VarFromUtf8(value, strlen(value));
    nspawn_dict_set(dict, key, value_var);
}