int vzsdk::VzConnectDev::ConnectServer(const std::string& _ip_addr, uint16 _port) { int _session_id = SESSION_ID_INVALUE; SocketAddress remote_address(_ip_addr, _port); Task::Ptr connect_task(new ConnectTask(sdk_service_->GetQueueLayer().get(), DEFAULT_TIMEOUT, remote_address)); Message::Ptr msg = connect_task->SyncProcessTask(); ReqConnectData* _req_connect_data = static_cast<ReqConnectData*>(connect_task->message_data().get()); req_connect_data_ptr_ = ReqConnectDataPtr(new ReqConnectData(*_req_connect_data)); if (!msg || msg->phandler == NULL) { return DEFAULT_RESULT_TIMEOUT; } Stanza* _stanze = static_cast<Stanza*>(msg->pdata.get()); if (_stanze) { int _new_session_id = _stanze->session_id(); req_connect_data_ptr_->set_session_id(_new_session_id); if (GetConnState() == Socket::CS_CONNECTED) { _session_id = _new_session_id; ReConnectServer(); ChangeConn(); } else req_connect_data_ptr_->set_session_id(SESSION_ID_INVALUE); } return _session_id; }
void ApiHandler::IpcEditorGetVersionId(EditorCtrl& editor, IConnection& conn) { const doc_id id = editor.GetLastStableDocID(); // create handle for doc_id ConnectionState& connState = GetConnState(conn); const size_t handle = connState.docHandles.size(); connState.docHandles.push_back(id); hessian_ipc::Writer& writer = conn.get_reply_writer(); writer.write_reply(handle); }
void ApiHandler::IpcEditorGetChangesSince(EditorCtrl& editor, IConnection& conn) { const hessian_ipc::Call& call = *conn.get_call(); // Get the version handle const size_t versionHandle = call.GetParameter(1).GetInt(); ConnectionState& connState = GetConnState(conn); if (versionHandle >= connState.docHandles.size()) return; // fault: invalid handle const doc_id& di = connState.docHandles[versionHandle]; // Get diff vector<size_t> changedlines; editor.GetLinesChangedSince(di, changedlines); // Return changed lines hessian_ipc::Writer& writer = conn.get_reply_writer(); writer.write_reply(changedlines); }