use of com.alibaba.nacos.naming.consistency.Datum in project nacos by alibaba.
the class BasePersistentServiceProcessor method publishValueChangeEvent.
private void publishValueChangeEvent(final Op op, final BatchWriteRequest request) {
final List<byte[]> keys = request.getKeys();
final List<byte[]> values = request.getValues();
for (int i = 0; i < keys.size(); i++) {
final String key = new String(keys.get(i));
final Datum datum = serializer.deserialize(values.get(i), getDatumTypeFromKey(key));
final Record value = null != datum ? datum.value : null;
final ValueChangeEvent event = ValueChangeEvent.builder().key(key).value(value).action(Op.Delete.equals(op) ? DataOperation.DELETE : DataOperation.CHANGE).build();
NotifyCenter.publishEvent(event);
}
}
use of com.alibaba.nacos.naming.consistency.Datum in project nacos by alibaba.
the class PersistentServiceProcessor method put.
@Override
public void put(String key, Record value) throws NacosException {
final BatchWriteRequest req = new BatchWriteRequest();
Datum datum = Datum.createDatum(key, value);
req.append(ByteUtils.toBytes(key), serializer.serialize(datum));
final WriteRequest request = WriteRequest.newBuilder().setData(ByteString.copyFrom(serializer.serialize(req))).setGroup(Constants.NAMING_PERSISTENT_SERVICE_GROUP).setOperation(Op.Write.desc).build();
try {
protocol.write(request);
} catch (Exception e) {
throw new NacosException(ErrorCode.ProtoSubmitError.getCode(), e.getMessage());
}
}
use of com.alibaba.nacos.naming.consistency.Datum in project nacos by alibaba.
the class StandalonePersistentServiceProcessor method put.
@Override
public void put(String key, Record value) throws NacosException {
final BatchWriteRequest req = new BatchWriteRequest();
Datum datum = Datum.createDatum(key, value);
req.append(ByteUtils.toBytes(key), serializer.serialize(datum));
final WriteRequest request = WriteRequest.newBuilder().setData(ByteString.copyFrom(serializer.serialize(req))).setGroup(Constants.NAMING_PERSISTENT_SERVICE_GROUP).setOperation(Op.Write.desc).build();
try {
onApply(request);
} catch (Exception e) {
throw new NacosException(ErrorCode.ProtoSubmitError.getCode(), e.getMessage());
}
}
use of com.alibaba.nacos.naming.consistency.Datum in project nacos by alibaba.
the class DataStore method batchGet.
/**
* Batch get datum for a list of keys.
*
* @param keys of datum
* @return list of datum
*/
public Map<String, Datum> batchGet(List<String> keys) {
Map<String, Datum> map = new HashMap<>(128);
for (String key : keys) {
Datum datum = dataMap.get(key);
if (datum == null) {
continue;
}
map.put(key, datum);
}
return map;
}
use of com.alibaba.nacos.naming.consistency.Datum in project nacos by alibaba.
the class DistroControllerTest method testOnSyncDatum.
@Test
public void testOnSyncDatum() {
Map<String, Datum<Instances>> dataMap = new HashMap<>();
try {
distroController.onSyncDatum(dataMap);
} catch (Exception e) {
Assert.assertTrue(e instanceof NacosException);
NacosException exception = (NacosException) e;
Assert.assertEquals(NacosException.INVALID_PARAM, exception.getErrCode());
}
dataMap.put("test", new Datum<>());
try {
ResponseEntity responseEntity = distroController.onSyncDatum(dataMap);
Assert.assertEquals("ok", responseEntity.getBody());
} catch (Exception e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}
Aggregations