== AsteriskSource/MainCdr == * struct ast_cdr *ast_cdr_alloc(void) * ast_cdr_dup main/cdr.c * newcdr = ast_cdr_alloc(); * ast_channel_alloc main/channel.c * tmp->cdr = ast_cdr_alloc(); * ast_cdr_init(tmp->cdr, tmp); * ast_cdr_start(tmp->cdr); * __ast_request_and_dial main/channel.c * if (!chan->cdr && (chan->cdr = ast_cdr_alloc())) * ast_cdr_init(chan->cdr, chan); * if (chan->cdr) { * char tmp[256]; * snprintf(tmp, sizeof(tmp), "%s/%s", type, (char *)data); * ast_cdr_setapp(chan->cdr,"Dial",tmp); * ast_cdr_update(chan); * ast_cdr_start(chan->cdr); * ast_cdr_end(chan->cdr); * if (ast_cdr_disposition(chan->cdr,chan->hangupcause)) * ast_cdr_failed(chan->cdr); * } * clear_caller apps/app_followme.c * if (!outbound->cdr) { * outbound->cdr = ast_cdr_alloc(); * if (outbound->cdr) * ast_cdr_init(outbound->cdr, outbound); * } * if (outbound->cdr) { * char tmp[256] * snprintf(tmp, sizeof(tmp), "%s/%s", "Local", tmpuser->dialarg); * ast_cdr_setapp(outbound->cdr, "FollowMe", tmp); * ast_cdr_update(outbound); * ast_cdr_start(outbound->cdr); * ast_cdr_end(outbound->cdr); * if (ast_cdr_disposition(outbound->cdr, outbound->hangupcause)) * ast_cdr_failed(outbound->cdr); * } else * findmeexec apps/app_followme.c * if (!outbound->cdr) * outbound->cdr = ast_cdr_alloc(); * if (outbound->cdr) { * char tmp[256]; * ast_cdr_init(outbound->cdr, outbound); * snprintf(tmp, sizeof(tmp), "%s/%s", "Local", dialarg); * ast_cdr_setapp(outbound->cdr, "FollowMe", tmp); * ast_cdr_update(outbound); * ast_cdr_start(outbound->cdr); * ast_cdr_end(outbound->cdr); * if (ast_cdr_disposition(outbound->cdr,outbound->hangupcause)) * ast_cdr_failed(outbound->cdr); * } else { * __agent_start_monitoring channels/chan_agent.c * if (!ast->cdr) * ast->cdr = ast_cdr_alloc(); * ast_cdr_setuserfield(ast, tmp2); * cdr structure ¿¡ next °¡ ÀÖ´Â ÀÌÀ¯¸¦ ¸ð¸£°ÚÀ½. == function == * struct ast_cdr *ast_cdr_alloc(void) * struct ast_cdr *x = ast_calloc(1, sizeof(struct ast_cdr)); * int ast_cdr_init(struct ast_cdr *cdr, struct ast_channel *c) * for ( ; cdr ; cdr = cdr->next) { * cdr->channel, set_one_cid(cdr, c);, cdr->disposition * cdr->amaflags, cdr->accountcode, cdr->dst * cdr->dcontext, cdr->uniqueid * } * void ast_cdr_start(struct ast_cdr *cdr) * for (; cdr; cdr = cdr->next) { * check_post(cdr); * cdr->start = ast_tvnow(); * } * include/asterisk/time.h {{{ AST_INLINE_API( struct timeval ast_tvnow(void), { struct timeval t; gettimeofday(&t, NULL); return t; } ) }}}