/* * Copyright (C) 2012-2016 Facebook, Inc. * * 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.nifty.core; import org.jboss.netty.buffer.ChannelBuffer; public class ThriftMessage { private final ChannelBuffer buffer; private final ThriftTransportType transportType; private long processStartTimeMillis; public ThriftMessage(ChannelBuffer buffer, ThriftTransportType transportType) { this.buffer = buffer; this.transportType = transportType; } public ChannelBuffer getBuffer() { return buffer; } public ThriftTransportType getTransportType() { return transportType; } /** * Gets a {@link Factory} for creating messages similar to this one. Used by {@link * NiftyDispatcher} to create response messages that are similar to their corresponding * request messages. * * @return The {@link Factory} */ public Factory getMessageFactory() { return new Factory() { @Override public ThriftMessage create(ChannelBuffer messageBuffer) { return new ThriftMessage(messageBuffer, getTransportType()); } }; } /** * Standard Thrift clients require ordered responses, so even though Nifty can run multiple * requests from the same client at the same time, the responses have to be held until all * previous responses are ready and have been written. However, through the use of extended * protocols and codecs, a request can indicate that the client understands * out-of-order responses. * * @return {@code true} if ordered responses are required */ public boolean isOrderedResponsesRequired() { return true; } public long getProcessStartTimeMillis() { return processStartTimeMillis; } public void setProcessStartTimeMillis(long processStartTimeMillis) { this.processStartTimeMillis = processStartTimeMillis; } public static interface Factory { public ThriftMessage create(ChannelBuffer messageBuffer); } }