推导纯C中的空洞类型

推导纯C中的空洞类型,c,linux,asynchronous,efl,C,Linux,Asynchronous,Efl,好的,我有一个回调,当我收到HTTP get请求的HTTP响应时会出现回调。 此回调的原型如下(异步编程,可以随时出现): 这个回调可以包含JSON格式的event\u info中的数据或纯数据。 这取决于void*数据中的内容。有两种方法可以避免这种纯粹的设计: 使用两个回调。如果我们希望得到纯数据寄存器回调,比如\u pt\u url\u pure\u cb, 如果我们希望数据是JSON格式的寄存器\u pt\u url\u JSON\u cb。但这种方法的不足之处在于,我们必须在运行时注

好的,我有一个回调,当我收到HTTP get请求的HTTP响应时会出现回调。 此回调的原型如下(异步编程,可以随时出现):

这个回调可以包含JSON格式的
event\u info
中的数据或纯数据。 这取决于
void*数据中的内容。有两种方法可以避免这种纯粹的设计:

  • 使用两个回调。如果我们希望得到纯数据寄存器回调,比如
    \u pt\u url\u pure\u cb
    , 如果我们希望数据是JSON格式的寄存器
    \u pt\u url\u JSON\u cb
    。但这种方法的不足之处在于,我们必须在运行时注册/取消注册回调。当我们得到一些带有数据的HTTP响应时,它们就会出现,不管它们是哪种形式。我认为这个解决方案可能会有大问题
例如:

// Expect HTTP response as pure data
ecore_event_handler_add(ECORE_CON_EVENT_URL_DATA, _pt_url_pure_cb, data);
return;

// _pt_url_pure_cb wasn't yet called
// Expect HTTP response in JSON format

ecore_event_handler_add(ECORE_CON_EVENT_URL_DATA, _pt_url_json_cb, data);
...
// Will be called with pure data
_pt_url_json_cb()
  • 第二种方法是以某种方式识别void*数据的类型,并根据它将事件信息解析为纯数据或JSON数据好吧,我怎样才能用任何可能的方法做到这一点呢?

注意:我所说的纯JSON数据是什么意思?与二进制文件或任何其他不应解析的文件类似,只需下载所有字节并将其保存在文件系统中。JSON应该被解析,可以包含这些纯数据的http标识符。

如何
枚举类型{JSON,BINARY};结构数据{枚举类型;无符号字符*buf;}
并将指向
结构数据的指针作为用户信息传递(第三个参数)?第三种方法是维护程序中的某些状态,以便它知道预期的结果。这可以通过添加一个变量或在适当的时候(重新)设置回调函数来实现。
// Expect HTTP response as pure data
ecore_event_handler_add(ECORE_CON_EVENT_URL_DATA, _pt_url_pure_cb, data);
return;

// _pt_url_pure_cb wasn't yet called
// Expect HTTP response in JSON format

ecore_event_handler_add(ECORE_CON_EVENT_URL_DATA, _pt_url_json_cb, data);
...
// Will be called with pure data
_pt_url_json_cb()