Replace |Empty| with |ShufflerResponse|.
It turns out that the so-called "well-known types" of protocol
buffers are not compatible with "Proto-Lite"--they require the
full heavy proto. But we want to use Proto-Lite on the client
device. So we cannot use |Empty| in the Shuffler API.
- I also took the opportunity to fix up some log levels.
Change-Id: I72ab149eeb10018952b086db0cd90aafe50b0ab6
diff --git a/encoder/shuffler_client.cc b/encoder/shuffler_client.cc
index a8bc4d5..80f893c 100644
--- a/encoder/shuffler_client.cc
+++ b/encoder/shuffler_client.cc
@@ -53,7 +53,7 @@
temp_context.reset(new grpc::ClientContext());
context = temp_context.get();
}
- google::protobuf::Empty resp;
+ shuffler::ShufflerResponse resp;
return shuffler_stub_->Process(context, encrypted_message, &resp);
}
diff --git a/shuffler/shuffler.proto b/shuffler/shuffler.proto
index 4a15578..8c4a92e 100644
--- a/shuffler/shuffler.proto
+++ b/shuffler/shuffler.proto
@@ -21,11 +21,13 @@
option go_package = "shuffler";
import "encrypted_message.proto";
-import "google/protobuf/empty.proto";
+
+message ShufflerResponse {
+}
// Interface exported by the Shuffler service.
service Shuffler {
// Processes an incoming Envelope from the encoder.
// The EncryptedMessage should contain the encryption of an |Envelope|.
- rpc Process(EncryptedMessage) returns (google.protobuf.Empty) {}
+ rpc Process(EncryptedMessage) returns (ShufflerResponse) {}
}
diff --git a/shuffler/src/dispatcher/dispatcher.go b/shuffler/src/dispatcher/dispatcher.go
index cc04479..35ec7c2 100644
--- a/shuffler/src/dispatcher/dispatcher.go
+++ b/shuffler/src/dispatcher/dispatcher.go
@@ -259,7 +259,7 @@
d.analyzerTransport.close()
}
- glog.V(4).Infof("Dispatcher sleeping for [%v]...", waitTime)
+ glog.V(5).Infof("Dispatcher sleeping for [%v]...", waitTime)
time.Sleep(waitTime)
if shouldDisconnectWhileSleeping {
@@ -297,7 +297,7 @@
panic("Shuffler config is nil.")
}
- glog.V(4).Infoln("Start dispatching ...")
+ glog.V(5).Infoln("Start dispatching ...")
keys, err := d.store.GetKeys()
if err != nil {
glog.Errorf("GetKeys() failed with error: %v", err)
@@ -326,7 +326,7 @@
// thresholding: We will not dispatch a bucket unless GetNumObservations()
// returns a value at least as large as the threshold.
bucketSize, err := d.store.GetNumObservations(key)
- glog.V(4).Infof("Bucket size from store: [%d]", bucketSize)
+ glog.V(5).Infof("Bucket size from store: [%d]", bucketSize)
if err != nil {
glog.Errorf("GetNumObservations() failed for key: %v with error: %v", key, err)
continue
diff --git a/shuffler/src/receiver/receiver.go b/shuffler/src/receiver/receiver.go
index 4580d58..ab067c2 100644
--- a/shuffler/src/receiver/receiver.go
+++ b/shuffler/src/receiver/receiver.go
@@ -30,7 +30,6 @@
"time"
"github.com/golang/glog"
- "github.com/golang/protobuf/ptypes/empty"
"golang.org/x/net/context"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
@@ -73,12 +72,15 @@
// a random order. During dispatching, the records get sent to Analyzer and
// deleted from Shuffler.
func (s *ShufflerServer) Process(ctx context.Context,
- encryptedMessage *cobalt.EncryptedMessage) (*empty.Empty, error) {
+ encryptedMessage *cobalt.EncryptedMessage) (*shuffler.ShufflerResponse, error) {
glog.V(4).Infoln("Process() is invoked.")
envelope, err := s.decryptEnvelope(encryptedMessage)
if err != nil {
return nil, err
}
+ if len(envelope.GetBatch()) == 0 {
+ return nil, grpc.Errorf(codes.InvalidArgument, "Empty envelope.")
+ }
// TODO(ukode): Some notes here for future development:
// Check the recipient first. If the request is intended for another Shuffler
@@ -97,7 +99,7 @@
}
glog.V(4).Infoln("Process() done, returning OK.")
- return &empty.Empty{}, nil
+ return &shuffler.ShufflerResponse{}, nil
}
// Run serves incoming encoder requests and blocks forever unless a fatal error