Advertisement
uncle_Lem

AllJoyn error

Nov 13th, 2012
445
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.64 KB | None | 0 0
  1. // http://stackoverflow.com/questions/13359560/bus-blocking-call-not-allowed-error-in-alljoyn
  2.  
  3.     private void connect() {
  4.         Status status;
  5.         bus = new BusAttachment(getClass().getName(), BusAttachment.RemoteMessage.Receive);
  6.  
  7.         status = bus.registerBusObject(this, "/MyService");
  8.         if (status != Status.OK) {
  9.             Toast.makeText(AcAllJoyn.this,status.toString(),40);
  10.             return;
  11.         }
  12.  
  13.         bus.registerBusListener(new BusListener() {
  14.             @Override
  15.             public void foundAdvertisedName(String name,
  16.                                             short transport,
  17.                                             String namePrefix) {
  18.                 short contactPort = CONTACT_PORT;
  19.                 SessionOpts sessionOpts = new SessionOpts();
  20.                 Mutable.IntegerValue sessionId = new Mutable.IntegerValue();
  21.  
  22.                 Status status = bus.joinSession("com.my.well.known.name",
  23.                         contactPort,
  24.                         sessionId,
  25.                         sessionOpts,
  26.                         new SessionListener());
  27.                 bus.cancelAdvertiseName("com.my.well.known.name",SessionOpts.TRANSPORT_ANY);
  28.             }
  29.         });
  30.  
  31.         status = bus.connect();
  32.         if (Status.OK != status) {
  33.             Toast.makeText(AcAllJoyn.this,status.toString(),40);
  34.             return;
  35.         }
  36.  
  37.         Mutable.ShortValue contactPort = new Mutable.ShortValue(CONTACT_PORT);
  38.  
  39.         SessionOpts sessionOpts = new SessionOpts();
  40.         sessionOpts.traffic = SessionOpts.TRAFFIC_MESSAGES;
  41.         sessionOpts.isMultipoint = false;
  42.         sessionOpts.proximity = SessionOpts.PROXIMITY_ANY;
  43.         sessionOpts.transports = SessionOpts.TRANSPORT_ANY;
  44.  
  45.         status = bus.bindSessionPort(contactPort, sessionOpts,
  46.                 new SessionPortListener() {
  47.                     @Override
  48.                     public boolean acceptSessionJoiner(short sessionPort,
  49.                                                        String joiner, SessionOpts sessionOpts) {
  50.                         if (sessionPort == CONTACT_PORT) {
  51.                             return true;
  52.                         } else {
  53.                             return false;
  54.                         }
  55.                     }
  56.                 });
  57.  
  58.  
  59.         int flags = 0; //do not use any request name flags
  60.         status = bus.requestName("com.my.well.known.name", flags);
  61.         if (status != Status.OK) {
  62.             Toast.makeText(AcAllJoyn.this,status.toString(),40);
  63.             return;
  64.         }
  65.  
  66.         /*
  67.          * Important: the well-known name advertised should be identical
  68.          * to the well-known name requested from the bus. Using a
  69.          * different name is a logic error.
  70.          */
  71.         status = bus.advertiseName("com.my.well.known.name",
  72.                 SessionOpts.TRANSPORT_ANY);
  73.         if (status != Status.OK) {
  74.             /*
  75.             * If we are unable to advertise the name, release
  76.             * the well-known name from the local bus.
  77.             */
  78.             bus.releaseName("com.my.well.know.name");
  79.             Toast.makeText(AcAllJoyn.this,status.toString(),40);
  80.             return;
  81.         }
  82.  
  83.         bus.registerBusListener(new BusListener() {
  84.             @Override
  85.             public void foundAdvertisedName(String name,
  86.                                             short transport,
  87.                                             String namePrefix) {
  88.                 short contactPort = CONTACT_PORT;
  89.                 SessionOpts sessionOpts = new SessionOpts();
  90.                 sessionOpts.traffic = SessionOpts.TRAFFIC_MESSAGES;
  91.                 sessionOpts.isMultipoint = false;
  92.                 sessionOpts.proximity = SessionOpts.PROXIMITY_ANY;
  93.                 sessionOpts.transports = SessionOpts.TRANSPORT_ANY;
  94.  
  95.                 Mutable.IntegerValue sessionId = new Mutable.IntegerValue();
  96.  
  97.                 Status status = bus.joinSession(name,
  98.                         contactPort,
  99.                         sessionId,
  100.                         sessionOpts,
  101.                         new SessionListener());
  102.  
  103.                 mProxyObj = bus.getProxyBusObject("com.my.well.known.name",
  104.                         "/MyService",
  105.                         sessionId.value,
  106.                         new Class[]{AcAllJoyn.class});
  107.                 mSampleInterface = mProxyObj.getInterface(AcAllJoyn.class);
  108.  
  109.                 onConnected();
  110.             }
  111.         });
  112.  
  113.         status = bus.findAdvertisedName("com.my.well.known.name");
  114.         if (status != Status.OK) {
  115.             Toast.makeText(AcAllJoyn.this,status.toString(),40);
  116.         }
  117.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement