use of org.ballerinalang.bre.bvm.CallableUnitCallback in project ballerina by ballerina-lang.
the class DefaultStreamObserver method onCompleted.
@Override
public void onCompleted() {
Resource onCompleted = resourceMap.get(MessageConstants.ON_COMPLETE_RESOURCE);
if (onCompleted == null) {
String message = "Error in listener service definition. onCompleted resource does not exists";
LOG.error(message);
throw new RuntimeException(message);
}
List<ParamDetail> paramDetails = onCompleted.getParamDetails();
BValue[] signatureParams = new BValue[paramDetails.size()];
CallableUnitCallback callback = new GrpcCallableUnitCallBack(null);
Executor.submit(onCompleted, callback, null, null, signatureParams);
}
use of org.ballerinalang.bre.bvm.CallableUnitCallback in project ballerina by ballerina-lang.
the class DefaultStreamObserver method onNext.
@Override
public void onNext(Message value) {
Resource resource = resourceMap.get(MessageConstants.ON_MESSAGE_RESOURCE);
if (resource == null) {
String message = "Error in listener service definition. onNext resource does not exists";
LOG.error(message);
throw new RuntimeException(message);
}
List<ParamDetail> paramDetails = resource.getParamDetails();
BValue[] signatureParams = new BValue[paramDetails.size()];
BValue requestParam = getRequestParameter(resource, value);
if (requestParam != null) {
signatureParams[0] = requestParam;
}
CallableUnitCallback callback = new GrpcCallableUnitCallBack(null);
Executor.submit(resource, callback, null, null, signatureParams);
}
use of org.ballerinalang.bre.bvm.CallableUnitCallback in project ballerina by ballerina-lang.
the class DefaultStreamObserver method onError.
@Override
public void onError(Throwable t) {
Resource onError = resourceMap.get(MessageConstants.ON_ERROR_RESOURCE);
if (onError == null) {
String message = "Error in listener service definition. onError resource does not exists";
LOG.error(message);
throw new RuntimeException(message);
}
List<ParamDetail> paramDetails = onError.getParamDetails();
BValue[] signatureParams = new BValue[paramDetails.size()];
if (paramDetails.size() != 1) {
String message = "Error in onError resource definition. It must have only error params, but have " + paramDetails.size();
LOG.error(message);
throw new RuntimeException(message);
}
BType errorType = paramDetails.get(1).getVarType();
BStruct errorStruct = MessageUtils.getConnectorError((BStructType) errorType, t);
signatureParams[0] = errorStruct;
CallableUnitCallback callback = new GrpcCallableUnitCallBack(null);
Executor.submit(onError, callback, null, null, signatureParams);
}
use of org.ballerinalang.bre.bvm.CallableUnitCallback in project ballerina by ballerina-lang.
the class BallerinaHTTPConnectorListener method extractPropertiesAndStartResourceExecution.
protected void extractPropertiesAndStartResourceExecution(HTTPCarbonMessage httpCarbonMessage, HttpResource httpResource) {
boolean isTransactionInfectable = httpResource.isTransactionInfectable();
Map<String, Object> properties = collectRequestProperties(httpCarbonMessage, isTransactionInfectable);
properties.put(HttpConstants.REMOTE_ADDRESS, httpCarbonMessage.getProperty(HttpConstants.REMOTE_ADDRESS));
properties.put(HttpConstants.ORIGIN_HOST, httpCarbonMessage.getHeader(HttpConstants.ORIGIN_HOST));
BValue[] signatureParams = HttpDispatcher.getSignatureParameters(httpResource, httpCarbonMessage);
// invoke the request path filters
invokeRequestFilters(httpCarbonMessage, signatureParams[1], getRequestFilterContext(httpResource));
Tracer tracer = TraceManagerWrapper.newTracer(null, false);
httpCarbonMessage.getHeaders().entries().stream().filter(c -> c.getKey().startsWith(TraceConstants.TRACE_PREFIX)).forEach(e -> tracer.addProperty(e.getKey(), e.getValue()));
Map<String, String> tags = new HashMap<>();
tags.put("http.method", (String) httpCarbonMessage.getProperty("HTTP_METHOD"));
tags.put("http.url", (String) httpCarbonMessage.getProperty("REQUEST_URL"));
tracer.addTags(tags);
CallableUnitCallback callback = new HttpCallableUnitCallback(httpCarbonMessage);
// TODO handle BallerinaConnectorException
Executor.submit(httpResource.getBalResource(), callback, properties, tracer, signatureParams);
}
use of org.ballerinalang.bre.bvm.CallableUnitCallback in project ballerina by ballerina-lang.
the class BidirectionalStreamingListener method invoke.
@Override
public StreamObserver<Message> invoke(StreamObserver<Message> responseObserver) {
Resource onOpen = resourceMap.get(MessageConstants.ON_OPEN_RESOURCE);
List<ParamDetail> paramDetails = onOpen.getParamDetails();
BValue[] signatureParams = new BValue[paramDetails.size()];
signatureParams[0] = getConnectionParameter(onOpen, responseObserver);
CallableUnitCallback callback = new GrpcCallableUnitCallBack(responseObserver, Boolean.FALSE);
Executor.submit(onOpen, callback, null, null, signatureParams);
return new StreamObserver<Message>() {
@Override
public void onNext(Message value) {
Resource onMessage = resourceMap.get(MessageConstants.ON_MESSAGE_RESOURCE);
List<ParamDetail> paramDetails = onMessage.getParamDetails();
BValue[] signatureParams = new BValue[paramDetails.size()];
signatureParams[0] = getConnectionParameter(onMessage, responseObserver);
BValue requestParam = getRequestParameter(onMessage, value);
if (requestParam != null) {
signatureParams[1] = requestParam;
}
CallableUnitCallback callback = new GrpcCallableUnitCallBack(responseObserver, isEmptyResponse());
Executor.submit(onMessage, callback, null, null, signatureParams);
}
@Override
public void onError(Throwable t) {
Resource onError = resourceMap.get(MessageConstants.ON_ERROR_RESOURCE);
if (onError == null) {
String message = "Error in listener service definition. onError resource does not exists";
LOG.error(message);
throw new RuntimeException(message);
}
List<ParamDetail> paramDetails = onError.getParamDetails();
BValue[] signatureParams = new BValue[paramDetails.size()];
signatureParams[0] = getConnectionParameter(onError, responseObserver);
if (paramDetails.size() != 2) {
String message = "Error in onError resource definition. It must have two input params, but have " + paramDetails.size();
LOG.error(message);
throw new RuntimeException(message);
}
BType errorType = paramDetails.get(1).getVarType();
BStruct errorStruct = MessageUtils.getConnectorError((BStructType) errorType, t);
signatureParams[1] = errorStruct;
CallableUnitCallback callback = new GrpcCallableUnitCallBack(responseObserver, Boolean.FALSE);
Executor.submit(onError, callback, null, null, signatureParams);
}
@Override
public void onCompleted() {
Resource onCompleted = resourceMap.get(MessageConstants.ON_COMPLETE_RESOURCE);
if (onCompleted == null) {
String message = "Error in listener service definition. onError resource does not exists";
LOG.error(message);
throw new RuntimeException(message);
}
List<ParamDetail> paramDetails = onCompleted.getParamDetails();
BValue[] signatureParams = new BValue[paramDetails.size()];
signatureParams[0] = getConnectionParameter(onCompleted, responseObserver);
CallableUnitCallback callback = new GrpcCallableUnitCallBack(responseObserver, Boolean.FALSE);
Executor.submit(onCompleted, callback, null, null, signatureParams);
}
};
}
Aggregations