use of org.ballerinalang.connector.api.Resource in project ballerina by ballerina-lang.
the class WebSocketDispatcher method dispatchBinaryMessage.
public static void dispatchBinaryMessage(WebSocketOpenConnectionInfo connectionInfo, WebSocketBinaryMessage binaryMessage) {
WebSocketService wsService = connectionInfo.getService();
Resource onBinaryMessageResource = wsService.getResourceByName(WebSocketConstants.RESOURCE_NAME_ON_BINARY_MESSAGE);
if (onBinaryMessageResource == null) {
return;
}
List<ParamDetail> paramDetails = onBinaryMessageResource.getParamDetails();
BValue[] bValues = new BValue[paramDetails.size()];
bValues[0] = connectionInfo.getWsConnection();
BStruct wsBinaryFrame = wsService.createBinaryFrameStruct();
byte[] data = binaryMessage.getByteArray();
wsBinaryFrame.setBlobField(0, data);
if (binaryMessage.isFinalFragment()) {
wsBinaryFrame.setBooleanField(0, 1);
} else {
wsBinaryFrame.setBooleanField(0, 0);
}
bValues[1] = wsBinaryFrame;
// TODO handle BallerinaConnectorException
Executor.submit(onBinaryMessageResource, new WebSocketEmptyCallableUnitCallback(), null, null, bValues);
}
use of org.ballerinalang.connector.api.Resource in project ballerina by ballerina-lang.
the class WebSocketDispatcher method dispatchPongMessage.
private static void dispatchPongMessage(WebSocketOpenConnectionInfo connectionInfo, WebSocketControlMessage controlMessage) {
WebSocketService wsService = connectionInfo.getService();
Resource onPongMessageResource = wsService.getResourceByName(WebSocketConstants.RESOURCE_NAME_ON_PONG);
if (onPongMessageResource == null) {
return;
}
List<ParamDetail> paramDetails = onPongMessageResource.getParamDetails();
BValue[] bValues = new BValue[paramDetails.size()];
bValues[0] = connectionInfo.getWsConnection();
BStruct wsPongFrame = wsService.createPongFrameStruct();
byte[] data = controlMessage.getByteArray();
wsPongFrame.setBlobField(0, data);
bValues[1] = wsPongFrame;
// TODO handle BallerinaConnectorException
Executor.submit(onPongMessageResource, new WebSocketEmptyCallableUnitCallback(), null, null, bValues);
}
use of org.ballerinalang.connector.api.Resource 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.connector.api.Resource 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.connector.api.Resource 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);
}
Aggregations