private bool connectUser(string user, HttpSessionState userSession) { // if not already connected, connect to most available server if (userSession[SESSIONMEMBER_SERVERIP] == null) { IPEndPoint serverEndPoint = m_configMgr.GetMostAvailableServerEndPoint(); if (serverEndPoint == null) { m_mapUserSessions.Remove(user); return false; } userSession[SESSIONMEMBER_SERVERIP] = serverEndPoint; IGRequest req = new IGRequestWorkspaceConnect(user); IGPERequestSender.SendRequest((IPEndPoint)userSession[SESSIONMEMBER_SERVERIP], req); IGAnswer answerConnected = CreateAnswer(req); if (userSession[SESSIONMEMBER_SERVERIP] != null) answerConnected.SetParameter(IGAnswer.IGANSWER_SERVERIP, ((IPEndPoint)userSession[SESSIONMEMBER_SERVERIP]).Address.ToString()); userSession[SESSIONMEMBER_CONNECTRESULT] = answerConnected.ToClientOutput(); } else { IGPERequestSender.SendRequest((IPEndPoint)userSession[SESSIONMEMBER_SERVERIP], new IGRequestWorkspaceConnect(user)); IGAnswerConnected answerConnected = new IGAnswerConnected(userSession); if (userSession[SESSIONMEMBER_SERVERIP] != null) answerConnected.SetParameter(IGAnswer.IGANSWER_SERVERIP, ((IPEndPoint)userSession[SESSIONMEMBER_SERVERIP]).Address.ToString()); userSession[SESSIONMEMBER_CONNECTRESULT] = answerConnected.ToClientOutput(); } return true; }
private void buttonAdd_Click(object sender, EventArgs e) { try { IGRequest reqAdd = null; if (comboRequests.Text.StartsWith("WORKSPACE")) { switch (comboRequests.SelectedIndex + 1000) { case IGRequest.IGREQUEST_WORKSPACE_CONNECT: reqAdd = new IGRequestWorkspaceConnect(textBoxUser.Text); break; case IGRequest.IGREQUEST_WORKSPACE_PING: reqAdd = new IGRequestWorkspacePing(textBoxUser.Text); break; case IGRequest.IGREQUEST_WORKSPACE_DISCONNECT: reqAdd = new IGRequestWorkspaceDisconnect(textBoxUser.Text); break; case IGRequest.IGREQUEST_WORKSPACE_NEWIMAGE: reqAdd = new IGRequestWorkspaceNew(textBoxUser.Text, textParam1.Text, textParam2.Text, textParam3.Text, textParam4.Text); break; case IGRequest.IGREQUEST_WORKSPACE_LOADIMAGE: reqAdd = new IGRequestWorkspaceLoad(textBoxUser.Text, textParam1.Text, (textParam2.Text != "" && textParam2.Text != "0") ? textParam2.Text : "", (textParam3.Text != "" && textParam3.Text != "0") ? textParam3.Text : ""); break; case IGRequest.IGREQUEST_WORKSPACE_SHOW: reqAdd = new IGRequestWorkspaceShow(textBoxUser.Text, int.Parse(textParam1.Text) == 1); break; } } if (comboRequests.Text.StartsWith("FRAME")) { switch (comboRequests.SelectedIndex - m_nNbWorkspaceReqs + 2000) { case IGRequest.IGREQUEST_FRAME_SAVE: reqAdd = new IGRequestFrameSave(textBoxUser.Text, textParam1.Text, textParam2.Text); break; case IGRequest.IGREQUEST_FRAME_ADDLAYER: reqAdd = new IGRequestFrameAddLayer(textBoxUser.Text, textParam1.Text); break; case IGRequest.IGREQUEST_FRAME_REMOVELAYER: reqAdd = new IGRequestFrameRemoveLayer(textBoxUser.Text, textParam1.Text, textParam2.Text); break; case IGRequest.IGREQUEST_FRAME_MOVELAYER: reqAdd = new IGRequestFrameMoveLayer(textBoxUser.Text, textParam1.Text, textParam2.Text, textParam3.Text); break; case IGRequest.IGREQUEST_FRAME_MERGELAYER: reqAdd = new IGRequestFrameMergeLayer(textBoxUser.Text, textParam1.Text, textParam2.Text, textParam3.Text); break; case IGRequest.IGREQUEST_FRAME_FILTER: Dictionary<string, string> dicParams = null; if (textParam4.Text.Contains('_')) { dicParams = textParam4.Text.Split(',').ToDictionary(str => str.Split('_')[0], str => str.Split('_')[1]); if (dicParams.ContainsKey("PosX")) dicParams["PosX"] = fromPctToIGCoords(dicParams["PosX"]); if (dicParams.ContainsKey("PosY")) dicParams["PosY"] = fromPctToIGCoords(dicParams["PosY"]); if (dicParams.ContainsKey("DirectionX")) dicParams["DirectionX"] = fromPctToIGCoords(dicParams["DirectionX"]); if (dicParams.ContainsKey("DirectionY")) dicParams["DirectionY"] = fromPctToIGCoords(dicParams["DirectionY"]); } reqAdd = new IGRequestFrameFilterLayer(textBoxUser.Text, textParam1.Text, textParam2.Text, textParam3.Text, dicParams); break; case IGRequest.IGREQUEST_FRAME_CHANGEPROPERTY: reqAdd = new IGRequestChangeProperty(textBoxUser.Text, textParam1.Text, textParam2.Text, textParam3.Text); break; case IGRequest.IGREQUEST_FRAME_CLOSE: reqAdd = new IGRequestFrameClose(textBoxUser.Text, textParam1.Text); break; case IGRequest.IGREQUEST_FRAME_UPDATE: reqAdd = new IGRequestFrameUpdate(textBoxUser.Text, textParam1.Text); break; case IGRequest.IGREQUEST_FRAME_SELECT: reqAdd = new IGRequestFrameSelect(textBoxUser.Text, textParam1.Text, textParam2.Text, textParam3.Text, fromPctToIGCoords(textParam4.Text, false)); break; case IGRequest.IGREQUEST_FRAME_SETLAYERVISIBLE: reqAdd = new IGRequestFrameSetLayerVisible(textBoxUser.Text, textParam1.Text, textParam2.Text, textParam3.Text); break; case IGRequest.IGREQUEST_FRAME_GOTOHISTORY: reqAdd = new IGRequestFrameGotoHistory(textBoxUser.Text, textParam1.Text, textParam2.Text); break; case IGRequest.IGREQUEST_FRAME_DRAWLINES: reqAdd = new IGRequestFrameDrawLines(textBoxUser.Text, textParam1.Text, textParam2.Text, fromPctToIGCoords(textParam3.Text), textParam4.Text, "10"); break; case IGRequest.IGREQUEST_FRAME_PICKCOLOR: reqAdd = new IGRequestFramePickColor(textBoxUser.Text, textParam1.Text, textParam2.Text, fromPctToIGCoords(textParam3.Text)); break; case IGRequest.IGREQUEST_FRAME_INDEX: Regex RE = new Regex(@"[,]+"); string[] tParams2 = RE.Split(textParam2.Text); if (tParams2.Length == 2) reqAdd = new IGRequestFrameIndexLayer(textBoxUser.Text, textParam1.Text, tParams2[0], tParams2[1]); else reqAdd = new IGRequestFrameIndexLayer(textBoxUser.Text, textParam1.Text, tParams2[0], tParams2[1], tParams2[2], tParams2[3], fromPctToIGCoords(textParam3.Text), fromPctToIGCoords(textParam4.Text)); break; case IGRequest.IGREQUEST_FRAME_COPY: reqAdd = new IGRequestFrameCopy(textBoxUser.Text, textParam1.Text); break; case IGRequest.IGREQUEST_FRAME_CUT: reqAdd = new IGRequestFrameCut(textBoxUser.Text, textParam1.Text); break; case IGRequest.IGREQUEST_FRAME_PASTE: reqAdd = new IGRequestFramePaste(textBoxUser.Text, textParam1.Text); break; case IGRequest.IGREQUEST_FRAME_DELETE: reqAdd = new IGRequestFrameDelete(textBoxUser.Text, textParam1.Text); break; case IGRequest.IGREQUEST_FRAME_SMARTDELETE: reqAdd = new IGRequestFrameSmartDelete(textBoxUser.Text, textParam1.Text); break; case IGRequest.IGREQUEST_FRAME_MOVE: reqAdd = new IGRequestFrameMove(textBoxUser.Text, textParam1.Text, textParam2.Text, fromPctToIGCoords(textParam3.Text), fromPctToIGCoords(textParam4.Text)); break; case IGRequest.IGREQUEST_FRAME_ROTATEANDRESIZE: reqAdd = new IGRequestFrameRotateAndResize(textBoxUser.Text, textParam1.Text, textParam2.Text, textParam3.Text, fromPctToIGCoords(textParam4.Text)); break; case IGRequest.IGREQUEST_FRAME_SELECTLAYER: reqAdd = new IGRequestFrameSelectLayer(textBoxUser.Text, textParam1.Text, textParam2.Text); break; case IGRequest.IGREQUEST_FRAME_RUBBER: reqAdd = new IGRequestFrameRubber(textBoxUser.Text, textParam1.Text, textParam2.Text, fromPctToIGCoords(textParam3.Text), textParam4.Text, "10"); break; } } if (comboRequests.Text.StartsWith("SERVER")) { switch ((IGSMRequest.IGSMREQUEST_ID)(comboRequests.SelectedIndex - m_nNbWorkspaceReqs - m_nNbFrameReqs + 5000)) { case IGSMRequest.IGSMREQUEST_ID.IGSMREQUEST_PING: reqAdd = new IGSMRequestPing(); break; case IGSMRequest.IGSMREQUEST_ID.IGSMREQUEST_GETSTATUS: reqAdd = new IGSMRequestGetStatus((IGSMStatus.IGSMStatusType)int.Parse(textParam1.Text)); break; case IGSMRequest.IGSMREQUEST_ID.IGSMREQUEST_TERMINATE: reqAdd = new IGSMRequestTerminate(int.Parse(textParam1.Text) == 1); break; case IGSMRequest.IGSMREQUEST_ID.IGSMREQUEST_DESTROYACCOUNT: reqAdd = new IGSMRequestDestroyAccount(textBoxUser.Text); break; } } if (reqAdd == null) { MessageBox.Show("Request " + comboRequests.SelectedText + " is not implemented"); return; } reqAdd.SetDisplay(reqAdd.GetDisplay().Replace('\n', ' ')); listRequestBuffer.Items.Add(reqAdd); } catch (Exception exc) { MessageBox.Show(exc.ToString(), "Wrong request format"); } }