More beacon additions and small fixes

This commit is contained in:
Christopher Schnick
2022-05-28 23:52:08 +02:00
parent 628e322ca3
commit 948dcf33ef
25 changed files with 449 additions and 74 deletions
@@ -168,6 +168,10 @@ public class BeaconClient implements AutoCloseable {
System.out.println(read.toPrettyString());
}
if (read.isMissingNode()) {
throw new ConnectorException("Received unexpected EOF");
}
var se = parseServerError(read);
if (se.isPresent()) {
se.get().throwError();
@@ -75,12 +75,17 @@ public class BeaconServer {
public static boolean tryStart() throws Exception {
var custom = BeaconConfig.getCustomExecCommand();
if (custom != null) {
System.out.println("Starting fork: " + custom);
startFork(custom);
return true;
}
var daemonExecutable = getDaemonExecutable();
if (daemonExecutable.isPresent()) {
if (BeaconConfig.debugEnabled()) {
System.out.println("Starting daemon executable: " + daemonExecutable.get());
}
// Tell daemon that we launched from an external tool
new ProcessBuilder(daemonExecutable.get().toString(), "--external")
.redirectErrorStream(true)
@@ -3,6 +3,7 @@ package io.xpipe.beacon.exchange;
import io.xpipe.beacon.message.RequestMessage;
import io.xpipe.beacon.message.ResponseMessage;
import io.xpipe.core.source.DataSourceConfigInstance;
import io.xpipe.core.source.DataSourceId;
import io.xpipe.core.source.DataSourceReference;
import lombok.Builder;
import lombok.NonNull;
@@ -19,21 +20,13 @@ public class EditExecuteExchange implements MessageExchange<EditExecuteExchange.
return "editExecute";
}
@Override
public Class<EditExecuteExchange.Request> getRequestClass() {
return EditExecuteExchange.Request.class;
}
@Override
public Class<EditExecuteExchange.Response> getResponseClass() {
return EditExecuteExchange.Response.class;
}
@Jacksonized
@Builder
@Value
public static class Request implements RequestMessage {
@NonNull DataSourceReference ref;
@NonNull
DataSourceReference ref;
@NonNull
DataSourceConfigInstance config;
}
@@ -42,5 +35,6 @@ public class EditExecuteExchange implements MessageExchange<EditExecuteExchange.
@Builder
@Value
public static class Response implements ResponseMessage {
DataSourceId id;
}
}
@@ -20,12 +20,19 @@ public interface MessageExchange<RQ extends RequestMessage, RP extends ResponseM
@SneakyThrows
@SuppressWarnings("unchecked")
default Class<RQ> getRequestClass() {
var name = getClass().getName() + "$Request";
var c = getClass().getSuperclass();
var name = (MessageExchange.class.isAssignableFrom(c) ? c : getClass()).getName() + "$Request";
return (Class<RQ>) Class.forName(name);
}
/**
* Returns the response class, needed for serialization.
*/
Class<RP> getResponseClass();
@SneakyThrows
@SuppressWarnings("unchecked")
default Class<RP> getResponseClass() {
var c = getClass().getSuperclass();
var name = (MessageExchange.class.isAssignableFrom(c) ? c : getClass()).getName() + "$Response";
return (Class<RP>) Class.forName(name);
}
}
@@ -0,0 +1,30 @@
package io.xpipe.beacon.exchange;
import io.xpipe.beacon.message.RequestMessage;
import io.xpipe.beacon.message.ResponseMessage;
import lombok.Builder;
import lombok.NonNull;
import lombok.Value;
import lombok.extern.jackson.Jacksonized;
public class RemoveCollectionExchange implements MessageExchange<RemoveCollectionExchange.Request, RemoveCollectionExchange.Response> {
@Override
public String getId() {
return "removeCollection";
}
@Jacksonized
@Builder
@Value
public static class Request implements RequestMessage {
@NonNull
String collectionName;
}
@Jacksonized
@Builder
@Value
public static class Response implements ResponseMessage {
}
}
@@ -0,0 +1,34 @@
package io.xpipe.beacon.exchange;
import io.xpipe.beacon.message.RequestMessage;
import io.xpipe.beacon.message.ResponseMessage;
import io.xpipe.core.source.DataSourceId;
import io.xpipe.core.source.DataSourceReference;
import lombok.Builder;
import lombok.NonNull;
import lombok.Value;
import lombok.extern.jackson.Jacksonized;
public class RemoveEntryExchange implements MessageExchange<RemoveEntryExchange.Request, RemoveEntryExchange.Response> {
@Override
public String getId() {
return "removeEntry";
}
@Jacksonized
@Builder
@Value
public static class Request implements RequestMessage {
@NonNull
DataSourceReference ref;
}
@Jacksonized
@Builder
@Value
public static class Response implements ResponseMessage {
@NonNull
DataSourceId id;
}
}
@@ -0,0 +1,32 @@
package io.xpipe.beacon.exchange;
import io.xpipe.beacon.message.RequestMessage;
import io.xpipe.beacon.message.ResponseMessage;
import lombok.Builder;
import lombok.NonNull;
import lombok.Value;
import lombok.extern.jackson.Jacksonized;
public class RenameCollectionExchange implements MessageExchange<RenameCollectionExchange.Request, RenameCollectionExchange.Response> {
@Override
public String getId() {
return "renameCollection";
}
@Jacksonized
@Builder
@Value
public static class Request implements RequestMessage {
@NonNull
String collectionName;
@NonNull
String newName;
}
@Jacksonized
@Builder
@Value
public static class Response implements ResponseMessage {
}
}
@@ -0,0 +1,36 @@
package io.xpipe.beacon.exchange;
import io.xpipe.beacon.message.RequestMessage;
import io.xpipe.beacon.message.ResponseMessage;
import io.xpipe.core.source.DataSourceId;
import io.xpipe.core.source.DataSourceReference;
import lombok.Builder;
import lombok.NonNull;
import lombok.Value;
import lombok.extern.jackson.Jacksonized;
public class RenameEntryExchange implements MessageExchange<RenameEntryExchange.Request, RenameEntryExchange.Response> {
@Override
public String getId() {
return "renameEntry";
}
@Jacksonized
@Builder
@Value
public static class Request implements RequestMessage {
@NonNull
DataSourceReference ref;
@NonNull
String newName;
}
@Jacksonized
@Builder
@Value
public static class Response implements ResponseMessage {
@NonNull DataSourceId newId;
}
}
@@ -0,0 +1,34 @@
package io.xpipe.beacon.exchange.api;
import io.xpipe.beacon.exchange.MessageExchange;
import io.xpipe.beacon.message.RequestMessage;
import io.xpipe.beacon.message.ResponseMessage;
import io.xpipe.core.source.DataSourceReference;
import lombok.Builder;
import lombok.NonNull;
import lombok.Value;
import lombok.extern.jackson.Jacksonized;
public class QueryRawDataExchange implements MessageExchange<QueryRawDataExchange.Request, QueryRawDataExchange.Response> {
@Override
public String getId() {
return "queryRawData";
}
@Jacksonized
@Builder
@Value
public static class Request implements RequestMessage {
@NonNull
DataSourceReference ref;
int maxBytes;
}
@Jacksonized
@Builder
@Value
public static class Response implements ResponseMessage {
}
}
@@ -16,16 +16,6 @@ public class QueryTextDataExchange implements MessageExchange<QueryTextDataExcha
return "queryTextData";
}
@Override
public Class<QueryTextDataExchange.Request> getRequestClass() {
return QueryTextDataExchange.Request.class;
}
@Override
public Class<QueryTextDataExchange.Response> getResponseClass() {
return QueryTextDataExchange.Response.class;
}
@Jacksonized
@Builder
@Value
@@ -6,6 +6,7 @@ import io.xpipe.beacon.message.ResponseMessage;
import io.xpipe.core.source.DataSourceConfigInstance;
import io.xpipe.core.source.DataSourceId;
import io.xpipe.core.source.DataSourceReference;
import io.xpipe.core.source.DataSourceType;
import lombok.Builder;
import lombok.NonNull;
import lombok.Value;
@@ -18,16 +19,6 @@ public class ConvertExchange implements MessageExchange<ConvertExchange.Request,
return "convert";
}
@Override
public Class<ConvertExchange.Request> getRequestClass() {
return ConvertExchange.Request.class;
}
@Override
public Class<ConvertExchange.Response> getResponseClass() {
return ConvertExchange.Response.class;
}
@Jacksonized
@Builder
@Value
@@ -35,15 +26,18 @@ public class ConvertExchange implements MessageExchange<ConvertExchange.Request,
@NonNull
DataSourceReference ref;
@NonNull DataSourceId copyId;
String newProvider;
@NonNull
DataSourceConfigInstance config;
DataSourceType newType;
DataSourceId copyId;
}
@Jacksonized
@Builder
@Value
public static class Response implements ResponseMessage {
@NonNull
DataSourceConfigInstance config;
}
}
@@ -0,0 +1,35 @@
package io.xpipe.beacon.exchange.cli;
import io.xpipe.beacon.exchange.MessageExchange;
import io.xpipe.beacon.exchange.data.ProviderEntry;
import io.xpipe.beacon.message.RequestMessage;
import io.xpipe.beacon.message.ResponseMessage;
import io.xpipe.core.source.DataSourceType;
import lombok.Builder;
import lombok.NonNull;
import lombok.Value;
import lombok.extern.jackson.Jacksonized;
import java.util.List;
import java.util.Map;
public class ProviderListExchange implements MessageExchange<ProviderListExchange.Request, ProviderListExchange.Response> {
@Override
public String getId() {
return "providerList";
}
@Jacksonized
@Builder
@Value
public static class Request implements RequestMessage {
}
@Jacksonized
@Builder
@Value
public static class Response implements ResponseMessage {
@NonNull Map<DataSourceType, List<ProviderEntry>> entries;
}
}
@@ -5,7 +5,6 @@ import io.xpipe.beacon.message.RequestMessage;
import io.xpipe.beacon.message.ResponseMessage;
import io.xpipe.core.source.DataSourceConfigInstance;
import io.xpipe.core.source.DataSourceReference;
import io.xpipe.core.store.DataStore;
import lombok.Builder;
import lombok.NonNull;
import lombok.Value;
@@ -21,16 +20,6 @@ public class WriteExecuteExchange implements MessageExchange<WriteExecuteExchang
return "writeExecute";
}
@Override
public Class<WriteExecuteExchange.Request> getRequestClass() {
return WriteExecuteExchange.Request.class;
}
@Override
public Class<WriteExecuteExchange.Response> getResponseClass() {
return WriteExecuteExchange.Response.class;
}
@Jacksonized
@Builder
@Value
@@ -38,7 +27,6 @@ public class WriteExecuteExchange implements MessageExchange<WriteExecuteExchang
@NonNull
DataSourceReference ref;
DataStore dataStore;
@NonNull
DataSourceConfigInstance config;
}
@@ -5,7 +5,7 @@ import io.xpipe.beacon.message.RequestMessage;
import io.xpipe.beacon.message.ResponseMessage;
import io.xpipe.core.source.DataSourceConfigInstance;
import io.xpipe.core.source.DataSourceReference;
import io.xpipe.core.store.DataStore;
import io.xpipe.core.store.StreamDataStore;
import lombok.Builder;
import lombok.NonNull;
import lombok.Value;
@@ -21,22 +21,13 @@ public class WritePreparationExchange implements MessageExchange<WritePreparatio
return "writePreparation";
}
@Override
public Class<WritePreparationExchange.Request> getRequestClass() {
return WritePreparationExchange.Request.class;
}
@Override
public Class<WritePreparationExchange.Response> getResponseClass() {
return WritePreparationExchange.Response.class;
}
@Jacksonized
@Builder
@Value
public static class Request implements RequestMessage {
String type;
String output;
@NonNull
StreamDataStore output;
@NonNull
DataSourceReference ref;
}
@@ -45,8 +36,6 @@ public class WritePreparationExchange implements MessageExchange<WritePreparatio
@Builder
@Value
public static class Response implements ResponseMessage {
DataStore store;
@NonNull
DataSourceConfigInstance config;
}
@@ -0,0 +1,14 @@
package io.xpipe.beacon.exchange.data;
import lombok.Builder;
import lombok.Value;
import lombok.extern.jackson.Jacksonized;
@Value
@Jacksonized
@Builder
public class ProviderEntry {
String id;
String description;
boolean hidden;
}
+6
View File
@@ -40,7 +40,13 @@ module io.xpipe.beacon {
StoreStreamExchange,
EditPreparationExchange,
EditExecuteExchange,
RemoveEntryExchange,
RemoveCollectionExchange,
RenameCollectionExchange,
RenameEntryExchange,
ProviderListExchange,
ConvertExchange,
QueryRawDataExchange,
QueryTableDataExchange,
VersionExchange;
}