public ForwardingLayer(Machine machine) { m_transport = machine.Transport; m_topology = machine.Topology; m_flm = machine.Interface_flm; m_ReloadConfig = machine.ReloadConfig; }
public TopologyPlugin(Machine machine) { m_id = machine.ReloadConfig.LocalNodeID; m_transport = machine.Transport; m_DispatcherQueue = machine.ReloadConfig.DispatcherQueue; m_ReloadConfig = machine.ReloadConfig; storage = new StorageModul(m_ReloadConfig); }
public RoutingTable(Node local_node, Machine machine) { m_ReloadConfig = machine.ReloadConfig; m_flm = machine.Interface_flm; m_DispatcherQueue = machine.ReloadConfig.DispatcherQueue; m_transport = machine.Transport; m_local_node = local_node; m_successors = new List<NodeId>(); m_predecessors = new List<NodeId>(); m_fingerSuccessors = new List<NodeId>(); for (int i = 0; i < 128; i++) m_FingerTable.Add(new FTableEntry() { Finger = new ResourceId(local_node.Id + ReloadGlobals.BigIntPow2Array[i]), dtLastSuccessfullFinger = DateTime.MinValue, nodestate = NodeState.unknown }); /* A peer MUST NOT enter itself in its successor or predecessor table and instead should leave the entries empty. */ }
public void AppProcedure(MessageTransport transport, List<FetchKindResponse> kindRes) { /* Acutally, the ACL has no appprocedure */ return; }
/// <summary> /// Inits the Usage Manager. /// </summary> /// <param name="machine">The state machine for RELOAD overlay.</param> public void Init(Machine machine) { localNode = machine.Topology.LocalNode; m_Transport = machine.Transport; m_ReloadConfig = machine.ReloadConfig; m_DispatcherQueue = machine.ReloadConfig.DispatcherQueue; usages = new Dictionary<Usage_Code_Point, IUsage>(); m_ArrayManager = new ArrayManager(); }
public void AppProcedure(MessageTransport transport, List<FetchKindResponse> kindResponse) { throw new NotImplementedException(); }
public void AppProcedure(MessageTransport transport, List<FetchKindResponse> kindRes) { UInt32 aclKindId = new AccessList(myManager).KindId; var responses = new List<FetchKindResponse>(); responses.AddRange(kindRes); var disCoList = new List<DisCoRegistration>(); var aclList = new List<AccessList>(); /* Extract all stored data for this usage */ var rmIndice = new List<int>(); foreach (FetchKindResponse fkr in responses) { if (fkr.kind == aclKindId) { foreach (StoredData sd in fkr.values) aclList.Add((AccessList)sd.Value.GetUsageValue); kindRes.Remove(fkr); } if (fkr.kind == KindId) { foreach (StoredData sd in fkr.values) disCoList.Add((DisCoRegistration)sd.Value.GetUsageValue); kindRes.Remove(fkr); } } /* begin AppProcedure */ // TODO validation of DisCo-Regs with ACL /* Choose topologically closest focus */ if (disCoList.Count > 0) { /* MOK for demo */ //var coordinates = new List<int>(); foreach (DisCoRegistration dr in disCoList) { int remoteCoords = int.Parse(dr.Data.Coordinate); NodeId focusId = dr.data.node_id; if (remoteCoords == myManager.m_ReloadConfig.MyCoordinate) { myManager.m_ReloadConfig.MyFocus = focusId; Arbiter.Activate(myManager.m_DispatcherQueue, new IterativeTask<Destination>(new Destination(focusId), transport.AppAttachProcedure)); } else { myManager.m_ReloadConfig.Logger(ReloadGlobals.TRACEFLAGS.T_WARNING, "Focus not in my coords"); } } } }
public void AppProcedure(FetchKindResponse kindRes, MessageTransport transport) { myManager.m_ReloadConfig.Logger(ReloadGlobals.TRACEFLAGS.T_ERROR, "AppProcedure: "); List<RedirServiceProviderData> ProviderList = new List<RedirServiceProviderData>(); List<StoredData> storedDatas = kindRes.values; RedirServiceProvider provider = null; foreach (StoredData storedData in storedDatas) { IUsage usage = storedData.Value.GetUsageValue; provider = (RedirServiceProvider)usage; ProviderList.Add(provider.Data); myManager.m_ReloadConfig.Logger(ReloadGlobals.TRACEFLAGS.T_ERROR, "AppProcedure: " + provider.Report()); } //if (myManager != null && myManager.m_ReloadConfig.callback != null && provider != null) // myManager.m_ReloadConfig.callback(new ResourceId(provider.ResourceName), ProviderList); //TODO: provider.ResourceName MUST (should) be the same for all providers in ProviderList }
public void AppProcedure(MessageTransport transport, List<FetchKindResponse> kindRes) // TODO: new AppProcedure { //throw new ArgumentException(String.Format("TODO: new AppProcedure")); kindRes.Clear(); //foreach (FetchKindResponse fkr in kindRes) //kindRes.Remove(fkr); }
public void AppProcedure(MessageTransport transport, List<FetchKindResponse> fetchKindResponses) { /* Select KindResponse returned for this usage */ FetchKindResponse sip = null; var responses = new List<FetchKindResponse>(); responses.AddRange(fetchKindResponses); foreach (FetchKindResponse fkr in responses ) { if (fkr.kind == KindId) { sip = fkr; fetchKindResponses.Remove(fkr); } } List<StoredData> storedDatas = sip.values; foreach (StoredData storedData in storedDatas) { IUsage usage = storedData.Value.GetUsageValue; SipRegistration sr = (SipRegistration)usage; switch (sr.Type) { case SipRegistrationType.sip_registration_uri: var keys = new List<string>(); keys.Add(storedData.Value.dictionary_entry.key); StoredDataSpecifier specifier = myManager.createSpecifier( sr.KindId, sr.Data.sip_uri); var specifiers = new List<StoredDataSpecifier>(); specifiers.Add(specifier); Arbiter.Activate(myManager.m_DispatcherQueue, new IterativeTask<string, List<StoredDataSpecifier>>( sr.Data.sip_uri, specifiers, transport.Fetch)); break; case SipRegistrationType.sip_registration_route: //-- joscha TODO: keep this change local //Arbiter.Activate(myManager.m_DispatcherQueue, // new IterativeTask<Destination>(sr.Data.destination_list[0], // transport.AppAttachProcedure)); break; } } }
public void AppProcedure(MessageTransport transport, List<FetchKindResponse> fetchKindResponses) { #if MAKE_IMAGE_STORE_APPATTACH // Make AppAttach FetchKindResponse fetchResponse = null; // Pick up a fetch response with the own kind id var _fetchKindResponses = new List<FetchKindResponse>(fetchKindResponses); // copy of fetchKindResponses foreach (FetchKindResponse fetchKindResponse in _fetchKindResponses) { if (fetchResponse.kind == this.KindId) { fetchResponse = fetchKindResponse; break; } } // Release all fetch responses fetchKindResponses.Clear(); if (fetchResponse == null) return; // Make an AppAttach request for every attached usage var storedDatas = fetchResponse.values; foreach (StoredData storedData in storedDatas) { ImageStoreUsage usage = (ImageStoreUsage)storedData.Value.GetUsageValue; Arbiter.Activate(UsageManager.m_DispatcherQueue, new IterativeTask<Destination>( new Destination(usage.Data.NodeId), transport.AppAttachProcedure)); } #else // Don't make AppAttach fetchKindResponses.Clear(); #endif }
public bool Init() { try { if (ReloadGlobals.IgnoreSSLErrors) IgnoreSSLErrors(); m_transport = new MessageTransport(); if (ReloadGlobals.TLS) m_interface_flm = new ReloadFLM(ReloadConfig); else m_interface_flm = new SimpleFLM(ReloadConfig); ReloadConfig.Statistics.SetParams(m_interface_flm); m_interface_flm.ReloadFLMEventHandler += new ReloadFLMEvent(m_transport.rfm_ReloadFLMEventHandler); ReloadConfig.State = ReloadConfig.RELOAD_State.Init; stateUpdates(ReloadConfig.RELOAD_State.Init); ReloadConfigResolve resolve = new ReloadConfigResolve(ReloadConfig); resolve.ReadConfig(); if (ReloadGlobals.TLS) resolve.EnrollmentProcedure(); else resolve.SimpleNodeIdRequest(); m_interface_flm.Init(); m_ReloadConfig.AccessController = new AccessController(m_ReloadConfig); m_topology = new TopologyPlugin(this); if (!m_topology.Init(this)) return false; m_forwarding = new ForwardingLayer(this); m_transport.Init(this); //ReloadConfig.State = ReloadConfig.RELOAD_State.Configured; //stateUpdates(ReloadConfig.RELOAD_State.Configured); BootStrapConfig(); m_ReloadConfig.StartJoining = DateTime.Now; if (m_ReloadConfig.IamClient) m_ReloadConfig.StartJoinMobile = DateTime2.Now; if (!ReloadConfig.IsBootstrap) Arbiter.Activate(ReloadConfig.DispatcherQueue, new IterativeTask<List<BootstrapServer>>(m_BootstrapServerList, m_transport.PreJoinProdecure)); // m_worker_thread.ReportProgress(100); --joscha InitUsageManager(); ReloadConfig.State = ReloadConfig.RELOAD_State.Configured; stateUpdates(ReloadConfig.RELOAD_State.Configured); /* reporting service */ Arbiter.Activate(ReloadConfig.DispatcherQueue, new IterativeTask(Reporting)); /* chord-ping-interval */ Arbiter.Activate(ReloadConfig.DispatcherQueue, new IterativeTask(Maintenance)); /* chord-update-interval */ Arbiter.Activate(ReloadConfig.DispatcherQueue, new IterativeTask(UpdateCycle)); Arbiter.Activate(ReloadConfig.DispatcherQueue, new IterativeTask(CommandCheckTask)); } catch (Exception ex) { ReloadConfig.Logger(ReloadGlobals.TRACEFLAGS.T_ERROR, "Init: " + ex.Message); } return true; }