Я использую собственный клиент Google, которому требуется фоновый поток для управления операциями ввода-вывода. Сейчас я пишу fwrite, но у меня проблемы с передачей данных в функцию и проверкой данных.
здесь случай, ниже, как я хочу передать данные, конечно, я не ограничен char[]
Я хочу, чтобы он работал для любого типа данных, пока fwrite
принять этот тип
pp::VarDictionary fileOp;
pp::VarArray args;
char buffer[] = { 'x' , 'y' , 'z' };
args.Set(0, buffer); //name of buffer I want to pass
args.Set(1, 1); //size of elements
args.Set(2,sizeof(buffer));//the size of buffer
args.Set(3, outfile); //the output file
fileOp.Set("args", args);
fileOp.Set("cmd", "fwrite");
queue_file_.push(fileOp);
Для функции, которая будет обрабатывать операцию, это то, что у меня есть
int EncoderInstance::HandleFwrite(pp::VarArray params, std::string* error) {
if (params.GetLength() != 3) {
Logger::Log("Invalid number of arguments");
return 0;
}outfile = fwrite(params.Get(0), sizeof(char), sizeof(params.Get(0)), outfile);
if (!outfile) {
*error = "fopen returned a NULL FILE*";
return 0;
}
return 1;
}
Мои вопросы следующие
Как я могу сделать проверку для всех входных данных, чтобы не возникало никаких исключений? За fopen
Я проверил, есть ли у него два параметра и оба они являются строками filename
а также mode
за fwrite
Я запутался что мне делать
Каков наилучший способ передачи параметров без использования памяти? это видеокодер, поэтому я не хочу, чтобы проверка и запись занимали много времени.
Нужно ли разыгрывать все входы или есть общий способ сделать это?
Задача ещё не решена.
Других решений пока нет …