本文整理汇总了C#中IZone.Query方法的典型用法代码示例。如果您正苦于以下问题:C# IZone.Query方法的具体用法?C# IZone.Query怎么用?C# IZone.Query使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IZone
的用法示例。
在下文中一共展示了IZone.Query方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: _processSIF_ZoneStatus
private void _processSIF_ZoneStatus(SIF_ZoneStatus zoneStatus, IZone zone)
{
if (zoneStatus == null)
{
return;
}
bool sync = getChameleonProperty(zone, "sync", false);
bool events = getChameleonProperty(zone, "logEvents", true);
bool logEntry = getChameleonProperty(zone, "sifLogEntrySupport", false);
ArrayList objectDefs = new ArrayList();
SIF_Providers providers = zoneStatus.SIF_Providers;
if (providers != null)
{
foreach (SIF_Provider p in providers)
{
foreach (SIF_Object obj in p.SIF_ObjectList)
{
// Lookup the topic for each provided object in the zone
IElementDef def = Adk.Dtd.LookupElementDef(obj.ObjectName);
if (def != null)
{
objectDefs.Add(def);
ITopic topic = TopicFactory.GetInstance(def);
if (topic.GetSubscriber() == null)
{
if (events)
{
topic.SetSubscriber(fLogger, new SubscriptionOptions( ));
}
if (sync)
{
topic.SetQueryResults(fLogger);
}
}
}
}
}
}
if (logEntry)
{
ITopic sifLogEntryTopic = TopicFactory.GetInstance(InfraDTD.SIF_LOGENTRY);
sifLogEntryTopic.SetSubscriber(fLogger, new SubscriptionOptions( ));
}
foreach (ITopic topic in TopicFactory.GetAllTopics( SifContext.DEFAULT ))
{
try
{
// Join the topic to each zone ( causes the agent to subscribe to the joined objects )
// TODO: Add an "isJoinedTo()" API to topic so that it doesn't throw an exception
if (topic.ObjectType != InfraDTD.SIF_ZONESTATUS.Name)
{
topic.Join(zone);
}
}
catch (Exception ex)
{
zone.Log.Error(ex.Message, ex);
}
}
if (sync)
{
if (objectDefs.Count == 0)
{
zone.ServerLog.Log
(LogLevel.WARNING, "No objects are being provided in this zone", null,
"1001");
}
string syncObjects = zone.Properties.GetProperty("chameleon.syncObjects");
foreach (IElementDef def in objectDefs)
{
if (def.IsSupported(Adk.SifVersion))
{
if (syncObjects == null ||
(syncObjects.Length > 0 && syncObjects.IndexOf(def.Name) > -1))
{
Query q = new Query(def);
// Query by specific parameters
string condition =
zone.Properties.GetProperty
("chameleon.syncConditions." + def.Name);
if (condition != null && condition.Length > 0)
{
// The condition should be in the format "path=value" e.g "@RefId=123412341...1234|@Name=asdfasdf"
String[] queryConditions = condition.Split('|');
foreach (String cond in queryConditions)
{
string[] conds = cond.Split('=');
if (conds.Length == 2)
{
q.AddCondition(conds[0], "EQ", conds[1]);
}
}
}
//.........这里部分代码省略.........
示例2: sync
/// <summary> Signals this class to begin the syncrhonization process. This class is responsible
/// for querying the zone for any data it needs to synchronize itself.
/// </summary>
/// <param name="zone"></param>
public void sync( IZone zone )
{
// This class simply requests all LearnerPersonal objects from the zone
Query q = new Query( StudentDTD.STUDENTPERSONAL );
// Add any query conditions you may have
//q.addCondition( LearnerDTD.LEARNERPERSONAL_UPN, ComparisonOperators.LE, "M830540004340" );
zone.Query( q );
}