// 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;
                                        }
                                }
			}
		}
예제 #2
0
        private void OnHitsAdded(HitsAddedResponse response)
        {
            foreach (Hit hit in response.Hits) {
                if (hit.Uri.Scheme != Uri.UriSchemeFile)
                    continue;

                Track track;

                if (hit.GetFirstProperty ("fixme:title") != null) {
                    track = new Track ();
                    track.TrackNumber = GetHitInteger (hit, "fixme:tracknumber");
                    track.TrackCount = GetHitInteger (hit, "fixme:trackcount");
                    track.Year = GetHitInteger (hit, "fixme:year");
                    track.Album = hit.GetFirstProperty ("fixme:album");
                    track.Artist = hit.GetFirstProperty ("fixme:artist");
                    track.Title = hit.GetFirstProperty ("fixme:title");
                    track.Genre = hit.GetFirstProperty ("fixme:genre");
                    track.FileName = hit.Uri.LocalPath;
                    track.Format = Path.GetExtension (track.FileName).Substring (1);
                } else {
                    track = GetTrackFromFile (hit.Uri.LocalPath);
                }

                if (track != null && track.Title != null && track.Title != String.Empty) {
                    db.AddTrack (track);
                    trackHash[track.FileName] = track;
                }
            }
        }
예제 #3
0
	private static void OnHitsAdded (HitsAddedResponse response)
	{
		lastQueryTime = DateTime.Now;

		if (count == 0 && verbose) {
			Console.WriteLine ("First hit returned in {0:0.000}s",
					   (lastQueryTime - queryStartTime).TotalSeconds);
		}

		if (verbose) {
			if (response.NumMatches >= 0)
				Console.WriteLine ("Returned latest {0} results out of total {1} matches", response.Hits.Count, response.NumMatches);
			else
				Console.WriteLine ("Returned latest {0} results", response.Hits.Count);
		}

		if (! display_hits) {
			count += response.Hits.Count;
			return;
		}

		foreach (Hit hit in response.Hits) {
			string uri = (raw_uri ?  hit.Uri.OriginalString : UriFu.EscapedUriToString (hit.Uri));
			if (verbose)
				Console.WriteLine ("  Uri: {0}", uri);
			else
				Console.WriteLine (uri);

			if (verbose) {
				SnippetRequest sreq = new SnippetRequest (query, hit);
				if (display_cached_text)
					sreq.FullText = true;

				SnippetResponse sresp = (SnippetResponse) sreq.Send ();
				Console.WriteLine ("PaUri: {0}", hit.ParentUri != null ? hit.ParentUri.ToString () : "(null)");
				if (! display_cached_text)
					Console.WriteLine (" Snip: {0}", sresp.Snippet != null ? sresp.Snippet : "(null)");
				Console.WriteLine (" Type: {0}", hit.Type);
				Console.WriteLine ("MimeT: {0}", hit.MimeType == null ? "(null)" : hit.MimeType);
				Console.WriteLine ("  Src: {0}", hit.Source);
				Console.WriteLine ("Score: {0}", hit.Score);
				if (hit.ValidTimestamp)
					Console.WriteLine (" Time: {0}", DateTimeUtil.ToString (hit.Timestamp));
				
				foreach (Property prop in hit.Properties)
					Console.WriteLine ("    {0} = '{1}'",
						prop.Key,
						(prop.Type != PropertyType.Date ? prop.Value : DateTimeUtil.ToString (StringFu.StringToDateTime (prop.Value))));
				

				if (display_cached_text) {
					Console.WriteLine ("-- Cache -------------------------------------");
					if (sresp.SnippetList.Snippets == null)
						Console.WriteLine ("(empty)");
					else {
						foreach (SnippetLine snippet_line in sresp.SnippetList.Snippets) {
							if (snippet_line == null || snippet_line.Fragments == null)
								Console.WriteLine ("(empty)");
							else
								Console.WriteLine (((Fragment)snippet_line.Fragments [0]).Text);
						}
					}
					Console.WriteLine ("----------------------------------------------");
				}
				Console.WriteLine ();
			}

			++count;
		}
	}
예제 #4
0
			public void OnHitsAdded (HitsAddedResponse response)
			{
				foreach (Hit hit in response.Hits)
					Hits [hit.Uri] = hit;
			}
예제 #5
0
		//////////////////////////

		private void OnHitsAdded (HitsAddedResponse response)
		{
			root.Add (response.Hits);
			UpdatePage ();
		}
예제 #6
0
			private void OnHitsAdded (HitsAddedResponse response)
			{
				mutex.WaitOne ();

				// cache the hits and keep them nice and safe
				Console.Error.WriteLine ("{0}: Got some hits: {1}", id, response.Hits.Count);
				foreach (Beagle.Hit bHit in response.Hits) {
					Console.Error.WriteLine ("+Hit: {0}", bHit.Uri);
					newHits.Add (hitCount++, new Xesam.Hit (hitCount, bHit, parentSession.HitFields, query));
				}

				if (newHits.Count > 0 && HitsAddedHandler != null) {
					HitsAddedHandler (id, (uint)response.Hits.Count);
				}

				mutex.ReleaseMutex ();
			}
예제 #7
0
		private void OnHitsAdded (HitsAddedResponse response)
		{
			int missed_tiles = 0;

			foreach (Hit hit in response.Hits) {
				Tile tile = TileActivatorOrg.MakeTile (hit, current_query);

				if (tile == null) {
					Console.WriteLine ("No tile found for: {0} ({1})", hit.Uri, hit.Type);
					missed_tiles ++;
					continue;
				}

				view.AddHit (tile);

				if (pages.CurrentPageWidget != panes)
					pages.CurrentPage = pages.PageNum (panes);
			}

			if (response.NumMatches != -1)
				TotalMatches += (response.NumMatches - missed_tiles);
		}