summaryrefslogtreecommitdiff
path: root/src/slices_evt.c
blob: 43cb568ab02625d66dc88b8ec80d7a066170fa54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "slices_evt.h"

int sliceSplitEvt(slices_evt_t *slicesEvt, slice_t *initialSlice, address_t splitAt, sliceStatus_t statusBefore, sliceStatus_t statusAt, sliceStatus_t statusAfter) {
	int res;
	res=sliceSplit(slicesEvt->data, initialSlice, splitAt, statusBefore, statusAt, statusAfter);
	if ( slicesEvt->eventListener != NULL ) {
		//FIXME : this could be dereference a NULL pointer. Implement a real listener system with a thread-safe FIFO
		switch(res) {
			case 3:
				slicesEvt->eventListener(slicesEvt, initialSlice->next->next);
			case 2:
				slicesEvt->eventListener(slicesEvt, initialSlice->next);
			case 1:
				slicesEvt->eventListener(slicesEvt, initialSlice);
				break;
			default:
				// No events on split errors
				break;
		}
	}
	return res;
}