void AppManMsgProxy::OnRequest(iviLink::Ipc::MsgID id, UInt8 const* pPayload, UInt32 payloadSize, UInt8* const pResponseBuffer, UInt32& bufferSize, iviLink::Ipc::DirectionID) { LOG4CPLUS_TRACE_METHOD(logger, __PRETTY_FUNCTION__); Message const* req = reinterpret_cast<Message const*>(pPayload); assert(req->header.size + sizeof(Message) == payloadSize); assert(bufferSize >= sizeof(Message)); bufferSize = 0; switch (req->header.type) { case AM_SC_CONNECTION_ESTABLISHED: onCounterAMConnected(); break; case AM_SC_CONNECTION_LOST: onCounterAMDisconnected(); case AM_SC_GET_LINK_STATE: *pResponseBuffer = getLinkState(); bufferSize = sizeof(bool); break; default: break; } }
void GNEConnection::drawGL(const GUIVisualizationSettings& s) const { // Check if connection must be drawed if (!myShapeDeprecated && (myNet->getViewNet()->getViewOptions().showConnections() || (myNet->getViewNet()->getEditModes().currentSupermode == GNE_SUPERMODE_DEMAND))) { // Push draw matrix 1 glPushMatrix(); // Push name glPushName(getGlID()); // Traslate matrix glTranslated(0, 0, GLO_JUNCTION + 0.1); // must draw on top of junction // Set color if (drawUsingSelectColor()) { // override with special colors (unless the color scheme is based on selection) GLHelper::setColor(s.selectedConnectionColor); } else if (mySpecialColor != nullptr) { GLHelper::setColor(*mySpecialColor); } else { // Set color depending of the link state GLHelper::setColor(GNEInternalLane::colorForLinksState(getLinkState())); } // draw connection checking whether it is not too small if isn't being drawn for selecting const double selectionScale = isAttributeCarrierSelected() ? s.selectionScale : 1; if ((s.scale * selectionScale < 5.) && !s.drawForSelecting) { // If it's small, draw a simple line GLHelper::drawLine(myShape); } else { // draw a list of lines const bool spreadSuperposed = s.scale >= 1 && s.spreadSuperposed && myFromLane->drawAsRailway(s) && getEdgeFrom()->getNBEdge()->isBidiRail(); PositionVector shape = myShape; if (spreadSuperposed) { shape.move2side(0.5); } GLHelper::drawBoxLines(shape, myShapeRotations, myShapeLengths, 0.2 * selectionScale); glTranslated(0, 0, 0.1); GLHelper::setColor(GLHelper::getColor().changedBrightness(51)); // check if internal junction marker has to be drawn if (myInternalJunctionMarker.size() > 0) { GLHelper::drawLine(myInternalJunctionMarker); } // check if dotted contour has to be drawn (not useful at high zoom) if (!s.drawForSelecting && (myNet->getViewNet()->getDottedAC() == this)) { GLHelper::drawShapeDottedContour(getType(), shape, 0.25); } } // Pop name glPopName(); // Pop draw matrix 1 glPopMatrix(); } }