MCPcopy Create free account
hub / github.com/acl-dev/acl / conn_cache_push_stream

Function conn_cache_push_stream

app/jaws/global/conn_cache.c:171–226  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

169}
170
171void conn_cache_push_stream(CONN_CACHE *cache, ACL_ASTREAM *stream,
172 int timeout, void (*free_fn)(ACL_ASTREAM*, void*), void *ctx)
173{
174 const char *key = ACL_VSTREAM_PEER(acl_aio_vstream(stream));
175 CONN_POOL *conns;
176 CONN *conn;
177
178#if 0
179 acl_aio_clean_hooks(stream);
180#endif
181
182 /* �鿴��KEY�����ӳؾ���Ƿ���ڣ�����������ã����򴴽��µ� */
183
184 conns = (CONN_POOL*) acl_htable_find(cache->cache, key);
185 if (conns == NULL) {
186 conns = (CONN_POOL*) acl_mymalloc(sizeof(CONN_POOL));
187 conns->conn_cache = cache;
188 conns->aio = acl_aio_handle(stream);
189 acl_fifo_init(&conns->conns);
190 ACL_SAFE_STRNCPY(conns->key, key, sizeof(conns->key));
191 acl_htable_enter(cache->cache, key, conns);
192 }
193
194#if 0
195 /* ��������ӳ��е��������������ƣ��������ͷ���ɵ����Ӷ��� */
196 if (acl_fifo_size(&conns->conns) >= cache->conn_limit) {
197 conn = acl_fifo_pop(&conns->conns);
198 if (conn) {
199 conn->info = NULL;
200 conn_close(conn);
201 }
202 }
203#endif
204
205 cache->nset++;
206
207 /* �����µ��첽�����ӻ������ */
208 conn = (CONN*) acl_mymalloc(sizeof(CONN));
209 conn->stream = stream;
210 conn->ctx = ctx;
211 conn->free_fn = free_fn;
212
213 /* ���������ӳ��� */
214 conn->info = acl_fifo_push(&conns->conns, conn);
215 conn->conn_pool = conns;
216
217 /* ���ø����Ļص����� */
218 acl_aio_ctl(stream,
219 ACL_AIO_CTL_READ_HOOK_ADD, read_callback, conn,
220 ACL_AIO_CTL_CLOSE_HOOK_ADD, read_close_callback, conn,
221 ACL_AIO_CTL_TIMEO_HOOK_ADD, read_timeout_callback, conn,
222 ACL_AIO_CTL_TIMEOUT, timeout,
223 ACL_AIO_CTL_END);
224 /* ��ʼ������������ */
225 acl_aio_read(stream);
226}
227
228CONN *conn_cache_get_conn(CONN_CACHE *cache, const char *key)

Callers 1

Calls 10

acl_aio_vstreamFunction · 0.85
acl_aio_clean_hooksFunction · 0.85
acl_htable_findFunction · 0.85
acl_aio_handleFunction · 0.85
acl_fifo_initFunction · 0.85
acl_htable_enterFunction · 0.85
acl_fifo_sizeFunction · 0.85
conn_closeFunction · 0.85
acl_aio_ctlFunction · 0.85
acl_aio_readFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…