private void saveAndClose() { if (CM != null) { CM.disconnectEverything(); } if (SessionMgr != null) { if (SessionMgr.endSession()) { showMessageBox("Actions_Saved_Title", "Actions_Saved_Content", (res) => { //Execute Shutdown. MessengerInstance.Send <ApplicationClosing>(new ApplicationClosing(false)); }); } else { showMessageBox("MessageBox_Error_Title", "Actions_Error_CouldntSave", null); } } else { _Log.Error("Session Manager N/A"); } }
protected void btnWriteSession_Click(object sender, EventArgs e) { string sessionId = Request.Cookies[MySessionID].Value; IDictionary <string, object> session = SessionMgr.GetSeccion(sessionId); session["服务端的数据"] = DateTime.Now.ToString(); }
void ProfileSvc_ProfileLoaded(AsyncOperationInstance operation) { ProfileSvc.ProfileLoaded -= ProfileSvc_ProfileLoaded; var project = ProfileSvc.ProjectID; var paths = Settings.getOptions().Paths; if (CM.truncateSyncTable()) { CM.disconnectFromMobileDB(); SessionMgr.endSession(); SessionMgr.startSession(); var workingPaths = SessionMgr.createCleanWorkingCopies(paths); CM.connectToMobileDB(workingPaths); } else { if (CurrentOperation != null) { CurrentOperation.failure("Actions_Error_CouldntTruncateSync", ""); } _Log.Info("Could not truncate Sync Table, aborting clean."); } if (ProfileSvc.ProjectID != project) { ProfileSvc.ProjectID = project; } if (CurrentOperation != null) { CurrentOperation.success(); } }
private void OnRawReceive(Span <byte> data, IPEndPoint endPoint) { //检查黑名单 if (SessionMgr.InBad(endPoint)) { return; } //检查格式 var(isBad, conv) = Kcp.IsBadHeadFormat(data); if (isBad) { SessionMgr.AddBad(endPoint); return; } var session = SessionMgr.DetermineIsBadOrNewConnection(conv, endPoint); if (session == null) { return; } KcpSession.KCPInput(session, data); using var mem = _sock.GetMemory(OS._8kb); var buff = mem.Memory.ToArray(); var rcnt = session.kcp.Recv(buff, 0, buff.Length); if (rcnt > 0) { OnKcpReceive?.Invoke(session, buff.AsSpan().Slice(0, rcnt), endPoint); } }
protected void btnReadSession_Click(object sender, EventArgs e) { string sessionId = Request.Cookies[MySessionID].Value; IDictionary <string, object> session = SessionMgr.GetSeccion(sessionId); Button1.Text = session["服务端的数据"].ToString(); }
/// <summary> /// 원격 서버에 접속 성공 했을 때 호출됩니다. /// </summary> /// <param name="socket"></param> public void OnConnectCompleted(Socket socket, Session token) { token.OnSessionClosed += OnSessionClosed; SessionMgr.Add(token); // SocketAsyncEventArgsPool에서 빼오지 않고 그때 그때 할당해서 사용한다. // 풀은 서버에서 클라이언트와의 통신용으로만 쓰려고 만든것이기 때문이다. // 클라이언트 입장에서 서버와 통신을 할 때는 접속한 서버당 두개의 EventArgs만 있으면 되기 때문에 그냥 new해서 쓴다. // 서버간 연결에서도 마찬가지이다. // 풀링처리를 하려면 c->s로 가는 별도의 풀을 만들어서 써야 한다. SocketAsyncEventArgs receive_event_arg = new SocketAsyncEventArgs(); receive_event_arg.Completed += new EventHandler <SocketAsyncEventArgs>(ReceiveCompleted); receive_event_arg.UserToken = token; receive_event_arg.SetBuffer(new byte[1024], 0, 1024); SocketAsyncEventArgs send_event_arg = new SocketAsyncEventArgs(); send_event_arg.Completed += new EventHandler <SocketAsyncEventArgs>(SendCompleted); send_event_arg.UserToken = token; send_event_arg.SetBuffer(null, 0, 0); BeginReceive(socket, receive_event_arg, send_event_arg); }
/// <summary> /// 새로운 클라이언트가 접속 성공 했을 때 호출됩니다. /// AcceptAsync의 콜백 매소드에서 호출되며 여러 스레드에서 동시에 호출될 수 있기 때문에 공유자원에 접근할 때는 주의해야 합니다. /// </summary> /// <param name="client_socket"></param> void OnNewClient(Socket client_socket, object token) { // UserToken은 매번 새로 생성하여 깨끗한 인스턴스로 넣어준다. var uniqueId = MakeSequenceIdForSession(); var messageResolver = new TMessageResolver(); messageResolver.Init(ServerOpt.ReceiveSecondaryBufferSize); var user_token = new Session(true, uniqueId, PacketDispatcher, messageResolver, ServerOpt); user_token.OnSessionClosed += OnSessionClosed; SessionMgr.Add(user_token); // 플에서 하나 꺼내와 사용한다. SocketAsyncEventArgs receive_args = this.ReceiveEventArgsPool.Pop(); SocketAsyncEventArgs send_args = this.SendEventArgsPool.Pop(); receive_args.UserToken = user_token; send_args.UserToken = user_token; user_token.OnConnected(); BeginReceive(client_socket, receive_args, send_args); }
private string GetLogonToken() { SessionMgr cdSessionManager = new SessionMgr(); EnterpriseSession cdSession; string cdToken = string.Empty; // CMS Credential Variables String cmsUser = Utilities.GetBOAccountUserId(); String cmsPassword = Utilities.GetBOAccountUserPassoword(); String cmsServer = ConfigurationManager.AppSettings["BOServerLogonTokenURL"].ToString(); // CMS Configuration Variables String cmsAuthType = "secEnterprise"; // Create Logon Token for use with Open Document method try { // logon to CMS & return the active session cdSession = cdSessionManager.Logon(cmsUser, cmsPassword, cmsServer, cmsAuthType); // create the security token for this logon // The createLogonToken method allows you to specify the machine that can use the token (which // can be empty to allow any user to use the token), the number of minutes the token is valid for, and // the number of logons that the token can be used for as parameters. cdToken = cdSession.LogonTokenMgr.CreateLogonTokenEx("", 5, 1); cdSession.Logoff(); } catch (Exception ex) { ExceptionHandler("Error in fetching logon token", ex.Message); } return(cdToken); }
private void disconnectFromMobile() { new Action(() => { SessionMgr.endSession(); ConnectionManager.disconnectFromMobileDB(); }).BeginInvoke(null, null); }
public void Listen(string host, int port, int backlog, SocketOption socketOption) { Listener client_listener = new Listener(); client_listener.OnNewClientCallback += OnNewClient; client_listener.Start(host, port, backlog, socketOption); // heartbeat. byte check_interval = 10; SessionMgr.StartHeartbeatChecking(check_interval, check_interval); }
static void OnAddNetworkConn(Context ctx, object arg) { NetworkTransport conn = (NetworkTransport)ctx.GetSender(); connMap[conn.GetID()] = conn; SessionMgr sessionMgr = conn.GetSessionMgr(); sessionMgr.OnLinkerConneted(conn); conn.ReadMsgPacket(); var timerID = worker.AddTimer(5 * 1000, OnNetworkConnPing, conn); tickTimer[conn.GetID()] = timerID; }
static void OnRemoveNetworkConn(Context ctx, object arg) { NetworkTransport conn = (NetworkTransport)ctx.GetSender(); connMap.Remove(conn.GetID()); SessionMgr sessionMgr = conn.GetSessionMgr(); sessionMgr.OnLinkerClosed(conn); UInt64 timerID = 0; if (tickTimer.TryGetValue(conn.GetID(), out timerID) == true) { worker.RemoveTimer(timerID); } }
public void OnSessionClosed(Session token) { SessionMgr.Remove(token); // Free the SocketAsyncEventArg so they can be reused by another client // 버퍼는 반환할 필요가 없다. SocketAsyncEventArg가 버퍼를 물고 있기 때문에 // 이것을 재사용 할 때 물고 있는 버퍼를 그대로 사용하면 되기 때문이다. if (ReceiveEventArgsPool != null) { ReceiveEventArgsPool.Push(token.ReceiveEventArgs); } if (SendEventArgsPool != null) { SendEventArgsPool.Push(token.SendEventArgs); } token.SetEventArgs(null, null); }
public DataSourceArray connectToLoginSite(string sitecode) { // TODO - FIX!!! This is very ugly - here so that SOAP and REST services can both be stateful or stateless if (!Convert.ToBoolean(_mySession.MdwsConfiguration.AllConfigs[MdwsConfigConstants.CONNECTION_POOL_CONFIG_SECTION][MdwsConfigConstants.CONNECTION_POOLING])) { return(new gov.va.medora.mdws.ConnectionLib(_mySession).connectToLoginSite(sitecode)); } DataSourceArray result = new DataSourceArray(); try { MdwsUtils.checkNullArgs(MdwsUtils.getArgsDictionary(System.Reflection.MethodInfo.GetCurrentMethod().GetParameters(), new List <object>() { sitecode })); MdwsUtils.checkSiteTable(_mySession, sitecode); MdwsUtils.checkConnections(_mySession, sitecode); Site site = _mySession.SiteTable.getSite(sitecode); DataSource src = site.getDataSourceByModality("HIS"); AbstractDaoFactory factory = AbstractDaoFactory.getDaoFactory(AbstractDaoFactory.getConstant(src.Protocol)); // REST SessionMgr.getInstance().setConnection(_mySession, sitecode); // END REST result = new DataSourceArray(src); result.items[0].welcomeMessage = "TODO - implement cached connection messages in pool"; } catch (Exception e) { result.fault = new FaultTO(e.Message); } finally { //RestSessionMgr.getInstance().returnConnections(_mySession); } return(result); }
private void connectToMobile() { if (SessionMgr.canResumeSession()) { showYesNoBox("ConnectionsPage_ResumeSession_Title", "ConnectionsPage_ResumeSession_Description", System.Windows.MessageBoxResult.No, (res) => { if (res == System.Windows.MessageBoxResult.Yes) { new Action <DBPaths>(connectTo).BeginInvoke(SessionMgr.resumeSession(_settings.Paths), null, null); } else { SessionMgr.startSession(); new Action <DBPaths>(connectTo).BeginInvoke(SessionMgr.createWorkingCopies(_settings.Paths), null, null); } }); } else { SessionMgr.startSession(); new Action <DBPaths>(connectTo).BeginInvoke(SessionMgr.createWorkingCopies(_settings.Paths), null, null); } }
private void _sock_OnUpdate(long obj) { SessionMgr.Update(obj); }