private void handleVirtualAndSwitcher(final QueueLinkerJob job, final GlobalPhysicalGraph gpg) {
        Iterator<GlobalPhysicalVertex> iter = gpg.iteratorOfVertex();

        while (iter.hasNext()) {
            final GlobalPhysicalVertex gpv = iter.next();

            if (!gpv.getWorkerServerSignature().equals(signature)) {
                continue;
            }

            final Vertex v = gpv.getVertex();

            if (v instanceof VirtualVertex) {
                final VirtualVertex virtualVertex = (VirtualVertex) v;
                List<LocalPhysicalVertex> pvs = lpg.findPhysicalVertex(virtualVertex.getLogicalVertex());
                for (LocalPhysicalVertex pv : pvs) {
                    LocalPhysicalVertex lpv = lpg.addPhysicalVertex(virtualVertex, gpv, pv.getLocalThread(),
                                                                    pv.getModuleInstance(), pv.getLocalPartitionId(),
                                                                    pv.getLocalPartitioningRate());
                    lpv.setActualVertex(pv);
                }
            } else if (v instanceof SwitcherVertex) {
                final SwitcherVertex switcherVertex = (SwitcherVertex) v;
                final Vertex srcVertex = switcherVertex.getInputEdge().getSrcVertex();
                List<LocalPhysicalVertex> srcPVs = lpg.findPhysicalVertex(srcVertex);
                for (LocalPhysicalVertex srcPV : srcPVs) {
                    ModuleBase instance = instanceManager.createNewInstance(switcherVertex);
                    LocalThread thread = resourceManager.assignCPUResource(job, switcherVertex.getCpuUsage(),
                                                                           busyLoopMode);
                    lpg.addPhysicalVertex(switcherVertex, gpv, thread, instance, 0, 1.0);
                }
            }
        }
    }