44import UI .panel .about .AboutPanel ;
55import UI .panel .fm .FilePanel ;
66import UI .panel .im .IMPanel ;
7- import UI .panel .monitor .ConsolePanel ;
87import UI .panel .setting .SettingPanel ;
98import com .alibaba .fastjson .JSON ;
9+ import com .nbs .entity .PeerBoradcastInfo ;
1010import com .nbs .ipfs .IPFSHelper ;
1111import com .nbs .tools .ConfigHelper ;
12+ import com .nbs .utils .Base64CodecUtil ;
1213import io .ipfs .api .IPFS ;
14+ import io .ipfs .api .MerkleNode ;
15+ import io .ipfs .api .NamedStreamable ;
1316import org .apache .commons .lang3 .StringUtils ;
1417import org .slf4j .Logger ;
1518import org .slf4j .LoggerFactory ;
@@ -60,6 +63,8 @@ public class AppMainWindow {
6063
6164 public static String PEER_ID = "" ;
6265
66+ public static PeerBoradcastInfo self = null ;
67+
6368 public static boolean SERVER_STAT = false ;
6469
6570 protected static IPFSHelper ipfsHelper = IPFSHelper .getInstance ();
@@ -117,7 +122,7 @@ public void run() {
117122 */
118123 public AppMainWindow (){
119124 initialize ();
120-
125+ broadcastOnline ();
121126 }
122127 /**
123128 * 初始化frame内容
@@ -209,7 +214,10 @@ private void loadEnv(){
209214
210215 if (map .get ("ID" )!=null )PEER_ID = (String )map .get ("ID" );
211216 logger .info (">>>>>>>>>>>>>." +map .get ("ID" ));
212- initNick ();
217+ String n = initNick ();
218+ self = new PeerBoradcastInfo ((String )map .get ("ID" ),n );
219+ //avatar must below init nick
220+ initAvatar ();
213221 }catch (Exception e ){
214222 logger .error ("ipfs Server is dead." ,e .getCause ());
215223 ipfs = new IPFS (ConfigHelper .getIpfsAddress ());
@@ -218,26 +226,78 @@ private void loadEnv(){
218226 }
219227
220228
221- public void initNick (){
222- if (StringUtils .isNotBlank (PROFILE_NICKNAME ))return ;
229+ public String initNick (){
230+ if (StringUtils .isNotBlank (PROFILE_NICKNAME ))return PROFILE_NICKNAME ;
223231 String nick = "" ;
232+
224233 try {
225234 Map cfgMap = ipfs .config .show ();
226- if (cfgMap .containsKey (IPFSHelper .JSON_NICKNAME_KEY )){
227- nick = (String )cfgMap .get (IPFSHelper .JSON_NICKNAME_KEY );
235+ if (cfgMap .containsKey (ConfigHelper .JSON_NICKNAME_KEY )){
236+ nick = (String )cfgMap .get (ConfigHelper .JSON_NICKNAME_KEY );
228237 }
229238 } catch (IOException e ) {
230239 e .printStackTrace ();
231240 nick = ipfsHelper .generateNickName ();
232241 try {
233- ipfs .config .set (IPFSHelper .JSON_NICKNAME_KEY ,nick );
242+ ipfs .config .set (ConfigHelper .JSON_NICKNAME_KEY ,nick );
234243 String s =JSON .toJSONString (ipfs .config .show (),true );
235244 logger .info (s );
236245 } catch (IOException e1 ) {
237246 e1 .printStackTrace ();
238247 }
239248 }
240249 PROFILE_NICKNAME = nick ;
250+ return PROFILE_NICKNAME ;
251+ }
252+
253+ /**
254+ * 初始化头像
255+ */
256+ public void initAvatar (){
257+ try {
258+ String avatarHash ,suffix ,fileName ;
259+ Map cfgMap = ipfs .config .show ();
260+ if (cfgMap .containsKey (ConfigHelper .JSON_AVATAR_KEY )&&cfgMap .containsKey (ConfigHelper .JSON_AVATAR_SUFFIX_KEY )){
261+ //
262+ }else {
263+ File defaultAvatarImage = new File (ConfigHelper .PROFILE_ROOT +"nbs.png" );
264+ if (!defaultAvatarImage .exists ()||defaultAvatarImage .isDirectory ())return ;
265+ fileName = defaultAvatarImage .getName ();
266+ suffix = fileName .substring (fileName .lastIndexOf ("." ));
267+ logger .info (suffix );
268+ NamedStreamable .FileWrapper file = new NamedStreamable .FileWrapper (defaultAvatarImage );
269+ java .util .List <MerkleNode > merkleNodes = ipfs .add (file );
270+ avatarHash = merkleNodes .get (0 ).hash .toBase58 ();
271+
272+ //存入config
273+ try {
274+ ipfs .config .set (ConfigHelper .JSON_AVATAR_KEY ,avatarHash );
275+ ipfs .config .set (ConfigHelper .JSON_AVATAR_SUFFIX_KEY ,suffix );
276+ ipfs .config .set (ConfigHelper .JSON_AVATAR_NAME_KEY ,fileName );
277+ }catch (Exception ioe ){
278+ logger .error (ioe .getMessage ());
279+ }
280+ self .setAvatarHash (avatarHash );
281+ self .setAvatarSuffix (suffix );
282+ }
283+ } catch (IOException e ) {
284+ e .printStackTrace ();
285+ }
241286 }
242287
288+ /**
289+ *
290+ */
291+ private void broadcastOnline (){
292+ if (self ==null )return ;
293+ String ctrlMsg = Base64CodecUtil .encodeCtrlMsg (self ,Base64CodecUtil .CtrlTypes .online );
294+
295+ try {
296+ logger .info ("Send CTRL MSG : " +ctrlMsg );
297+ ipfs .pubsub .pub (IPFSHelper .NBSWORLD_CTRL_TOPIC ,ctrlMsg );
298+ logger .info (IPFSHelper .NBSWORLD_CTRL_TOPIC +"Send CTRL MSG : " +ctrlMsg );
299+ } catch (Exception e ) {
300+ e .printStackTrace ();
301+ }
302+ }
243303}
0 commit comments