uint32_t geojson_asval_wire_size(const as_val *val) { as_geojson *pg = as_geojson_fromval(val); size_t jsz = as_geojson_len(pg); // We won't be writing any cellids ... return geojson_size(0, jsz); }
uint32_t geojson_size_from_asval(const as_val *val) { as_geojson *pg = as_geojson_fromval(val); size_t jsz = as_geojson_len(pg); // Compute the size; we won't be writing any cellids ... return geojson_size(0, jsz); }
char * as_geojson_val_tostring(const as_val * v) { as_geojson * s = (as_geojson *) v; if (s->value == NULL) return(NULL); size_t sl = as_geojson_len(s); size_t st = 3 + sl; char * str = (char *) cf_malloc(sizeof(char) * st); if (!str) return str; *(str + 0) = '\"'; strcpy(str + 1, s->value); *(str + 1 + sl) = '\"'; *(str + 1 + sl + 1) = '\0'; return str; }
void geojson_from_asval(const as_val *val, as_particle **pp) { geojson_mem *p_geojson_mem = (geojson_mem *)*pp; as_geojson *pg = as_geojson_fromval(val); size_t jsz = as_geojson_len(pg); p_geojson_mem->type = AS_PARTICLE_TYPE_GEOJSON; p_geojson_mem->sz = geojson_size(0, jsz); p_geojson_mem->flags = 0; p_geojson_mem->ncells = 0; uint8_t *p8 = (uint8_t *)p_geojson_mem->data; memcpy(p8, as_geojson_get(pg), jsz); }
uint32_t geojson_asval_to_wire(const as_val *val, uint8_t *wire) { as_geojson *pg = as_geojson_fromval(val); size_t jsz = as_geojson_len(pg); uint8_t *p8 = wire; *p8++ = 0; // flags uint16_t *p16 = (uint16_t *)p8; *p16++ = cf_swap_to_be16(0); // no cells on output to client p8 = (uint8_t *)p16; memcpy(p8, as_geojson_get(pg), jsz); return geojson_size(0, jsz); }
size_t as_command_value_size(as_val* val, as_buffer* buffer) { switch (val->type) { case AS_NIL: { return 0; } case AS_INTEGER: { return 8; } case AS_DOUBLE: { return 8; } case AS_STRING: { as_string* v = as_string_fromval(val); return as_string_len(v); } case AS_GEOJSON: { as_geojson* v = as_geojson_fromval(val); return 1 + // as_particle_geojson_mem::flags 2 + // as_particle_geojson_mem::ncells (0 * 8) + // <placeholder-cellids> EMPTY! as_geojson_len(v); } case AS_BYTES: { as_bytes* v = as_bytes_fromval(val); return v->size; } case AS_LIST: case AS_MAP: { as_serializer ser; as_msgpack_init(&ser); as_serializer_serialize(&ser, val, buffer); as_serializer_destroy(&ser); return buffer->size; } default: { return 0; } } }