Ho letto il documento C allo avro e vedo che posso ottenere solo l'output avro in un file. Come ottengo l'uscita serializzata su un buffer in modo che possa inviare tramite una presa tcp. Ogni aiuto è molto apprezzato.lo streaming di supporto per l'implementazione di avro C piuttosto che l'output di file?
10
A
risposta
2
C'è un avro_writer_memory()
esattamente per questo caso, prende il puntatore del buffer e la lunghezza come parametri e fornisce avro_writer_t
che può essere utilizzato nelle normali funzioni di scrittura. Puoi trovarne l'utilizzo nei test, come this o this. L'esempio minima sta per essere qualcosa di simile (l'output valore codificato a stderr, quindi meglio di reindirizzamento che ad una certa lima ed esaminarlo dopo l'esecuzione del programma):
#include <avro.h>
#include <stdio.h>
#include <unistd.h>
static const char json_schema[] = "{ \"type\": \"string\" }";
int main(void)
{
char buf[1024];
avro_writer_t writer;
avro_schema_t schema;
avro_value_iface_t* iface;
avro_value_t val;
size_t len;
if (avro_schema_from_json_literal(json_schema, &schema) != 0) {
printf("failed to initialize schema\n");
goto out;
}
if ((writer = avro_writer_memory(buf, sizeof(buf))) == NULL) {
printf("failed to initialize writer\n");
goto out_schema;
}
if ((iface = avro_generic_class_from_schema(schema)) == NULL) {
printf("failed to get class from schema\n");
goto out_writer;
}
if (avro_generic_value_new(iface, &val) != 0) {
printf("failed to create new value\n");
goto out_iface;
}
if (avro_value_reset(&val) != 0) {
printf("failed to reset value\n");
goto out_val;
}
if (avro_value_set_string(&val, "some string wrapped by avro") != 0) {
printf("failed to set value string\n");
goto out_val;
}
if (avro_value_write(writer, &val) != 0) {
printf("failed to write value into the buffer\n");
goto out_val;
}
len = avro_writer_tell(writer);
printf("got %lu bytes\n", (unsigned long)len);
if (write(STDERR_FILENO, buf, len) != len) {
printf("failed to write to stderr, oops\n");
goto out_val;
}
out_val:
avro_value_decref(&val);
out_iface:
avro_value_iface_decref(iface);
out_writer:
avro_writer_free(writer);
out_schema:
avro_schema_decref(schema);
out:
return 0;
}
Inoltre, v'è un avro_writer_memory_set_dest()
che permette di impostare nuovi buffer da utilizzare dallo scrittore esistente.
Problemi correlati
- 1. Supporto WebAPI Supporto streaming
- 2. System.Drawing.Image per lo streaming C#
- 3. PHP Streaming di file remoti con supporto di ripresa
- 4. C# MailMessage per lo streaming - problema di codifica
- 5. C# Usa oggetto piuttosto che di riferimento per List.Contains()
- 6. Supporto streaming per dynamodb locale?
- 7. Quale supporto per lo streaming live ha l'elemento video HTML5?
- 8. file Concat Avro utilizzando Avro-tools
- 9. Streaming di file con cherrypy
- 10. gsoap restful client C++ che utilizza lo streaming
- 11. Supporto file di grandi dimensioni in C++
- 12. Che cosa è esattamente lo streaming di Java8?
- 13. Utilizzare Protobuf-net per lo streaming di file di dati di grandi dimensioni come IEnumerable
- 14. Scrittura di un'app per lo streaming di video su iPhone
- 15. Puoi inserire commenti nei file di schema Avro JSON?
- 16. Come eseguire lo streaming di un file multimediale utilizzando PHP?
- 17. API PHP di Google Drive - Come eseguire lo streaming di un file di grandi dimensioni
- 18. Come convertire un array di byte per lo streaming
- 19. Come generare file avro senza schema utilizzando avro apache?
- 20. Usa flume per lo streaming di dati su S3
- 21. Utilizzo di apro avro reflect
- 22. Utilizzo di websocket per lo streaming nel tag video
- 23. Descrittori di file multipli per lo stesso file, C
- 24. API di streaming Twitter C#
- 25. Polimorfismo C++ statico piuttosto che dinamico
- 26. Utilizzando sox per il rilevamento di voce e lo streaming
- 27. Come eseguire lo streaming di output AJAX per il download di un file in Javascript?
- 28. Utilizzo di FFMPEG per lo streaming continuo di file video su un server RTMP
- 29. Best practice per tipi di dati specifici in Avro
- 30. Libreria di supporto Vector Machine per C#
Perché non scrivere solo sulla presa? –
_Qualsiasi aiuto è molto apprezzato._ Hmmm, un commento di ringraziamento per l'unica risposta potrebbe essere carina. – ryyker