struct ControlHandler* ControlHandler_new(struct Allocator* allocator, struct Log* logger, struct EventEmitter* ee, uint8_t myPublicKey[32]) { struct Allocator* alloc = Allocator_child(allocator); struct ControlHandler_pvt* ch = Allocator_calloc(alloc, sizeof(struct ControlHandler_pvt), 1); ch->alloc = alloc; ch->log = logger; Bits_memcpy(ch->myPublicKey, myPublicKey, 32); ch->pub.coreIf.send = incomingFromCore; ch->pub.switchPingerIf.send = incomingFromSwitchPinger; EventEmitter_regCore(ee, &ch->eventIf, 0); Identity_set(ch); return &ch->pub; }
struct UpperDistributor* UpperDistributor_new(struct Allocator* allocator, struct Log* log, struct EventEmitter* ee) { struct Allocator* alloc = Allocator_child(allocator); struct UpperDistributor_pvt* out = Allocator_calloc(alloc, sizeof(struct UpperDistributor_pvt), 1); out->eventIf.send = incomingFromEventIf; out->pub.tunAdapterIf.send = incomingFromTunAdapterIf; out->pub.ipTunnelIf.send = incomingFromIpTunnelIf; out->pub.sessionManagerIf.send = incomingFromSessionManagerIf; out->log = log; Identity_set(out); EventEmitter_regCore(ee, &out->eventIf, PFChan_Pathfinder_SENDMSG); return &out->pub; }