/**
* Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
- *
+ *
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.openflowplugin.impl.device;
-import java.util.concurrent.ExecutionException;
-
+import com.google.common.base.Preconditions;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import javax.annotation.CheckForNull;
import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceManager;
+import org.opendaylight.openflowplugin.api.openflow.device.DeviceState;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
import org.opendaylight.openflowplugin.api.openflow.device.Xid;
import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceContextReadyHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-
/**
- *
+ *
*/
public class DeviceManagerImpl implements DeviceManager {
-
+
private static final Logger LOG = LoggerFactory.getLogger(DeviceManagerImpl.class);
-
- private Xid xid;
@Override
- public void deviceConnected(ConnectionContext connectionContext) {
- xid = new Xid(0L);
- DeviceContextImpl deviceContextImpl = new DeviceContextImpl();
+ public void deviceConnected(@CheckForNull final ConnectionContext connectionContext) {
+ Preconditions.checkArgument(connectionContext != null);
+ final DeviceState deviceState = new DeviceStateImpl(connectionContext.getFeatures(), connectionContext.getNodeId());
+// final DeviceContextImpl deviceContextImpl = new DeviceContextImpl(connectionContext, deviceState);
- try {
- FlowCapableNode description = queryDescription(connectionContext, xid.getNextValue()).get();
-
- } catch (InterruptedException | ExecutionException e) {
- // TODO Auto-generated catch block
- LOG.info("Failed to retrieve node static info: {}", e.getMessage());
- }
+// try {
+// final FlowCapableNode description = queryDescription(connectionContext, deviceContextImpl.getNextXid()).get();
+
+// } catch (InterruptedException | ExecutionException e) {
+// // TODO Auto-generated catch block
+// LOG.info("Failed to retrieve node static info: {}", e.getMessage());
+// }
}
/**
- * @param connectionContext
- * @param nextXid
+ * @param connectionContext
+ * @param xid
*/
- private static ListenableFuture<FlowCapableNode> queryDescription(ConnectionContext connectionContext, long nextXid) {
- MultipartRequestInputBuilder builder = new MultipartRequestInputBuilder();
+ private static ListenableFuture<FlowCapableNode> queryDescription(final ConnectionContext connectionContext, final Xid xid) {
+ final MultipartRequestInputBuilder builder = new MultipartRequestInputBuilder();
builder.setType(MultipartType.OFPMPDESC);
builder.setVersion(connectionContext.getFeatures().getVersion());
builder.setFlags(new MultipartRequestFlags(false));
builder.setMultipartRequestBody(new MultipartRequestDescCaseBuilder()
.build());
- builder.setXid(nextXid);
+ builder.setXid(xid.getValue());
connectionContext.getConnectionAdapter().multipartRequest(builder.build());
-
+
//TODO: involve general wait-for-answer mechanism and return future with complete value
//TODO: translate message
- return Futures.immediateFuture(null);
+ return Futures.immediateFuture(null);
}
@Override
- public void sendMessage(DataObject dataObject, RequestContext requestContext) {
+ public void sendMessage(final DataObject dataObject, final RequestContext requestContext) {
// TODO Auto-generated method stub
}
@Override
- public Xid sendRequest(DataObject dataObject, RequestContext requestContext) {
+ public Xid sendRequest(final DataObject dataObject, final RequestContext requestContext) {
// TODO Auto-generated method stub
return null;
}
@Override
- public void addRequestContextReadyHandler(DeviceContextReadyHandler deviceContextReadyHandler) {
+ public void addRequestContextReadyHandler(final DeviceContextReadyHandler deviceContextReadyHandler) {
// TODO Auto-generated method stub
}