<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def unpack_struct(self, struct):
 """ unpacks the given struct from the underlying stream and returns the results. Will raise an UnpackException if there is not enough data to satisfy the format of the structure """


        size = struct.size

        if not self.data:
            raise UnpackException(struct.format, size, 0)

        buff = self.data.read(size)
        if len(buff) < size:
            raise UnpackException(struct.format, size, len(buff))

        return struct.unpack(buff)