Example #1
0
void *
internal_parc_realloc(void *pointer, size_t newSize)
{
    void *newPointer;
    newPointer = parcMemory_Reallocate(pointer, newSize);
    return newPointer;
}
static void
_add_to_pollfdList(AthenaTransportLinkAdapter *athenaTransportLinkAdapter, AthenaTransportLink *newTransportLink, int eventFd)
{
    int index;

    // Check for an existing availble slot
    for (index = 0; index < athenaTransportLinkAdapter->pollfdListSize; index++) {
        if (athenaTransportLinkAdapter->pollfdTransportLink[index] == NULL) {
            athenaTransportLinkAdapter->pollfdTransportLink[index] = newTransportLink;
            athenaTransportLinkAdapter->pollfdReceiveList[index].fd = eventFd;
            athenaTransportLinkAdapter->pollfdReceiveList[index].events = POLLIN;
            athenaTransportLinkAdapter->pollfdSendList[index].fd = eventFd;
            athenaTransportLinkAdapter->pollfdSendList[index].events = POLLOUT;
            return;
        }
    }

    // Create a new entry
    if (index == athenaTransportLinkAdapter->pollfdListSize) {
        struct pollfd *newReceiveList;
        newReceiveList = parcMemory_Reallocate(athenaTransportLinkAdapter->pollfdReceiveList, sizeof(struct pollfd) * (index + 1));
        assertNotNull(newReceiveList, "parcMemory_Reallocate failed to resize the pollfdReceiveList");
        athenaTransportLinkAdapter->pollfdReceiveList = newReceiveList;

        struct pollfd *newSendList;
        newSendList = parcMemory_Reallocate(athenaTransportLinkAdapter->pollfdSendList, sizeof(struct pollfd) * (index + 1));
        assertNotNull(newSendList, "parcMemory_Reallocate failed to resize the pollfdSendList");
        athenaTransportLinkAdapter->pollfdSendList = newSendList;

        AthenaTransportLink **newPollFdTransportLink = parcMemory_Reallocate(athenaTransportLinkAdapter->pollfdTransportLink,
                                                                             sizeof(AthenaTransportLink *) * (index + 1));
        assertNotNull(newPollFdTransportLink, "parcMemory_Reallocate failed to resize the pollfdTransportLink list");
        athenaTransportLinkAdapter->pollfdTransportLink = newPollFdTransportLink;

        athenaTransportLinkAdapter->pollfdListSize = index + 1;
        athenaTransportLinkAdapter->pollfdTransportLink[index] = newTransportLink;
        athenaTransportLinkAdapter->pollfdReceiveList[index].fd = eventFd;
        athenaTransportLinkAdapter->pollfdReceiveList[index].events = POLLIN;
        athenaTransportLinkAdapter->pollfdSendList[index].fd = eventFd;
        athenaTransportLinkAdapter->pollfdSendList[index].events = POLLOUT;
    }
}