📄 jpush_general.c
字号:
/* Find all of the entries to remove */
for (pushp = g_jpush_pushlist_ptr; pushp != NULL; pushp = pushnext)
{
pushnext = pushp->next;
if (strcmp(store, pushp->storagename) == 0)
{
for (i = 0; i < MAX_PUSH_REGISTRY; i++)
{
/* remove the push indication memorized by MMI */
if (timealarm_push_ind_msg_used[i])
{
if (strcmp(store, timealarm_push_ind_msg[i].mids_storage_name) == 0)
{
jpush_search_and_delete_persistent_push(
timealarm_push_ind_msg[i].game_type,
0,
timealarm_push_ind_msg[i].pushalarm_type,
timealarm_push_ind_msg[i].mid_class_name,
timealarm_push_ind_msg[i].mids_storage_name,
pushp->filter,
pushp->connection,
pushp->appid,
KAL_TRUE);
timealarm_push_ind_msg_used[i] = KAL_FALSE;
timealarm_push_ind_msg[i].mids_storage_name = NULL;
}
}
}
*pPrevNext = pushp->next;
g_push_length--;
/* Unregister the sms port */
if (pushp->portNo != -1)
{
J2ME_sms_unregister(pushp->portNo, PUSH_REGISTRY);
}
else if (pushp->appid != NULL)
{
J2ME_mms_register(pushp->appid, 1, PUSH_REGISTRY); /* 1 for unregister */
}
free_ctrl_buffer(pushp->connection);
free_ctrl_buffer(pushp->midlet);
free_ctrl_buffer(pushp->filter);
free_ctrl_buffer(pushp->storagename);
if (pushp->appid != NULL)
{
free_ctrl_buffer(pushp->appid);
}
free_ctrl_buffer(pushp);
continue;
}
pPrevNext = &pushp->next;
}
jpush_push_save();
/* Find all of the alarm entries to remove */
for (alarmp = g_jpush_alarmlist_ptr; alarmp != NULL; alarmp = alarmnext)
{
alarmnext = alarmp->next;
if (strcmp(store, alarmp->storagename) == 0)
{
for (i = 0; i < MAX_PUSH_REGISTRY; i++)
{
/* remove the push indication memorized by MMI */
if (timealarm_push_ind_msg_used[i])
{
if (strcmp(store, timealarm_push_ind_msg[i].mids_storage_name) == 0)
{
jpush_search_and_delete_persistent_push(
timealarm_push_ind_msg[i].game_type,
0,
timealarm_push_ind_msg[i].pushalarm_type,
timealarm_push_ind_msg[i].mid_class_name,
timealarm_push_ind_msg[i].mids_storage_name,
NULL,
NULL,
NULL,
KAL_TRUE);
timealarm_push_ind_msg_used[i] = KAL_FALSE;
timealarm_push_ind_msg[i].mids_storage_name = NULL;
}
}
}
*alarmpPrevNext = alarmp->next;
free_ctrl_buffer(alarmp->midlet);
alarmp->midlet = NULL;
free_ctrl_buffer(alarmp->storagename);
alarmp->storagename = NULL;
free_ctrl_buffer(alarmp);
continue;
}
alarmpPrevNext = &alarmp->next;
}
jpush_alarm_save();
}
/*****************************************************************************
* FUNCTION
* jpush_push_checkappid
* DESCRIPTION
* check if this appid is registered by mms push or not.
* if it is registered, tell it is registered by the same midlet or not.
* PARAMETERS
* application_id [?]
* type [IN]
* RETURNS
* void
*****************************************************************************/
int jpush_push_checkappid(char *application_id, int type)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
char *appid = application_id;
pushentry_struct *p;
int result = NON_REGISTERED;
char *cur_suite;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_FUNC, FUNC_J2ME_CHECK_PUSH_REGISTER_PORT);
/* Find the entry to pass off the open file descriptor. */
for (p = g_jpush_pushlist_ptr; p; p = p->next)
{
if (p->appid != NULL)
{
if (strcmp(appid, p->appid) == 0)
{
cur_suite = jam_current_midletsuite_name();
#ifdef MIDP_PUSH_DEBUG
if (cur_suite)
{
sprintf(_kvmLogStr, "J2ME Debug: j2me_check_push_register_port commandstate: %s", cur_suite);
Kprintf();
}
sprintf(_kvmLogStr, "J2ME Debug: j2me_check_push_register_port check: %s", p->storagename);
Kprintf();
#endif /* MIDP_PUSH_DEBUG */
if (cur_suite && (strcmp(p->storagename, cur_suite) == 0))
{
/* The same midletsuite register the port. */
result = PUSH_REGISTERED;
}
else
{
/* Already register by other midlet suite */
result = PUSH_CONFLICT_REGISTERED;
}
break;
}
}
}
return result;
}
#ifdef __SUPPORT_INFUSIO__
/*****************************************************************************
* FUNCTION
* jpush_eureka_init
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
int jpush_eureka_init(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
int result = 0;
int smsq_fd;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
work_info_ptr = _jvm_get_builtin_file_info(GAMETYPE_INFUSIO_EUREKA);
work_sys_dir_path = _jvm_get_dir_path(GAMETYPE_INFUSIO_EUREKA);
/* Now read the pending sms in queue */
if ((smsq_fd = jvm_file_open(EUREKA_SMSQUEUE_FILE, O_RDONLY)) != -1)
{
/* If need to do something */
}
else if ((smsq_fd = jvm_file_open(EUREKA_SMSQUEUE_FILE, O_CREAT | O_TRUNC)) == -1)
{
result = -1;
}
if (smsq_fd > 0)
{
jvm_file_close(smsq_fd);
}
return result;
}
/*****************************************************************************
* FUNCTION
* jpush_eureka_enqueue_sms
* DESCRIPTION
*
* PARAMETERS
* type [IN]
* len [IN]
* port [IN]
* buf [?]
* addr [?]
* addr_len [IN]
* timestamp [?]
* RETURNS
*
*****************************************************************************/
kal_int32
jpush_eureka_enqueue_sms(
int type,
int len,
int port,
char *buf,
kal_uint16 *addr,
kal_uint8 addr_len,
kal_uint8 *timestamp)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
int smsq_fd;
kal_uint8 tmp_buf[30];
int result;
j2me_custom_file_info_struct *old_info_ptr = work_info_ptr;
kal_char *old_sys_dir = work_sys_dir_path;
kal_char *old_dir = work_dir_path;
kal_uint8 i = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
work_sys_dir_path = _jvm_get_dir_path(GAMETYPE_INFUSIO_EUREKA);
work_dir_path = work_sys_dir_path;
work_info_ptr = _jvm_get_builtin_file_info(GAMETYPE_INFUSIO_EUREKA);
sprintf(_kvmLogStr, "jpush_eureka_enqueue_sms: game_type = %d, work_sys_dir_path = %s\n", type, work_sys_dir_path);
Kprintf();
/* Now read the pending sms in queue */
if ((smsq_fd = jvm_file_open(EUREKA_SMSQUEUE_FILE, O_RDWR)) < 0)
{
work_sys_dir_path = old_sys_dir;
work_dir_path = old_dir;
work_info_ptr = old_info_ptr;
return (-1);
}
jvm_file_lseek(smsq_fd, 0, SEEK_END);
tmp_buf[i++] = (kal_uint8) ((type & 0xff000000) >> 24);
tmp_buf[i++] = (kal_uint8) ((type & 0x00ff0000) >> 16);
tmp_buf[i++] = (kal_uint8) ((type & 0x0000ff00) >> 8);
tmp_buf[i++] = (kal_uint8) (type & 0x000000ff);
tmp_buf[i++] = ' ';
tmp_buf[i++] = (kal_uint8) ((len & 0xff000000) >> 24);
tmp_buf[i++] = (kal_uint8) ((len & 0x00ff0000) >> 16);
tmp_buf[i++] = (kal_uint8) ((len & 0x0000ff00) >> 8);
tmp_buf[i++] = (kal_uint8) (len & 0x000000ff);
tmp_buf[i++] = ' ';
tmp_buf[i++] = (kal_uint8) ((port & 0xff000000) >> 24);
tmp_buf[i++] = (kal_uint8) ((port & 0x00ff0000) >> 16);
tmp_buf[i++] = (kal_uint8) ((port & 0x0000ff00) >> 8);
tmp_buf[i++] = (kal_uint8) (port & 0x000000ff);
tmp_buf[i++] = ' ';
tmp_buf[i++] = (kal_uint8) (timestamp[0] & 0xFF);
tmp_buf[i++] = (kal_uint8) (timestamp[1] & 0xFF);
tmp_buf[i++] = (kal_uint8) (timestamp[2] & 0xFF);
tmp_buf[i++] = (kal_uint8) (timestamp[3] & 0xFF);
tmp_buf[i++] = (kal_uint8) (timestamp[4] & 0xFF);
tmp_buf[i++] = (kal_uint8) (timestamp[5] & 0xFF);
tmp_buf[i++] = (kal_uint8) (timestamp[6] & 0xFF);
tmp_buf[i++] = ' ';
tmp_buf[i++] = addr_len;
tmp_buf[i++] = ' ';
sprintf(_kvmLogStr, "buf: %s\n", tmp_buf);
Kprintf();
/* "type len port timestamp addr_len addr buf\n " */
result = jvm_file_write(smsq_fd, tmp_buf, i); /* 25 */
ASSERT(result >= 0);
if (addr_len)
{
result = jvm_file_write(smsq_fd, addr, addr_len);
ASSERT(result >= 0);
tmp_buf[0] = ' ';
result = jvm_file_write(smsq_fd, tmp_buf, 1);
ASSERT(result >= 0);
}
if (len)
{
result = jvm_file_write(smsq_fd, buf, len);
ASSERT(result >= 0);
}
jvm_file_write(smsq_fd, "\n", 1);
jvm_file_close(smsq_fd);
work_sys_dir_path = old_sys_dir;
work_dir_path = old_dir;
work_info_ptr = old_info_ptr;
return 0;
}
/*****************************************************************************
* FUNCTION
* jpush_eureka_dequeue_sms
* DESCRIPTION
*
* PARAMETERS
* type [?]
* len [?]
* dequeue_port [IN]
* RETURNS
*
*****************************************************************************/
kal_uint8 *jpush_eureka_dequeue_sms(int *type, int *len, int dequeue_port)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint16 addr_ucs2[6 + MAX_CC_ADDR_LEN + 7];
kal_uint8 timestamp[7];
int smsq_fd, new_smsq_fd;
kal_uint8 *buf = NULL;
kal_uint8 tmp_buf[128];
kal_uint8 tmp_buf_short[2];
kal_uint32 size, entry_size, rw_len;
int result;
j2me_custom_file_info_struct *old_info_ptr = work_info_ptr;
kal_char *old_sys_dir = work_sys_dir_path;
kal_char *old_dir = work_dir_path;
int port;
kal_bool found = KAL_FALSE;
kal_uint8 addr_len = 0;
int temp_type = 0;
int temp_len = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* initialize invalid value */
*type = -1;
*len = -1;
work_sys_dir_path = _jvm_get_dir_path(GAMETYPE_INFUSIO_EUREKA);
work_dir_path = work_sys_dir_path;
work_info_ptr = _jvm_get_builtin_file_info(GAMETYPE_INFUSIO_EUREKA);
sprintf(
_kvmLogStr,
"jpush_eureka_dequeue_sms: game_type = %d, work_sys_dir_path = %s\n",
(int)type,
work_sys_dir_path);
Kprintf();
if ((new_smsq_fd = jvm_file_open(EUREKA_SMSQUEUETMP_FILE, O_CREAT | O_TRUNC)) < 0)
{
work_sys_dir_path = old_sys_dir;
work_dir_path = old_dir;
work_info_ptr = old_info_ptr;
return buf;
}
if ((smsq_fd = jvm_file_open(EUREKA_SMSQUEUE_FILE, O_RDONLY)) < 0)
{
work_sys_dir_path = old_sys_dir;
work_dir_path = old_dir;
work_info_ptr = old_info_ptr;
return buf;
}
jvm_file_lseek(smsq_fd, 0, SEEK_SET);
jvm_file_lseek(new_smsq_fd, 0, SEEK_SET);
if (jvm_file_getsize(smsq_fd, &size) < 0)
{
jvm_file_close(smsq_fd);
jvm_file_close(new_smsq_fd);
work_sys_dir_path = old_sys_dir;
work_dir_path = old_dir;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -