本文整理汇总了C#中IoSession.SetAttributeIfAbsent方法的典型用法代码示例。如果您正苦于以下问题:C# IoSession.SetAttributeIfAbsent方法的具体用法?C# IoSession.SetAttributeIfAbsent怎么用?C# IoSession.SetAttributeIfAbsent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IoSession
的用法示例。
在下文中一共展示了IoSession.SetAttributeIfAbsent方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetSessionTasksQueue
private SessionTasksQueue GetSessionTasksQueue(IoSession session)
{
SessionTasksQueue queue = session.GetAttribute<SessionTasksQueue>(TASKS_QUEUE);
if (queue == null)
{
queue = new SessionTasksQueue();
SessionTasksQueue oldQueue = (SessionTasksQueue)session.SetAttributeIfAbsent(TASKS_QUEUE, queue);
if (oldQueue != null)
queue = oldQueue;
}
return queue;
}
示例2: MessageReceived
public override void MessageReceived(INextFilter nextFilter, IoSession session, object message)
{
using (var scope = ObjectHost.Host.BeginLifetimeScope())
{
var commandMessage = message as DuplexMessage;
if (commandMessage != null)
{
if (commandMessage.Header.CommandCode == CommandCode.Authentication)
{
var school = metaRepository
.GetAllSchools()
.ByIdentifier(commandMessage.Header.Identifier);
if (school != null && school.UniqueToken.Equals(
commandMessage.GetContent<AuthInfo>().Mac, StringComparison.OrdinalIgnoreCase))
{
session.SetAttributeIfAbsent(KeyName.SESSION_IDENTIFIER, commandMessage.Header.Identifier);
identifierManager.SetSessonIdentifier(commandMessage.Header.Identifier, session);
nextFilter.FilterWrite(session,
new DefaultWriteRequest(
DuplexMessage.CreateCallbackMessage(commandMessage)));
}
else
{
nextFilter.FilterWrite(session,
new DefaultWriteRequest(
DuplexMessage.CreateAckMessage(commandMessage, ErrorCode.AuthenticationFailed)));
}
}
else if (
commandMessage.Header.CommandCode == CommandCode.Register ||
commandMessage.Header.CommandCode == CommandCode.Heartbeat)
{
nextFilter.MessageReceived(session, message);
}
else
{
if (!session.ContainsAttribute(KeyName.SESSION_IDENTIFIER))
{
nextFilter.FilterWrite(session, new DefaultWriteRequest(
DuplexMessage.CreateAckMessage(commandMessage, ErrorCode.UnauthorizedCommand)));
}
else
{
var identifier = session.GetAttribute<string>(KeyName.SESSION_IDENTIFIER);
if (identifier.Equals(commandMessage.Header.Identifier))
nextFilter.MessageReceived(session, message);
else
{
nextFilter.FilterWrite(session, new DefaultWriteRequest(
DuplexMessage.CreateAckMessage(commandMessage, ErrorCode.UnauthorizedCommand)));
}
}
}
}
else
{
nextFilter.FilterWrite(session, new DefaultWriteRequest(
DuplexMessage.CreateAckMessage(
Guid.NewGuid().ToByteArray().ToBase64(),
MessageVersion.V1,
CommandCode.UnAssigned,
ErrorCode.IllegalCommandRequest)));
}
}
}