public static bool Remove(IGAnswer answer) { if (answer.GetId() == (int)IGAnswer.IGANSWER_ID.IGANSWER_WORKSPACE_DISCONNECTED) { // server does not wait for a disconnection answer return true; } else { bool bRes = true; XmlNode xmlNodeRequestGuid = answer.GetAttribute(IGAnswer.IGANSWER_REQGUID); if (xmlNodeRequestGuid == null) bRes = false; IGRequestProcessing reqProc = GetRequest(xmlNodeRequestGuid.Value); if (reqProc == null) bRes = false; IGServerManager serverMgr = IGServerManager.Instance; if (!bRes) { serverMgr.AppendError("- IGRequestProcessing failed to match this answer with a request: \"" + answer.ToString() + "\""); return false; } if (answer.IsError() || answer.IsSMError()) { serverMgr.AppendError("- IGRequestProcessing Error " + answer.ToString()); if (answer.IsSMError()) ((IGServerManagerRemote)serverMgr).DisconnectUser(answer.GetParameterValue(IGRequest.IGREQUEST_USERLOGIN), true); } else if (!answer.Silent) serverMgr.AppendInfo("IGRequestProcessing Answer " + answer.ToString()); IGRequest finishedReq = reqProc.GetRequest(); if (finishedReq != null) finishedReq.FireEventDone(answer.GetXml()); return remove(xmlNodeRequestGuid.Value); } }