use datafusion_distributed::Worker;
use std::error::Error;
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use structopt::StructOpt;
use tonic::transport::Server;
#[derive(StructOpt)]
#[structopt(
name = "localhost_versioned_worker",
about = "A localhost DataFusion worker with versioning"
)]
struct Args {
#[structopt(default_value = "8080")]
port: u16,
#[structopt(long)]
version: Option<String>,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let args = Args::from_args();
let mut worker = Worker::default();
if let Some(version) = args.version {
worker = worker.with_version(version);
}
Server::builder()
.add_service(worker.into_worker_server())
.serve(SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), args.port))
.await?;
Ok(())
}