'Parses an event buffer of ``inotify_event`` structs returned by
inotify::
struct inotify_event {
__s32 wd;            /* watch descriptor */
__u32 mask;          /* watch mask */
__u32 cookie;        /* cookie to synchronize two events */
__u32 len;           /* length (including nulls) of name */
char  name[0];       /* stub for possible name */
The ``cookie`` member of this struct is used to pair two related
events, for example, it pairs an IN_MOVED_FROM event with an
IN_MOVED_TO event.'

@staticmethod
def _parse_event_buffer(event_buffer):

    i = 0
    while ((i + 16) <= len(event_buffer)):
        (wd, mask, cookie, length) = struct.unpack_from('iIII', event_buffer, i)
        name = event_buffer[(i + 16):((i + 16) + length)].rstrip('\x00')
        i += (16 + length)
        (yield (wd, mask, cookie, name))
