/* $Id$ * * Copyright 2007-2008 Cisco Systems Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy * of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ using System; using System.Collections.Generic; using etch.examples.distmap.types.DistributedHashTable; ///Your custom implementation of BaseDistributedHashTableServer. Add methods here to provide ///implementation of messages from the client. namespace etch.examples.distmap { ///Implementation for ImplDistributedHashTableServer public class ImplDistributedHashTableServer : BaseDistributedHashTableServer { /// Constructs the ImplDistributedHashTableServer. /// a connection to the client session. Use this to /// send a message to the client. /// public ImplDistributedHashTableServer(RemoteDistributedHashTableClient client, IDictionary map) { this.map = map; } private IDictionary map; /// /// Gets all elements in DHT /// /// An array of entries public override Entry[] getAll() { lock (map) { Entry[] list = new Entry[map.Count]; int index = 0; foreach (string str in map.Keys) { list[index++] = new Entry(str, map[str]); } return list; } } /// /// Gets an object from DHT /// /// /// public override object getObject(string key) { object value; if (!map.TryGetValue(key, out value)) { Console.WriteLine(" {0} not found in DHT ", key); } return value; } /// /// Puts object in Map /// /// /// /// public override object putObject(string key, object value) { map.Add(key, value); return value; } /// /// Removes Object from DHT /// /// /// public override object removeObject(string key) { map.Remove(key); return null; } /// /// Gets Size of DHT /// /// public override int? size() { return map.Count; } } }