use of com.linkedin.databus2.core.container.request.DatabusRequest in project databus by linkedin.
the class ContainerStatsRequestProcessor method processInboundTrafficTotalStats.
private void processInboundTrafficTotalStats(DatabusRequest request) throws IOException {
ContainerTrafficTotalStatsMBean inboundTrafficTotalStatsMBean = _containerStatsCollector.getInboundTrafficTotalStats();
if (null == inboundTrafficTotalStatsMBean)
return;
//String json = inboundTrafficTotalStatsMBean.toJson();
JsonEncoder jsonEncoder = inboundTrafficTotalStatsMBean.createJsonEncoder(Channels.newOutputStream(request.getResponseContent()));
inboundTrafficTotalStatsMBean.toJson(jsonEncoder, null);
if (request.getRequestType() == HttpMethod.PUT || request.getRequestType() == HttpMethod.POST) {
enableOrResetStatsMBean(inboundTrafficTotalStatsMBean, request);
}
}
use of com.linkedin.databus2.core.container.request.DatabusRequest in project databus by linkedin.
the class ContainerStatsRequestProcessor method processContainerStats.
private void processContainerStats(DatabusRequest request) throws IOException {
ContainerStats containerStats = _containerStatsCollector.getContainerStats();
if (null == containerStats) {
return;
}
writeJsonObjectToResponse(containerStats, request);
}
use of com.linkedin.databus2.core.container.request.DatabusRequest in project databus by linkedin.
the class HttpRequestHandler method messageReceived.
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
/*NettyStats nettyStats = _configManager.getNettyStats();
CallCompletion callCompletion = nettyStats.isEnabled() ?
nettyStats.getRequestHandler_messageRecieved().startCall() :
null;*/
try {
if (!readingChunks) {
request = (HttpRequest) e.getMessage();
ctx.sendUpstream(e);
QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.getUri());
String queryPath = queryStringDecoder.getPath();
int slashPos = queryPath.indexOf('/', 1);
if (slashPos < 0) {
slashPos = queryPath.length();
}
String cmdName = queryPath.substring(1, slashPos);
ServerContainer.RuntimeConfig config = _serverContainer.getContainerRuntimeConfigMgr().getReadOnlyConfig();
if (LOG.isDebugEnabled()) {
LOG.debug("Got command: " + cmdName);
}
dbusRequest = new DatabusRequest(cmdName, request.getMethod(), e.getRemoteAddress(), config);
if (LOG.isDebugEnabled()) {
LOG.debug("Starting processing command [" + dbusRequest.getId() + "] " + dbusRequest.getName());
}
Properties requestProps = dbusRequest.getParams();
if (slashPos < queryPath.length()) {
requestProps.put(DatabusRequest.PATH_PARAM_NAME, queryPath.substring(slashPos + 1));
}
for (Map.Entry<String, String> h : request.getHeaders()) {
handleHttpHeader(h);
}
Map<String, List<String>> params = queryStringDecoder.getParameters();
if (!params.isEmpty()) {
for (Entry<String, List<String>> p : params.entrySet()) {
String key = p.getKey();
List<String> vals = p.getValue();
if (vals.size() == 1) {
requestProps.put(key, vals.get(0));
} else {
requestProps.put(key, vals);
}
for (String val : vals) {
LOG.trace("PARAM: " + key + " = " + val);
}
}
}
if (request.isChunked()) {
if (null != _readTimeoutHandler) {
readingChunks = true;
_readTimeoutHandler.start(ctx.getPipeline().getContext(_readTimeoutHandler));
}
} else {
ChannelBuffer content = request.getContent();
handleRequestContentChunk(content);
writeResponse(ctx, e);
}
} else if (e.getMessage() instanceof HttpChunk) {
HttpChunk chunk = (HttpChunk) e.getMessage();
if (chunk.isLast()) {
readingChunks = false;
LOG.trace("END OF CONTENT");
HttpChunkTrailer trailer = (HttpChunkTrailer) chunk;
for (Map.Entry<String, String> h : trailer.getHeaders()) {
handleHttpHeader(h);
}
writeResponse(ctx, e);
} else {
ChannelBuffer content = chunk.getContent();
handleRequestContentChunk(content);
}
}
ctx.sendUpstream(e);
//FIXME DDS-305: Rework the netty stats collector to use event-based stats aggregation
/*if (null != callCompletion)
{
callCompletion.endCall();
}*/
} catch (Exception ex) {
LOG.error("HttpRequestHandler.messageReceived error", ex);
//FIXME DDS-305: Rework the netty stats collector to use event-based stats aggregation
/*if (null != callCompletion)
{
callCompletion.endCallWithError(ex);
}*/
}
}
use of com.linkedin.databus2.core.container.request.DatabusRequest in project databus by linkedin.
the class ConfigRequestProcessor method doPutConfig.
private void doPutConfig(DatabusRequest request) throws IOException, RequestProcessingException {
Properties cmdParams = request.getParams();
try {
_serverContainer.getContainerRuntimeConfigMgr().loadConfig(cmdParams);
} catch (InvalidConfigException ice) {
throw new RequestProcessingException("config load failed", ice);
}
ServerContainer.RuntimeConfig newConfig = _serverContainer.getContainerRuntimeConfigMgr().getReadOnlyConfig();
serializeConfig(newConfig, request.getResponseContent());
}
use of com.linkedin.databus2.core.container.request.DatabusRequest in project databus by linkedin.
the class ContainerAdminRequestProcessor method process.
@Override
public DatabusRequest process(DatabusRequest request) throws IOException, RequestProcessingException {
String path = request.getParams().getProperty(DatabusRequest.PATH_PARAM_NAME);
String normPath = normalizePath(path);
if (null == normPath) {
if (0 == _normalizedPath.length())
returnPlainStatus(request);
else
throw new RequestProcessingException("expected admin sub-command");
} else if (_normalizedPath.equals(normPath))
returnPlainStatus(request);
else if (_statusPath.equals(normPath))
returnComponentStatus(request);
else
throw new RequestProcessingException("unknown admin sub-command:" + normPath);
return null;
}
Aggregations