コード例 #1
0
AthenaTransportLinkAdapter *
athenaTransportLinkAdapter_Create(void (*removeLinkCallback)(void *removeLinkContext, PARCBitVector *parcBitVector), AthenaTransportLinkAdapter_RemoveLinkCallbackContext removeLinkContext)
{
    AthenaTransportLinkAdapter *athenaTransportLinkAdapter = parcMemory_AllocateAndClear(sizeof(AthenaTransportLinkAdapter));
    assertNotNull(athenaTransportLinkAdapter, "parcMemory_AllocateAndClear failed to create a new AthenaTransportLinkAdapter");
    athenaTransportLinkAdapter->moduleList = parcArrayList_Create((void (*)(void **))athenaTransportLinkModule_Destroy);
    athenaTransportLinkAdapter->instanceList = parcArrayList_Create(NULL);
    athenaTransportLinkAdapter->listenerList = parcArrayList_Create(NULL);
    athenaTransportLinkAdapter->nextLinkToRead = 0;
    athenaTransportLinkAdapter->pollfdListSize = 0;
    athenaTransportLinkAdapter->removeLink = removeLinkCallback;
    athenaTransportLinkAdapter->removeLinkContext = removeLinkContext;
    athenaTransportLinkAdapter->log = _parc_logger_create();

    return athenaTransportLinkAdapter;
}
コード例 #2
0
AthenaTransportLinkModule *
athenaTransportLinkModule_Create(const char *name,
                                 AthenaTransportLinkModule_Open *openMethod,
                                 AthenaTransportLinkModule_Poll *pollMethod)
{
    AthenaTransportLinkModule *athenaTransportLinkModule = parcMemory_AllocateAndClear(sizeof(AthenaTransportLinkModule));
    assertNotNull(athenaTransportLinkModule, "parcMemory_AllocateAndClear failed to create a new AthenaTransportLinkModule");
    athenaTransportLinkModule->log = _parc_logger_create(name);

    athenaTransportLinkModule->name = parcMemory_StringDuplicate(name, strlen(name));
    assertNotNull(athenaTransportLinkModule->name, "parcMemory_AllocateAndClear failed allocate athenaTransportLinkModule name");

    athenaTransportLinkModule->instanceList = parcArrayList_Create((void (*)(void **))athenaTransportLink_Release);
    assertNotNull(athenaTransportLinkModule->instanceList, "athenaTransportLinkModule_TCP could not allocate instance list");

    athenaTransportLinkModule->openMethod = openMethod;
    athenaTransportLinkModule->pollMethod = pollMethod;

    return athenaTransportLinkModule;
}
コード例 #3
0
AthenaTransportLink *
athenaTransportLink_Create(const char *name,
                           AthenaTransportLink_SendMethod *sendMethod,
                           AthenaTransportLink_ReceiveMethod *receiveMethod,
                           AthenaTransportLink_CloseMethod *closeMethod)
{
    AthenaTransportLink *athenaTransportLink = parcObject_CreateAndClearInstance(AthenaTransportLink);

    if (athenaTransportLink != NULL) {
        athenaTransportLink->linkName = parcMemory_StringDuplicate(name, strlen(name));
        athenaTransportLink->sendMethod = sendMethod;
        athenaTransportLink->receiveMethod = receiveMethod;
        athenaTransportLink->closeMethod = closeMethod;
        athenaTransportLink->log = _parc_logger_create(name);
        athenaTransportLink->linkEvents = AthenaTransportLinkEvent_None;
        athenaTransportLink->linkFlags = AthenaTransportLinkFlag_None;
        athenaTransportLink->eventFd = -1;
    }

    return athenaTransportLink;
}