/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.facebook.presto.execution.buffer;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.ImmutableList;
import java.util.List;
import java.util.Objects;
import static com.google.common.base.MoreObjects.toStringHelper;
public final class OutputBufferInfo
{
private final String type;
private final BufferState state;
private final boolean canAddBuffers;
private final boolean canAddPages;
private final long totalBufferedBytes;
private final long totalBufferedPages;
private final long totalRowsSent;
private final long totalPagesSent;
private final List<BufferInfo> buffers;
@JsonCreator
public OutputBufferInfo(
@JsonProperty("type") String type,
@JsonProperty("state") BufferState state,
@JsonProperty("canAddBuffers") boolean canAddBuffers,
@JsonProperty("canAddPages") boolean canAddPages,
@JsonProperty("totalBufferedBytes") long totalBufferedBytes,
@JsonProperty("totalBufferedPages") long totalBufferedPages,
@JsonProperty("totalRowsSent") long totalRowsSent,
@JsonProperty("totalPagesSent") long totalPagesSent,
@JsonProperty("buffers") List<BufferInfo> buffers)
{
this.type = type;
this.state = state;
this.canAddBuffers = canAddBuffers;
this.canAddPages = canAddPages;
this.totalBufferedBytes = totalBufferedBytes;
this.totalBufferedPages = totalBufferedPages;
this.totalRowsSent = totalRowsSent;
this.totalPagesSent = totalPagesSent;
this.buffers = ImmutableList.copyOf(buffers);
}
@JsonProperty
public String getType()
{
return type;
}
@JsonProperty
public BufferState getState()
{
return state;
}
@JsonProperty
public List<BufferInfo> getBuffers()
{
return buffers;
}
@JsonProperty
public boolean isCanAddBuffers()
{
return canAddBuffers;
}
@JsonProperty
public boolean isCanAddPages()
{
return canAddPages;
}
@JsonProperty
public long getTotalBufferedBytes()
{
return totalBufferedBytes;
}
@JsonProperty
public long getTotalBufferedPages()
{
return totalBufferedPages;
}
@JsonProperty
public long getTotalRowsSent()
{
return totalRowsSent;
}
@JsonProperty
public long getTotalPagesSent()
{
return totalPagesSent;
}
public OutputBufferInfo summarize()
{
return new OutputBufferInfo(type, state, canAddBuffers, canAddPages, totalBufferedBytes, totalBufferedPages, totalRowsSent, totalPagesSent, ImmutableList.of());
}
@Override
public boolean equals(Object o)
{
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
OutputBufferInfo that = (OutputBufferInfo) o;
return Objects.equals(type, that.type) &&
Objects.equals(canAddBuffers, that.canAddBuffers) &&
Objects.equals(canAddPages, that.canAddPages) &&
Objects.equals(totalBufferedBytes, that.totalBufferedBytes) &&
Objects.equals(totalBufferedPages, that.totalBufferedPages) &&
Objects.equals(totalRowsSent, that.totalRowsSent) &&
Objects.equals(totalPagesSent, that.totalPagesSent) &&
Objects.equals(state, that.state) &&
Objects.equals(buffers, that.buffers);
}
@Override
public int hashCode()
{
return Objects.hash(state, canAddBuffers, canAddPages, totalBufferedBytes, totalBufferedPages, totalRowsSent, totalPagesSent, buffers);
}
@Override
public String toString()
{
return toStringHelper(this)
.add("type", type)
.add("state", state)
.add("canAddBuffers", canAddBuffers)
.add("canAddPages", canAddPages)
.add("totalBufferedBytes", totalBufferedBytes)
.add("totalBufferedPages", totalBufferedPages)
.add("totalRowsSent", totalRowsSent)
.add("totalPagesSent", totalPagesSent)
.add("buffers", buffers)
.toString();
}
}