All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.tonivade.resp.command.Request Maven / Gradle / Ivy

/*
 * Copyright (c) 2015-2017, Antonio Gabriel Muñoz Conejo 
 * Distributed under the terms of the MIT License
 */
package com.github.tonivade.resp.command;

import static java.util.Objects.requireNonNull;

import java.util.Collections;
import java.util.List;
import java.util.Optional;

import com.github.tonivade.resp.protocol.SafeString;

public class Request implements IRequest {

  private final SafeString command;

  private final List params;

  private final ISession session;

  private final IServerContext server;

  public Request(IServerContext server, ISession session, SafeString command, List params) {
    this.server = server;
    this.session = session;
    this.command = requireNonNull(command);
    this.params = requireNonNull(params);
  }

  @Override
  public String getCommand() {
    return command.toString();
  }

  @Override
  public List getParams() {
    return Collections.unmodifiableList(params);
  }

  @Override
  public SafeString getParam(int i) {
    if (i < params.size()) {
      return params.get(i);
    }
    return null;
  }

  @Override
  public Optional getOptionalParam(int i) {
    return Optional.ofNullable(getParam(i));
  }

  @Override
  public int getLength() {
    return params.size();
  }

  @Override
  public boolean isEmpty() {
    return params.isEmpty();
  }

  @Override
  public boolean isExit() {
    return command.toString().equalsIgnoreCase("quit");
  }

  @Override
  public ISession getSession() {
    return session;
  }

  @Override
  public IServerContext getServerContext() {
    return server;
  }

  @Override
  public String toString() {
    return command + "[" + params.size() + "]: " + params;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy