001package edu.wpi.first.wpilibj.networktables2.client; 002 003import edu.wpi.first.wpilibj.networktables2.*; 004import edu.wpi.first.wpilibj.networktables2.stream.*; 005import edu.wpi.first.wpilibj.networktables2.thread.*; 006import edu.wpi.first.wpilibj.networktables2.type.*; 007 008/** 009 * A client node in NetworkTables 2.0 010 * 011 * @author Mitchell 012 * 013 */ 014public class NetworkTableClient extends NetworkTableNode{ 015 private final ClientConnectionAdapter adapter; 016 private final WriteManager writeManager; 017 018 /** 019 * Create a new NetworkTable Client 020 * @param streamFactory 021 * @param threadManager 022 * @param transactionPool 023 */ 024 public NetworkTableClient(final IOStreamFactory streamFactory, final NetworkTableEntryTypeManager typeManager, final NTThreadManager threadManager){ 025 ClientNetworkTableEntryStore entryStore; 026 init(entryStore = new ClientNetworkTableEntryStore(this)); 027 adapter = new ClientConnectionAdapter(entryStore, threadManager, streamFactory, this, typeManager); 028 writeManager = new WriteManager(adapter, threadManager, getEntryStore(), 1000); 029 030 getEntryStore().setOutgoingReceiver(new TransactionDirtier(writeManager)); 031 getEntryStore().setIncomingReceiver(OutgoingEntryReceiver.NULL); 032 writeManager.start(); 033 } 034 /** 035 * Create a new NetworkTable Client 036 * @param streamFactory 037 */ 038 public NetworkTableClient(final IOStreamFactory streamFactory){ 039 this(streamFactory, new NetworkTableEntryTypeManager(), new DefaultThreadManager()); 040 } 041 042 /** 043 * force the client to disconnect and reconnect to the server again. Will connect if the client is currently disconnected 044 */ 045 public void reconnect() { 046 adapter.reconnect(); 047 } 048 049 public void close() { 050 adapter.close(); 051 } 052 053 public void stop() { 054 writeManager.stop(); 055 close(); 056 } 057 058 public boolean isConnected() { 059 return adapter.isConnected(); 060 } 061 062 public boolean isServer() { 063 return false; 064 } 065 066}