Android Open Source - lifx-sdk-android L F X Transport Manager






From Project

Back to project page lifx-sdk-android.

License

The source code is released under:

MIT License

If you think the Android project lifx-sdk-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

//
//  LFXTransportManager.java
//  LIFX/* ww w  . j  a v  a2s. c  om*/
//
//  Created by Jarrod Boyes on 24/03/14.
//  Copyright (c) 2014 LIFX Labs. All rights reserved.
//

package lifx.java.android.network_context.internal.transport_manager;

import java.util.ArrayList;
import lifx.java.android.entities.internal.LFXGatewayDescriptor;
import lifx.java.android.entities.internal.LFXMessage;
import lifx.java.android.entities.internal.LFXMessageObservationDescriptor;
import lifx.java.android.entities.internal.LFXSiteID;
import lifx.java.android.entities.internal.LFXMessageObservationDescriptor.LFXMessageObserverCallback;
import lifx.java.android.network_context.LFXNetworkContext;

public abstract class LFXTransportManager
{  
  public interface LFXTransportManagerListener
  {
    public void transportManagerDidConnect( LFXTransportManager transportManager);
    public void transportManagerDidDisconnect( LFXTransportManager transportManager);

    public void transportManagerDidConnectToGateway( LFXTransportManager transportManager, LFXGatewayDescriptor gatewayDescriptor);
    public void transportManagerDidDisconnectFromGateway( LFXTransportManager transportManager, LFXGatewayDescriptor gatewayDescriptor);
  }

  private LFXNetworkContext networkContext;
  protected LFXTransportManagerListener listener;

  // May have no meaning for some Network Contexts
  public abstract void connect();
  
  public abstract void disconnect();

  private boolean isConnected;

  // After sending, -sendObserverCallbacksForMessage: should be called with the message.
  public abstract void sendMessage( LFXMessage message);

  public void setNetworkContext( LFXNetworkContext networkContext)
  {
    this.networkContext = networkContext;
  }
  
  public void setListener( LFXTransportManagerListener listener)
  {
    this.listener = listener;
  }
  
  // Token Based subscriptions
//  - (id)addMessageObserverWithCallback:(LFXMessageObserverCallback)callback;  // returns an observer "token"
//  - (void)removeMessageObserverToken:(id)observerToken;  // This will remove the single observation created with the above method
//  public Object addMessageObserverWithCallback( LFXMessageObserverCallback callback);
//  public void removeMessageObserverToken( Object observerToken);
  
  // Observer Based subscriptions
//  - (void)addMessageObserverObject:(id)observingObject withCallback:(LFXMessageObserverCallback)callback;
//  - (void)removeMessageObserversForObject:(id)anObserverObject;  // This will remove all observations created with the above method
//  public void addMessageObserverObjectWithCallback( Object observerObject, LFXMessageObserverCallback callback);
//  public void removeMessageObserversForObject( Object anObserverObject);

  // This should be called (not overidden) for every incoming _and_ outgoing message
  //- (void)sendObserverCallbacksForMessage:(LFXMessage *)message;
//  public void sendObserverCallbacksForMessage( LFXMessage message);

  // This is used by the Network Context to work out what exact messages should be sent
  
  private ArrayList<LFXSiteID> visibleSiteIDs;
  private ArrayList<LFXMessageObservationDescriptor> observationDescriptors;

  public LFXTransportManager()
  {
    super();
    observationDescriptors = new ArrayList<LFXMessageObservationDescriptor>();
  }

  public boolean isConnected()
  {
    return isConnected;
  }
  
  public void setIsConnected( boolean isConnected)
  {
    if( isConnected() == isConnected) 
    {
      return;
    }

    if( isConnected)
    {
      listener.transportManagerDidConnect( this);
    }
    else
    {
      listener.transportManagerDidDisconnect( this);
    }
    
    this.isConnected = isConnected;
  }

  // Token Based subscriptions
  public Object addMessageObserverWithCallback( LFXMessageObserverCallback callback)
  {
    LFXMessageObservationDescriptor observationDescriptor = new LFXMessageObservationDescriptor();
    observationDescriptor.setCallback( callback);
    observationDescriptors.add( observationDescriptor);
    return observationDescriptor;
  }

  public void removeMessageObserverToken( Object observerToken)
  {
    observationDescriptors.remove( observerToken);
  }

  // Observer Based subscriptions
  public void addMessageObserverObjectWithCallback( Object observingObject, LFXMessageObserverCallback callback)
  {
    LFXMessageObservationDescriptor observationDescriptor = new LFXMessageObservationDescriptor();
    observationDescriptor.setCallback( callback);
    observationDescriptor.setObservingObject( observingObject);
    observationDescriptors.add( observationDescriptor);
  }

  @SuppressWarnings( "unchecked")
  public void removeMessageObserversForObject( Object anObserverObject)
  {
    for( LFXMessageObservationDescriptor observationDescriptor : (ArrayList<LFXMessageObservationDescriptor>) observationDescriptors.clone())
    {
      if( observationDescriptor.observingObjectWasEqualTo( anObserverObject))
      {
        observationDescriptors.remove( observationDescriptor);
      }
    }
  }

  @SuppressWarnings( "unchecked")
  public void sendObserverCallbacksForMessage( LFXMessage message)
  {
    for( LFXMessageObservationDescriptor observationDescriptor : (ArrayList<LFXMessageObservationDescriptor>) observationDescriptors.clone())
    {
      observationDescriptor.getCallback().run( observationDescriptor.getObservingObject(), message);
    }
  }
  
  public ArrayList<LFXSiteID> getVisibleSiteIDs()
  {
    return visibleSiteIDs;
  }
  
  public LFXNetworkContext getNetworkContext()
  {
    return networkContext;
  }
}




Java Source Code List

com.example.lifx_sdk_samples.LFXSDKLightEditLabelActivity.java
com.example.lifx_sdk_samples.LFXSDKLightListAdapter.java
com.example.lifx_sdk_samples.LFXSDKLightPowerActivity.java
com.example.lifx_sdk_samples.LFXSDKLightRandomColorActivity.java
com.example.lifx_sdk_samples.LFXSDKSamplesActivity.java
com.example.lifx_sdk_samples.LFXSDKTaggedLightCollectionListAdapter.java
lifx.java.android.client.LFXClient.java
lifx.java.android.constant.LFXSDKConstants.java
lifx.java.android.entities.LFXHSBKColor.java
lifx.java.android.entities.LFXLightTarget.java
lifx.java.android.entities.LFXTypes.java
lifx.java.android.entities.internal.LFXBinaryPath.java
lifx.java.android.entities.internal.LFXBinaryTargetID.java
lifx.java.android.entities.internal.LFXBinaryTypes.java
lifx.java.android.entities.internal.LFXDeviceMapping.java
lifx.java.android.entities.internal.LFXGatewayDescriptor.java
lifx.java.android.entities.internal.LFXMessageObservationDescriptor.java
lifx.java.android.entities.internal.LFXMessage.java
lifx.java.android.entities.internal.LFXSiteID.java
lifx.java.android.entities.internal.LFXTagMapping.java
lifx.java.android.entities.internal.LFXTarget.java
lifx.java.android.entities.internal.structle.LxProtocolDevice.java
lifx.java.android.entities.internal.structle.LxProtocolLight.java
lifx.java.android.entities.internal.structle.LxProtocolSensor.java
lifx.java.android.entities.internal.structle.LxProtocolWan.java
lifx.java.android.entities.internal.structle.LxProtocolWifi.java
lifx.java.android.entities.internal.structle.LxProtocol.java
lifx.java.android.entities.internal.structle.Lx.java
lifx.java.android.entities.internal.structle.StructleTypes.java
lifx.java.android.internal.LFXWiFiObserver.java
lifx.java.android.light.LFXLightCollection.java
lifx.java.android.light.LFXLight.java
lifx.java.android.light.LFXTaggedLightCollection.java
lifx.java.android.light.internal.LFXAllLightsCollection.java
lifx.java.android.network_context.LFXNetworkContext.java
lifx.java.android.network_context.internal.routing_table.LFXRoutingTable.java
lifx.java.android.network_context.internal.transport_manager.LFXTransportManager.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXGatewayConnection.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXSocketGeneric.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXSocketTCP.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXSocketUDP.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXTCPGatewayConnection.java
lifx.java.android.network_context.internal.transport_manager.gateway_connection.LFXUDPGatewayConnection.java
lifx.java.android.network_context.internal.transport_manager.lan.LFXLANTransportManager.java
lifx.java.android.network_context.internal.transport_manager.lan.gateway_discovery.LFXGatewayDiscoveryController.java
lifx.java.android.network_context.internal.transport_manager.lan.gateway_discovery.LFXGatewayDiscoveryTableEntry.java
lifx.java.android.util.LFXByteUtils.java
lifx.java.android.util.LFXLog.java
lifx.java.android.util.LFXNetworkUtils.java
lifx.java.android.util.LFXTimerUtils.java