[beagle] Fix retrieving snippets when using the web-interface.
- From: Debajyoti Bera <dbera src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [beagle] Fix retrieving snippets when using the web-interface.
- Date: Mon, 17 Aug 2009 04:21:16 +0000 (UTC)
commit d14e03e8bc1f133849054e8fbcaed4256e9f88e3
Author: D Bera <dbera web gmail com>
Date: Sun Aug 16 23:59:45 2009 -0400
Fix retrieving snippets when using the web-interface.
Modifications for remote hit happens at two places now:
- remote: The server adds hit:beagle:NetworkNode=name_of_this_service
- local: The NetworkService queryable modifies hit:Source to point to itself so that future snippet requests are directed to it instead of whatever remote set hit:Source to.
.../NetworkServicesQueryable.cs | 22 ++++++++++++++++++++
beagle/beagled/Server.cs | 14 +-----------
2 files changed, 23 insertions(+), 13 deletions(-)
---
diff --git a/beagle/beagled/NetworkServicesQueryable/NetworkServicesQueryable.cs b/beagle/beagled/NetworkServicesQueryable/NetworkServicesQueryable.cs
index e2c6706..9d6842e 100644
--- a/beagle/beagled/NetworkServicesQueryable/NetworkServicesQueryable.cs
+++ b/beagle/beagled/NetworkServicesQueryable/NetworkServicesQueryable.cs
@@ -38,6 +38,27 @@ namespace Beagle.Daemon.NetworkServicesQueryable {
}
#endif
+ // Local:NetworkServices:Query() ---> Remote:backend:Query() ---> returns hits with hit:source=backend
+ // All SnippetRequests come to local, and should be rerouted to NetworkServices
+ // which will then go and fetch the snippets from remote backends.
+ // So, change the hit:source=NetworkServices and store original hit:source for later retrieving of snippets
+ public void TransformResponse (HitsAddedResponse response)
+ {
+ // Change the Hit source and add a property with the name of this remote node
+ foreach (Hit hit in response.Hits) {
+ //hit.Uri = new System.Uri (context.Request.Url.ToString () + id.ToString ());
+ hit.AddProperty (Property.NewKeyword ("beagle:OrigSource", hit ["beagle:Source"]));
+
+ // Need to replace the existing beagle:Source property
+ foreach (Property prop in hit.Properties) {
+ if (prop.Key == "beagle:Source") {
+ prop.Value = "NetworkServices";
+ break;
+ }
+ }
+ }
+ }
+
public void DoQuery (Query query, IQueryResult result, IQueryableChangeData data)
{
// Get rid of the standard UnixTransport so that we can
@@ -54,6 +75,7 @@ namespace Beagle.Daemon.NetworkServicesQueryable {
Query.HitsAdded hits_added_handler;
hits_added_handler = delegate (HitsAddedResponse response) {
//Console.WriteLine ("Adding hits added response");
+ TransformResponse(response);
result.Add (response.Hits, response.NumMatches);
};
diff --git a/beagle/beagled/Server.cs b/beagle/beagled/Server.cs
index 148e97c..0892dd9 100644
--- a/beagle/beagled/Server.cs
+++ b/beagle/beagled/Server.cs
@@ -267,19 +267,7 @@ namespace Beagle.Daemon {
// Change the Hit source and add a property with the name of this remote node
foreach (Hit hit in response.Hits) {
- //hit.Uri = new System.Uri (context.Request.Url.ToString () + id.ToString ());
- IList new_props = new Property [2];
- new_props [0] = Property.NewKeyword ("beagle:OrigSource", hit ["beagle:Source"]);
- new_props [1] = Property.NewKeyword ("beagle:NetworkNode", network_node);
- hit.AddProperty (new_props);
-
- // Need to replace the existing beagle:Source property
- foreach (Property prop in hit.Properties) {
- if (prop.Key == "beagle:Source") {
- prop.Value = "NetworkServices";
- break;
- }
- }
+ hit.AddProperty (Property.NewKeyword ("beagle:NetworkNode", network_node));
//FIXME Retrieving the files for a remote hit is disabled for now
//item_handler.RegisterHit (hit);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]