116 lines
4.8 KiB
Java
116 lines
4.8 KiB
Java
|
/*
|
||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||
|
* or more contributor license agreements. See the NOTICE file
|
||
|
* distributed with this work for additional information
|
||
|
* regarding copyright ownership. The ASF licenses this file
|
||
|
* to you 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.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* Copyright 2015 ScyllaDB
|
||
|
*
|
||
|
* Modified by ScyllaDB
|
||
|
*/
|
||
|
|
||
|
package org.apache.cassandra.streaming.management;
|
||
|
|
||
|
import java.net.InetAddress;
|
||
|
import java.net.UnknownHostException;
|
||
|
import java.util.HashMap;
|
||
|
import java.util.Map;
|
||
|
import java.util.UUID;
|
||
|
import javax.management.openmbean.*;
|
||
|
|
||
|
import com.google.common.base.Throwables;
|
||
|
|
||
|
import org.apache.cassandra.streaming.ProgressInfo;
|
||
|
|
||
|
public class ProgressInfoCompositeData
|
||
|
{
|
||
|
private static final String[] ITEM_NAMES = new String[]{"planId",
|
||
|
"peer",
|
||
|
"sessionIndex",
|
||
|
"fileName",
|
||
|
"direction",
|
||
|
"currentBytes",
|
||
|
"totalBytes"};
|
||
|
private static final String[] ITEM_DESCS = new String[]{"String representation of Plan ID",
|
||
|
"Session peer",
|
||
|
"Index of session",
|
||
|
"Name of the file",
|
||
|
"Direction('IN' or 'OUT')",
|
||
|
"Current bytes transferred",
|
||
|
"Total bytes to transfer"};
|
||
|
private static final OpenType<?>[] ITEM_TYPES = new OpenType[]{SimpleType.STRING,
|
||
|
SimpleType.STRING,
|
||
|
SimpleType.INTEGER,
|
||
|
SimpleType.STRING,
|
||
|
SimpleType.STRING,
|
||
|
SimpleType.LONG,
|
||
|
SimpleType.LONG};
|
||
|
|
||
|
public static final CompositeType COMPOSITE_TYPE;
|
||
|
static {
|
||
|
try
|
||
|
{
|
||
|
COMPOSITE_TYPE = new CompositeType(ProgressInfo.class.getName(),
|
||
|
"ProgressInfo",
|
||
|
ITEM_NAMES,
|
||
|
ITEM_DESCS,
|
||
|
ITEM_TYPES);
|
||
|
}
|
||
|
catch (OpenDataException e)
|
||
|
{
|
||
|
throw Throwables.propagate(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static CompositeData toCompositeData(UUID planId, ProgressInfo progressInfo)
|
||
|
{
|
||
|
Map<String, Object> valueMap = new HashMap<>();
|
||
|
valueMap.put(ITEM_NAMES[0], planId.toString());
|
||
|
valueMap.put(ITEM_NAMES[1], progressInfo.peer.getHostAddress());
|
||
|
valueMap.put(ITEM_NAMES[2], progressInfo.sessionIndex);
|
||
|
valueMap.put(ITEM_NAMES[3], progressInfo.fileName);
|
||
|
valueMap.put(ITEM_NAMES[4], progressInfo.direction.name());
|
||
|
valueMap.put(ITEM_NAMES[5], progressInfo.currentBytes);
|
||
|
valueMap.put(ITEM_NAMES[6], progressInfo.totalBytes);
|
||
|
try
|
||
|
{
|
||
|
return new CompositeDataSupport(COMPOSITE_TYPE, valueMap);
|
||
|
}
|
||
|
catch (OpenDataException e)
|
||
|
{
|
||
|
throw Throwables.propagate(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static ProgressInfo fromCompositeData(CompositeData cd)
|
||
|
{
|
||
|
Object[] values = cd.getAll(ITEM_NAMES);
|
||
|
try
|
||
|
{
|
||
|
return new ProgressInfo(InetAddress.getByName((String) values[1]),
|
||
|
(int) values[2],
|
||
|
(String) values[3],
|
||
|
ProgressInfo.Direction.valueOf((String)values[4]),
|
||
|
(long) values[5],
|
||
|
(long) values[6]);
|
||
|
}
|
||
|
catch (UnknownHostException e)
|
||
|
{
|
||
|
throw Throwables.propagate(e);
|
||
|
}
|
||
|
}
|
||
|
}
|