agnimessenger's People
agnimessenger's Issues
Client Hearbeat Receiver Test and Implementation
The HeartbeatReceiver in the client needs tests written for it as well it's implementation. It's listeners should receive a proper message once the receiveMessage function is called. On hold until PR #28 is merged.
Client Message Sender stub
MessageSender.java
in the client needs to have it's method stubs added.
Client Chat Receiver Test and Implementation
The ChatReciever
in the client needs tests written for it as well it's implementation. It's listeners should be receive a proper message once the receiveMessage
function is called. On hold until PR #28 is merged.
Client Methods
Methods in the uml should be added client modules.
Tests for Client Action Handlers
A JUnit test for every action handler in the client.
Server Message Receiver Connection Logic
Setting up selectors and socket channels to receive incoming messages.
Server Listener Interfaces
The server listener interfaces should have their methods added. Files involved are:
LoginListener.java
UserListener.java
ChatListener.java
FileListener.java
InfoListener.java
StatusListener.java
Client Instantiation
The client needs to be constructed in the main of AgniClient.java
. This means writing constructors and passing in what needs to be passed in to what.
database type
we'll be using the second one
http://stackoverflow.com/questions/2839321/connect-java-to-a-mysql-database
Server Listener Logic
The Receivers in the server currently have no logic in them, they should be pretty easy to add in.
Specifically, the functions register()
and their respective notifyListener()
functions can be filled in pretty easily.
The files that need this are
ChatReceiver.java
notifyFileRequest.java
HeartbeatReceiver.java
InfoRequestReceiver.java
LoginReceiver.java
Client Message Receiver Connection Logic
Message receiver needs to have it's run
method implemented.
The run method is a threaded function that waits for messages from it's tcpSocket
. Every message that it receives, it checks its message type, then passes the entire message onto the corresponding Receiver. This also means that the MessageReceiver
needs reference to each of the receivers. It's constructor will need to be updated.
On hold until PR #28 is merged.
Tests for Server Senders
Client Status Receiver Test and Implementation
The StatusReceiver in the client needs tests written for it as well it's implementation. It's listeners should receive a proper message once the receiveMessage function is called. On hold until PR #28 is merged
When user leaves/joins a chat, the users of the chat should be notified
Would have to make changes in UserManager
Dataguard tests
Notify friends when a user disconnects
Once HeartbeatManager is merged in, notify StatusManager after disconnect to tell friends that the disconnected user is now offline.
(do this in StatusManager branch)
Server Message Sender sendMessage() implementation
We can implement the sendMessage(byte[] message) method in MessageSender.java in the server.
This method should send the provided byte array to the server.
This class should have it's main method implemented as well so we can manually test if it works or not. It will take input for bytes we can send and then we can manually verify the client is receiving these messages through this main method.
Connect methods Stubs
MessageSender and MessageReceiver on both the server and client will need a connect method that gets an InetAddress
for IP and an int
for a port passed in.
Server message parser types
The types for MessageParser in the server are
ip -> InetAddress
message -> byte[ ]
Server dataguards
The DataGuards for the server are commented out becasue we don't know the types. Right now they should all be strings.
Mock Database
This is a mock database we can use for testing.
Client Register Listeners
After PR #28 is merged we can work on register all the listeners in AgniClient.java
.
Client Server Message Receiver Connector Logic
Setting up selectors and socket channels to receive incoming messages.
Client MessageParser register logic
The MessageParser
in the client has it's stubs. We can implement register()
and deregister()
. This is waiting for PR #28
Server sender method parameters
The methods for the senders right now are commented out because we didn't know the parameter types.
Since the managers are using the senders directly, these types should also be as simple as possible. I think all the parameters should be strings, if there's any question on that let me know, otherwise strings should suffice for all parameters in the senders.
Client Information Receiver Test and Implementation
The InformationReceiver in the client needs tests written for it as well it's implementation. It's listeners should receive a proper message once the receiveMessage function is called. On hold until PR #28 is merged
Add JUnit to the project
Client Message Sender sendMessage() implementation
After PR #28 is merged, we can implement the sendMessage(byte[] message)
method in MessageSender.java
in the client.
This method should send the provided byte array to the server.
This class should have it's main method implemented as well so we can manually test if it works or not. The main should be passed command line arguments of the server so it can connect to the server, it'll then take input for bytes we can send and then we can manually verify the server is receiving these messages through this main
method.
Client Action Handler Method Stubs
We can easily add the methods for client action handler. The files involved are:
ChatActionHandler.java
FileActionHandler.java
HeartbeatActionHandler.java
LoginActionHandler.java
UserActionHandler.java
Client Receiver Methods
We need to add stubs for all the client receiver classes. Files involved are:
ChatReceiver.java
FileReceiver.java
HeartbeatReceiver.java
InformationReceiver.java
MessageParser.java
ReceiverListener.java
StatusReceiver.java
File Sender Protocol
For sending files, the protocol that we have is very weak, there is no acknowledgement whether we actually want the file or not. Any thoughts? @jeinglis @beaesguerra @mfalthaw
Server instantiation
AgniServer.java is empty, it needs to create all the modules and them into each other as necessary.
Client View Stub
The AgniClientView.java
interface needs to have its method stub added.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.