You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ra...@apache.org on 2014/06/07 20:19:21 UTC
[23/50] [abbrv] git commit: wip on service discovery
wip on service discovery
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/b79909a4
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/b79909a4
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/b79909a4
Branch: refs/heads/master
Commit: b79909a4cb17ac5fe20f12fcd5b8e0761492d1b4
Parents: 87582a9
Author: randgalt <ra...@apache.org>
Authored: Fri May 30 17:23:27 2014 -0500
Committer: randgalt <ra...@apache.org>
Committed: Fri May 30 17:23:27 2014 -0500
----------------------------------------------------------------------
.../x/rpc/idl/discovery/DiscoveryInstance.java | 21 +-
.../x/rpc/idl/discovery/DiscoveryService.java | 11 +-
.../idl/discovery/DiscoveryServiceLowLevel.java | 74 +-
.../idl/services/CuratorProjectionService.java | 11 +-
curator-x-rpc/src/main/thrift/curator.thrift | 3 +
.../generated/DiscoveryServiceLowLevel.java | 3699 +++++++++++++++++-
6 files changed, 3754 insertions(+), 65 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/b79909a4/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryInstance.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryInstance.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryInstance.java
index 94e6307..4cd67d6 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryInstance.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryInstance.java
@@ -40,15 +40,18 @@ public class DiscoveryInstance
public DiscoveryInstance(ServiceInstance<byte[]> instance)
{
- this.name = instance.getName();
- this.id = instance.getId();
- this.address = instance.getAddress();
- this.port = instance.getPort();
- this.sslPort = instance.getSslPort();
- this.payload = instance.getPayload();
- this.registrationTimeUTC = instance.getRegistrationTimeUTC();
- this.serviceType = DiscoveryInstanceType.valueOf(instance.getServiceType().name());
- this.uriSpec = instance.buildUriSpec();
+ if ( instance != null )
+ {
+ this.name = instance.getName();
+ this.id = instance.getId();
+ this.address = instance.getAddress();
+ this.port = instance.getPort();
+ this.sslPort = instance.getSslPort();
+ this.payload = instance.getPayload();
+ this.registrationTimeUTC = instance.getRegistrationTimeUTC();
+ this.serviceType = DiscoveryInstanceType.valueOf(instance.getServiceType().name());
+ this.uriSpec = instance.buildUriSpec();
+ }
}
public DiscoveryInstance(String name, String id, String address, Integer port, Integer sslPort, byte[] payload, long registrationTimeUTC, DiscoveryInstanceType serviceType, String uriSpec)
http://git-wip-us.apache.org/repos/asf/curator/blob/b79909a4/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryService.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryService.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryService.java
index edfc141..5ed9a01 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryService.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryService.java
@@ -3,6 +3,7 @@ package org.apache.curator.x.rpc.idl.discovery;
import com.facebook.swift.service.ThriftMethod;
import com.facebook.swift.service.ThriftService;
import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
import org.apache.curator.x.discovery.DownInstancePolicy;
import org.apache.curator.x.discovery.ProviderStrategy;
@@ -21,6 +22,7 @@ import org.apache.curator.x.rpc.idl.structs.CuratorProjection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
+import java.util.Collection;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -159,15 +161,15 @@ public class DiscoveryService
}
@ThriftMethod
- public List<DiscoveryInstance> getAllInstances(CuratorProjection projection, DiscoveryProviderProjection providerProjection) throws RpcException
+ public Collection<DiscoveryInstance> getAllInstances(CuratorProjection projection, DiscoveryProviderProjection providerProjection) throws RpcException
{
CuratorEntry entry = CuratorEntry.mustGetEntry(connectionManager, projection);
@SuppressWarnings("unchecked")
ServiceProvider<byte[]> serviceProvider = CuratorEntry.mustGetThing(entry, providerProjection.id, ServiceProvider.class);
try
{
- List<ServiceInstance<byte[]>> allInstances = Lists.newArrayList(serviceProvider.getAllInstances());
- return Lists.transform
+ Collection<ServiceInstance<byte[]>> allInstances = serviceProvider.getAllInstances();
+ return Collections2.transform
(
allInstances,
new Function<ServiceInstance<byte[]>, DiscoveryInstance>()
@@ -177,8 +179,7 @@ public class DiscoveryService
{
return new DiscoveryInstance(instance);
}
- }
- );
+ });
}
catch ( Exception e )
{
http://git-wip-us.apache.org/repos/asf/curator/blob/b79909a4/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryServiceLowLevel.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryServiceLowLevel.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryServiceLowLevel.java
index b08be1d..fa7dbfe 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryServiceLowLevel.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/discovery/DiscoveryServiceLowLevel.java
@@ -3,26 +3,16 @@ package org.apache.curator.x.rpc.idl.discovery;
import com.facebook.swift.service.ThriftMethod;
import com.facebook.swift.service.ThriftService;
import com.google.common.base.Function;
-import com.google.common.collect.Lists;
-import org.apache.curator.x.discovery.DownInstancePolicy;
-import org.apache.curator.x.discovery.ProviderStrategy;
+import com.google.common.collect.Collections2;
import org.apache.curator.x.discovery.ServiceDiscovery;
-import org.apache.curator.x.discovery.ServiceDiscoveryBuilder;
import org.apache.curator.x.discovery.ServiceInstance;
-import org.apache.curator.x.discovery.ServiceProvider;
-import org.apache.curator.x.discovery.strategies.RandomStrategy;
-import org.apache.curator.x.discovery.strategies.RoundRobinStrategy;
-import org.apache.curator.x.discovery.strategies.StickyStrategy;
-import org.apache.curator.x.rpc.connections.Closer;
import org.apache.curator.x.rpc.connections.ConnectionManager;
import org.apache.curator.x.rpc.connections.CuratorEntry;
import org.apache.curator.x.rpc.idl.exceptions.RpcException;
import org.apache.curator.x.rpc.idl.structs.CuratorProjection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.IOException;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
+import java.util.Collection;
@ThriftService
public class DiscoveryServiceLowLevel
@@ -82,4 +72,64 @@ public class DiscoveryServiceLowLevel
throw new RpcException(e);
}
}
+
+ @ThriftMethod
+ public Collection<String> queryForNames(CuratorProjection projection, DiscoveryProjection discoveryProjection) throws RpcException
+ {
+ CuratorEntry entry = CuratorEntry.mustGetEntry(connectionManager, projection);
+ @SuppressWarnings("unchecked")
+ ServiceDiscovery<byte[]> serviceDiscovery = CuratorEntry.mustGetThing(entry, discoveryProjection.id, ServiceDiscovery.class);
+ try
+ {
+ return serviceDiscovery.queryForNames();
+ }
+ catch ( Exception e )
+ {
+ throw new RpcException(e);
+ }
+ }
+
+ @ThriftMethod
+ public DiscoveryInstance queryForInstance(CuratorProjection projection, DiscoveryProjection discoveryProjection, String name, String id) throws RpcException
+ {
+ CuratorEntry entry = CuratorEntry.mustGetEntry(connectionManager, projection);
+ @SuppressWarnings("unchecked")
+ ServiceDiscovery<byte[]> serviceDiscovery = CuratorEntry.mustGetThing(entry, discoveryProjection.id, ServiceDiscovery.class);
+ try
+ {
+ return new DiscoveryInstance(serviceDiscovery.queryForInstance(name, id));
+ }
+ catch ( Exception e )
+ {
+ throw new RpcException(e);
+ }
+ }
+
+ @ThriftMethod
+ public Collection<DiscoveryInstance> queryForInstances(CuratorProjection projection, DiscoveryProjection discoveryProjection, String name) throws RpcException
+ {
+ CuratorEntry entry = CuratorEntry.mustGetEntry(connectionManager, projection);
+ @SuppressWarnings("unchecked")
+ ServiceDiscovery<byte[]> serviceDiscovery = CuratorEntry.mustGetThing(entry, discoveryProjection.id, ServiceDiscovery.class);
+ try
+ {
+ Collection<ServiceInstance<byte[]>> instances = serviceDiscovery.queryForInstances(name);
+ return Collections2.transform
+ (
+ instances,
+ new Function<ServiceInstance<byte[]>, DiscoveryInstance>()
+ {
+ @Override
+ public DiscoveryInstance apply(ServiceInstance<byte[]> instance)
+ {
+ return new DiscoveryInstance(instance);
+ }
+ }
+ );
+ }
+ catch ( Exception e )
+ {
+ throw new RpcException(e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/curator/blob/b79909a4/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/services/CuratorProjectionService.java
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/services/CuratorProjectionService.java b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/services/CuratorProjectionService.java
index b7a1145..d218e7b 100644
--- a/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/services/CuratorProjectionService.java
+++ b/curator-x-rpc/src/main/java/org/apache/curator/x/rpc/idl/services/CuratorProjectionService.java
@@ -22,6 +22,7 @@ package org.apache.curator.x.rpc.idl.services;
import com.facebook.swift.service.ThriftMethod;
import com.facebook.swift.service.ThriftService;
import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.api.*;
@@ -422,7 +423,7 @@ public class CuratorProjectionService
}
@ThriftMethod
- public List<RpcParticipant> getLeaderParticipants(CuratorProjection projection, LeaderProjection leaderProjection) throws RpcException
+ public Collection<RpcParticipant> getLeaderParticipants(CuratorProjection projection, LeaderProjection leaderProjection) throws RpcException
{
try
{
@@ -430,14 +431,18 @@ public class CuratorProjectionService
LeaderLatch leaderLatch = CuratorEntry.mustGetThing(entry, leaderProjection.id, LeaderLatch.class);
Collection<Participant> participants = leaderLatch.getParticipants();
- return Lists.transform(Lists.newArrayList(participants), new Function<Participant, RpcParticipant>()
+ return Collections2.transform
+ (
+ participants,
+ new Function<Participant, RpcParticipant>()
{
@Override
public RpcParticipant apply(Participant participant)
{
return new RpcParticipant(participant.getId(), participant.isLeader());
}
- });
+ }
+ );
}
catch ( Exception e )
{
http://git-wip-us.apache.org/repos/asf/curator/blob/b79909a4/curator-x-rpc/src/main/thrift/curator.thrift
----------------------------------------------------------------------
diff --git a/curator-x-rpc/src/main/thrift/curator.thrift b/curator-x-rpc/src/main/thrift/curator.thrift
index 1008b32..11e5edb 100644
--- a/curator-x-rpc/src/main/thrift/curator.thrift
+++ b/curator-x-rpc/src/main/thrift/curator.thrift
@@ -278,6 +278,9 @@ service DiscoveryService {
}
service DiscoveryServiceLowLevel {
+ DiscoveryInstance queryForInstance(1: CuratorProjection projection, 2: DiscoveryProjection discoveryProjection, 3: string name, 4: string id) throws (1: CuratorException ex1);
+ list<DiscoveryInstance> queryForInstances(1: CuratorProjection projection, 2: DiscoveryProjection discoveryProjection, 3: string name) throws (1: CuratorException ex1);
+ list<string> queryForNames(1: CuratorProjection projection, 2: DiscoveryProjection discoveryProjection) throws (1: CuratorException ex1);
void registerInstance(1: CuratorProjection projection, 2: DiscoveryProjection discoveryProjection, 3: DiscoveryInstance instance) throws (1: CuratorException ex1);
void unregisterInstance(1: CuratorProjection projection, 2: DiscoveryProjection discoveryProjection, 3: DiscoveryInstance instance) throws (1: CuratorException ex1);
void updateInstance(1: CuratorProjection projection, 2: DiscoveryProjection discoveryProjection, 3: DiscoveryInstance instance) throws (1: CuratorException ex1);