Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 85 → Rev 86

/Android Development/LATMB/src/org/vt/ece4564/latmb/ClientHandler.java
0,0 → 1,115
/**************************************************************************
* Copyright 2011 Jules White
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package org.vt.ece4564.latmb;
 
import java.util.logging.Level;
import java.util.logging.Logger;
 
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelEvent;
import org.jboss.netty.channel.ChannelFuture;
import org.jboss.netty.channel.ChannelFutureListener;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelStateEvent;
import org.jboss.netty.channel.ExceptionEvent;
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
 
import android.util.Log;
 
/**
* Handles a client-side channel.
*
* @author <a href="http://www.jboss.org/netty/">The Netty Project</a>
* @author <a href="http://gleamynode.net/">Trustin Lee</a>
*
* @version $Rev: 2121 $, $Date: 2010-02-02 09:38:07 +0900 (Tue, 02 Feb 2010) $
*/
public class ClientHandler<T> extends SimpleChannelUpstreamHandler {
 
private static final String TAG = ClientHandler.class.getName();
private NetworkMessageHandler<T> listener_;
 
private Channel channel_;
 
private static final Logger logger = Logger
.getLogger(ClientHandler.class.getName());
 
public void disconnect(){
channel_.disconnect();
}
@Override
public void handleUpstream(ChannelHandlerContext ctx, ChannelEvent e)
throws Exception {
if (e instanceof ChannelStateEvent) {
logger.info(e.toString());
}
super.handleUpstream(ctx, e);
}
 
// @Override
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e)
throws Exception {
 
channel_ = e.getChannel();
 
channel_.getCloseFuture().addListener(new ChannelFutureListener() {
 
@Override
public void operationComplete(ChannelFuture future)
throws Exception {
listener_.channelClosed(channel_);
}
});
}
 
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
if (listener_ != null) {
T msg = (T) e.getMessage();
listener_.received(msg);
} else {
System.err.println(e.getMessage());
}
}
 
public void send(LATMBProtocol.TrackingMessage msg) {
channel_.write(msg);
}
 
@Override
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) {
logger.log(Level.WARNING, "Unexpected exception from downstream.",
e.getCause());
e.getChannel().close();
 
if(listener_ != null)
listener_.channelException(e.getCause());
else
Log.e(TAG, "Error communicating with server",e.getCause());
}
 
public NetworkMessageHandler<T> getListener() {
return listener_;
}
 
public void setListener(NetworkMessageHandler<T> listener) {
listener_ = listener;
}
 
}
/Android Development/LATMB/src/org/vt/ece4564/latmb/ClientPipelineFactory.java
0,0 → 1,54
/**************************************************************************
* Copyright 2011 Jules White
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package org.vt.ece4564.latmb;
 
import static org.jboss.netty.channel.Channels.pipeline;
 
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.handler.codec.protobuf.ProtobufDecoder;
import org.jboss.netty.handler.codec.protobuf.ProtobufEncoder;
import org.jboss.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;
import org.jboss.netty.handler.codec.protobuf.ProtobufVarint32LengthFieldPrepender;
 
/**
* Creates a newly configured {@link ChannelPipeline} for a new channel.
*
* @author <a href="http://www.jboss.org/netty/">The Netty Project</a>
* @author <a href="http://gleamynode.net/">Trustin Lee</a>
*
* @version $Rev: 2080 $, $Date: 2010-01-26 18:04:19 +0900 (Tue, 26 Jan 2010) $
*
*/
public class ClientPipelineFactory implements ChannelPipelineFactory {
 
public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline pipeline = pipeline();
 
pipeline.addLast("frameDecoder", new ProtobufVarint32FrameDecoder());
pipeline.addLast("protobufDecoder", new ProtobufDecoder(
LATMBProtocol.TrackingMessage.getDefaultInstance()));
 
pipeline.addLast("frameEncoder",
new ProtobufVarint32LengthFieldPrepender());
pipeline.addLast("protobufEncoder", new ProtobufEncoder());
 
// and then business logic.
pipeline.addLast("handler", new ClientHandler<LATMBProtocol.TrackingMessage>());
 
return pipeline;
}
}
/Android Development/LATMB/src/org/vt/ece4564/latmb/LATMBActivity.java
0,0 → 1,119
package org.vt.ece4564.latmb;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.Toast;
 
public class LATMBActivity extends Activity implements OnClickListener {
private EditText server_;
private EditText port_;
private EditText username_;
private EditText chatroom_;
private CheckBox checkGPS_;
private EditText radius_;
private Button connect_;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.menuMainPreference:
startActivity(new Intent(this, PreferenceActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
server_ = (EditText) findViewById(R.id.editServer);
port_ = (EditText) findViewById(R.id.editPort);
username_ = (EditText) findViewById(R.id.editUser);
chatroom_ = (EditText) findViewById(R.id.editChatroom);
checkGPS_ = (CheckBox) findViewById(R.id.checkGPS);
connect_ = (Button) findViewById(R.id.buttonConnect);
radius_ = (EditText) findViewById(R.id.editRadius);
radius_.setEnabled(false);
connect_.setOnClickListener(this);
// Disable fields depending on if use GPS is checked or not
checkGPS_.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
if (checkGPS_.isChecked()) {
radius_.setEnabled(true);
chatroom_.setEnabled(false);
} else {
radius_.setEnabled(false);
chatroom_.setEnabled(true);
}
}
});
}
 
@Override
public void onResume() {
super.onResume();
// Pull the shared preferences and set fields to saved values
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
server_.setText(sharedPrefs.getString("pref_Default_IP", ""));
port_.setText(sharedPrefs.getString("pref_Default_Port", ""));
username_.setText(sharedPrefs.getString("pref_Default_Username", ""));
chatroom_.setText(sharedPrefs.getString("pref_Default_Chatroom", ""));
if (sharedPrefs.getBoolean("pref_Use_GPS", false)) {
checkGPS_.setChecked(true);
}
radius_.setText(sharedPrefs.getString("pref_Search_Radius", "1"));
}
@Override
public void onClick(View arg0) {
// Check to make sure that all required fields are filled out
if (server_.getText().toString().isEmpty() || port_.getText().toString().isEmpty()) {
Toast.makeText(this, "The server IP and port must be specified to continue", Toast.LENGTH_SHORT).show();
} else if (chatroom_.getText().toString().isEmpty() && !checkGPS_.isChecked()) {
Toast.makeText(this, "A chatroom must be specified or use GPS must be selected", Toast.LENGTH_SHORT).show();
} else {
// If everything is ok, start the next intent
Intent i = new Intent(this, MessageBoardActivity.class);
i.putExtra("server", server_.getText().toString());
i.putExtra("port", port_.getText().toString());
i.putExtra("username", username_.getText().toString());
i.putExtra("chatroom", chatroom_.getText().toString());
i.putExtra("radius", Double.parseDouble(radius_.getText().toString()));
i.putExtra("gps", checkGPS_.isChecked());
startActivity(i);
}
}
}
/Android Development/LATMB/src/org/vt/ece4564/latmb/LATMBClient.java
0,0 → 1,54
/**************************************************************************
* Copyright 2011 Jules White
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
 
package org.vt.ece4564.latmb;
 
import java.net.InetSocketAddress;
import java.util.concurrent.Executors;
 
import org.jboss.netty.bootstrap.ClientBootstrap;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelFuture;
import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
 
 
public class LATMBClient {
 
public static ClientHandler connect(String host, int port) throws Exception {
// Configure the client.
ClientBootstrap bootstrap = new ClientBootstrap(
new NioClientSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool()));
 
// Configure the pipeline factory.
bootstrap.setPipelineFactory(new ClientPipelineFactory());
 
// Start the connection attempt.
ChannelFuture future = bootstrap.connect(new InetSocketAddress(host, port));
 
// Wait until the connection attempt succeeds or fails.
Channel channel = future.awaitUninterruptibly().getChannel();
if (!future.isSuccess()) {
future.getCause().printStackTrace();
bootstrap.releaseExternalResources();
return null;
}
return channel.getPipeline().get(ClientHandler.class);
}
}
/Android Development/LATMB/src/org/vt/ece4564/latmb/LATMBMessage.java
0,0 → 1,65
package org.vt.ece4564.latmb;
 
import java.util.Calendar;
 
public class LATMBMessage {
private String message;
private Calendar timestamp;
private Calendar expiration;
private String username;
private String chatroom;
private double latitude;
private double longitude;
private double radius;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Calendar getTimestamp() {
return timestamp;
}
public void setTimestamp(Calendar timestamp) {
this.timestamp = timestamp;
}
public Calendar getExpiration() {
return expiration;
}
public void setExpiration(Calendar expiration) {
this.expiration = expiration;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getChatroom() {
return chatroom;
}
public void setChatroom(String chatroom) {
this.chatroom = chatroom;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
}
/Android Development/LATMB/src/org/vt/ece4564/latmb/LATMBProtocol.java
0,0 → 1,3046
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: LATMBProtocol.proto
 
package org.vt.ece4564.latmb;
 
public final class LATMBProtocol {
private LATMBProtocol() {}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistry registry) {
}
public interface TrackingMessageOrBuilder
extends com.google.protobuf.MessageOrBuilder {
// required int32 id = 1;
boolean hasId();
int getId();
// required int32 type = 2;
boolean hasType();
int getType();
// repeated .org.vt.ece4564.latmb.Message message = 3;
java.util.List<org.vt.ece4564.latmb.LATMBProtocol.Message>
getMessageList();
org.vt.ece4564.latmb.LATMBProtocol.Message getMessage(int index);
int getMessageCount();
java.util.List<? extends org.vt.ece4564.latmb.LATMBProtocol.MessageOrBuilder>
getMessageOrBuilderList();
org.vt.ece4564.latmb.LATMBProtocol.MessageOrBuilder getMessageOrBuilder(
int index);
}
public static final class TrackingMessage extends
com.google.protobuf.GeneratedMessage
implements TrackingMessageOrBuilder {
// Use TrackingMessage.newBuilder() to construct.
private TrackingMessage(Builder builder) {
super(builder);
}
private TrackingMessage(boolean noInit) {}
private static final TrackingMessage defaultInstance;
public static TrackingMessage getDefaultInstance() {
return defaultInstance;
}
public TrackingMessage getDefaultInstanceForType() {
return defaultInstance;
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_TrackingMessage_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_TrackingMessage_fieldAccessorTable;
}
private int bitField0_;
// required int32 id = 1;
public static final int ID_FIELD_NUMBER = 1;
private int id_;
public boolean hasId() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
public int getId() {
return id_;
}
// required int32 type = 2;
public static final int TYPE_FIELD_NUMBER = 2;
private int type_;
public boolean hasType() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
public int getType() {
return type_;
}
// repeated .org.vt.ece4564.latmb.Message message = 3;
public static final int MESSAGE_FIELD_NUMBER = 3;
private java.util.List<org.vt.ece4564.latmb.LATMBProtocol.Message> message_;
public java.util.List<org.vt.ece4564.latmb.LATMBProtocol.Message> getMessageList() {
return message_;
}
public java.util.List<? extends org.vt.ece4564.latmb.LATMBProtocol.MessageOrBuilder>
getMessageOrBuilderList() {
return message_;
}
public int getMessageCount() {
return message_.size();
}
public org.vt.ece4564.latmb.LATMBProtocol.Message getMessage(int index) {
return message_.get(index);
}
public org.vt.ece4564.latmb.LATMBProtocol.MessageOrBuilder getMessageOrBuilder(
int index) {
return message_.get(index);
}
private void initFields() {
id_ = 0;
type_ = 0;
message_ = java.util.Collections.emptyList();
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized != -1) return isInitialized == 1;
if (!hasId()) {
memoizedIsInitialized = 0;
return false;
}
if (!hasType()) {
memoizedIsInitialized = 0;
return false;
}
for (int i = 0; i < getMessageCount(); i++) {
if (!getMessage(i).isInitialized()) {
memoizedIsInitialized = 0;
return false;
}
}
memoizedIsInitialized = 1;
return true;
}
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
getSerializedSize();
if (((bitField0_ & 0x00000001) == 0x00000001)) {
output.writeInt32(1, id_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
output.writeInt32(2, type_);
}
for (int i = 0; i < message_.size(); i++) {
output.writeMessage(3, message_.get(i));
}
getUnknownFields().writeTo(output);
}
private int memoizedSerializedSize = -1;
public int getSerializedSize() {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (((bitField0_ & 0x00000001) == 0x00000001)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(1, id_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(2, type_);
}
for (int i = 0; i < message_.size(); i++) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(3, message_.get(i));
}
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
}
private static final long serialVersionUID = 0L;
@java.lang.Override
protected java.lang.Object writeReplace()
throws java.io.ObjectStreamException {
return super.writeReplace();
}
public static org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data, extensionRegistry)
.buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data, extensionRegistry)
.buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage parseFrom(java.io.InputStream input)
throws java.io.IOException {
return newBuilder().mergeFrom(input).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return newBuilder().mergeFrom(input, extensionRegistry)
.buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
Builder builder = newBuilder();
if (builder.mergeDelimitedFrom(input)) {
return builder.buildParsed();
} else {
return null;
}
}
public static org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
Builder builder = newBuilder();
if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
return builder.buildParsed();
} else {
return null;
}
}
public static org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return newBuilder().mergeFrom(input).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return newBuilder().mergeFrom(input, extensionRegistry)
.buildParsed();
}
public static Builder newBuilder() { return Builder.create(); }
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder(org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
@java.lang.Override
protected Builder newBuilderForType(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder<Builder>
implements org.vt.ece4564.latmb.LATMBProtocol.TrackingMessageOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_TrackingMessage_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_TrackingMessage_fieldAccessorTable;
}
// Construct using org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
getMessageFieldBuilder();
}
}
private static Builder create() {
return new Builder();
}
public Builder clear() {
super.clear();
id_ = 0;
bitField0_ = (bitField0_ & ~0x00000001);
type_ = 0;
bitField0_ = (bitField0_ & ~0x00000002);
if (messageBuilder_ == null) {
message_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000004);
} else {
messageBuilder_.clear();
}
return this;
}
public Builder clone() {
return create().mergeFrom(buildPartial());
}
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage.getDescriptor();
}
public org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage getDefaultInstanceForType() {
return org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage.getDefaultInstance();
}
public org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage build() {
org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
private org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage buildParsed()
throws com.google.protobuf.InvalidProtocolBufferException {
org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(
result).asInvalidProtocolBufferException();
}
return result;
}
public org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage buildPartial() {
org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage result = new org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage(this);
int from_bitField0_ = bitField0_;
int to_bitField0_ = 0;
if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
to_bitField0_ |= 0x00000001;
}
result.id_ = id_;
if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
to_bitField0_ |= 0x00000002;
}
result.type_ = type_;
if (messageBuilder_ == null) {
if (((bitField0_ & 0x00000004) == 0x00000004)) {
message_ = java.util.Collections.unmodifiableList(message_);
bitField0_ = (bitField0_ & ~0x00000004);
}
result.message_ = message_;
} else {
result.message_ = messageBuilder_.build();
}
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
}
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage) {
return mergeFrom((org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage other) {
if (other == org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage.getDefaultInstance()) return this;
if (other.hasId()) {
setId(other.getId());
}
if (other.hasType()) {
setType(other.getType());
}
if (messageBuilder_ == null) {
if (!other.message_.isEmpty()) {
if (message_.isEmpty()) {
message_ = other.message_;
bitField0_ = (bitField0_ & ~0x00000004);
} else {
ensureMessageIsMutable();
message_.addAll(other.message_);
}
onChanged();
}
} else {
if (!other.message_.isEmpty()) {
if (messageBuilder_.isEmpty()) {
messageBuilder_.dispose();
messageBuilder_ = null;
message_ = other.message_;
bitField0_ = (bitField0_ & ~0x00000004);
messageBuilder_ =
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
getMessageFieldBuilder() : null;
} else {
messageBuilder_.addAllMessages(other.message_);
}
}
}
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
public final boolean isInitialized() {
if (!hasId()) {
return false;
}
if (!hasType()) {
return false;
}
for (int i = 0; i < getMessageCount(); i++) {
if (!getMessage(i).isInitialized()) {
return false;
}
}
return true;
}
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
com.google.protobuf.UnknownFieldSet.newBuilder(
this.getUnknownFields());
while (true) {
int tag = input.readTag();
switch (tag) {
case 0:
this.setUnknownFields(unknownFields.build());
onChanged();
return this;
default: {
if (!parseUnknownField(input, unknownFields,
extensionRegistry, tag)) {
this.setUnknownFields(unknownFields.build());
onChanged();
return this;
}
break;
}
case 8: {
bitField0_ |= 0x00000001;
id_ = input.readInt32();
break;
}
case 16: {
bitField0_ |= 0x00000002;
type_ = input.readInt32();
break;
}
case 26: {
org.vt.ece4564.latmb.LATMBProtocol.Message.Builder subBuilder = org.vt.ece4564.latmb.LATMBProtocol.Message.newBuilder();
input.readMessage(subBuilder, extensionRegistry);
addMessage(subBuilder.buildPartial());
break;
}
}
}
}
private int bitField0_;
// required int32 id = 1;
private int id_ ;
public boolean hasId() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
public int getId() {
return id_;
}
public Builder setId(int value) {
bitField0_ |= 0x00000001;
id_ = value;
onChanged();
return this;
}
public Builder clearId() {
bitField0_ = (bitField0_ & ~0x00000001);
id_ = 0;
onChanged();
return this;
}
// required int32 type = 2;
private int type_ ;
public boolean hasType() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
public int getType() {
return type_;
}
public Builder setType(int value) {
bitField0_ |= 0x00000002;
type_ = value;
onChanged();
return this;
}
public Builder clearType() {
bitField0_ = (bitField0_ & ~0x00000002);
type_ = 0;
onChanged();
return this;
}
// repeated .org.vt.ece4564.latmb.Message message = 3;
private java.util.List<org.vt.ece4564.latmb.LATMBProtocol.Message> message_ =
java.util.Collections.emptyList();
private void ensureMessageIsMutable() {
if (!((bitField0_ & 0x00000004) == 0x00000004)) {
message_ = new java.util.ArrayList<org.vt.ece4564.latmb.LATMBProtocol.Message>(message_);
bitField0_ |= 0x00000004;
}
}
private com.google.protobuf.RepeatedFieldBuilder<
org.vt.ece4564.latmb.LATMBProtocol.Message, org.vt.ece4564.latmb.LATMBProtocol.Message.Builder, org.vt.ece4564.latmb.LATMBProtocol.MessageOrBuilder> messageBuilder_;
public java.util.List<org.vt.ece4564.latmb.LATMBProtocol.Message> getMessageList() {
if (messageBuilder_ == null) {
return java.util.Collections.unmodifiableList(message_);
} else {
return messageBuilder_.getMessageList();
}
}
public int getMessageCount() {
if (messageBuilder_ == null) {
return message_.size();
} else {
return messageBuilder_.getCount();
}
}
public org.vt.ece4564.latmb.LATMBProtocol.Message getMessage(int index) {
if (messageBuilder_ == null) {
return message_.get(index);
} else {
return messageBuilder_.getMessage(index);
}
}
public Builder setMessage(
int index, org.vt.ece4564.latmb.LATMBProtocol.Message value) {
if (messageBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureMessageIsMutable();
message_.set(index, value);
onChanged();
} else {
messageBuilder_.setMessage(index, value);
}
return this;
}
public Builder setMessage(
int index, org.vt.ece4564.latmb.LATMBProtocol.Message.Builder builderForValue) {
if (messageBuilder_ == null) {
ensureMessageIsMutable();
message_.set(index, builderForValue.build());
onChanged();
} else {
messageBuilder_.setMessage(index, builderForValue.build());
}
return this;
}
public Builder addMessage(org.vt.ece4564.latmb.LATMBProtocol.Message value) {
if (messageBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureMessageIsMutable();
message_.add(value);
onChanged();
} else {
messageBuilder_.addMessage(value);
}
return this;
}
public Builder addMessage(
int index, org.vt.ece4564.latmb.LATMBProtocol.Message value) {
if (messageBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureMessageIsMutable();
message_.add(index, value);
onChanged();
} else {
messageBuilder_.addMessage(index, value);
}
return this;
}
public Builder addMessage(
org.vt.ece4564.latmb.LATMBProtocol.Message.Builder builderForValue) {
if (messageBuilder_ == null) {
ensureMessageIsMutable();
message_.add(builderForValue.build());
onChanged();
} else {
messageBuilder_.addMessage(builderForValue.build());
}
return this;
}
public Builder addMessage(
int index, org.vt.ece4564.latmb.LATMBProtocol.Message.Builder builderForValue) {
if (messageBuilder_ == null) {
ensureMessageIsMutable();
message_.add(index, builderForValue.build());
onChanged();
} else {
messageBuilder_.addMessage(index, builderForValue.build());
}
return this;
}
public Builder addAllMessage(
java.lang.Iterable<? extends org.vt.ece4564.latmb.LATMBProtocol.Message> values) {
if (messageBuilder_ == null) {
ensureMessageIsMutable();
super.addAll(values, message_);
onChanged();
} else {
messageBuilder_.addAllMessages(values);
}
return this;
}
public Builder clearMessage() {
if (messageBuilder_ == null) {
message_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000004);
onChanged();
} else {
messageBuilder_.clear();
}
return this;
}
public Builder removeMessage(int index) {
if (messageBuilder_ == null) {
ensureMessageIsMutable();
message_.remove(index);
onChanged();
} else {
messageBuilder_.remove(index);
}
return this;
}
public org.vt.ece4564.latmb.LATMBProtocol.Message.Builder getMessageBuilder(
int index) {
return getMessageFieldBuilder().getBuilder(index);
}
public org.vt.ece4564.latmb.LATMBProtocol.MessageOrBuilder getMessageOrBuilder(
int index) {
if (messageBuilder_ == null) {
return message_.get(index); } else {
return messageBuilder_.getMessageOrBuilder(index);
}
}
public java.util.List<? extends org.vt.ece4564.latmb.LATMBProtocol.MessageOrBuilder>
getMessageOrBuilderList() {
if (messageBuilder_ != null) {
return messageBuilder_.getMessageOrBuilderList();
} else {
return java.util.Collections.unmodifiableList(message_);
}
}
public org.vt.ece4564.latmb.LATMBProtocol.Message.Builder addMessageBuilder() {
return getMessageFieldBuilder().addBuilder(
org.vt.ece4564.latmb.LATMBProtocol.Message.getDefaultInstance());
}
public org.vt.ece4564.latmb.LATMBProtocol.Message.Builder addMessageBuilder(
int index) {
return getMessageFieldBuilder().addBuilder(
index, org.vt.ece4564.latmb.LATMBProtocol.Message.getDefaultInstance());
}
public java.util.List<org.vt.ece4564.latmb.LATMBProtocol.Message.Builder>
getMessageBuilderList() {
return getMessageFieldBuilder().getBuilderList();
}
private com.google.protobuf.RepeatedFieldBuilder<
org.vt.ece4564.latmb.LATMBProtocol.Message, org.vt.ece4564.latmb.LATMBProtocol.Message.Builder, org.vt.ece4564.latmb.LATMBProtocol.MessageOrBuilder>
getMessageFieldBuilder() {
if (messageBuilder_ == null) {
messageBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
org.vt.ece4564.latmb.LATMBProtocol.Message, org.vt.ece4564.latmb.LATMBProtocol.Message.Builder, org.vt.ece4564.latmb.LATMBProtocol.MessageOrBuilder>(
message_,
((bitField0_ & 0x00000004) == 0x00000004),
getParentForChildren(),
isClean());
message_ = null;
}
return messageBuilder_;
}
// @@protoc_insertion_point(builder_scope:org.vt.ece4564.latmb.TrackingMessage)
}
static {
defaultInstance = new TrackingMessage(true);
defaultInstance.initFields();
}
// @@protoc_insertion_point(class_scope:org.vt.ece4564.latmb.TrackingMessage)
}
public interface MessageOrBuilder
extends com.google.protobuf.MessageOrBuilder {
// required string message = 1;
boolean hasMessage();
String getMessage();
// required .org.vt.ece4564.latmb.DateTime timestamp = 2;
boolean hasTimestamp();
org.vt.ece4564.latmb.LATMBProtocol.DateTime getTimestamp();
org.vt.ece4564.latmb.LATMBProtocol.DateTimeOrBuilder getTimestampOrBuilder();
// required .org.vt.ece4564.latmb.DateTime expiration = 3;
boolean hasExpiration();
org.vt.ece4564.latmb.LATMBProtocol.DateTime getExpiration();
org.vt.ece4564.latmb.LATMBProtocol.DateTimeOrBuilder getExpirationOrBuilder();
// optional string username = 4;
boolean hasUsername();
String getUsername();
// optional string chatroom = 5;
boolean hasChatroom();
String getChatroom();
// optional .org.vt.ece4564.latmb.Position coordinates = 6;
boolean hasCoordinates();
org.vt.ece4564.latmb.LATMBProtocol.Position getCoordinates();
org.vt.ece4564.latmb.LATMBProtocol.PositionOrBuilder getCoordinatesOrBuilder();
// optional double radius = 7;
boolean hasRadius();
double getRadius();
}
public static final class Message extends
com.google.protobuf.GeneratedMessage
implements MessageOrBuilder {
// Use Message.newBuilder() to construct.
private Message(Builder builder) {
super(builder);
}
private Message(boolean noInit) {}
private static final Message defaultInstance;
public static Message getDefaultInstance() {
return defaultInstance;
}
public Message getDefaultInstanceForType() {
return defaultInstance;
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_Message_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_Message_fieldAccessorTable;
}
private int bitField0_;
// required string message = 1;
public static final int MESSAGE_FIELD_NUMBER = 1;
private java.lang.Object message_;
public boolean hasMessage() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
public String getMessage() {
java.lang.Object ref = message_;
if (ref instanceof String) {
return (String) ref;
} else {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
String s = bs.toStringUtf8();
if (com.google.protobuf.Internal.isValidUtf8(bs)) {
message_ = s;
}
return s;
}
}
private com.google.protobuf.ByteString getMessageBytes() {
java.lang.Object ref = message_;
if (ref instanceof String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8((String) ref);
message_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
// required .org.vt.ece4564.latmb.DateTime timestamp = 2;
public static final int TIMESTAMP_FIELD_NUMBER = 2;
private org.vt.ece4564.latmb.LATMBProtocol.DateTime timestamp_;
public boolean hasTimestamp() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
public org.vt.ece4564.latmb.LATMBProtocol.DateTime getTimestamp() {
return timestamp_;
}
public org.vt.ece4564.latmb.LATMBProtocol.DateTimeOrBuilder getTimestampOrBuilder() {
return timestamp_;
}
// required .org.vt.ece4564.latmb.DateTime expiration = 3;
public static final int EXPIRATION_FIELD_NUMBER = 3;
private org.vt.ece4564.latmb.LATMBProtocol.DateTime expiration_;
public boolean hasExpiration() {
return ((bitField0_ & 0x00000004) == 0x00000004);
}
public org.vt.ece4564.latmb.LATMBProtocol.DateTime getExpiration() {
return expiration_;
}
public org.vt.ece4564.latmb.LATMBProtocol.DateTimeOrBuilder getExpirationOrBuilder() {
return expiration_;
}
// optional string username = 4;
public static final int USERNAME_FIELD_NUMBER = 4;
private java.lang.Object username_;
public boolean hasUsername() {
return ((bitField0_ & 0x00000008) == 0x00000008);
}
public String getUsername() {
java.lang.Object ref = username_;
if (ref instanceof String) {
return (String) ref;
} else {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
String s = bs.toStringUtf8();
if (com.google.protobuf.Internal.isValidUtf8(bs)) {
username_ = s;
}
return s;
}
}
private com.google.protobuf.ByteString getUsernameBytes() {
java.lang.Object ref = username_;
if (ref instanceof String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8((String) ref);
username_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
// optional string chatroom = 5;
public static final int CHATROOM_FIELD_NUMBER = 5;
private java.lang.Object chatroom_;
public boolean hasChatroom() {
return ((bitField0_ & 0x00000010) == 0x00000010);
}
public String getChatroom() {
java.lang.Object ref = chatroom_;
if (ref instanceof String) {
return (String) ref;
} else {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
String s = bs.toStringUtf8();
if (com.google.protobuf.Internal.isValidUtf8(bs)) {
chatroom_ = s;
}
return s;
}
}
private com.google.protobuf.ByteString getChatroomBytes() {
java.lang.Object ref = chatroom_;
if (ref instanceof String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8((String) ref);
chatroom_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
// optional .org.vt.ece4564.latmb.Position coordinates = 6;
public static final int COORDINATES_FIELD_NUMBER = 6;
private org.vt.ece4564.latmb.LATMBProtocol.Position coordinates_;
public boolean hasCoordinates() {
return ((bitField0_ & 0x00000020) == 0x00000020);
}
public org.vt.ece4564.latmb.LATMBProtocol.Position getCoordinates() {
return coordinates_;
}
public org.vt.ece4564.latmb.LATMBProtocol.PositionOrBuilder getCoordinatesOrBuilder() {
return coordinates_;
}
// optional double radius = 7;
public static final int RADIUS_FIELD_NUMBER = 7;
private double radius_;
public boolean hasRadius() {
return ((bitField0_ & 0x00000040) == 0x00000040);
}
public double getRadius() {
return radius_;
}
private void initFields() {
message_ = "";
timestamp_ = org.vt.ece4564.latmb.LATMBProtocol.DateTime.getDefaultInstance();
expiration_ = org.vt.ece4564.latmb.LATMBProtocol.DateTime.getDefaultInstance();
username_ = "";
chatroom_ = "";
coordinates_ = org.vt.ece4564.latmb.LATMBProtocol.Position.getDefaultInstance();
radius_ = 0D;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized != -1) return isInitialized == 1;
if (!hasMessage()) {
memoizedIsInitialized = 0;
return false;
}
if (!hasTimestamp()) {
memoizedIsInitialized = 0;
return false;
}
if (!hasExpiration()) {
memoizedIsInitialized = 0;
return false;
}
if (!getTimestamp().isInitialized()) {
memoizedIsInitialized = 0;
return false;
}
if (!getExpiration().isInitialized()) {
memoizedIsInitialized = 0;
return false;
}
if (hasCoordinates()) {
if (!getCoordinates().isInitialized()) {
memoizedIsInitialized = 0;
return false;
}
}
memoizedIsInitialized = 1;
return true;
}
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
getSerializedSize();
if (((bitField0_ & 0x00000001) == 0x00000001)) {
output.writeBytes(1, getMessageBytes());
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
output.writeMessage(2, timestamp_);
}
if (((bitField0_ & 0x00000004) == 0x00000004)) {
output.writeMessage(3, expiration_);
}
if (((bitField0_ & 0x00000008) == 0x00000008)) {
output.writeBytes(4, getUsernameBytes());
}
if (((bitField0_ & 0x00000010) == 0x00000010)) {
output.writeBytes(5, getChatroomBytes());
}
if (((bitField0_ & 0x00000020) == 0x00000020)) {
output.writeMessage(6, coordinates_);
}
if (((bitField0_ & 0x00000040) == 0x00000040)) {
output.writeDouble(7, radius_);
}
getUnknownFields().writeTo(output);
}
private int memoizedSerializedSize = -1;
public int getSerializedSize() {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (((bitField0_ & 0x00000001) == 0x00000001)) {
size += com.google.protobuf.CodedOutputStream
.computeBytesSize(1, getMessageBytes());
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(2, timestamp_);
}
if (((bitField0_ & 0x00000004) == 0x00000004)) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(3, expiration_);
}
if (((bitField0_ & 0x00000008) == 0x00000008)) {
size += com.google.protobuf.CodedOutputStream
.computeBytesSize(4, getUsernameBytes());
}
if (((bitField0_ & 0x00000010) == 0x00000010)) {
size += com.google.protobuf.CodedOutputStream
.computeBytesSize(5, getChatroomBytes());
}
if (((bitField0_ & 0x00000020) == 0x00000020)) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(6, coordinates_);
}
if (((bitField0_ & 0x00000040) == 0x00000040)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(7, radius_);
}
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
}
private static final long serialVersionUID = 0L;
@java.lang.Override
protected java.lang.Object writeReplace()
throws java.io.ObjectStreamException {
return super.writeReplace();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Message parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Message parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data, extensionRegistry)
.buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Message parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Message parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data, extensionRegistry)
.buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Message parseFrom(java.io.InputStream input)
throws java.io.IOException {
return newBuilder().mergeFrom(input).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Message parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return newBuilder().mergeFrom(input, extensionRegistry)
.buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Message parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
Builder builder = newBuilder();
if (builder.mergeDelimitedFrom(input)) {
return builder.buildParsed();
} else {
return null;
}
}
public static org.vt.ece4564.latmb.LATMBProtocol.Message parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
Builder builder = newBuilder();
if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
return builder.buildParsed();
} else {
return null;
}
}
public static org.vt.ece4564.latmb.LATMBProtocol.Message parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return newBuilder().mergeFrom(input).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Message parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return newBuilder().mergeFrom(input, extensionRegistry)
.buildParsed();
}
public static Builder newBuilder() { return Builder.create(); }
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder(org.vt.ece4564.latmb.LATMBProtocol.Message prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
@java.lang.Override
protected Builder newBuilderForType(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder<Builder>
implements org.vt.ece4564.latmb.LATMBProtocol.MessageOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_Message_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_Message_fieldAccessorTable;
}
// Construct using org.vt.ece4564.latmb.LATMBProtocol.Message.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
getTimestampFieldBuilder();
getExpirationFieldBuilder();
getCoordinatesFieldBuilder();
}
}
private static Builder create() {
return new Builder();
}
public Builder clear() {
super.clear();
message_ = "";
bitField0_ = (bitField0_ & ~0x00000001);
if (timestampBuilder_ == null) {
timestamp_ = org.vt.ece4564.latmb.LATMBProtocol.DateTime.getDefaultInstance();
} else {
timestampBuilder_.clear();
}
bitField0_ = (bitField0_ & ~0x00000002);
if (expirationBuilder_ == null) {
expiration_ = org.vt.ece4564.latmb.LATMBProtocol.DateTime.getDefaultInstance();
} else {
expirationBuilder_.clear();
}
bitField0_ = (bitField0_ & ~0x00000004);
username_ = "";
bitField0_ = (bitField0_ & ~0x00000008);
chatroom_ = "";
bitField0_ = (bitField0_ & ~0x00000010);
if (coordinatesBuilder_ == null) {
coordinates_ = org.vt.ece4564.latmb.LATMBProtocol.Position.getDefaultInstance();
} else {
coordinatesBuilder_.clear();
}
bitField0_ = (bitField0_ & ~0x00000020);
radius_ = 0D;
bitField0_ = (bitField0_ & ~0x00000040);
return this;
}
public Builder clone() {
return create().mergeFrom(buildPartial());
}
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return org.vt.ece4564.latmb.LATMBProtocol.Message.getDescriptor();
}
public org.vt.ece4564.latmb.LATMBProtocol.Message getDefaultInstanceForType() {
return org.vt.ece4564.latmb.LATMBProtocol.Message.getDefaultInstance();
}
public org.vt.ece4564.latmb.LATMBProtocol.Message build() {
org.vt.ece4564.latmb.LATMBProtocol.Message result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
private org.vt.ece4564.latmb.LATMBProtocol.Message buildParsed()
throws com.google.protobuf.InvalidProtocolBufferException {
org.vt.ece4564.latmb.LATMBProtocol.Message result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(
result).asInvalidProtocolBufferException();
}
return result;
}
public org.vt.ece4564.latmb.LATMBProtocol.Message buildPartial() {
org.vt.ece4564.latmb.LATMBProtocol.Message result = new org.vt.ece4564.latmb.LATMBProtocol.Message(this);
int from_bitField0_ = bitField0_;
int to_bitField0_ = 0;
if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
to_bitField0_ |= 0x00000001;
}
result.message_ = message_;
if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
to_bitField0_ |= 0x00000002;
}
if (timestampBuilder_ == null) {
result.timestamp_ = timestamp_;
} else {
result.timestamp_ = timestampBuilder_.build();
}
if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
to_bitField0_ |= 0x00000004;
}
if (expirationBuilder_ == null) {
result.expiration_ = expiration_;
} else {
result.expiration_ = expirationBuilder_.build();
}
if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
to_bitField0_ |= 0x00000008;
}
result.username_ = username_;
if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
to_bitField0_ |= 0x00000010;
}
result.chatroom_ = chatroom_;
if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
to_bitField0_ |= 0x00000020;
}
if (coordinatesBuilder_ == null) {
result.coordinates_ = coordinates_;
} else {
result.coordinates_ = coordinatesBuilder_.build();
}
if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
to_bitField0_ |= 0x00000040;
}
result.radius_ = radius_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
}
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof org.vt.ece4564.latmb.LATMBProtocol.Message) {
return mergeFrom((org.vt.ece4564.latmb.LATMBProtocol.Message)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(org.vt.ece4564.latmb.LATMBProtocol.Message other) {
if (other == org.vt.ece4564.latmb.LATMBProtocol.Message.getDefaultInstance()) return this;
if (other.hasMessage()) {
setMessage(other.getMessage());
}
if (other.hasTimestamp()) {
mergeTimestamp(other.getTimestamp());
}
if (other.hasExpiration()) {
mergeExpiration(other.getExpiration());
}
if (other.hasUsername()) {
setUsername(other.getUsername());
}
if (other.hasChatroom()) {
setChatroom(other.getChatroom());
}
if (other.hasCoordinates()) {
mergeCoordinates(other.getCoordinates());
}
if (other.hasRadius()) {
setRadius(other.getRadius());
}
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
public final boolean isInitialized() {
if (!hasMessage()) {
return false;
}
if (!hasTimestamp()) {
return false;
}
if (!hasExpiration()) {
return false;
}
if (!getTimestamp().isInitialized()) {
return false;
}
if (!getExpiration().isInitialized()) {
return false;
}
if (hasCoordinates()) {
if (!getCoordinates().isInitialized()) {
return false;
}
}
return true;
}
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
com.google.protobuf.UnknownFieldSet.newBuilder(
this.getUnknownFields());
while (true) {
int tag = input.readTag();
switch (tag) {
case 0:
this.setUnknownFields(unknownFields.build());
onChanged();
return this;
default: {
if (!parseUnknownField(input, unknownFields,
extensionRegistry, tag)) {
this.setUnknownFields(unknownFields.build());
onChanged();
return this;
}
break;
}
case 10: {
bitField0_ |= 0x00000001;
message_ = input.readBytes();
break;
}
case 18: {
org.vt.ece4564.latmb.LATMBProtocol.DateTime.Builder subBuilder = org.vt.ece4564.latmb.LATMBProtocol.DateTime.newBuilder();
if (hasTimestamp()) {
subBuilder.mergeFrom(getTimestamp());
}
input.readMessage(subBuilder, extensionRegistry);
setTimestamp(subBuilder.buildPartial());
break;
}
case 26: {
org.vt.ece4564.latmb.LATMBProtocol.DateTime.Builder subBuilder = org.vt.ece4564.latmb.LATMBProtocol.DateTime.newBuilder();
if (hasExpiration()) {
subBuilder.mergeFrom(getExpiration());
}
input.readMessage(subBuilder, extensionRegistry);
setExpiration(subBuilder.buildPartial());
break;
}
case 34: {
bitField0_ |= 0x00000008;
username_ = input.readBytes();
break;
}
case 42: {
bitField0_ |= 0x00000010;
chatroom_ = input.readBytes();
break;
}
case 50: {
org.vt.ece4564.latmb.LATMBProtocol.Position.Builder subBuilder = org.vt.ece4564.latmb.LATMBProtocol.Position.newBuilder();
if (hasCoordinates()) {
subBuilder.mergeFrom(getCoordinates());
}
input.readMessage(subBuilder, extensionRegistry);
setCoordinates(subBuilder.buildPartial());
break;
}
case 57: {
bitField0_ |= 0x00000040;
radius_ = input.readDouble();
break;
}
}
}
}
private int bitField0_;
// required string message = 1;
private java.lang.Object message_ = "";
public boolean hasMessage() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
public String getMessage() {
java.lang.Object ref = message_;
if (!(ref instanceof String)) {
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
message_ = s;
return s;
} else {
return (String) ref;
}
}
public Builder setMessage(String value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00000001;
message_ = value;
onChanged();
return this;
}
public Builder clearMessage() {
bitField0_ = (bitField0_ & ~0x00000001);
message_ = getDefaultInstance().getMessage();
onChanged();
return this;
}
void setMessage(com.google.protobuf.ByteString value) {
bitField0_ |= 0x00000001;
message_ = value;
onChanged();
}
// required .org.vt.ece4564.latmb.DateTime timestamp = 2;
private org.vt.ece4564.latmb.LATMBProtocol.DateTime timestamp_ = org.vt.ece4564.latmb.LATMBProtocol.DateTime.getDefaultInstance();
private com.google.protobuf.SingleFieldBuilder<
org.vt.ece4564.latmb.LATMBProtocol.DateTime, org.vt.ece4564.latmb.LATMBProtocol.DateTime.Builder, org.vt.ece4564.latmb.LATMBProtocol.DateTimeOrBuilder> timestampBuilder_;
public boolean hasTimestamp() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
public org.vt.ece4564.latmb.LATMBProtocol.DateTime getTimestamp() {
if (timestampBuilder_ == null) {
return timestamp_;
} else {
return timestampBuilder_.getMessage();
}
}
public Builder setTimestamp(org.vt.ece4564.latmb.LATMBProtocol.DateTime value) {
if (timestampBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
timestamp_ = value;
onChanged();
} else {
timestampBuilder_.setMessage(value);
}
bitField0_ |= 0x00000002;
return this;
}
public Builder setTimestamp(
org.vt.ece4564.latmb.LATMBProtocol.DateTime.Builder builderForValue) {
if (timestampBuilder_ == null) {
timestamp_ = builderForValue.build();
onChanged();
} else {
timestampBuilder_.setMessage(builderForValue.build());
}
bitField0_ |= 0x00000002;
return this;
}
public Builder mergeTimestamp(org.vt.ece4564.latmb.LATMBProtocol.DateTime value) {
if (timestampBuilder_ == null) {
if (((bitField0_ & 0x00000002) == 0x00000002) &&
timestamp_ != org.vt.ece4564.latmb.LATMBProtocol.DateTime.getDefaultInstance()) {
timestamp_ =
org.vt.ece4564.latmb.LATMBProtocol.DateTime.newBuilder(timestamp_).mergeFrom(value).buildPartial();
} else {
timestamp_ = value;
}
onChanged();
} else {
timestampBuilder_.mergeFrom(value);
}
bitField0_ |= 0x00000002;
return this;
}
public Builder clearTimestamp() {
if (timestampBuilder_ == null) {
timestamp_ = org.vt.ece4564.latmb.LATMBProtocol.DateTime.getDefaultInstance();
onChanged();
} else {
timestampBuilder_.clear();
}
bitField0_ = (bitField0_ & ~0x00000002);
return this;
}
public org.vt.ece4564.latmb.LATMBProtocol.DateTime.Builder getTimestampBuilder() {
bitField0_ |= 0x00000002;
onChanged();
return getTimestampFieldBuilder().getBuilder();
}
public org.vt.ece4564.latmb.LATMBProtocol.DateTimeOrBuilder getTimestampOrBuilder() {
if (timestampBuilder_ != null) {
return timestampBuilder_.getMessageOrBuilder();
} else {
return timestamp_;
}
}
private com.google.protobuf.SingleFieldBuilder<
org.vt.ece4564.latmb.LATMBProtocol.DateTime, org.vt.ece4564.latmb.LATMBProtocol.DateTime.Builder, org.vt.ece4564.latmb.LATMBProtocol.DateTimeOrBuilder>
getTimestampFieldBuilder() {
if (timestampBuilder_ == null) {
timestampBuilder_ = new com.google.protobuf.SingleFieldBuilder<
org.vt.ece4564.latmb.LATMBProtocol.DateTime, org.vt.ece4564.latmb.LATMBProtocol.DateTime.Builder, org.vt.ece4564.latmb.LATMBProtocol.DateTimeOrBuilder>(
timestamp_,
getParentForChildren(),
isClean());
timestamp_ = null;
}
return timestampBuilder_;
}
// required .org.vt.ece4564.latmb.DateTime expiration = 3;
private org.vt.ece4564.latmb.LATMBProtocol.DateTime expiration_ = org.vt.ece4564.latmb.LATMBProtocol.DateTime.getDefaultInstance();
private com.google.protobuf.SingleFieldBuilder<
org.vt.ece4564.latmb.LATMBProtocol.DateTime, org.vt.ece4564.latmb.LATMBProtocol.DateTime.Builder, org.vt.ece4564.latmb.LATMBProtocol.DateTimeOrBuilder> expirationBuilder_;
public boolean hasExpiration() {
return ((bitField0_ & 0x00000004) == 0x00000004);
}
public org.vt.ece4564.latmb.LATMBProtocol.DateTime getExpiration() {
if (expirationBuilder_ == null) {
return expiration_;
} else {
return expirationBuilder_.getMessage();
}
}
public Builder setExpiration(org.vt.ece4564.latmb.LATMBProtocol.DateTime value) {
if (expirationBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
expiration_ = value;
onChanged();
} else {
expirationBuilder_.setMessage(value);
}
bitField0_ |= 0x00000004;
return this;
}
public Builder setExpiration(
org.vt.ece4564.latmb.LATMBProtocol.DateTime.Builder builderForValue) {
if (expirationBuilder_ == null) {
expiration_ = builderForValue.build();
onChanged();
} else {
expirationBuilder_.setMessage(builderForValue.build());
}
bitField0_ |= 0x00000004;
return this;
}
public Builder mergeExpiration(org.vt.ece4564.latmb.LATMBProtocol.DateTime value) {
if (expirationBuilder_ == null) {
if (((bitField0_ & 0x00000004) == 0x00000004) &&
expiration_ != org.vt.ece4564.latmb.LATMBProtocol.DateTime.getDefaultInstance()) {
expiration_ =
org.vt.ece4564.latmb.LATMBProtocol.DateTime.newBuilder(expiration_).mergeFrom(value).buildPartial();
} else {
expiration_ = value;
}
onChanged();
} else {
expirationBuilder_.mergeFrom(value);
}
bitField0_ |= 0x00000004;
return this;
}
public Builder clearExpiration() {
if (expirationBuilder_ == null) {
expiration_ = org.vt.ece4564.latmb.LATMBProtocol.DateTime.getDefaultInstance();
onChanged();
} else {
expirationBuilder_.clear();
}
bitField0_ = (bitField0_ & ~0x00000004);
return this;
}
public org.vt.ece4564.latmb.LATMBProtocol.DateTime.Builder getExpirationBuilder() {
bitField0_ |= 0x00000004;
onChanged();
return getExpirationFieldBuilder().getBuilder();
}
public org.vt.ece4564.latmb.LATMBProtocol.DateTimeOrBuilder getExpirationOrBuilder() {
if (expirationBuilder_ != null) {
return expirationBuilder_.getMessageOrBuilder();
} else {
return expiration_;
}
}
private com.google.protobuf.SingleFieldBuilder<
org.vt.ece4564.latmb.LATMBProtocol.DateTime, org.vt.ece4564.latmb.LATMBProtocol.DateTime.Builder, org.vt.ece4564.latmb.LATMBProtocol.DateTimeOrBuilder>
getExpirationFieldBuilder() {
if (expirationBuilder_ == null) {
expirationBuilder_ = new com.google.protobuf.SingleFieldBuilder<
org.vt.ece4564.latmb.LATMBProtocol.DateTime, org.vt.ece4564.latmb.LATMBProtocol.DateTime.Builder, org.vt.ece4564.latmb.LATMBProtocol.DateTimeOrBuilder>(
expiration_,
getParentForChildren(),
isClean());
expiration_ = null;
}
return expirationBuilder_;
}
// optional string username = 4;
private java.lang.Object username_ = "";
public boolean hasUsername() {
return ((bitField0_ & 0x00000008) == 0x00000008);
}
public String getUsername() {
java.lang.Object ref = username_;
if (!(ref instanceof String)) {
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
username_ = s;
return s;
} else {
return (String) ref;
}
}
public Builder setUsername(String value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00000008;
username_ = value;
onChanged();
return this;
}
public Builder clearUsername() {
bitField0_ = (bitField0_ & ~0x00000008);
username_ = getDefaultInstance().getUsername();
onChanged();
return this;
}
void setUsername(com.google.protobuf.ByteString value) {
bitField0_ |= 0x00000008;
username_ = value;
onChanged();
}
// optional string chatroom = 5;
private java.lang.Object chatroom_ = "";
public boolean hasChatroom() {
return ((bitField0_ & 0x00000010) == 0x00000010);
}
public String getChatroom() {
java.lang.Object ref = chatroom_;
if (!(ref instanceof String)) {
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
chatroom_ = s;
return s;
} else {
return (String) ref;
}
}
public Builder setChatroom(String value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00000010;
chatroom_ = value;
onChanged();
return this;
}
public Builder clearChatroom() {
bitField0_ = (bitField0_ & ~0x00000010);
chatroom_ = getDefaultInstance().getChatroom();
onChanged();
return this;
}
void setChatroom(com.google.protobuf.ByteString value) {
bitField0_ |= 0x00000010;
chatroom_ = value;
onChanged();
}
// optional .org.vt.ece4564.latmb.Position coordinates = 6;
private org.vt.ece4564.latmb.LATMBProtocol.Position coordinates_ = org.vt.ece4564.latmb.LATMBProtocol.Position.getDefaultInstance();
private com.google.protobuf.SingleFieldBuilder<
org.vt.ece4564.latmb.LATMBProtocol.Position, org.vt.ece4564.latmb.LATMBProtocol.Position.Builder, org.vt.ece4564.latmb.LATMBProtocol.PositionOrBuilder> coordinatesBuilder_;
public boolean hasCoordinates() {
return ((bitField0_ & 0x00000020) == 0x00000020);
}
public org.vt.ece4564.latmb.LATMBProtocol.Position getCoordinates() {
if (coordinatesBuilder_ == null) {
return coordinates_;
} else {
return coordinatesBuilder_.getMessage();
}
}
public Builder setCoordinates(org.vt.ece4564.latmb.LATMBProtocol.Position value) {
if (coordinatesBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
coordinates_ = value;
onChanged();
} else {
coordinatesBuilder_.setMessage(value);
}
bitField0_ |= 0x00000020;
return this;
}
public Builder setCoordinates(
org.vt.ece4564.latmb.LATMBProtocol.Position.Builder builderForValue) {
if (coordinatesBuilder_ == null) {
coordinates_ = builderForValue.build();
onChanged();
} else {
coordinatesBuilder_.setMessage(builderForValue.build());
}
bitField0_ |= 0x00000020;
return this;
}
public Builder mergeCoordinates(org.vt.ece4564.latmb.LATMBProtocol.Position value) {
if (coordinatesBuilder_ == null) {
if (((bitField0_ & 0x00000020) == 0x00000020) &&
coordinates_ != org.vt.ece4564.latmb.LATMBProtocol.Position.getDefaultInstance()) {
coordinates_ =
org.vt.ece4564.latmb.LATMBProtocol.Position.newBuilder(coordinates_).mergeFrom(value).buildPartial();
} else {
coordinates_ = value;
}
onChanged();
} else {
coordinatesBuilder_.mergeFrom(value);
}
bitField0_ |= 0x00000020;
return this;
}
public Builder clearCoordinates() {
if (coordinatesBuilder_ == null) {
coordinates_ = org.vt.ece4564.latmb.LATMBProtocol.Position.getDefaultInstance();
onChanged();
} else {
coordinatesBuilder_.clear();
}
bitField0_ = (bitField0_ & ~0x00000020);
return this;
}
public org.vt.ece4564.latmb.LATMBProtocol.Position.Builder getCoordinatesBuilder() {
bitField0_ |= 0x00000020;
onChanged();
return getCoordinatesFieldBuilder().getBuilder();
}
public org.vt.ece4564.latmb.LATMBProtocol.PositionOrBuilder getCoordinatesOrBuilder() {
if (coordinatesBuilder_ != null) {
return coordinatesBuilder_.getMessageOrBuilder();
} else {
return coordinates_;
}
}
private com.google.protobuf.SingleFieldBuilder<
org.vt.ece4564.latmb.LATMBProtocol.Position, org.vt.ece4564.latmb.LATMBProtocol.Position.Builder, org.vt.ece4564.latmb.LATMBProtocol.PositionOrBuilder>
getCoordinatesFieldBuilder() {
if (coordinatesBuilder_ == null) {
coordinatesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
org.vt.ece4564.latmb.LATMBProtocol.Position, org.vt.ece4564.latmb.LATMBProtocol.Position.Builder, org.vt.ece4564.latmb.LATMBProtocol.PositionOrBuilder>(
coordinates_,
getParentForChildren(),
isClean());
coordinates_ = null;
}
return coordinatesBuilder_;
}
// optional double radius = 7;
private double radius_ ;
public boolean hasRadius() {
return ((bitField0_ & 0x00000040) == 0x00000040);
}
public double getRadius() {
return radius_;
}
public Builder setRadius(double value) {
bitField0_ |= 0x00000040;
radius_ = value;
onChanged();
return this;
}
public Builder clearRadius() {
bitField0_ = (bitField0_ & ~0x00000040);
radius_ = 0D;
onChanged();
return this;
}
// @@protoc_insertion_point(builder_scope:org.vt.ece4564.latmb.Message)
}
static {
defaultInstance = new Message(true);
defaultInstance.initFields();
}
// @@protoc_insertion_point(class_scope:org.vt.ece4564.latmb.Message)
}
public interface PositionOrBuilder
extends com.google.protobuf.MessageOrBuilder {
// required double latitude = 1;
boolean hasLatitude();
double getLatitude();
// required double longitude = 2;
boolean hasLongitude();
double getLongitude();
// required double accuracy = 3;
boolean hasAccuracy();
double getAccuracy();
}
public static final class Position extends
com.google.protobuf.GeneratedMessage
implements PositionOrBuilder {
// Use Position.newBuilder() to construct.
private Position(Builder builder) {
super(builder);
}
private Position(boolean noInit) {}
private static final Position defaultInstance;
public static Position getDefaultInstance() {
return defaultInstance;
}
public Position getDefaultInstanceForType() {
return defaultInstance;
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_Position_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_Position_fieldAccessorTable;
}
private int bitField0_;
// required double latitude = 1;
public static final int LATITUDE_FIELD_NUMBER = 1;
private double latitude_;
public boolean hasLatitude() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
public double getLatitude() {
return latitude_;
}
// required double longitude = 2;
public static final int LONGITUDE_FIELD_NUMBER = 2;
private double longitude_;
public boolean hasLongitude() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
public double getLongitude() {
return longitude_;
}
// required double accuracy = 3;
public static final int ACCURACY_FIELD_NUMBER = 3;
private double accuracy_;
public boolean hasAccuracy() {
return ((bitField0_ & 0x00000004) == 0x00000004);
}
public double getAccuracy() {
return accuracy_;
}
private void initFields() {
latitude_ = 0D;
longitude_ = 0D;
accuracy_ = 0D;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized != -1) return isInitialized == 1;
if (!hasLatitude()) {
memoizedIsInitialized = 0;
return false;
}
if (!hasLongitude()) {
memoizedIsInitialized = 0;
return false;
}
if (!hasAccuracy()) {
memoizedIsInitialized = 0;
return false;
}
memoizedIsInitialized = 1;
return true;
}
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
getSerializedSize();
if (((bitField0_ & 0x00000001) == 0x00000001)) {
output.writeDouble(1, latitude_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
output.writeDouble(2, longitude_);
}
if (((bitField0_ & 0x00000004) == 0x00000004)) {
output.writeDouble(3, accuracy_);
}
getUnknownFields().writeTo(output);
}
private int memoizedSerializedSize = -1;
public int getSerializedSize() {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (((bitField0_ & 0x00000001) == 0x00000001)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(1, latitude_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(2, longitude_);
}
if (((bitField0_ & 0x00000004) == 0x00000004)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(3, accuracy_);
}
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
}
private static final long serialVersionUID = 0L;
@java.lang.Override
protected java.lang.Object writeReplace()
throws java.io.ObjectStreamException {
return super.writeReplace();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Position parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Position parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data, extensionRegistry)
.buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Position parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Position parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data, extensionRegistry)
.buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Position parseFrom(java.io.InputStream input)
throws java.io.IOException {
return newBuilder().mergeFrom(input).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Position parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return newBuilder().mergeFrom(input, extensionRegistry)
.buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Position parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
Builder builder = newBuilder();
if (builder.mergeDelimitedFrom(input)) {
return builder.buildParsed();
} else {
return null;
}
}
public static org.vt.ece4564.latmb.LATMBProtocol.Position parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
Builder builder = newBuilder();
if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
return builder.buildParsed();
} else {
return null;
}
}
public static org.vt.ece4564.latmb.LATMBProtocol.Position parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return newBuilder().mergeFrom(input).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.Position parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return newBuilder().mergeFrom(input, extensionRegistry)
.buildParsed();
}
public static Builder newBuilder() { return Builder.create(); }
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder(org.vt.ece4564.latmb.LATMBProtocol.Position prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
@java.lang.Override
protected Builder newBuilderForType(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder<Builder>
implements org.vt.ece4564.latmb.LATMBProtocol.PositionOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_Position_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_Position_fieldAccessorTable;
}
// Construct using org.vt.ece4564.latmb.LATMBProtocol.Position.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
}
}
private static Builder create() {
return new Builder();
}
public Builder clear() {
super.clear();
latitude_ = 0D;
bitField0_ = (bitField0_ & ~0x00000001);
longitude_ = 0D;
bitField0_ = (bitField0_ & ~0x00000002);
accuracy_ = 0D;
bitField0_ = (bitField0_ & ~0x00000004);
return this;
}
public Builder clone() {
return create().mergeFrom(buildPartial());
}
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return org.vt.ece4564.latmb.LATMBProtocol.Position.getDescriptor();
}
public org.vt.ece4564.latmb.LATMBProtocol.Position getDefaultInstanceForType() {
return org.vt.ece4564.latmb.LATMBProtocol.Position.getDefaultInstance();
}
public org.vt.ece4564.latmb.LATMBProtocol.Position build() {
org.vt.ece4564.latmb.LATMBProtocol.Position result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
private org.vt.ece4564.latmb.LATMBProtocol.Position buildParsed()
throws com.google.protobuf.InvalidProtocolBufferException {
org.vt.ece4564.latmb.LATMBProtocol.Position result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(
result).asInvalidProtocolBufferException();
}
return result;
}
public org.vt.ece4564.latmb.LATMBProtocol.Position buildPartial() {
org.vt.ece4564.latmb.LATMBProtocol.Position result = new org.vt.ece4564.latmb.LATMBProtocol.Position(this);
int from_bitField0_ = bitField0_;
int to_bitField0_ = 0;
if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
to_bitField0_ |= 0x00000001;
}
result.latitude_ = latitude_;
if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
to_bitField0_ |= 0x00000002;
}
result.longitude_ = longitude_;
if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
to_bitField0_ |= 0x00000004;
}
result.accuracy_ = accuracy_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
}
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof org.vt.ece4564.latmb.LATMBProtocol.Position) {
return mergeFrom((org.vt.ece4564.latmb.LATMBProtocol.Position)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(org.vt.ece4564.latmb.LATMBProtocol.Position other) {
if (other == org.vt.ece4564.latmb.LATMBProtocol.Position.getDefaultInstance()) return this;
if (other.hasLatitude()) {
setLatitude(other.getLatitude());
}
if (other.hasLongitude()) {
setLongitude(other.getLongitude());
}
if (other.hasAccuracy()) {
setAccuracy(other.getAccuracy());
}
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
public final boolean isInitialized() {
if (!hasLatitude()) {
return false;
}
if (!hasLongitude()) {
return false;
}
if (!hasAccuracy()) {
return false;
}
return true;
}
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
com.google.protobuf.UnknownFieldSet.newBuilder(
this.getUnknownFields());
while (true) {
int tag = input.readTag();
switch (tag) {
case 0:
this.setUnknownFields(unknownFields.build());
onChanged();
return this;
default: {
if (!parseUnknownField(input, unknownFields,
extensionRegistry, tag)) {
this.setUnknownFields(unknownFields.build());
onChanged();
return this;
}
break;
}
case 9: {
bitField0_ |= 0x00000001;
latitude_ = input.readDouble();
break;
}
case 17: {
bitField0_ |= 0x00000002;
longitude_ = input.readDouble();
break;
}
case 25: {
bitField0_ |= 0x00000004;
accuracy_ = input.readDouble();
break;
}
}
}
}
private int bitField0_;
// required double latitude = 1;
private double latitude_ ;
public boolean hasLatitude() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
public double getLatitude() {
return latitude_;
}
public Builder setLatitude(double value) {
bitField0_ |= 0x00000001;
latitude_ = value;
onChanged();
return this;
}
public Builder clearLatitude() {
bitField0_ = (bitField0_ & ~0x00000001);
latitude_ = 0D;
onChanged();
return this;
}
// required double longitude = 2;
private double longitude_ ;
public boolean hasLongitude() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
public double getLongitude() {
return longitude_;
}
public Builder setLongitude(double value) {
bitField0_ |= 0x00000002;
longitude_ = value;
onChanged();
return this;
}
public Builder clearLongitude() {
bitField0_ = (bitField0_ & ~0x00000002);
longitude_ = 0D;
onChanged();
return this;
}
// required double accuracy = 3;
private double accuracy_ ;
public boolean hasAccuracy() {
return ((bitField0_ & 0x00000004) == 0x00000004);
}
public double getAccuracy() {
return accuracy_;
}
public Builder setAccuracy(double value) {
bitField0_ |= 0x00000004;
accuracy_ = value;
onChanged();
return this;
}
public Builder clearAccuracy() {
bitField0_ = (bitField0_ & ~0x00000004);
accuracy_ = 0D;
onChanged();
return this;
}
// @@protoc_insertion_point(builder_scope:org.vt.ece4564.latmb.Position)
}
static {
defaultInstance = new Position(true);
defaultInstance.initFields();
}
// @@protoc_insertion_point(class_scope:org.vt.ece4564.latmb.Position)
}
public interface DateTimeOrBuilder
extends com.google.protobuf.MessageOrBuilder {
// required int32 year = 1;
boolean hasYear();
int getYear();
// required int32 month = 2;
boolean hasMonth();
int getMonth();
// required int32 day = 3;
boolean hasDay();
int getDay();
// required int32 hour = 4;
boolean hasHour();
int getHour();
// required int32 minute = 5;
boolean hasMinute();
int getMinute();
// required int32 second = 6;
boolean hasSecond();
int getSecond();
}
public static final class DateTime extends
com.google.protobuf.GeneratedMessage
implements DateTimeOrBuilder {
// Use DateTime.newBuilder() to construct.
private DateTime(Builder builder) {
super(builder);
}
private DateTime(boolean noInit) {}
private static final DateTime defaultInstance;
public static DateTime getDefaultInstance() {
return defaultInstance;
}
public DateTime getDefaultInstanceForType() {
return defaultInstance;
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_DateTime_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_DateTime_fieldAccessorTable;
}
private int bitField0_;
// required int32 year = 1;
public static final int YEAR_FIELD_NUMBER = 1;
private int year_;
public boolean hasYear() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
public int getYear() {
return year_;
}
// required int32 month = 2;
public static final int MONTH_FIELD_NUMBER = 2;
private int month_;
public boolean hasMonth() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
public int getMonth() {
return month_;
}
// required int32 day = 3;
public static final int DAY_FIELD_NUMBER = 3;
private int day_;
public boolean hasDay() {
return ((bitField0_ & 0x00000004) == 0x00000004);
}
public int getDay() {
return day_;
}
// required int32 hour = 4;
public static final int HOUR_FIELD_NUMBER = 4;
private int hour_;
public boolean hasHour() {
return ((bitField0_ & 0x00000008) == 0x00000008);
}
public int getHour() {
return hour_;
}
// required int32 minute = 5;
public static final int MINUTE_FIELD_NUMBER = 5;
private int minute_;
public boolean hasMinute() {
return ((bitField0_ & 0x00000010) == 0x00000010);
}
public int getMinute() {
return minute_;
}
// required int32 second = 6;
public static final int SECOND_FIELD_NUMBER = 6;
private int second_;
public boolean hasSecond() {
return ((bitField0_ & 0x00000020) == 0x00000020);
}
public int getSecond() {
return second_;
}
private void initFields() {
year_ = 0;
month_ = 0;
day_ = 0;
hour_ = 0;
minute_ = 0;
second_ = 0;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized != -1) return isInitialized == 1;
if (!hasYear()) {
memoizedIsInitialized = 0;
return false;
}
if (!hasMonth()) {
memoizedIsInitialized = 0;
return false;
}
if (!hasDay()) {
memoizedIsInitialized = 0;
return false;
}
if (!hasHour()) {
memoizedIsInitialized = 0;
return false;
}
if (!hasMinute()) {
memoizedIsInitialized = 0;
return false;
}
if (!hasSecond()) {
memoizedIsInitialized = 0;
return false;
}
memoizedIsInitialized = 1;
return true;
}
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
getSerializedSize();
if (((bitField0_ & 0x00000001) == 0x00000001)) {
output.writeInt32(1, year_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
output.writeInt32(2, month_);
}
if (((bitField0_ & 0x00000004) == 0x00000004)) {
output.writeInt32(3, day_);
}
if (((bitField0_ & 0x00000008) == 0x00000008)) {
output.writeInt32(4, hour_);
}
if (((bitField0_ & 0x00000010) == 0x00000010)) {
output.writeInt32(5, minute_);
}
if (((bitField0_ & 0x00000020) == 0x00000020)) {
output.writeInt32(6, second_);
}
getUnknownFields().writeTo(output);
}
private int memoizedSerializedSize = -1;
public int getSerializedSize() {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (((bitField0_ & 0x00000001) == 0x00000001)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(1, year_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(2, month_);
}
if (((bitField0_ & 0x00000004) == 0x00000004)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(3, day_);
}
if (((bitField0_ & 0x00000008) == 0x00000008)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(4, hour_);
}
if (((bitField0_ & 0x00000010) == 0x00000010)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(5, minute_);
}
if (((bitField0_ & 0x00000020) == 0x00000020)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(6, second_);
}
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
}
private static final long serialVersionUID = 0L;
@java.lang.Override
protected java.lang.Object writeReplace()
throws java.io.ObjectStreamException {
return super.writeReplace();
}
public static org.vt.ece4564.latmb.LATMBProtocol.DateTime parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.DateTime parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data, extensionRegistry)
.buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.DateTime parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.DateTime parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return newBuilder().mergeFrom(data, extensionRegistry)
.buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.DateTime parseFrom(java.io.InputStream input)
throws java.io.IOException {
return newBuilder().mergeFrom(input).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.DateTime parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return newBuilder().mergeFrom(input, extensionRegistry)
.buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.DateTime parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
Builder builder = newBuilder();
if (builder.mergeDelimitedFrom(input)) {
return builder.buildParsed();
} else {
return null;
}
}
public static org.vt.ece4564.latmb.LATMBProtocol.DateTime parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
Builder builder = newBuilder();
if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
return builder.buildParsed();
} else {
return null;
}
}
public static org.vt.ece4564.latmb.LATMBProtocol.DateTime parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return newBuilder().mergeFrom(input).buildParsed();
}
public static org.vt.ece4564.latmb.LATMBProtocol.DateTime parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return newBuilder().mergeFrom(input, extensionRegistry)
.buildParsed();
}
public static Builder newBuilder() { return Builder.create(); }
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder(org.vt.ece4564.latmb.LATMBProtocol.DateTime prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
@java.lang.Override
protected Builder newBuilderForType(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder<Builder>
implements org.vt.ece4564.latmb.LATMBProtocol.DateTimeOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_DateTime_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.vt.ece4564.latmb.LATMBProtocol.internal_static_org_vt_ece4564_latmb_DateTime_fieldAccessorTable;
}
// Construct using org.vt.ece4564.latmb.LATMBProtocol.DateTime.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
}
}
private static Builder create() {
return new Builder();
}
public Builder clear() {
super.clear();
year_ = 0;
bitField0_ = (bitField0_ & ~0x00000001);
month_ = 0;
bitField0_ = (bitField0_ & ~0x00000002);
day_ = 0;
bitField0_ = (bitField0_ & ~0x00000004);
hour_ = 0;
bitField0_ = (bitField0_ & ~0x00000008);
minute_ = 0;
bitField0_ = (bitField0_ & ~0x00000010);
second_ = 0;
bitField0_ = (bitField0_ & ~0x00000020);
return this;
}
public Builder clone() {
return create().mergeFrom(buildPartial());
}
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return org.vt.ece4564.latmb.LATMBProtocol.DateTime.getDescriptor();
}
public org.vt.ece4564.latmb.LATMBProtocol.DateTime getDefaultInstanceForType() {
return org.vt.ece4564.latmb.LATMBProtocol.DateTime.getDefaultInstance();
}
public org.vt.ece4564.latmb.LATMBProtocol.DateTime build() {
org.vt.ece4564.latmb.LATMBProtocol.DateTime result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
private org.vt.ece4564.latmb.LATMBProtocol.DateTime buildParsed()
throws com.google.protobuf.InvalidProtocolBufferException {
org.vt.ece4564.latmb.LATMBProtocol.DateTime result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(
result).asInvalidProtocolBufferException();
}
return result;
}
public org.vt.ece4564.latmb.LATMBProtocol.DateTime buildPartial() {
org.vt.ece4564.latmb.LATMBProtocol.DateTime result = new org.vt.ece4564.latmb.LATMBProtocol.DateTime(this);
int from_bitField0_ = bitField0_;
int to_bitField0_ = 0;
if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
to_bitField0_ |= 0x00000001;
}
result.year_ = year_;
if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
to_bitField0_ |= 0x00000002;
}
result.month_ = month_;
if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
to_bitField0_ |= 0x00000004;
}
result.day_ = day_;
if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
to_bitField0_ |= 0x00000008;
}
result.hour_ = hour_;
if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
to_bitField0_ |= 0x00000010;
}
result.minute_ = minute_;
if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
to_bitField0_ |= 0x00000020;
}
result.second_ = second_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
}
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof org.vt.ece4564.latmb.LATMBProtocol.DateTime) {
return mergeFrom((org.vt.ece4564.latmb.LATMBProtocol.DateTime)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(org.vt.ece4564.latmb.LATMBProtocol.DateTime other) {
if (other == org.vt.ece4564.latmb.LATMBProtocol.DateTime.getDefaultInstance()) return this;
if (other.hasYear()) {
setYear(other.getYear());
}
if (other.hasMonth()) {
setMonth(other.getMonth());
}
if (other.hasDay()) {
setDay(other.getDay());
}
if (other.hasHour()) {
setHour(other.getHour());
}
if (other.hasMinute()) {
setMinute(other.getMinute());
}
if (other.hasSecond()) {
setSecond(other.getSecond());
}
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
public final boolean isInitialized() {
if (!hasYear()) {
return false;
}
if (!hasMonth()) {
return false;
}
if (!hasDay()) {
return false;
}
if (!hasHour()) {
return false;
}
if (!hasMinute()) {
return false;
}
if (!hasSecond()) {
return false;
}
return true;
}
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
com.google.protobuf.UnknownFieldSet.newBuilder(
this.getUnknownFields());
while (true) {
int tag = input.readTag();
switch (tag) {
case 0:
this.setUnknownFields(unknownFields.build());
onChanged();
return this;
default: {
if (!parseUnknownField(input, unknownFields,
extensionRegistry, tag)) {
this.setUnknownFields(unknownFields.build());
onChanged();
return this;
}
break;
}
case 8: {
bitField0_ |= 0x00000001;
year_ = input.readInt32();
break;
}
case 16: {
bitField0_ |= 0x00000002;
month_ = input.readInt32();
break;
}
case 24: {
bitField0_ |= 0x00000004;
day_ = input.readInt32();
break;
}
case 32: {
bitField0_ |= 0x00000008;
hour_ = input.readInt32();
break;
}
case 40: {
bitField0_ |= 0x00000010;
minute_ = input.readInt32();
break;
}
case 48: {
bitField0_ |= 0x00000020;
second_ = input.readInt32();
break;
}
}
}
}
private int bitField0_;
// required int32 year = 1;
private int year_ ;
public boolean hasYear() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
public int getYear() {
return year_;
}
public Builder setYear(int value) {
bitField0_ |= 0x00000001;
year_ = value;
onChanged();
return this;
}
public Builder clearYear() {
bitField0_ = (bitField0_ & ~0x00000001);
year_ = 0;
onChanged();
return this;
}
// required int32 month = 2;
private int month_ ;
public boolean hasMonth() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
public int getMonth() {
return month_;
}
public Builder setMonth(int value) {
bitField0_ |= 0x00000002;
month_ = value;
onChanged();
return this;
}
public Builder clearMonth() {
bitField0_ = (bitField0_ & ~0x00000002);
month_ = 0;
onChanged();
return this;
}
// required int32 day = 3;
private int day_ ;
public boolean hasDay() {
return ((bitField0_ & 0x00000004) == 0x00000004);
}
public int getDay() {
return day_;
}
public Builder setDay(int value) {
bitField0_ |= 0x00000004;
day_ = value;
onChanged();
return this;
}
public Builder clearDay() {
bitField0_ = (bitField0_ & ~0x00000004);
day_ = 0;
onChanged();
return this;
}
// required int32 hour = 4;
private int hour_ ;
public boolean hasHour() {
return ((bitField0_ & 0x00000008) == 0x00000008);
}
public int getHour() {
return hour_;
}
public Builder setHour(int value) {
bitField0_ |= 0x00000008;
hour_ = value;
onChanged();
return this;
}
public Builder clearHour() {
bitField0_ = (bitField0_ & ~0x00000008);
hour_ = 0;
onChanged();
return this;
}
// required int32 minute = 5;
private int minute_ ;
public boolean hasMinute() {
return ((bitField0_ & 0x00000010) == 0x00000010);
}
public int getMinute() {
return minute_;
}
public Builder setMinute(int value) {
bitField0_ |= 0x00000010;
minute_ = value;
onChanged();
return this;
}
public Builder clearMinute() {
bitField0_ = (bitField0_ & ~0x00000010);
minute_ = 0;
onChanged();
return this;
}
// required int32 second = 6;
private int second_ ;
public boolean hasSecond() {
return ((bitField0_ & 0x00000020) == 0x00000020);
}
public int getSecond() {
return second_;
}
public Builder setSecond(int value) {
bitField0_ |= 0x00000020;
second_ = value;
onChanged();
return this;
}
public Builder clearSecond() {
bitField0_ = (bitField0_ & ~0x00000020);
second_ = 0;
onChanged();
return this;
}
// @@protoc_insertion_point(builder_scope:org.vt.ece4564.latmb.DateTime)
}
static {
defaultInstance = new DateTime(true);
defaultInstance.initFields();
}
// @@protoc_insertion_point(class_scope:org.vt.ece4564.latmb.DateTime)
}
private static com.google.protobuf.Descriptors.Descriptor
internal_static_org_vt_ece4564_latmb_TrackingMessage_descriptor;
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_org_vt_ece4564_latmb_TrackingMessage_fieldAccessorTable;
private static com.google.protobuf.Descriptors.Descriptor
internal_static_org_vt_ece4564_latmb_Message_descriptor;
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_org_vt_ece4564_latmb_Message_fieldAccessorTable;
private static com.google.protobuf.Descriptors.Descriptor
internal_static_org_vt_ece4564_latmb_Position_descriptor;
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_org_vt_ece4564_latmb_Position_fieldAccessorTable;
private static com.google.protobuf.Descriptors.Descriptor
internal_static_org_vt_ece4564_latmb_DateTime_descriptor;
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_org_vt_ece4564_latmb_DateTime_fieldAccessorTable;
public static com.google.protobuf.Descriptors.FileDescriptor
getDescriptor() {
return descriptor;
}
private static com.google.protobuf.Descriptors.FileDescriptor
descriptor;
static {
java.lang.String[] descriptorData = {
"\n\023LATMBProtocol.proto\022\024org.vt.ece4564.la" +
"tmb\"[\n\017TrackingMessage\022\n\n\002id\030\001 \002(\005\022\014\n\004ty" +
"pe\030\002 \002(\005\022.\n\007message\030\003 \003(\0132\035.org.vt.ece45" +
"64.latmb.Message\"\352\001\n\007Message\022\017\n\007message\030" +
"\001 \002(\t\0221\n\ttimestamp\030\002 \002(\0132\036.org.vt.ece456" +
"4.latmb.DateTime\0222\n\nexpiration\030\003 \002(\0132\036.o" +
"rg.vt.ece4564.latmb.DateTime\022\020\n\010username" +
"\030\004 \001(\t\022\020\n\010chatroom\030\005 \001(\t\0223\n\013coordinates\030" +
"\006 \001(\0132\036.org.vt.ece4564.latmb.Position\022\016\n" +
"\006radius\030\007 \001(\001\"A\n\010Position\022\020\n\010latitude\030\001 ",
"\002(\001\022\021\n\tlongitude\030\002 \002(\001\022\020\n\010accuracy\030\003 \002(\001" +
"\"b\n\010DateTime\022\014\n\004year\030\001 \002(\005\022\r\n\005month\030\002 \002(" +
"\005\022\013\n\003day\030\003 \002(\005\022\014\n\004hour\030\004 \002(\005\022\016\n\006minute\030\005" +
" \002(\005\022\016\n\006second\030\006 \002(\005"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
public com.google.protobuf.ExtensionRegistry assignDescriptors(
com.google.protobuf.Descriptors.FileDescriptor root) {
descriptor = root;
internal_static_org_vt_ece4564_latmb_TrackingMessage_descriptor =
getDescriptor().getMessageTypes().get(0);
internal_static_org_vt_ece4564_latmb_TrackingMessage_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_vt_ece4564_latmb_TrackingMessage_descriptor,
new java.lang.String[] { "Id", "Type", "Message", },
org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage.class,
org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage.Builder.class);
internal_static_org_vt_ece4564_latmb_Message_descriptor =
getDescriptor().getMessageTypes().get(1);
internal_static_org_vt_ece4564_latmb_Message_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_vt_ece4564_latmb_Message_descriptor,
new java.lang.String[] { "Message", "Timestamp", "Expiration", "Username", "Chatroom", "Coordinates", "Radius", },
org.vt.ece4564.latmb.LATMBProtocol.Message.class,
org.vt.ece4564.latmb.LATMBProtocol.Message.Builder.class);
internal_static_org_vt_ece4564_latmb_Position_descriptor =
getDescriptor().getMessageTypes().get(2);
internal_static_org_vt_ece4564_latmb_Position_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_vt_ece4564_latmb_Position_descriptor,
new java.lang.String[] { "Latitude", "Longitude", "Accuracy", },
org.vt.ece4564.latmb.LATMBProtocol.Position.class,
org.vt.ece4564.latmb.LATMBProtocol.Position.Builder.class);
internal_static_org_vt_ece4564_latmb_DateTime_descriptor =
getDescriptor().getMessageTypes().get(3);
internal_static_org_vt_ece4564_latmb_DateTime_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_vt_ece4564_latmb_DateTime_descriptor,
new java.lang.String[] { "Year", "Month", "Day", "Hour", "Minute", "Second", },
org.vt.ece4564.latmb.LATMBProtocol.DateTime.class,
org.vt.ece4564.latmb.LATMBProtocol.DateTime.Builder.class);
return null;
}
};
com.google.protobuf.Descriptors.FileDescriptor
.internalBuildGeneratedFileFrom(descriptorData,
new com.google.protobuf.Descriptors.FileDescriptor[] {
}, assigner);
}
// @@protoc_insertion_point(outer_class_scope)
}
/Android Development/LATMB/src/org/vt/ece4564/latmb/LATMBProtocol.proto
0,0 → 1,32
package org.vt.ece4564.latmb;
 
message TrackingMessage {
required int32 id = 1;
required int32 type = 2;
repeated Message message = 3;
}
 
message Message {
required string message = 1;
required DateTime timestamp = 2;
required DateTime expiration = 3;
optional string username = 4;
optional string chatroom = 5;
optional Position coordinates = 6;
optional double radius = 7;
}
 
message Position {
required double latitude = 1;
required double longitude = 2;
required double accuracy = 3;
}
 
message DateTime {
required int32 year = 1;
required int32 month = 2;
required int32 day = 3;
required int32 hour = 4;
required int32 minute = 5;
required int32 second = 6;
}
/Android Development/LATMB/src/org/vt/ece4564/latmb/MessageBoardActivity.java
0,0 → 1,542
package org.vt.ece4564.latmb;
 
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
 
import org.jboss.netty.channel.Channel;
import org.vt.ece4564.latmb.LATMBProtocol.Message;
import org.vt.ece4564.latmb.LATMBProtocol.Message.Builder;
import org.vt.ece4564.latmb.LATMBProtocol.Position;
import org.vt.ece4564.latmb.LATMBProtocol.TrackingMessage;
import org.vt.ece4564.latmb.LATMBProtocol.DateTime;
 
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
 
public class MessageBoardActivity extends Activity implements OnClickListener,
LocationListener, NetworkMessageHandler<TrackingMessage> {
private static final String TAG = MessageBoardActivity.class.getName();
private EditText newEntry_;
private Button submit_;
private TextView status_;
private ViewGroup messageContainer_;
private String server_;
private int port_;
private String username_;
private String chatroom_;
private boolean useGPS_;
private boolean gpsAcquired_ = false;
private boolean gpsChanged_ = false;
private Handler handler_ = new Handler();
private Boolean connected_ = false;
private long reconnectInterval_ = 5000;
private boolean autoReconnect_ = false;
private double latitude_ = 0;
private double longitude_ = 0;
private double radius_ = 0;
private LocationManager locationManager_;
private ClientHandler<LATMBProtocol.TrackingMessage> msgHandler_;
// List of messages stored locally
private static List<LATMBMessage> storedMessages_ = new ArrayList<LATMBMessage>();
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Create the menu
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.messagemenu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.menuPreferences:
startActivity(new Intent(this, PreferenceActivity.class));
return true;
case R.id.menuDisconnect:
disconnectFromServer();
return true;
case R.id.menuChangeChatroom:
finish();
return true;
case R.id.menuRefresh:
storedMessages_.clear();
getInitialMessages();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
 
setContentView(R.layout.messageboard);
 
newEntry_ = (EditText) findViewById(R.id.editMessage);
submit_ = (Button) findViewById(R.id.buttonSubmit);
status_ = (TextView) findViewById(R.id.textStatus);
messageContainer_ = (ViewGroup) findViewById(R.id.messageList);
Intent i = getIntent();
server_ = i.getStringExtra("server");
port_ = Integer.parseInt(i.getStringExtra("port"));
username_ = i.getStringExtra("username");
chatroom_ = i.getStringExtra("chatroom");
useGPS_ = i.getBooleanExtra("gps", false);
radius_ = i.getDoubleExtra("radius", 1);
submit_.setOnClickListener(this);
locationManager_ = (LocationManager) getSystemService(LOCATION_SERVICE);
}
@Override
protected void onPause() {
super.onPause();
// Stop the GPS updater if location is used
if (useGPS_) {
locationManager_.removeUpdates(this);
}
stopAutoReconnect();
disconnectFromServer();
}
 
@Override
protected void onResume() {
super.onResume();
// Start the GPS updater if location is used
if (useGPS_) {
locationManager_.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
startAutoReconnect();
}
@Override
public void onClick(View arg0) {
// Send message if client is connected to server and location is acquired (only if gps is used)
if ((connected_ && !useGPS_) || (connected_ && gpsAcquired_)) {
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
String text = newEntry_.getText().toString();
Calendar c = Calendar.getInstance();
DateTime timestamp = DateTime.newBuilder()
.setYear(c.get(Calendar.YEAR))
.setMonth(c.get(Calendar.MONTH))
.setDay(c.get(Calendar.DAY_OF_MONTH))
.setHour(c.get(Calendar.HOUR_OF_DAY))
.setMinute(c.get(Calendar.MINUTE))
.setSecond(c.get(Calendar.SECOND))
.build();
// Get the expiration time from saved preferences
int exp_days = Integer.parseInt(sharedPrefs.getString("pref_MessageExpiration_Days", "1"));
int exp_months = Integer.parseInt(sharedPrefs.getString("pref_MessageExpiration_Months", "0"));
int exp_hours = Integer.parseInt(sharedPrefs.getString("pref_MessageExpiration_Hours", "0"));
int exp_minutes = Integer.parseInt(sharedPrefs.getString("pref_MessageExpiration_Minutes", "0"));
 
c.add(Calendar.DAY_OF_MONTH, exp_days);
c.add(Calendar.MONTH, exp_months);
c.add(Calendar.HOUR_OF_DAY, exp_hours);
c.add(Calendar.MINUTE, exp_minutes);
DateTime expiration = DateTime.newBuilder()
.setYear(c.get(Calendar.YEAR))
.setMonth(c.get(Calendar.MONTH))
.setDay(c.get(Calendar.DAY_OF_MONTH))
.setHour(c.get(Calendar.HOUR_OF_DAY))
.setMinute(c.get(Calendar.MINUTE))
.setSecond(c.get(Calendar.SECOND))
.build();
Builder message = Message.newBuilder()
.setMessage(text)
.setTimestamp(timestamp)
.setExpiration(expiration);
if (!username_.isEmpty()) {
message.setUsername(username_);
}
if (!useGPS_) {
message.setChatroom(chatroom_);
} else {
Position pos = Position.newBuilder()
.setLatitude(latitude_)
.setLongitude(longitude_)
.setAccuracy(0)
.build();
message.setRadius(radius_);
message.setCoordinates(pos);
}
TrackingMessage msg = TrackingMessage.newBuilder()
// Type 1 == New Message
.setId(0).setType(1)
.addMessage(message)
.build();
// Send the message to the server
msgHandler_.send(msg);
newEntry_.setText("");
}
}
 
private boolean connectToServer(String server, int port) {
try {
synchronized (connected_) {
if (connected_)
return true;
 
updateStatus("Connecting to server...");
 
msgHandler_ = LATMBClient.connect(server, port);
msgHandler_.setListener(this);
connected_ = true;
// Remove all currently saved messages
storedMessages_.clear();
if (!useGPS_) {
getInitialMessages();
}
// Start the thread to check for expired messages
startUpdaterThread();
updateStatus("Connected to server [" + server + ":" + port + "]");
}
return true;
} catch (Exception e) {
Log.e(TAG, "Unable to connect to server", e);
return false;
}
 
}
private class ConnectWorker implements Runnable {
 
public void run() {
doConnect();
}
 
public void doConnect() {
try {
while (autoReconnect_ && !connectToServer(server_, port_)) {
updateStatus("Attempting to reconnect to server...");
Thread.currentThread().sleep(reconnectInterval_);
}
} catch (Exception e) {
doConnect();
}
}
}
private void startAutoReconnect() {
autoReconnect_ = true;
ConnectWorker w = new ConnectWorker();
Thread t = new Thread(w);
t.start();
 
}
 
private void stopAutoReconnect() {
autoReconnect_ = false;
}
private void disconnectFromServer() {
synchronized (connected_) {
connected_ = false;
msgHandler_.disconnect();
}
}
private void updateStatus(final String status) {
handler_.post(new Runnable() {
@Override
public void run() {
status_.setText(status);
}
});
}
private void startUpdaterThread() {
Thread t = new Thread(new Runnable() {
 
@Override
public void run() {
while (true) {
try {
// If a new GPS coordinate is set, pull new list of messages
if (gpsChanged_ && gpsAcquired_) {
storedMessages_.clear();
getInitialMessages();
gpsChanged_ = false;
}
// Refresh the display
updateMessageUI();
Thread.currentThread().sleep(5000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
t.start();
}
private void getInitialMessages() {
Runnable r = new Runnable() {
 
@Override
public void run() {
if (connected_) {
Calendar c = Calendar.getInstance();
DateTime timestamp = DateTime.newBuilder()
.setYear(c.get(Calendar.YEAR))
.setMonth(c.get(Calendar.MONTH))
.setDay(c.get(Calendar.DAY_OF_MONTH))
.setHour(c.get(Calendar.HOUR_OF_DAY))
.setMinute(c.get(Calendar.MINUTE))
.setSecond(c.get(Calendar.SECOND))
.build();
Builder message = Message.newBuilder()
.setMessage("")
.setTimestamp(timestamp)
.setExpiration(timestamp);
if (!username_.isEmpty()) {
message.setUsername(username_);
}
if (!useGPS_) {
message.setChatroom(chatroom_);
} else {
Position pos = Position.newBuilder()
.setLatitude(latitude_)
.setLongitude(longitude_)
.setAccuracy(0)
.build();
message.setRadius(radius_);
message.setCoordinates(pos);
}
TrackingMessage msg = TrackingMessage.newBuilder()
// Type 0 == Initial Message
.setId(0).setType(0)
.addMessage(message)
.build();
msgHandler_.send(msg);
}
}
};
handler_.post(r);
}
@Override
public void onLocationChanged(Location location) {
latitude_ = location.getLatitude();
longitude_ = location.getLongitude();
if (latitude_ != 0 && longitude_ != 0) {
gpsChanged_ = true;
gpsAcquired_ = true;
}
}
 
@Override
public void onProviderDisabled(String arg0) {
updateStatus("GPS is disabled");
Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
 
@Override
public void onProviderEnabled(String arg0) {
updateStatus("GPS is enabled");
}
 
@Override
public void onStatusChanged(String provider, int status, Bundle bundle) {
switch (status) {
case LocationProvider.OUT_OF_SERVICE:
Toast.makeText(this, "GPS Status Changed: Out of Service", Toast.LENGTH_SHORT).show();
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
Toast.makeText(this, "GPS Status Changed: Temporarily Unavailable", Toast.LENGTH_SHORT).show();
break;
case LocationProvider.AVAILABLE:
Toast.makeText(this, "GPS Status Changed: Available", Toast.LENGTH_SHORT).show();
break;
}
}
 
@Override
public void received(final TrackingMessage msg) {
Runnable r = new Runnable() {
@Override
public void run() {
// Create a LATMBMessage from the TrackingMessage and store it
List<Message> messages = msg.getMessageList();
 
for (int i = 0; i < messages.size(); i++) {
Message message = messages.get(i);
DateTime timestamp = message.getTimestamp();
DateTime expiration = message.getExpiration();
LATMBMessage newEntry = new LATMBMessage();
newEntry.setMessage(message.getMessage());
Calendar time = new GregorianCalendar();
time.set(timestamp.getYear(), timestamp.getMonth(), timestamp.getDay(),
timestamp.getHour(), timestamp.getMinute(), timestamp.getSecond());
newEntry.setTimestamp(time);
Calendar exp = new GregorianCalendar();
exp.set(expiration.getYear(), expiration.getMonth(), expiration.getDay(),
expiration.getHour(), expiration.getMinute(), expiration.getSecond());
newEntry.setExpiration(exp);
if (message.hasUsername()) {
newEntry.setUsername(message.getUsername());
} else {
newEntry.setUsername("Anonymous");
}
if (message.hasChatroom()) {
newEntry.setChatroom(message.getChatroom());
}
if (message.hasCoordinates()) {
Position coord = message.getCoordinates();
newEntry.setLatitude(coord.getLatitude());
newEntry.setLongitude(coord.getLongitude());
}
if (message.hasRadius()) {
newEntry.setRadius(message.getRadius());
}
storedMessages_.add(newEntry);
}
}
};
handler_.post(r);
updateMessageUI();
}
 
// Updates the GUI to show stored entries
public void updateMessageUI() {
Runnable r = new Runnable() {
 
@Override
public void run() {
if (connected_) {
// Show the current chatroom or the current GPS coordinates
if (!useGPS_) {
updateStatus("Current chatroom: " + chatroom_);
} else {
if (!gpsAcquired_) {
updateStatus("Waiting for location...");
} else {
updateStatus("Using location (" + latitude_ + "," + longitude_ + ")");
}
}
}
removeExpiredMessages();
messageContainer_.removeAllViews();
// Print each message
for (LATMBMessage message : storedMessages_) {
Calendar time = message.getTimestamp();
String msg = String.format("%d/%d/%d @ %d:%d:%d ~ %s\n>> %s",
time.get(Calendar.DAY_OF_MONTH), time.get(Calendar.MONTH),
time.get(Calendar.YEAR), time.get(Calendar.HOUR_OF_DAY),
time.get(Calendar.MINUTE), time.get(Calendar.SECOND),
message.getUsername(), message.getMessage());
TextView v = new TextView(MessageBoardActivity.this);
v.setText(msg);
messageContainer_.addView(v);
}
}
};
handler_.post(r);
}
// Removes all stored expired messages
public void removeExpiredMessages() {
Runnable r = new Runnable() {
 
@Override
public void run() {
List<LATMBMessage> toRemove = new ArrayList<LATMBMessage>();
for (LATMBMessage message : storedMessages_) {
Calendar c = Calendar.getInstance();
if (c.after(message.getExpiration())) {
toRemove.add(message);
}
}
for (LATMBMessage message : toRemove) {
storedMessages_.remove(message);
}
}
};
handler_.post(r);
}
@Override
public void channelException(Throwable e) {
updateStatus("Exception occured connecting to server");
connected_ = false;
}
 
@Override
public void channelClosed(Channel c) {
updateStatus("Connection to server closed");
connected_ = false;
}
 
}
/Android Development/LATMB/src/org/vt/ece4564/latmb/NetworkMessageHandler.java
0,0 → 1,29
/**************************************************************************
* Copyright 2011 Jules White
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package org.vt.ece4564.latmb;
 
import org.jboss.netty.channel.Channel;
 
 
public interface NetworkMessageHandler<T> {
 
public void received(T msg);
 
public void channelException(Throwable e);
public void channelClosed(Channel c);
}
/Android Development/LATMB/src/org/vt/ece4564/latmb/PreferenceActivity.java
0,0 → 1,13
package org.vt.ece4564.latmb;
 
import android.os.Bundle;
 
public class PreferenceActivity extends android.preference.PreferenceActivity {
 
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);
}
 
}
/Android Development/LATMB/src/org/vt/ece4564/latmb/SecurityUtil.java
0,0 → 1,71
package org.vt.ece4564.latmb;
 
import java.security.MessageDigest;
 
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
 
public class SecurityUtil {
 
private static final String HMAC_SHA1_ALGORITHM = "HmacSHA1";
 
private static String convertToHex(byte[] data) {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < data.length; i++) {
int halfbyte = (data[i] >>> 4) & 0x0F;
int two_halfs = 0;
do {
if ((0 <= halfbyte) && (halfbyte <= 9))
buf.append((char) ('0' + halfbyte));
else
buf.append((char) ('a' + (halfbyte - 10)));
halfbyte = data[i] & 0x0F;
} while (two_halfs++ < 1);
}
return buf.toString();
}
 
public static String getSha1Hash(String text) {
try {
MessageDigest md;
md = MessageDigest.getInstance("SHA-1");
byte[] sha1hash = new byte[40];
md.update(text.getBytes("iso-8859-1"), 0, text.length());
sha1hash = md.digest();
return convertToHex(sha1hash);
} catch (Exception e) {
}
 
return null;
}
 
public static String calculateRFC2104HMAC(String data, String key)
{
try {
 
// get an hmac_sha1 key from the raw key bytes
SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(),
HMAC_SHA1_ALGORITHM);
 
// get an hmac_sha1 Mac instance and initialize with the signing key
Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
mac.init(signingKey);
 
// compute the hmac on input data bytes
byte[] rawHmac = mac.doFinal(data.getBytes());
 
String result = "";
for (byte b : rawHmac) {
result += String.format("%02x", b);
}
return result;
 
} catch (Exception e) {
throw new RuntimeException("Failed to generate HMAC : "
+ e.getMessage());
}
}
 
}
/Android Development/LATMB/src/org/vt/ece4564/latmb/build_protocol.sh
0,0 → 1,0
protoc LATMBProtocol.proto --java_out=../../../../