summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
2587272)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7181
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
*/
#include "bindings/ruby_bindings.h"
#include "surf/surfxml_parse.h"
*/
#include "bindings/ruby_bindings.h"
#include "surf/surfxml_parse.h"
-#include "msg/private.h" /* s_simdata_process_t */
+#include "msg/private.h" /* s_simdata_process_t FIXME: don't mess with MSG internals that way */
-// XBT_LOG_NEW_DEFAULT_SUBCATEGORY(ruby,bindings,"Ruby Bindings");
+XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(ruby);
// Used to instanciate the Process
// Used to instanciate the Process
static VALUE args;
static VALUE prop;
static VALUE function_name;
static VALUE host_name;
static VALUE args;
static VALUE prop;
static VALUE function_name;
static VALUE host_name;
static VALUE rb_process_instance(VALUE fct_name,VALUE arguments,VALUE properties) {
ruby_init();
ruby_init_loadpath();
static VALUE rb_process_instance(VALUE fct_name,VALUE arguments,VALUE properties) {
ruby_init();
ruby_init_loadpath();
return rb_funcall(rb_const_get(rb_cObject, rb_intern(p_className)),rb_intern("new"),3,fct_name,arguments,properties);
}
return rb_funcall(rb_const_get(rb_cObject, rb_intern(p_className)),rb_intern("new"),3,fct_name,arguments,properties);
}
+// FIXME: don't mess with MSG internals here, use MSG_process_create_with_arguments()
static void rb_process_create_with_args(VALUE fct_name,VALUE arguments,VALUE properties,VALUE ht_name) {
VALUE ruby_process = rb_process_instance(fct_name,arguments,properties);
static void rb_process_create_with_args(VALUE fct_name,VALUE arguments,VALUE properties,VALUE ht_name) {
VALUE ruby_process = rb_process_instance(fct_name,arguments,properties);
}
process->simdata->PID = msg_global->PID++; // msg_global ??
}
process->simdata->PID = msg_global->PID++; // msg_global ??
DEBUG7("fill in process %s/%s (pid=%d) %p (sd=%p , host=%p, host->sd=%p)",
process->name , process->simdata->m_host->name,process->simdata->PID,
process,process->simdata, process->simdata->m_host,
process->simdata->m_host->simdata);
DEBUG7("fill in process %s/%s (pid=%d) %p (sd=%p , host=%p, host->sd=%p)",
process->name , process->simdata->m_host->name,process->simdata->PID,
process,process->simdata, process->simdata->m_host,
process->simdata->m_host->simdata);
-printf("fill in process %s/%s (pid=%d) %p (sd=%p , host=%p, host->sd=%p)\n",
- process->name , process->simdata->m_host->name,process->simdata->PID,
- process,process->simdata, process->simdata->m_host,
- process->simdata->m_host->simdata);
/* FIXME: that's mainly for debugging. We could only allocate this if XBT_LOG_ISENABLED(ruby,debug) is true since I guess this leaks */
char **argv=xbt_new(char*,2);
/* FIXME: that's mainly for debugging. We could only allocate this if XBT_LOG_ISENABLED(ruby,debug) is true since I guess this leaks */
char **argv=xbt_new(char*,2);
process->simdata->m_host->simdata->smx_host->name,
1,argv,NULL);
process->simdata->m_host->simdata->smx_host->name,
1,argv,NULL);
- // DEBUG1("context created (s_process=%p)",process->simdata->s_process);
- printf("context created (s_process=%p)\n",process->simdata->s_process);
+ DEBUG1("context created (s_process=%p)",process->simdata->s_process);
if (SIMIX_process_self()) { // SomeOne Created Me !!
process->simdata->PPID = MSG_process_get_PID(SIMIX_process_self()->data);
if (SIMIX_process_self()) { // SomeOne Created Me !!
process->simdata->PPID = MSG_process_get_PID(SIMIX_process_self()->data);
}
void rb_application_handler_on_end_document(void) {
}
void rb_application_handler_on_end_document(void) {
+ // FIXME: probably leaking
//application_handler_class = Qnil;
args = Qnil;
prop = Qnil;
//application_handler_class = Qnil;
args = Qnil;
prop = Qnil;
void rb_application_handler_on_begin_process(void) {
void rb_application_handler_on_begin_process(void) {
- host_name = rb_str_new2(A_surfxml_process_host);;
+ host_name = rb_str_new2(A_surfxml_process_host);
function_name = rb_str_new2(A_surfxml_process_function);
}
function_name = rb_str_new2(A_surfxml_process_function);
}
}
void rb_application_handler_on_property(void) {
}
void rb_application_handler_on_property(void) {
+ // FIXME: properties are never added to the ruby process
VALUE id = rb_str_new2(A_surfxml_prop_id);
VALUE val = rb_str_new2(A_surfxml_prop_value);
int i_id = NUM2INT (id);
VALUE id = rb_str_new2(A_surfxml_prop_id);
VALUE val = rb_str_new2(A_surfxml_prop_value);
int i_id = NUM2INT (id);
+# FIXME: add license like in C files
+
require 'simgrid_ruby'
require 'thread'
require 'simgrid_ruby'
require 'thread'
@@nextProcessId = 0
# Attributes
@@nextProcessId = 0
# Attributes
- attr_reader :bind, :id ,:name # Read only
- attr_accessor :properties, :pargs # R/W
+ attr_reader :bind, :id, :name, :pargs # Read only
+ attr_accessor :properties # R/W
@schedBegin = Semaphore.new(0)
@schedEnd = Semaphore.new(0)
@schedBegin = Semaphore.new(0)
@schedEnd = Semaphore.new(0)
- #@properties = Hash.new()
- @id = @@nextProcessId
- @@nextProcessId += 1
+ #@properties = Hash.new() FIXME: get this from the C (yep that makes 4 args to this function)
+ @id = @@nextProcessId++
@name = args[0]
@pargs = args[1]
@properties = args[2]
@name = args[0]
@pargs = args[1]
@properties = args[2]
- #Get Bind ( Used > Native to Ruby)
def getBind()
return @bind
end
def getBind()
return @bind
end
- #Get Binds (Used > Ruby to Native)
def setBind(bind)
@bind = bind
end
def setBind(bind)
@bind = bind
end
- #C Simualator Process Equivalent Management
- # After Binding Ruby Process to C Process
-
-# pause
def pause()
processSuspend(self)
end
def pause()
processSuspend(self)
end
def restart()
processResume(self)
end
def restart()
processResume(self)
end
def isSuspended()
processIsSuspended(self)
end
def isSuspended()
processIsSuspended(self)
end
def getHost()
processGetHost(self)
end
def getHost()
processGetHost(self)
end
-# The Rest of Methods !!! To be Continued ...
+# The Rest of Methods !!! To be Continued ... FIXME: what's missing?
end
#########################
end
#########################