Logo Search packages:      
Sourcecode: g2ipmsg version File versions  Download package

static int ipmsg_proc_read_msg ( const udp_con_t *  con,
const msg_data_t *  msg 
) [static]

IPMSGのIPMSG_READMSGパケットを処理する

Parameters:
[in] con UDPコネクション情報
[in] msg 受信したメッセージのメッセージ情報
Return values:
0 正常終了
-EINVAL 引数異常
Attention:
内部リンケージ

Definition at line 514 of file protocol.c.

References pkt_no, and read_message_dialog().

Referenced by ipmsg_dispatch_message().

                                                                {
      int            rc = 0;
      pktno_t     pktno = 0;
      gchar       *user = NULL;
      struct timeval tv;

      if (con == NULL) {
            rc = -EINVAL;
            goto error_out;
      }

      gettimeofday(&tv, NULL); /* 受信確認時刻取得  */

      if (msg != NULL) {
            errno = 0;
            pktno = strtol(msg->message, (char **)NULL, 10);
            if (errno == 0) {
                  dbg_out("read mssage:seq %ld\n", pkt_no);
            } else {
                  war_out("Gan not optain packet number:%s\n", msg->message);
                  rc = -errno;
                  goto error_out;
            }

            dbg_out("read mssage:seq %s\n", msg->message);
            
            user = g_strdup(refer_user_name_from_msg(msg)); /* ユーザ名獲得 */
      }

      /* 
       *  メモリ不足の場合やmsgがNULLの場合, ユーザ名にNULLを送信。
       *  user領域の開放は受け手責任で実施する.
       */
      read_message_dialog(user, udp_get_peeraddr(con), tv.tv_sec);

      rc = 0; /* 正常終了 */
      
error_out:
      return rc;
}


Generated by  Doxygen 1.6.0   Back to index