001package org.xbib.elasticsearch.action.cluster.admin.websocket; 002 003import org.elasticsearch.action.support.nodes.NodesOperationResponse; 004import org.elasticsearch.cluster.ClusterName; 005import org.elasticsearch.common.io.stream.StreamInput; 006import org.elasticsearch.common.io.stream.StreamOutput; 007import org.elasticsearch.common.xcontent.ToXContent; 008import org.elasticsearch.common.xcontent.XContentBuilder; 009import org.elasticsearch.common.xcontent.XContentFactory; 010 011import java.io.IOException; 012import java.util.List; 013 014public class WebsocketInfoResponse extends NodesOperationResponse<WebsocketInfo> implements ToXContent { 015 016 public WebsocketInfoResponse() { 017 } 018 019 public WebsocketInfoResponse(ClusterName clusterName, List<WebsocketInfo> nodes) { 020 super(clusterName, nodes.toArray(new WebsocketInfo[nodes.size()])); 021 } 022 023 @Override 024 public void readFrom(StreamInput in) throws IOException { 025 super.readFrom(in); 026 nodes = new WebsocketInfo[in.readVInt()]; 027 for (int i = 0; i < nodes.length; i++) { 028 nodes[i] = WebsocketInfo.readInfo(in); 029 } 030 } 031 032 @Override 033 public void writeTo(StreamOutput out) throws IOException { 034 super.writeTo(out); 035 out.writeVInt(nodes.length); 036 for (WebsocketInfo node : nodes) { 037 node.writeTo(out); 038 } 039 } 040 041 @Override 042 public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { 043 builder.field("cluster_name", getClusterName().value(), XContentBuilder.FieldCaseConversion.NONE); 044 045 builder.startObject("nodes"); 046 for (WebsocketInfo nodeInfo : this) { 047 builder.startObject(nodeInfo.getNode().id(), XContentBuilder.FieldCaseConversion.NONE); 048 builder.field("name", nodeInfo.getNode().name(), XContentBuilder.FieldCaseConversion.NONE); 049 builder.field("transport_address", nodeInfo.getNode().address().toString()); 050 builder.field("host", nodeInfo.getNode().getHostName(), XContentBuilder.FieldCaseConversion.NONE); 051 builder.field("ip", nodeInfo.getNode().getHostAddress(), XContentBuilder.FieldCaseConversion.NONE); 052 builder.field("websocket_address", nodeInfo.getAddress(), XContentBuilder.FieldCaseConversion.NONE); 053 builder.endObject(); 054 } 055 builder.endObject(); 056 return builder; 057 } 058 059 @Override 060 public String toString() { 061 try { 062 XContentBuilder builder = XContentFactory.jsonBuilder().prettyPrint(); 063 builder.startObject(); 064 toXContent(builder, EMPTY_PARAMS); 065 builder.endObject(); 066 return builder.string(); 067 } catch (IOException e) { 068 return "{ \"error\" : \"" + e.getMessage() + "\"}"; 069 } 070 } 071}