From 952d0559caf8bad69084434d7e32a1440cf6bc92 Mon Sep 17 00:00:00 2001 From: jehan Date: Mon, 20 Oct 2008 19:05:48 +0000 Subject: [PATCH] add proxy publisher timer git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@109 3f6dc0c8-ddfe-455d-9043-3cd528dc4637 --- .../linphone/p2pproxy/core/P2pProxyMain.java | 12 ++++-- .../core/sipproxy/SipProxyRegistrar.java | 37 +++++++++++++++---- .../p2pproxy/test/utils/UserInstance.java | 7 ++-- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/p2pproxy/src/org/linphone/p2pproxy/core/P2pProxyMain.java b/p2pproxy/src/org/linphone/p2pproxy/core/P2pProxyMain.java index 89950347d..577a58f50 100644 --- a/p2pproxy/src/org/linphone/p2pproxy/core/P2pProxyMain.java +++ b/p2pproxy/src/org/linphone/p2pproxy/core/P2pProxyMain.java @@ -173,6 +173,7 @@ public class P2pProxyMain implements P2pProxyMainMBean { mConfigurator.setProperty(JxtaNetworkManager.HTTP_LISTENING_PUBLIC_ADDRESS,args[i + 1]+":9700"); mConfigurator.setProperty(JxtaNetworkManager.TCP_LISTENING_PUBLIC_ADDRESS,args[i + 1]+":9701"); mConfigurator.setProperty(RtpRelayService.AUDIO_VIDEO_PUBLIC_URI,"udp://"+args[i + 1]+":"+lMediaPort); + mConfigurator.setProperty(SipProxyRegistrar.REGISTRAR_PUBLIC_ADDRESS,args[i + 1]); System.out.println("public address detected[" + args[i + 1] + "]"); } else if (argument.equals("-socks-url")) { @@ -267,8 +268,7 @@ public class P2pProxyMain implements P2pProxyMainMBean { } - //setup account manager - mP2pProxyAccountManagement = new P2pProxyAccountManagement(mJxtaNetworkManager); + //set management try { ObjectName lObjectName = new ObjectName(ACCOUNT_MGR_MBEAN_NAME); @@ -301,6 +301,8 @@ public class P2pProxyMain implements P2pProxyMainMBean { mServiceProvider = new EdgePeerServiceManager(aProperties, mJxtaNetworkManager); mP2pProxyManagement = (P2pProxyManagement) mServiceProvider; mP2pProxySipProxyRegistrarManagement = (P2pProxyResourceManagement) mServiceProvider; + //setup account manager + mP2pProxyAccountManagement = new P2pProxyAccountManagement(mJxtaNetworkManager); mServiceProvider.start(3000L); } @@ -311,6 +313,8 @@ public class P2pProxyMain implements P2pProxyMainMBean { mP2pProxyManagement = (P2pProxyManagement) mServiceProvider; mP2pProxySipProxyRegistrarManagement = (P2pProxyResourceManagement) mServiceProvider; mServiceProvider.start(3000L); + //setup account manager + mP2pProxyAccountManagement = new P2pProxyAccountManagement(mJxtaNetworkManager); // setup sip provider SipStack.log_path = mConfigHomeDir+"/logs"; mSipAndPipeListener = new SipProxyRegistrar(mConfigurator,mJxtaNetworkManager,mP2pProxyAccountManagement); @@ -330,7 +334,9 @@ public class P2pProxyMain implements P2pProxyMainMBean { mP2pProxyManagement = null; mP2pProxySipProxyRegistrarManagement = (P2pProxyResourceManagement) mServiceProvider; mServiceProvider.start(3000L); -// setup sip provider + //setup account manager + mP2pProxyAccountManagement = new P2pProxyAccountManagement(mJxtaNetworkManager); + // setup sip provider SipStack.log_path = mConfigHomeDir+"/logs"; mSipAndPipeListener = new SipProxyRegistrar(mConfigurator,mJxtaNetworkManager,mP2pProxyAccountManagement); //set management diff --git a/p2pproxy/src/org/linphone/p2pproxy/core/sipproxy/SipProxyRegistrar.java b/p2pproxy/src/org/linphone/p2pproxy/core/sipproxy/SipProxyRegistrar.java index de1c5f9b8..e6562ae0c 100644 --- a/p2pproxy/src/org/linphone/p2pproxy/core/sipproxy/SipProxyRegistrar.java +++ b/p2pproxy/src/org/linphone/p2pproxy/core/sipproxy/SipProxyRegistrar.java @@ -26,6 +26,8 @@ import java.io.IOException; import java.net.InetSocketAddress; import java.util.HashMap; import java.util.Map; +import java.util.Timer; +import java.util.TimerTask; import java.util.concurrent.Callable; import java.util.concurrent.Executors; import java.util.concurrent.ExecutorService; @@ -57,6 +59,7 @@ public class SipProxyRegistrar implements SipProviderListener,SipProxyRegistrarM public final static String REGISTRAR_PORT="org.linphone.p2pproxy.SipListener.registrar.port"; public final static String REGISTRAR_PUBLIC_ADDRESS="org.linphone.p2pproxy.SipListener.registrar.public.address"; public final static String ADV_NAME = "p2p-proxy-proxyregistrar"; + private final int ADV_LIFE_TIME=60000; // private final SipProvider mProvider; private final JxtaNetworkManager mJxtaNetworkManager; @@ -68,7 +71,8 @@ public class SipProxyRegistrar implements SipProviderListener,SipProxyRegistrarM private final P2pProxyAccountManagementMBean mP2pProxyAccountManagement; private final Configurator mProperties; private final SuperPeerProxy mSuperPeerProxy; - private final NetworkResourceAdvertisement mProxyRegistrationAdvertisement; + private NetworkResourceAdvertisement mProxyRegistrationAdvertisement; + private final Timer mTimer = new Timer ("Proxy registrar adv publisher"); //private long mNumberOfEstablishedCall; private long mNumberOfRefusedRegistration; @@ -172,12 +176,21 @@ public class SipProxyRegistrar implements SipProviderListener,SipProxyRegistrarM mProvider.addSipProviderListener(SipProvider.PROMISQUE,this); mPool = Executors.newCachedThreadPool(); mSuperPeerProxy = new SuperPeerProxy(aJxtaNetworkManager, "sip:"+mProvider.getViaAddress()+":"+mProvider.getPort(),mRegistrationTab); - mProxyRegistrationAdvertisement = (NetworkResourceAdvertisement) AdvertisementFactory.newAdvertisement(NetworkResourceAdvertisement.getAdvertisementType()); - mProxyRegistrationAdvertisement.setID(IDFactory.newCodatID(mJxtaNetworkManager.getPeerGroup().getPeerGroupID(), mSuperPeerProxy.getSipProxyRegistrarAddress().toString().getBytes())); - mProxyRegistrationAdvertisement.setAddress(mSuperPeerProxy.getSipProxyRegistrarAddress()); - mProxyRegistrationAdvertisement.setName(ADV_NAME); - mJxtaNetworkManager.getPeerGroup().getDiscoveryService().publish(mProxyRegistrationAdvertisement,60000,30000); - mLog.info(mProxyRegistrationAdvertisement + "published"); + TimerTask lPublisherTask = new TimerTask() { + + @Override + public void run() { + try { + SipProxyRegistrar.this.publishAdvertisement(); + } catch (IOException e) { + mLog.error("cannot publish proxy registar adv", e); + } + + } + + }; + mTimer.scheduleAtFixedRate(lPublisherTask, 0, ADV_LIFE_TIME-ADV_LIFE_TIME/10); + } public void onReceivedMessage(SipProvider aProvider, Message aMessage) { if (aProvider.getListeners().containsKey(aMessage.getTransactionId())) { @@ -355,4 +368,14 @@ public void stop() { public long getNumberOfUnRegistration() { return mNumberOfUnRegistration; } + private void publishAdvertisement() throws IOException { + if (mProxyRegistrationAdvertisement == null) { + mProxyRegistrationAdvertisement = (NetworkResourceAdvertisement) AdvertisementFactory.newAdvertisement(NetworkResourceAdvertisement.getAdvertisementType()); + mProxyRegistrationAdvertisement.setID(IDFactory.newCodatID(mJxtaNetworkManager.getPeerGroup().getPeerGroupID(), mSuperPeerProxy.getSipProxyRegistrarAddress().toString().getBytes())); + mProxyRegistrationAdvertisement.setAddress(mSuperPeerProxy.getSipProxyRegistrarAddress()); + mProxyRegistrationAdvertisement.setName(ADV_NAME); + } + mJxtaNetworkManager.getPeerGroup().getDiscoveryService().publish(mProxyRegistrationAdvertisement,ADV_LIFE_TIME,ADV_LIFE_TIME/2); + mLog.info(mProxyRegistrationAdvertisement + "published"); + } } diff --git a/p2pproxy/test-src/org/linphone/p2pproxy/test/utils/UserInstance.java b/p2pproxy/test-src/org/linphone/p2pproxy/test/utils/UserInstance.java index 79ebb1598..b168c8cc5 100644 --- a/p2pproxy/test-src/org/linphone/p2pproxy/test/utils/UserInstance.java +++ b/p2pproxy/test-src/org/linphone/p2pproxy/test/utils/UserInstance.java @@ -77,7 +77,7 @@ public UserInstance(final String userName) throws P2pProxyException { if (lFile.exists() == false) lFile.mkdir(); mProvider=new SipProvider(null,lSipPort); mSipClient = new SipClient(mProvider,userName,30000); - final TimerTask lTimerTask = new TimerTask() { + class RegistrarTimerTask extends TimerTask { @Override public void run() { try { @@ -94,12 +94,12 @@ public UserInstance(final String userName) throws P2pProxyException { } catch(Exception e) { mLog.error("cannot register user["+userName+"]",e); } finally { - mTimer.schedule(this, REGISTRATION_PERIOD-REGISTRATION_PERIOD/10); + mTimer.schedule(new RegistrarTimerTask(), REGISTRATION_PERIOD-REGISTRATION_PERIOD/10); } } }; - mTimer.schedule(lTimerTask, REGISTRATION_PERIOD-REGISTRATION_PERIOD/10); + mTimer.schedule(new RegistrarTimerTask(), REGISTRATION_PERIOD-REGISTRATION_PERIOD/10); mSipClient.listen(); } catch (Exception e) { throw new P2pProxyException("cannot start client",e); @@ -128,7 +128,6 @@ public static void main(String[] args) throws P2pProxyException { } else if (argument.equals("-nb-call")) { lLoop = Integer.parseInt(args[i + 1]); System.out.println("nb-call [" + lLoop + "]"); - isRegistered } else { System.out.println("Invalid option: " + args[i]); usage();