Search in sources :

Example 1 with ServiceMethodNotFoundException

use of org.bimserver.shared.pb.ServiceMethodNotFoundException in project BIMserver by opensourceBIM.

the class Handler method run.

@Override
public void run() {
    running = true;
    try {
        DataInputStream dis = new DataInputStream(socket.getInputStream());
        String token = dis.readUTF();
        ReflectiveRpcChannel reflectiveRpcChannel = new ReflectiveRpcChannel(ServiceInterface.class, serviceFactory.get(token, AccessMethod.INTERNAL).get(ServiceInterface.class), protocolBuffersMetaData, servicesMap);
        while (running) {
            String serviceName = dis.readUTF();
            String methodName = dis.readUTF();
            MethodDescriptorContainer methodDescriptorContainer;
            try {
                methodDescriptorContainer = protocolBuffersMetaData.getMethod(serviceName, methodName);
                Builder newBuilder = DynamicMessage.newBuilder(methodDescriptorContainer.getInputDescriptor());
                newBuilder.mergeDelimitedFrom(dis);
                DynamicMessage request = newBuilder.build();
                Message response = reflectiveRpcChannel.callBlockingMethod(methodDescriptorContainer, request);
                response.writeDelimitedTo(socket.getOutputStream());
            } catch (ServiceNotFoundException e) {
                // TODO should return a usable pb message for the user
                LOGGER.error("", e);
            } catch (ServiceMethodNotFoundException e) {
                // TODO should return a usable pb message for the user
                LOGGER.error("", e);
            }
        }
    } catch (IOException e) {
        LOGGER.error("", e);
    } catch (UserException e) {
        LOGGER.error("", e);
    }
    socketNotificationsClient.notifyDisconnect();
}
Also used : ReflectiveRpcChannel(org.bimserver.shared.pb.ReflectiveRpcChannel) MethodDescriptorContainer(org.bimserver.shared.pb.ProtocolBuffersMetaData.MethodDescriptorContainer) DynamicMessage(com.google.protobuf.DynamicMessage) Message(com.google.protobuf.Message) ServiceNotFoundException(org.bimserver.shared.pb.ServiceNotFoundException) ServiceInterface(org.bimserver.shared.interfaces.ServiceInterface) Builder(com.google.protobuf.DynamicMessage.Builder) DynamicMessage(com.google.protobuf.DynamicMessage) IOException(java.io.IOException) UserException(org.bimserver.shared.exceptions.UserException) DataInputStream(java.io.DataInputStream) ServiceMethodNotFoundException(org.bimserver.shared.pb.ServiceMethodNotFoundException)

Aggregations

DynamicMessage (com.google.protobuf.DynamicMessage)1 Builder (com.google.protobuf.DynamicMessage.Builder)1 Message (com.google.protobuf.Message)1 DataInputStream (java.io.DataInputStream)1 IOException (java.io.IOException)1 UserException (org.bimserver.shared.exceptions.UserException)1 ServiceInterface (org.bimserver.shared.interfaces.ServiceInterface)1 MethodDescriptorContainer (org.bimserver.shared.pb.ProtocolBuffersMetaData.MethodDescriptorContainer)1 ReflectiveRpcChannel (org.bimserver.shared.pb.ReflectiveRpcChannel)1 ServiceMethodNotFoundException (org.bimserver.shared.pb.ServiceMethodNotFoundException)1 ServiceNotFoundException (org.bimserver.shared.pb.ServiceNotFoundException)1