本文整理汇总了C++中session_destroy函数的典型用法代码示例。如果您正苦于以下问题:C++ session_destroy函数的具体用法?C++ session_destroy怎么用?C++ session_destroy使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了session_destroy函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: request_logout
/*
* Logout from the IMAP server and disconnect from the server.
*/
int
request_logout(session *ssn)
{
if (response_generic(ssn, send_request(ssn, "LOGOUT")) == -1) {
session_destroy(ssn);
} else {
close_connection(ssn);
session_destroy(ssn);
}
return STATUS_OK;
}
开发者ID:Papafox,项目名称:imapfilter,代码行数:15,代码来源:request.c
示例2: cm_return_val_if_fail
static gchar *news_fetch_msg(Folder *folder, FolderItem *item, gint num)
{
gchar *path, *filename;
NewsSession *session;
gint ok;
cm_return_val_if_fail(folder != NULL, NULL);
cm_return_val_if_fail(item != NULL, NULL);
path = folder_item_get_path(item);
if (!is_dir_exist(path))
make_dir_hier(path);
filename = g_strconcat(path, G_DIR_SEPARATOR_S, itos(num), NULL);
g_free(path);
if (is_file_exist(filename)) {
debug_print("article %d has been already cached.\n", num);
return filename;
}
session = news_session_get(folder);
if (!session) {
g_free(filename);
return NULL;
}
ok = news_select_group(folder, item->path, NULL, NULL, NULL);
if (ok != NEWSNNTP_NO_ERROR) {
if (ok == NEWSNNTP_ERROR_STREAM) {
session_destroy(SESSION(session));
REMOTE_FOLDER(folder)->session = NULL;
}
g_free(filename);
return NULL;
}
debug_print("getting article %d...\n", num);
ok = news_get_article(folder,
num, filename);
if (ok != NEWSNNTP_NO_ERROR) {
g_warning("can't read article %d", num);
if (ok == NEWSNNTP_ERROR_STREAM) {
session_destroy(SESSION(session));
REMOTE_FOLDER(folder)->session = NULL;
}
g_free(filename);
return NULL;
}
GTK_EVENTS_FLUSH();
return filename;
}
开发者ID:Mortal,项目名称:claws,代码行数:51,代码来源:news.c
示例3: test_session_tcp6
void
test_session_tcp6(void) {
lagopus_result_t ret;
char cbuf[256] = {0};
char sbuf[256] = {0};
lagopus_session_t sesc, sess, sesa;
struct addrunion dst, src;
ret = session_create(SESSION_TCP6|SESSION_PASSIVE, &sess);
TEST_ASSERT_EQUAL(LAGOPUS_RESULT_OK, ret);
addrunion_ipv6_set(&src, "::0");
ret = session_bind(sess, &src, 10023);
TEST_ASSERT_EQUAL(LAGOPUS_RESULT_OK, ret);
ret = session_create(SESSION_TCP6|SESSION_ACTIVE, &sesc);
TEST_ASSERT_EQUAL(LAGOPUS_RESULT_OK, ret);
addrunion_ipv6_set(&dst, "::1");
ret = session_connect(sesc, &dst, 10023, NULL, 0);
if (ret == 0 || errno == EINPROGRESS) {
TEST_ASSERT(true);
} else {
TEST_ASSERT(false);
}
ret = session_accept(sess, &sesa);
TEST_ASSERT_EQUAL(LAGOPUS_RESULT_OK, ret);
TEST_ASSERT_NOT_NULL(sesa);
TEST_ASSERT_TRUE(session_is_alive(sess));
TEST_ASSERT_TRUE(session_is_alive(sesc));
TEST_ASSERT_TRUE(session_is_alive(sesa));
snprintf(cbuf, sizeof(cbuf), "hogehoge\n");
ret = session_write(sesc, cbuf, strlen(cbuf));
TEST_ASSERT_EQUAL(ret, strlen(cbuf));
ret = session_read(sesa, sbuf, sizeof(sbuf));
TEST_ASSERT_EQUAL(ret, strlen(sbuf));
ret = session_write(sesa, sbuf, strlen(sbuf));
TEST_ASSERT_EQUAL(ret, strlen(sbuf));
ret = session_read(sesc, cbuf, sizeof(cbuf));
TEST_ASSERT_EQUAL(ret, strlen(cbuf));
session_destroy(sesc);
session_destroy(sesa);
session_destroy(sess);
}
开发者ID:tidatida,项目名称:lagopus,代码行数:49,代码来源:session_test.c
示例4: test_channel_local_addr_get_set_unset
void
test_channel_local_addr_get_set_unset(void) {
lagopus_result_t ret;
struct channel *channel;
struct addrunion addr = {0,{{0}}};
struct addrunion addr1 = {0,{{0}}};
channel = s_create_data_channel();
addrunion_ipv4_set(&addr, "127.0.0.1");
ret = channel_local_addr_set(channel, &addr);
TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
"channel_local_addr_set() error.");
ret = channel_local_addr_get(channel, &addr1);
TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
"channel_local_addr_get() error.");
TEST_ASSERT_EQUAL_MEMORY_MESSAGE(&addr, &addr1, sizeof(addr),
"channel_local_addr_get() addr error");
ret = channel_local_addr_unset(channel);
TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
"channel_local_addr_unset() error.");
ret = channel_local_addr_get(channel, &addr1);
TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
"channel_local_addr_get() error.");
addrunion_ipv4_set(&addr, "0.0.0.0");
TEST_ASSERT_EQUAL_MEMORY_MESSAGE(&addr, &addr1, sizeof(addr),
"channel_local_addr_get() addr error");
session_destroy(channel_session_get(channel));
free(channel);
}
开发者ID:tidatida,项目名称:lagopus,代码行数:33,代码来源:channel_test.c
示例5: test_channel_local_port_get_set_unset
void
test_channel_local_port_get_set_unset(void) {
uint16_t port;
lagopus_result_t ret;
struct channel *channel;
channel = s_create_data_channel();
ret = channel_local_port_set(channel, 10101);
TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
"channel_local_port_set() error.");
ret = channel_local_port_get(channel, &port);
TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
"channel_local_port_get() error.");
TEST_ASSERT_EQUAL_MESSAGE(10101, port,
"channel_local_port_get() port error");
ret = channel_local_port_unset(channel);
TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
"channel_local_port_unset() error.");
ret = channel_local_port_get(channel, &port);
TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
"channel_local_port_get() error.");
TEST_ASSERT_EQUAL_MESSAGE(0, port,
"channel_local_port_get() port error");
session_destroy(channel_session_get(channel));
free(channel);
}
开发者ID:tidatida,项目名称:lagopus,代码行数:30,代码来源:channel_test.c
示例6: test_channel_proto_get_set_unset
void
test_channel_proto_get_set_unset(void) {
lagopus_result_t ret;
struct channel *channel;
enum channel_protocol protocol;
channel = s_create_data_channel();
ret = channel_protocol_set(channel, PROTOCOL_TCP6);
TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
"channel_protocol_set() error.");
ret = channel_protocol_get(channel, &protocol);
TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
"channel_protocol_get() error.");
TEST_ASSERT_EQUAL_MESSAGE(PROTOCOL_TCP6, protocol,
"channel_protocol_get() proto error");
ret = channel_protocol_unset(channel);
TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
"channel_protocol_unset() error.");
ret = channel_protocol_get(channel, &protocol);
TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
"channel_protocol_get() error.");
TEST_ASSERT_EQUAL_MESSAGE(PROTOCOL_TCP, protocol,
"channel_protocol_get() proto error");
session_destroy(channel_session_get(channel));
free(channel);
}
开发者ID:tidatida,项目名称:lagopus,代码行数:30,代码来源:channel_test.c
示例7: test_channel_xid_get_set
void
test_channel_xid_get_set(void) {
struct channel *channel;
uint32_t ret_xid;
uint32_t xid = 0x10;
channel = s_create_data_channel();
/* Call func. */
channel_xid_set(channel, xid);
ret_xid = channel_xid_get(channel);
TEST_ASSERT_EQUAL_MESSAGE(ret_xid, xid,
"xid error.");
/* incrementation */
/* Call func. */
ret_xid = channel_xid_get(channel);
TEST_ASSERT_EQUAL_MESSAGE(ret_xid, xid + 1,
"xid incrementation error.");
/* max */
/* Call func. */
channel_xid_set(channel, UINT32_MAX);
ret_xid = channel_xid_get(channel);
TEST_ASSERT_EQUAL_MESSAGE(ret_xid, 100 /*START_XID*/,
"xid max error.");
session_destroy(channel_session_get(channel));
free(channel);
}
开发者ID:tidatida,项目名称:lagopus,代码行数:33,代码来源:channel_test.c
示例8: new_vc_cb
static zx_status_t new_vc_cb(port_handler_t* ph, zx_signals_t signals, uint32_t evt) {
zx_handle_t h;
uint32_t dcount, hcount;
if (zx_channel_read(ph->handle, 0, NULL, &h, 0, 1, &dcount, &hcount) < 0) {
return ZX_OK;
}
if (hcount != 1) {
return ZX_OK;
}
vc_t* vc;
int fd;
if (session_create(&vc, &fd, true, false) < 0) {
zx_handle_close(h);
return ZX_OK;
}
zx_handle_t handles[FDIO_MAX_HANDLES];
uint32_t types[FDIO_MAX_HANDLES];
zx_status_t r = fdio_transfer_fd(fd, FDIO_FLAG_USE_FOR_STDIO | 0, handles, types);
if (zx_channel_write(h, 0, types,
static_cast<uint32_t>(r * sizeof(uint32_t)), handles, r) != ZX_OK) {
session_destroy(vc);
} else {
port_wait(&port, &vc->fh.ph);
}
zx_handle_close(h);
return ZX_OK;
}
开发者ID:saltstar,项目名称:smartnix,代码行数:30,代码来源:main.cpp
示例9: session_io_cb
static zx_status_t session_io_cb(port_fd_handler_t* fh, unsigned pollevt, uint32_t evt) {
vc_t* vc = containerof(fh, vc_t, fh);
if (pollevt & POLLIN) {
char data[1024];
ssize_t r = read(vc->fd, data, sizeof(data));
if (r > 0) {
vc_write(vc, data, r, 0);
return ZX_OK;
}
}
if (pollevt & (POLLRDHUP | POLLHUP)) {
// shell sessions get restarted on exit
if (vc->is_shell) {
zx_task_kill(vc->proc);
vc->proc = ZX_HANDLE_INVALID;
int fd = openat(vc->fd, "0", O_RDWR);
if (fd < 0) {
goto fail;
}
if (launch_shell(vc, fd, NULL) < 0) {
goto fail;
}
return ZX_OK;
}
}
fail:
session_destroy(vc);
return ZX_ERR_STOP;
}
开发者ID:saltstar,项目名称:smartnix,代码行数:34,代码来源:main.cpp
示例10: http_session_destroy
void http_session_destroy(struct http_session *s)
{
int must_destroy = 0;
http_sessions_t http_sessions = s->http_sessions;
yaz_log(http_sessions->log_level, "Session %u destroy", s->session_id);
yaz_mutex_enter(http_sessions->mutex);
/* only if http_session has no active http sessions on it can be destroyed */
if (s->destroy_counter == s->activity_counter)
{
struct http_session **p = 0;
must_destroy = 1;
for (p = &http_sessions->session_list; *p; p = &(*p)->next)
if (*p == s)
{
*p = (*p)->next;
break;
}
}
yaz_mutex_leave(http_sessions->mutex);
if (must_destroy)
{ /* destroying for real */
yaz_log(http_sessions->log_level, "Session %u destroyed", s->session_id);
iochan_destroy(s->timeout_iochan);
session_destroy(s->psession);
http_session_use(-1);
nmem_destroy(s->nmem);
}
else {
yaz_log(http_sessions->log_level, "Session %u destroying delayed. Active clients (%d-%d). Waiting for new timeout.",
s->session_id, s->activity_counter, s->destroy_counter);
}
}
开发者ID:piskvorky,项目名称:pazpar2,代码行数:35,代码来源:http_command.c
示例11: sessiondb_init
int sessiondb_init(fate_cb tcpest_fn, fate_cb tcptrans_fn)
{
int error;
error = session_init();
if (error)
return error;
error = pktqueue_init();
if (error) {
session_destroy();
return error;
}
sessiontable_init(&session_table_udp,
config_get_ttl_udp, just_die,
NULL, NULL);
sessiontable_init(&session_table_tcp,
config_get_ttl_tcpest, tcpest_fn,
config_get_ttl_tcptrans, tcptrans_fn);
sessiontable_init(&session_table_icmp,
config_get_ttl_icmp, just_die,
NULL, NULL);
return 0;
}
开发者ID:pandax381,项目名称:NAT64,代码行数:25,代码来源:db.c
示例12: news_post
gint news_post(Folder *folder, const gchar *file)
{
gint ok;
char *contents = file_read_to_str_no_recode(file);
NewsSession *session;
cm_return_val_if_fail(folder != NULL, -1);
cm_return_val_if_fail(FOLDER_CLASS(folder) == &news_class, -1);
cm_return_val_if_fail(contents != NULL, -1);
session = news_session_get(folder);
if (!session) {
g_free(contents);
return -1;
}
ok = nntp_threaded_post(folder, contents, strlen(contents));
g_free(contents);
if (ok == NEWSNNTP_ERROR_STREAM) {
session_destroy(SESSION(session));
REMOTE_FOLDER(folder)->session = NULL;
}
return (ok == NEWSNNTP_NO_ERROR ? 0 : -1);
}
开发者ID:Mortal,项目名称:claws,代码行数:27,代码来源:news.c
示例13: nntp_ping
static gboolean nntp_ping(gpointer data)
{
Session *session = (Session *)data;
NewsSession *news_session = NEWS_SESSION(session);
int r;
struct tm lt;
if (session->state != SESSION_READY || news_folder_locked(news_session->folder))
return FALSE;
news_folder_lock(NEWS_FOLDER(news_session->folder));
if ((r = nntp_threaded_date(news_session->folder, <)) != NEWSNNTP_NO_ERROR) {
if (r != NEWSNNTP_ERROR_COMMAND_NOT_SUPPORTED &&
r != NEWSNNTP_ERROR_COMMAND_NOT_UNDERSTOOD) {
log_warning(LOG_PROTOCOL, _("NNTP connection to %s:%d has been"
" disconnected.\n"),
news_session->folder->account->nntp_server,
news_session->folder->account->set_nntpport ?
news_session->folder->account->nntpport : NNTP_PORT);
REMOTE_FOLDER(news_session->folder)->session = NULL;
news_folder_unlock(NEWS_FOLDER(news_session->folder));
session->state = SESSION_DISCONNECTED;
session->sock = NULL;
session_destroy(session);
return FALSE;
}
}
news_folder_unlock(NEWS_FOLDER(news_session->folder));
session_set_access_time(session);
return TRUE;
}
开发者ID:Mortal,项目名称:claws,代码行数:33,代码来源:news.c
示例14: reactor_logic_on_close_completed
static void
reactor_logic_on_close_completed(struct server_s* self, void* ud)
{
struct net_reactor* reactor = (struct net_reactor*)server_getext(self);
struct net_session_s* session = (struct net_session_s*)ud;
session_destroy(reactor, session);
}
开发者ID:yubing84,项目名称:accumulation-dev,代码行数:7,代码来源:thread_reactor.c
示例15: request_rename
/*
* Rename a mailbox.
*/
int
request_rename(const char *server, const char *port, const char *user,
const char *oldmbox, const char *newmbox)
{
int r;
session *s;
char *o, *n;
if (!(s = session_find(server, port, user)))
return -1;
o = xstrdup(apply_namespace(oldmbox, s->ns.prefix, s->ns.delim));
n = xstrdup(apply_namespace(newmbox, s->ns.prefix, s->ns.delim));
r = response_generic(s, imap_rename(s, o, n));
xfree(o);
xfree(n);
if (r == -1)
goto fail;
return r;
fail:
close_connection(s);
session_destroy(s);
return -1;
}
开发者ID:Neil-Smithline,项目名称:imapfilter,代码行数:32,代码来源:request.c
示例16: control_process
int control_process() {
char* buffer = NULL;
// 检查用户是否按下了按钮
if (cgiFormSubmitClicked("led1") == cgiFormSuccess) {
// 调用 led 1 控制代码
control_led(0);
} else if (cgiFormSubmitClicked("led2") == cgiFormSuccess) {
// 调用 led 2 控制代码
control_led(1);
} else if (cgiFormSubmitClicked("logout") == cgiFormSuccess) {
// 退出登录
session_destroy();
cgiHeaderLocation(cgiScriptName);
return 0;
}
// 输出 ContentType header
// 作为 CGI 程序必须输出这个 header,否则会导致 500 错误
fprintf(cgiOut, "Pragma: no-cache\n");
cgiHeaderContentType("text/html");
buffer = read_template(g_control_template);
if (buffer == NULL) {
fprintf(cgiOut, "Warning: Can't read template file: %s.<br />\n",
g_control_template);
return -1;
}
fprintf(cgiOut, "%s", buffer);
free(buffer);
return 0;
}
开发者ID:macrofengye,项目名称:cweb,代码行数:34,代码来源:sessiontest.c
示例17: request_store
/*
* Add, remove or replace the specified flags of the messages.
*/
int
request_store(const char *server, const char *port, const char *user,
const char *mesg, const char *mode, const char *flags)
{
int t, r;
session *s;
if (!(s = session_find(server, port, user)))
return -1;
t = imap_store(s, mesg, mode, flags);
if ((r = response_generic(s, t)) == -1)
goto fail;
if (xstrcasestr(flags, "\\Deleted") && get_option_boolean("expunge"))
if (response_generic(s, imap_expunge(s)) == -1)
goto fail;
return r;
fail:
close_connection(s);
session_destroy(s);
return -1;
}
开发者ID:Neil-Smithline,项目名称:imapfilter,代码行数:28,代码来源:request.c
示例18: request_copy
/*
* Copy the specified messages to another mailbox.
*/
int
request_copy(const char *server, const char *port, const char *user,
const char *mesg, const char *mbox)
{
int t, r;
session *s;
const char *m;
if (!(s = session_find(server, port, user)))
return -1;
m = apply_namespace(mbox, s->ns.prefix, s->ns.delim);
do {
t = imap_copy(s, mesg, m);
switch (r = response_generic(s, t)) {
case STATUS_RESPONSE_TRYCREATE:
if (create_mailbox(s, mbox) == -1)
goto fail;
break;
case -1:
goto fail;
break;
}
} while (r == STATUS_RESPONSE_TRYCREATE);
return r;
fail:
close_connection(s);
session_destroy(s);
return -1;
}
开发者ID:Neil-Smithline,项目名称:imapfilter,代码行数:36,代码来源:request.c
示例19: request_fetchfields
/*
* Fetch the specified header fields, ie. BODY[HEADER.FIELDS (<fields>)], of
* the messages.
*/
int
request_fetchfields(const char *server, const char *port, const char *user,
const char *mesg, const char *headerfields, char **fields, size_t *len)
{
int t, r, n;
session *s;
char *f;
n = strlen("BODY.PEEK[HEADER.FIELDS ()]") + strlen(headerfields) + 1;
f = (char *)xmalloc(n * sizeof(char));
snprintf(f, n, "%s%s%s", "BODY.PEEK[HEADER.FIELDS (", headerfields, ")]");
if (!(s = session_find(server, port, user)))
return -1;
t = imap_fetch(s, mesg, f);
if ((r = response_fetchbody(s, t, fields, len)) == -1)
goto fail;
xfree(f);
return r;
fail:
close_connection(s);
session_destroy(s);
return -1;
}
开发者ID:Neil-Smithline,项目名称:imapfilter,代码行数:32,代码来源:request.c
示例20: request_fetchpart
/*
* Fetch the specified message part, ie. BODY[<part>], of the
* messages.
*/
int
request_fetchpart(const char *server, const char *port, const char *user,
const char *mesg, const char *part, char **bodypart, size_t *len)
{
int t, r, n;
session *s;
char *f;
n = strlen("BODY.PEEK[]") + strlen(part) + 1;
f = (char *)xmalloc(n * sizeof(char));
snprintf(f, n, "%s%s%s", "BODY.PEEK[", part, "]");
if (!(s = session_find(server, port, user)))
return -1;
t = imap_fetch(s, mesg, f);
if ((r = response_fetchbody(s, t, bodypart, len)) == -1)
goto fail;
xfree(f);
return r;
fail:
close_connection(s);
session_destroy(s);
return -1;
}
开发者ID:Neil-Smithline,项目名称:imapfilter,代码行数:32,代码来源:request.c
注:本文中的session_destroy函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论