Lines Matching refs:tview
30 struct mail_index_view_transaction *tview =
32 struct mail_index_transaction *t = tview->t;
36 if (tview->lookup_map != NULL)
37 mail_index_unmap(&tview->lookup_map);
38 buffer_free(&tview->lookup_return_data);
40 if (array_is_created(&tview->all_recs)) {
41 recs = array_get_modifiable(&tview->all_recs, &count);
44 array_free(&tview->all_recs);
47 tview->super->close(view);
53 struct mail_index_view_transaction *tview =
57 (tview->t->last_new_seq == 0 ? 0 :
58 tview->t->last_new_seq - tview->t->first_new_seq + 1);
64 struct mail_index_view_transaction *tview =
70 hdr = tview->super->get_header(view);
72 next_uid = mail_index_transaction_get_next_uid(tview->t);
74 tview->hdr = *hdr;
75 tview->hdr.next_uid = next_uid;
76 hdr = &tview->hdr;
82 tview_apply_flag_updates(struct mail_index_view_transaction *tview,
86 struct mail_index_transaction *t = tview->t;
109 if (map->hdr.record_size > tview->record_size) {
110 if (!array_is_created(&tview->all_recs))
111 i_array_init(&tview->all_recs, 4);
112 tview->recs_count = t->first_new_seq;
113 tview->record_size = I_MAX(map->hdr.record_size,
114 tview->view.map->hdr.record_size);
115 tview->recs = i_malloc(MALLOC_MULTIPLY(tview->record_size,
116 tview->recs_count));
117 array_append(&tview->all_recs, &tview->recs, 1);
119 i_assert(tview->recs_count == t->first_new_seq);
120 i_assert(seq > 0 && seq <= tview->recs_count);
122 trec = PTR_OFFSET(tview->recs, (seq-1) * tview->record_size);
133 struct mail_index_view_transaction *tview =
137 if (seq >= tview->t->first_new_seq) {
143 return mail_index_transaction_lookup(tview->t, seq);
146 rec = tview->super->lookup_full(view, seq, map_r, expunged_r);
147 rec = tview_apply_flag_updates(tview, *map_r, rec, seq);
150 mail_index_transaction_is_expunged(tview->t, seq))
158 struct mail_index_view_transaction *tview =
161 if (seq >= tview->t->first_new_seq)
162 *uid_r = mail_index_transaction_lookup(tview->t, seq)->uid;
164 tview->super->lookup_uid(view, seq, uid_r);
171 struct mail_index_view_transaction *tview =
176 if (!tview->t->reset) {
177 tview->super->lookup_seq_range(view, first_uid, last_uid,
184 if (tview->t->last_new_seq == 0) {
189 rec = mail_index_transaction_lookup(tview->t, tview->t->first_new_seq);
201 seq = tview->t->first_new_seq;
202 for (; seq <= tview->t->last_new_seq; seq++) {
203 rec = mail_index_transaction_lookup(tview->t, seq);
207 if (seq > tview->t->last_new_seq || rec->uid > last_uid) {
220 seq = tview->t->last_new_seq;
221 for (; seq >= tview->t->first_new_seq; seq--) {
222 rec = mail_index_transaction_lookup(tview->t, seq);
228 i_assert(seq >= tview->t->first_new_seq);
235 struct mail_index_view_transaction *tview =
241 if (!tview->t->reset) {
242 tview->super->lookup_first(view, flags, flags_mask, seq_r);
249 rec = array_get(&tview->t->appends, &append_count);
250 seq = tview->t->first_new_seq;
251 message_count = tview->t->last_new_seq;
294 struct mail_index_view_transaction *tview =
296 struct mail_index_transaction *t = tview->t;
300 tview->super->lookup_keywords(view, seq, keyword_idx);
324 tview_return_updated_ext(struct mail_index_view_transaction *tview,
338 if (!mail_index_map_get_ext_idx(tview->lookup_map, ext_id, &ext_idx)) {
340 rext = array_idx(&tview->view.index->extensions, ext_id);
344 ext = array_idx(&tview->lookup_map->extensions, ext_idx);
350 if (array_is_created(&tview->t->ext_resizes) &&
351 ext_id < array_count(&tview->t->ext_resizes)) {
352 intro = array_idx(&tview->t->ext_resizes, ext_id);
365 if (tview->lookup_return_data == NULL) {
366 tview->lookup_return_data =
369 } else if (seq != tview->lookup_prev_seq) {
372 buffer_set_used_size(tview->lookup_return_data, 0);
374 tview->lookup_prev_seq = seq;
375 pos = tview->lookup_return_data->used;
376 buffer_append(tview->lookup_return_data, data, record_size);
377 return CONST_PTR_OFFSET(tview->lookup_return_data->data, pos);
382 tview_is_ext_reset(struct mail_index_view_transaction *tview, uint32_t ext_id)
387 if (!array_is_created(&tview->t->ext_resets))
390 resets = array_get(&tview->t->ext_resets, &count);
395 tview_lookup_ext_update(struct mail_index_view_transaction *tview, uint32_t seq,
404 ext_buf = array_idx(&tview->t->ext_rec_updates, ext_id);
409 if (tview->lookup_map == NULL) {
410 tview->lookup_map =
411 mail_index_map_clone(tview->view.index->map);
413 if (!mail_index_map_get_ext_idx(tview->lookup_map, ext_id, &map_ext_idx)) {
418 array_idx(&tview->view.index->extensions, ext_id);
426 mail_index_map_register_ext(tview->lookup_map, rext->name,
431 *map_r = tview->lookup_map;
432 *data_r = tview_return_updated_ext(tview, seq, data, ext_id);
441 struct mail_index_view_transaction *tview =
449 if (array_is_created(&tview->t->ext_rec_updates) &&
450 ext_id < array_count(&tview->t->ext_rec_updates)) {
453 if (tview_lookup_ext_update(tview, seq, ext_id, map_r, data_r))
459 if (seq < tview->t->first_new_seq &&
460 !tview_is_ext_reset(tview, ext_id)) {
461 tview->super->lookup_ext_full(view, seq, ext_id,
473 struct mail_index_view_transaction *tview =
477 tview->super->get_header_ext(view, map, ext_id, data_r, data_size_r);
484 struct mail_index_view_transaction *tview =
488 if (array_is_created(&tview->t->ext_reset_ids) &&
489 ext_id < array_count(&tview->t->ext_reset_ids) &&
490 map == tview->lookup_map) {
491 reset_id_p = array_idx(&tview->t->ext_reset_ids, ext_id);
496 return tview->super->ext_get_reset_id(view, map, ext_id, reset_id_r);
516 struct mail_index_view_transaction *tview;
526 tview = i_new(struct mail_index_view_transaction, 1);
527 mail_index_view_clone(&tview->view, t->view);
528 tview->view.v = trans_view_vfuncs;
529 tview->super = &t->view->v;
530 tview->t = t;
533 return &tview->view;