/** * @param message * @param peerGID * @param peer * @return the message actually sent (and its sequence numbers) */ public static ChatMessage sendMessage(String message, String peerGID, D_Peer peer) { if (DEBUG) System.out.println("PLUGIN CHAT: Main: sendMessage enter: " + message); if (peer != null && peerGID == null) peerGID = peer.getGID(); // create a hashtable where ht(key=peerGID ) ==> cm (chatMessage) ChannelDataOut channeldata_out = ChannelDataOut.get(peerGID); ChannelDataIn channeldata_in = ChannelDataIn.get(peerGID); if (DEBUG) System.out.println("PLUGIN CHAT: Main: sendMessage got channel out: " + channeldata_out); if (DEBUG) System.out.println("PLUGIN CHAT: Main: sendMessage got channel in: " + channeldata_in); ChatMessage cm = new ChatMessage(); cm.session_id = channeldata_out.getSessionID(); // cm.session_id_ack = cmsg.session_id; cm.message_type = ChatMessage.MT_TEXT; cm.first_in_this_sequence = channeldata_out.getFirstInSequence(); // cmsg.first_in_this_sequence; ChatElem ce = new ChatElem(); ce.type = 0; // name ce.val = Main.name; cm.content = new ArrayList<ChatElem>(); cm.content.add(ce); cm.msg = message; // first time message to this peer cm.session_id_ack = channeldata_in.getSessionID(); cm.last_acknowledged_in_sequence = channeldata_in.getLastInSequence(); cm.received_out_of_sequence = channeldata_in.getOutOfSequence(); cm.sequence = channeldata_out.getNextSequence(); // msgTrackingSend.put(peer_GID, cm); // only store the last message info for each peer // save to DB for history ( peer_GID:sender(myself): Date/Time : msg as object ) if (DEBUG) System.out.println("PLUGIN CHAT: Main: send: " + cm); // confirm the sending into the GUI receiver.addSentMessage(cm, peerGID, channeldata_out); byte[] _msg = cm.encode(); net.ddp2p.common.plugin_data.PluginRequest envelope = new net.ddp2p.common.plugin_data.PluginRequest(); envelope.msg = _msg; envelope.peer_GID = peerGID; // destination envelope.type = net.ddp2p.common.plugin_data.PluginRequest.MSG; envelope.plugin_GID = (String) Main.getPluginDataHashtable().get("plugin_GID"); if (DEBUG) System.out.println("PLUGIN CHAT: Main: send envelope: " + envelope); Main.enqueue(envelope); if (DEBUG) System.out.println("PLUGIN CHAT: Main: sendMessage exit"); return cm; }