LONGBOW_TEST_CASE(Global, ccnxInterest_SetGetPayload) { CCNxName *name = ccnxName_CreateFromURI("lci:/name"); CCNxInterest *interest = ccnxInterest_CreateSimple(name); CCNxName *origNameCopy = ccnxName_Copy(name); CCNxInterestInterface *impl = ccnxInterestInterface_GetInterface(interest); if (impl->getPayload) { assertNull(ccnxInterest_GetPayload(interest), "Expected a NULL payload"); } if (impl->getPayload && impl->setPayload) { PARCBuffer *payload = parcBuffer_WrapCString("impls have pimples"); ccnxInterest_SetPayload(interest, payload); PARCBuffer *payloadOut = ccnxInterest_GetPayload(interest); assertTrue(parcBuffer_Equals(payload, payloadOut), "Expected an equal buffer"); CCNxName *nameAfterPayload = ccnxInterest_GetName(interest); assertTrue(ccnxName_Equals(nameAfterPayload, origNameCopy), "Expected an unmodified name"); parcBuffer_Release(&payload); } ccnxName_Release(&name); ccnxName_Release(&origNameCopy); ccnxInterest_Release(&interest); }
static int _athenactl_Run(PARCIdentity *identity, int argc, char **argv) { if (argc < 1) { printf("usage: spawn <port | link specification>\n"); return 1; } char *linkSpecification = argv[0]; char constructedLinkSpecification[MAXPATHLEN] = { 0 }; // Short-cut, user can specify just a port and we will construct a default tcp listener specification if (atoi(argv[0]) != 0) { sprintf(constructedLinkSpecification, "tcp://localhost:%d/listener", atoi(argv[0])); linkSpecification = constructedLinkSpecification; } CCNxName *name = ccnxName_CreateFromURI(CCNxNameAthenaCommand_Run); CCNxInterest *interest = ccnxInterest_CreateSimple(name); ccnxName_Release(&name); PARCBuffer *payload = parcBuffer_AllocateCString(linkSpecification); ccnxInterest_SetPayload(interest, payload); parcBuffer_Release(&payload); const char *result = _athenactl_SendInterestControl(identity, interest); if (result) { printf("%s\n", result); parcMemory_Deallocate(&result); } ccnxMetaMessage_Release(&interest); return 0; }
static int _athenactl_RemoveLink(PARCIdentity *identity, int argc, char **argv) { if (argc < 1) { printf("usage: remove link <linkName>\n"); return 1; } CCNxName *name = ccnxName_CreateFromURI(CCNxNameAthenaCommand_LinkDisconnect); CCNxInterest *interest = ccnxInterest_CreateSimple(name); ccnxName_Release(&name); PARCBuffer *payload = parcBuffer_AllocateCString(argv[0]); ccnxInterest_SetPayload(interest, payload); parcBuffer_Release(&payload); const char *result = _athenactl_SendInterestControl(identity, interest); if (result) { printf("Link: %s\n", result); parcMemory_Deallocate(&result); } ccnxMetaMessage_Release(&interest); return 0; }
static int _athenactl_RemoveRoute(PARCIdentity *identity, int argc, char **argv) { if (argc < 2) { printf("usage: remove route <linkName> <prefix>\n"); return 1; } CCNxName *name = ccnxName_CreateFromURI(CCNxNameAthenaCommand_FIBRemoveRoute); CCNxInterest *interest = ccnxInterest_CreateSimple(name); ccnxName_Release(&name); char *linkName = argv[0]; char *prefix = argv[1]; // passed in as <linkName> <prefix>, passed on as <prefix> <linkname> char routeArguments[MAXPATHLEN]; sprintf(routeArguments, "%s %s", prefix, linkName); PARCBuffer *payload = parcBuffer_AllocateCString(routeArguments); ccnxInterest_SetPayload(interest, payload); parcBuffer_Release(&payload); const char *result = _athenactl_SendInterestControl(identity, interest); if (result) { printf("FIB: %s\n", result); parcMemory_Deallocate(&result); } ccnxMetaMessage_Release(&interest); return 0; }
static int _athenactl_Quit(PARCIdentity *identity, int argc, char **argv) { CCNxName *name = ccnxName_CreateFromURI(CCNxNameAthenaCommand_Quit); CCNxInterest *interest = ccnxInterest_CreateSimple(name); ccnxName_Release(&name); PARCBuffer *payload = parcBuffer_AllocateCString("exit"); ccnxInterest_SetPayload(interest, payload); parcBuffer_Release(&payload); const char *result = _athenactl_SendInterestControl(identity, interest); if (result) { printf("%s\n", result); parcMemory_Deallocate(&result); } ccnxMetaMessage_Release(&interest); return 0; }
static int _athenactl_AddConnection(PARCIdentity *identity, int argc, char **argv) { if (argc < 4) { printf("usage: add connection <protocol> <name> <address> <port>\n"); return 1; } CCNxName *name = ccnxName_CreateFromURI(CCNxNameAthenaCommand_LinkConnect); CCNxInterest *interest = ccnxInterest_CreateSimple(name); ccnxName_Release(&name); char linkSpecification[MAXPATHLEN]; // Metis compatibility // ex: add connection udp conn1 ccnx.example.com 9695 if (argv[1][0] != '\0') { sprintf(linkSpecification, "%s://%s:%s/name=%s", argv[0], argv[2], argv[3], argv[1]); } else { sprintf(linkSpecification, "%s://%s:%s", argv[0], argv[2], argv[3]); } PARCBuffer *payload = parcBuffer_AllocateCString(linkSpecification); ccnxInterest_SetPayload(interest, payload); parcBuffer_Release(&payload); const char *result = _athenactl_SendInterestControl(identity, interest); if (result) { printf("Link: %s\n", result); parcMemory_Deallocate(&result); } ccnxMetaMessage_Release(&interest); return 0; }