Пример #1
0
// With version 1.6.7 and above, the UPNP library maintainers made a questionable
// API choice to register the callbacks one-by-one, instead of having a
// struct with the callbacks which is certainly a better and 'typical' C API
// choice. They removed the UpnpVirtualDirCallbacks in the course of that.
// Because it breaks code, it has been reverted in version 1.6.16
// (see http://sourceforge.net/p/pupnp/bugs/29/ ), but we essentially have a
// broken version between 1.6.7 ... 1.6.16.
// Assuming that they will go on with this broken idea and eventually remove
// the support for the VirtualDirCallbacks in new major versions, we use the
// newer (may I emphasize: questionable) API to register the callbacks.
gboolean webserver_register_callbacks(void) {
  gboolean result =
    (UpnpVirtualDir_set_GetInfoCallback(webserver_get_info) == UPNP_E_SUCCESS
     && UpnpVirtualDir_set_OpenCallback(webserver_open) == UPNP_E_SUCCESS
     && UpnpVirtualDir_set_ReadCallback(webserver_read) == UPNP_E_SUCCESS
     && UpnpVirtualDir_set_WriteCallback(webserver_write) == UPNP_E_SUCCESS
     && UpnpVirtualDir_set_SeekCallback(webserver_seek) == UPNP_E_SUCCESS
     && UpnpVirtualDir_set_CloseCallback(webserver_close) == UPNP_E_SUCCESS);
  return result;
}
Пример #2
0
ERROR_TYPE IUpnp::SetVirtualDirCallbacks(IN UpnpVirtualDirCallbacks *callbacks)
{
    //return (ERROR_TYPE)UpnpSetVirtualDirCallbacks(callbacks);
    UpnpVirtualDir_set_GetInfoCallback(callbacks->get_info);
    UpnpVirtualDir_set_OpenCallback(callbacks->open);
    UpnpVirtualDir_set_ReadCallback(callbacks->read);
    UpnpVirtualDir_set_WriteCallback(callbacks->write);
    UpnpVirtualDir_set_SeekCallback(callbacks->seek);
    UpnpVirtualDir_set_CloseCallback(callbacks->close);
    return (ERROR_TYPE)0;
}