// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package io.v.impl.google.lib.discovery;

import java.util.UUID;

import io.v.impl.google.lib.discovery.ScanHandler;

/**
 * Wraps a {@link UUID} and a {@link ScanHandler}.
 */
public class VScanner {
    private UUID serviceUUID;

    private ScanHandler handler;

    public VScanner(UUID serviceUUID, ScanHandler handler) {
        this.serviceUUID = serviceUUID;
        this.handler = handler;
    }

    public UUID getmServiceUUID() {
        return serviceUUID;
    }

    public ScanHandler getHandler() {
        return handler;
    }

}
