2021SC@SDUSC
目录
一、数据账户的kv设置
接口
1.DataAccountKVSetOperationBuilder
这是一个接口,我把代码分析都写在了注释里
public interface DataAccountKVSetOperationBuilder {
/**
* 数据账户的KV写入操作;
*
* @return
*/
DataAccountKVSetOperation getOperation();
/**
* 写入键值;
*
* @return
*/
/**
* @param key 键;
* @param value 值;
* @param expVersion 预期的当前版本;如果版本不匹配,则写入失败;
* @return
*/
DataAccountKVSetOperationBuilder set(String key, BytesValue value, long expVersion);
/**
* 写入字节数组;
*
* @param key 键;
* @param value 值;byte[]格式
* @param expVersion 预期的当前版本;如果版本不匹配,则写入失败;
* @return
*/
DataAccountKVSetOperationBuilder setBytes(String key, byte[] value, long expVersion);
/**
* 写入字节数组;
*
* @param key 键;
* @param value 值;Bytes格式
* @param expVersion 预期的当前版本;如果版本不匹配,则写入失败;
* @return
*/
DataAccountKVSetOperationBuilder setBytes(String key, Bytes value, long expVersion);
/**
* 写入键值;
*
* @param key 键;
* @param value 值;String格式
* @param expVersion 预期的当前版本;如果版本不匹配,则写入失败;
* @return
*/
DataAccountKVSetOperationBuilder setImage(String key, byte[] value, long expVersion);
// /**
// * 写入文本键值;
// *
// * @param key
// * 键;
// * @param value
// * 值;String格式
// * @param expVersion
// * 预期的当前版本;如果版本不匹配,则写入失败;
// * @return
// */
// @Deprecated
// DataAccountKVSetOperationBuilder set(String key, String value, long expVersion);
/**
* 写入文本键值;
*
* @param key 键;
* @param value 值;String格式
* @param expVersion 预期的当前版本;如果版本不匹配,则写入失败;
* @return
*/
DataAccountKVSetOperationBuilder setText(String key, String value, long expVersion);
/**
* 写入JSON键值;
*
* @param key 键;
* @param value 值;String格式
* @param expVersion 预期的当前版本;如果版本不匹配,则写入失败;
* @return
*/
DataAccountKVSetOperationBuilder setJSON(String key, String value, long expVersion);
/**
* 写入XML键值;
*
* @param key 键;
* @param value 值;String格式
* @param expVersion 预期的当前版本;如果版本不匹配,则写入失败;
* @return
*/
DataAccountKVSetOperationBuilder setXML(String key, String value, long expVersion);
/**
* 写入64位整数;
*
* @param key 键;
* @param value 值;long格式
* @param expVersion 预期的当前版本;如果版本不匹配,则写入失败;
* @return
*/
DataAccountKVSetOperationBuilder setInt64(String key, long value, long expVersion);
/**
* 写入时间戳;
*
* @param key 键;
* @param value 值;long格式
* @param expVersion 预期的当前版本;如果版本不匹配,则写入失败;
* @return
*/
DataAccountKVSetOperationBuilder setTimestamp(String key, long value, long expVersion);
}
2.DataAccountKVSetOperation
这个接口继承了operation
这也是一个关于账本初始化的接口,这个接口账本初始化的设置
代码定义了账本的种子
这个是共识方的参与列表,列表里面有一系列用户,这个方法同时可以给下面的方法提供相应的用户列表。
@DataField(order=2, primitiveType=PrimitiveType.BYTES)
Bytes getAccountAddress();
@DataField(order=3, list=true, refContract=true)
KVWriteEntry[] getWriteSet();
@DataContract(code=DataCodes.TX_OP_DATA_ACC_SET_KV)
public static interface KVWriteEntry{
@DataField(order=1, primitiveType=PrimitiveType.TEXT)
String getKey();
@DataField(order=2, refContract = true)
BytesValue getValue();
@DataField(order=3, primitiveType=PrimitiveType.INT64)
long getExpectedVersion();
}
类
1.DataAccountKVSetOperationBuilderImpl
首先,这个类引用了上述的接口DataAccountKVSetOperationBuilder
我将代码分析放到了下面的注释里面
//这个类先实体化了一个类DataAccountKVSetOpTemplate
private DataAccountKVSetOpTemplate operation;
//这个是kv的账户配置,添加新的地址
public DataAccountKVSetOperationBuilderImpl(Bytes accountAddress) {
operation = new DataAccountKVSetOpTemplate(accountAddress);
}
//这个方法返回一个operation实体类
@Override
public DataAccountKVSetOperation getOperation() {
return operation;
}
//这个方法可以用来设置operation的信息
//expVersion:版本号
//BytesValue:bytes的值
@Override
public DataAccountKVSetOperationBuilder set(String key, BytesValue value, long expVersion) {
operation.set(key, value, expVersion);
return this;
}
//这个可以用来配置bytes的信息
//expVersion:版本号
//BytesValue:bytes的值
@Override
public DataAccountKVSetOperationBuilder setBytes(String key, byte[] value, long expVersion) {
BytesValue bytesValue = TypedValue.fromBytes(value);
operation.set(key, bytesValue, expVersion);
return this;
}
//这个方法可以用来设置图片
//expVersion:版本号
//BytesValue:bytes的值
@Override
public DataAccountKVSetOperationBuilder setImage(String key, byte[] value, long expVersion) {
BytesValue bytesValue = TypedValue.fromImage(value);
operation.set(key, bytesValue, expVersion);
return this;
}
//这个可以用来设置kv的内容
//expVersion:版本号
//BytesValue:bytes的值
@Override
public DataAccountKVSetOperationBuilder setText(String key, String value, long expVersion) {
BytesValue bytesValue = TypedValue.fromText(value);
operation.set(key, bytesValue, expVersion);
return this;
}
//这个同样是用来设置bytes的信息
//expVersion:版本号
//BytesValue:bytes的值
@Override
public DataAccountKVSetOperationBuilder setBytes(String key, Bytes value, long expVersion) {
BytesValue bytesValue = TypedValue.fromBytes(value);
operation.set(key, bytesValue, expVersion);
return this;
}
//这个可以用来设置Int64的内容
//expVersion:版本号
//BytesValue:bytes的值
@Override
public DataAccountKVSetOperationBuilder setInt64(String key, long value, long expVersion) {
BytesValue bytesValue = TypedValue.fromInt64(value);
operation.set(key, bytesValue, expVersion);
return this;
}
//这个可以用来设置jason文件
@Override
public DataAccountKVSetOperationBuilder setJSON(String key, String value, long expVersion) {
BytesValue bytesValue = TypedValue.fromJSON(value);
operation.set(key, bytesValue, expVersion);
return this;
}
//这个方法可以用来设置XML文件的内容
@Override
public DataAccountKVSetOperationBuilder setXML(String key, String value, long expVersion) {
BytesValue bytesValue = TypedValue.fromXML(value);
operation.set(key, bytesValue, expVersion);
return this;
}
@Override
public DataAccountKVSetOperationBuilder setTimestamp(String key, long value, long expVersion) {
BytesValue bytesValue = TypedValue.fromTimestamp(value);
operation.set(key, bytesValue, expVersion);
return this;
}