Skip to content

Commit

Permalink
Starting on the set port dialog.
Browse files Browse the repository at this point in the history
  • Loading branch information
Nikhil Samith Bysani committed Dec 24, 2008
1 parent b0fb440 commit 085b313
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 5 deletions.
6 changes: 5 additions & 1 deletion Makefile
Expand Up @@ -8,9 +8,10 @@ CC=gcc
COPTS=-Wall -Werror -g -D_REENTRANT -lpthread
GTKOPTS=`pkg-config --cflags --libs gtk+-2.0` -lgthread-2.0

OBJS=bang-com.o bang-net.o bang-signals.o bang-module.o core.o main.o
OBJS=bang-com.o bang-net.o bang-signals.o bang-module.o core.o set-port.o main.o

MAINSRC=src/app/main.c
SETPORTSRC=src/app/set-port.c
CORESRC=src/base/core.c
COMSRC=src/base/bang-com.c
NETWORKSRC=src/base/bang-net.c
Expand All @@ -25,6 +26,9 @@ $(EXENAME): $(OBJS)
main.o: $(MAINSRC)
$(CC) -c $(COPTS) $(GTKOPTS) $^

set-port.o: $(SETPORTSRC)
$(CC) -c $(COPTS) $(GTKOPTS) $^

core.o: $(CORESRC)
$(CC) -c $(COPTS) $^

Expand Down
8 changes: 8 additions & 0 deletions src/app/main.c
Expand Up @@ -40,6 +40,7 @@
#include"../base/core.h"
#include"../base/bang-signals.h"
#include"../base/bang-types.h"
#include"set-port.h"
#include<stdio.h>
#include<stdlib.h>
#include<glib.h>
Expand All @@ -58,6 +59,7 @@ GtkWidget *server;
GtkWidget *servermenu;
///Start Stop Server
GtkWidget *ssserver;
GtkWidget *set_port;

/*
* \param signal The signal from the BANG library.
Expand All @@ -76,6 +78,8 @@ void server_status(int signal, int sig_id, void *args) {
gtk_statusbar_push(GTK_STATUSBAR(statusbar),context_id,"!bang Machine has been bound.");
} else if (signal == BANG_BIND_FAIL){
gtk_statusbar_push(GTK_STATUSBAR(statusbar),context_id,"!bang Machine could not bind.");
gtk_widget_set_sensitive(ssserver,TRUE);
gtk_label_set_text(GTK_LABEL(gtk_bin_get_child(GTK_BIN(ssserver))),"Start Server");
} else if (signal == BANG_SERVER_STARTED) {
gtk_widget_set_sensitive(ssserver,TRUE);
gtk_label_set_text(GTK_LABEL(gtk_bin_get_child(GTK_BIN(ssserver))),"Stop Server");
Expand All @@ -85,6 +89,7 @@ void server_status(int signal, int sig_id, void *args) {
gtk_label_set_text(GTK_LABEL(gtk_bin_get_child(GTK_BIN(ssserver))),"Start Server");
gtk_statusbar_push(GTK_STATUSBAR(statusbar),context_id,"!bang Machine server stopped.");
}
///It's recommended to flush before calling the leave function. I've seen that it stops some seg faults.
gdk_flush();
gdk_threads_leave();
free(args);
Expand Down Expand Up @@ -189,8 +194,10 @@ int main(int argc, char **argv) {
servermenu = gtk_menu_new();
ssserver = gtk_menu_item_new_with_label("Start Server");
g_signal_connect(G_OBJECT(ssserver), "activate", G_CALLBACK(change_server_status), NULL);
set_port = gtk_menu_item_new_with_label("Set Port");

gtk_menu_shell_append(GTK_MENU_SHELL(servermenu),ssserver);
gtk_menu_shell_append(GTK_MENU_SHELL(servermenu),set_port);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(server),servermenu);

gtk_menu_append(menubar,file);
Expand All @@ -208,6 +215,7 @@ int main(int argc, char **argv) {
gtk_window_maximize(GTK_WINDOW(window));

///Show the menubar and its contents.
gtk_widget_show(set_port);
gtk_widget_show(ssserver);
gtk_widget_show(servermenu);
gtk_widget_show(server);
Expand Down
1 change: 1 addition & 0 deletions src/app/set-port.c
@@ -0,0 +1 @@
#include<glib.h>
3 changes: 3 additions & 0 deletions src/app/set-port.h
@@ -0,0 +1,3 @@
#ifndef __SET_PORT_H
#define __SET_PORT_H
#endif
17 changes: 15 additions & 2 deletions src/base/bang-net.c
Expand Up @@ -171,9 +171,9 @@ void* BANG_connect_thread(void *addr) {

void BANG_server_start(char *server_port) {
sem_wait(&server_status_lock);
if (server_port != NULL) {
if (server_port != NULL)
port = server_port;
}

if (server_thread == NULL) {
#ifdef BDEBUG_1
fprintf(stderr,"Starting server.\n");
Expand All @@ -184,6 +184,19 @@ void BANG_server_start(char *server_port) {
sem_post(&server_status_lock);
}

void BANG_server_set_port(char *new_port) {
sem_wait(&server_status_lock);
if (new_port != NULL && !strcmp(port,new_port)) {
sem_post(&server_status_lock);
if (BANG_is_server_running()) {
BANG_server_stop();
BANG_server_start(new_port);
}
} else {
sem_post(&server_status_lock);
}

}

void BANG_server_stop() {
sem_wait(&server_status_lock);
Expand Down
12 changes: 10 additions & 2 deletions src/base/bang-net.h
Expand Up @@ -12,13 +12,21 @@
/// \def The default port number.
#define DEFAULT_PORT "7878"

/**
* \param port
*
* \brief Sets the port of the server. DOES NOT change the port of the currently
* running server.
*/
void BANG_set_server_port(char *new_port);

/**
* \param port The port the server should start at.
* \param start_server If true, the server thread is started on init.
*
* \brief Initalizes the net part of the library.
*/
void BANG_net_init(char *port,char start_server);
void BANG_net_init(char *sever_port,char start_server);

/**
* \brief Closes and frees the net part of the library.
Expand All @@ -33,7 +41,7 @@ void BANG_net_close();
* TODO: Currently only one of theses works at a time, should the program be allowed to sit on
* any number of ports?
*/
void* BANG_server_thread(void *port);
void* BANG_server_thread(void *not_used);

/**
* \param addr The address that the thread should connect to.
Expand Down

0 comments on commit 085b313

Please sign in to comment.