inline void ArpCache::probeFor(folly::IPAddressV4 ip) const { auto vlan = getSw()->getState()->getVlans()->getVlanIf(getVlanID()); if (!vlan) { VLOG(2) << "Vlan " << getVlanID() << " not found. Skip sending probe"; return; } ArpHandler::sendArpRequest(getSw(), vlan, ip); }
// Trivial wrapper to avoid complexities of renderer & alpha channels void Neill_SDL_SetDrawColour(Uint8 r, Uint8 g, Uint8 b) { SDL_Simplewin sw = getSw(NULL); SDL_SetRenderDrawColor(sw->renderer, r, g, b, SDL_ALPHA_OPAQUE); }
void drawLine(int xSource, int ySource, int xDest, int yDest) { SDL_Simplewin sw = getSw(NULL); SDL_SetRenderDrawColor(sw->renderer, 0, 0, 0, SDL_ALPHA_OPAQUE); SDL_RenderDrawLine(sw->renderer,xSource,ySource,xDest,yDest); //SDL_Delay(20); endFrame(); }
// Gobble all events & ignore most int Neill_SDL_Events() { SDL_Simplewin sw = getSw(NULL); SDL_Event event; while(SDL_PollEvent(&event)) { switch (event.type){ case SDL_QUIT: case SDL_MOUSEBUTTONDOWN: case SDL_KEYDOWN: sw->finished = 1; } } return sw->finished; }
// Set up a simple (WIDTH, HEIGHT) window. // Attempt to hide the renderer etc. from user. void Neill_SDL_Init() { SDL_Simplewin sw = malloc(sizeof(*sw)); getSw(sw); if (SDL_Init(SDL_INIT_VIDEO) != 0) { fprintf(stderr, "\nUnable to initialize SDL: %s\n", SDL_GetError()); SDL_Quit(); exit(1); } sw->finished = 0; sw->win= SDL_CreateWindow("SDL Window", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WWIDTH, WHEIGHT, SDL_WINDOW_SHOWN); if(sw->win == NULL){ fprintf(stderr, "\nUnable to initialize SDL Window: %s\n", SDL_GetError()); SDL_Quit(); exit(1); } sw->renderer = SDL_CreateRenderer(sw->win, -1, 0); if(sw->renderer == NULL){ fprintf(stderr, "\nUnable to initialize SDL Renderer: %s\n", SDL_GetError()); SDL_Quit(); exit(1); } // Set screen to black Neill_SDL_SetDrawColour(255, 255, 255); SDL_RenderClear(sw->renderer); SDL_RenderPresent(sw->renderer); }
int checkFinished() { return getSw(NULL)->finished; }
void endFrame() { SDL_Simplewin sw = getSw(NULL); SDL_RenderPresent(sw->renderer); SDL_UpdateWindowSurface(sw->win); Neill_SDL_Events(); }