Files

43 lines
1.0 KiB
C

#include "extensions.h"
struct wsd_Extensions {
void *receiver;
wsd_cb_valid_frame_rsv valid_frame_rsv;
};
wsd_Extensions *wsd_Extensions_create(void *receiver, wsd_cb_valid_frame_rsv valid_frame_rsv)
{
wsd_Extensions *extensions = calloc(1, sizeof(wsd_Extensions));
if (extensions == NULL) return NULL;
extensions->receiver = receiver;
extensions->valid_frame_rsv = valid_frame_rsv;
return extensions;
}
wsd_Extensions *wsd_Extensions_create_default()
{
return wsd_Extensions_create(NULL, wsd_default_valid_frame_rsv);
}
void wsd_Extensions_destroy(wsd_Extensions *extensions)
{
if (extensions == NULL) return;
extensions->valid_frame_rsv = NULL;
free(extensions);
}
int wsd_Extensions_valid_frame_rsv(wsd_Extensions *extensions, wsd_Frame *frame)
{
wsd_cb_valid_frame_rsv cb = extensions->valid_frame_rsv;
return cb(extensions->receiver, frame);
}
int wsd_default_valid_frame_rsv(void *self, wsd_Frame *frame)
{
return !frame->rsv1 && !frame->rsv2 && !frame->rsv3;
}