public IQQActionFuture SendMsg(QQMsg msg, QQActionListener listener)
{
var future = new ProcActionFuture(listener, true);
if (msg.Type == QQMsgType.SESSION_MSG)
{
var stranger = (QQStranger)msg.To;
if (string.IsNullOrEmpty(stranger.GroupSig))
{
GetSessionMsgSig(stranger, (sender, Event) =>
{
if (Event.Type == QQActionEventType.EvtOK)
{
DoSendMsg(msg, future.Listener);
}
else if (Event.Type == QQActionEventType.EvtError)
{
future.NotifyActionEvent(Event.Type, Event.Target);
}
});
}
return future;
}
else if (msg.Type == QQMsgType.GROUP_MSG || msg.Type == QQMsgType.DISCUZ_MSG)
{
if (msg.Type == QQMsgType.GROUP_MSG)
{
if (msg.Group.Gin == 0)
{
msg.Group = Context.Store.GetGroupByCode(msg.Group.Code);
return future;
}
}
}
return DoSendMsg(msg, listener);
}