Commit graph

486 commits

Author SHA1 Message Date
Vikram Rajkumar
874f103b8d Fix overloaded virtual function warnings 2014-12-23 15:45:57 -05:00
Eric Frias
5a91c4f118 Virtualize a few functions in istream to allow them to be overridden in derived classes 2014-12-22 17:56:30 -05:00
drltc
ff1152e55d Add sync_call() for calling a functor in another thread and waiting on it 2014-12-15 15:40:20 -05:00
Vikram Rajkumar
36baae683e Minor spelling fix 2014-12-11 19:16:02 -05:00
Daniel Larimer
cb66666edd Merge branch 'master' of github.com:BitShares/fc 2014-12-10 22:58:53 -08:00
Daniel Larimer
a4a90fac05 Update to elliptic curve signature verification 2014-12-10 22:43:37 -08:00
Nikolai Mushegian
68d3ff57bf add missing includes for packing variant 2014-12-10 11:21:44 -05:00
drltc
459847741c Add call() for 8-10 parameters, fix typo for 7 parameters 2014-12-02 11:25:32 -05:00
drltc
16c0709500 Increase stack size to 2MB 2014-11-19 11:27:22 -05:00
Daniel Larimer
e6b43a6149 adding support for 10 arg rpc calls 2014-11-10 18:29:05 -05:00
Nathan Hourt
72088c548b Tweak FC enum reflection
Previously when enum values not defined in the original enum type were
used in serialized objects, FC threw exceptions when it encountered
these values. Now it just serializes unknown values to and from numbers
instead of names.

As an added benefit, the compiler now warns you if a value is defined in
the enum, but not reflected!
2014-10-31 16:30:18 -04:00
Nathan Hourt
95c2c461ac Add missing + operator to time_point_sec
time_point_sec had an operator defined for time_point_sec -
microseconds, but not one for time_point_sec + microseconds. Now it
does.
2014-10-30 18:26:07 -04:00
Vikram Rajkumar
f948bd759d Use ISO standard delimited timestamp string serialization 2014-10-28 18:54:49 -04:00
Daniel Larimer
42ff2b10de adding digest helper utility 2014-10-28 16:23:45 -04:00
Eric Frias
d1f51dd643 Fix the currently-unused postfix signed_int::operator++ to do what you'd expect 2014-10-27 16:37:20 -04:00
Eric Frias
307252e23a Call fc:🧵:quit() on thread destruction, and remove code that explicitly terminates threads from the destructors of the objects that own those threads.
Fix fc::thread to set the thread name in the Debugger when the name is set after thread construction.
When terminating a thread, cancel any tasks that have been schedule()d or async()ed but have not yet started executing.
When canceling a task blocked on a fc::mutex, notify the thread to reschedule the task to allow it to clean up the mutex's block list.
Fix a bug in managing the recursive lock count when tasks block on a fc::mutex
Reorder the code that manages the hard links for log files to avoid an exception generated by unlinking a locked file on Windows.
2014-10-21 10:25:28 -04:00
Eric Frias
e5666cca54 Convert ready_head (list of fibers able to run immediately) into a priority heap 2014-10-16 16:26:19 -04:00
Daniel Larimer
dfe67a4494 adding blob type to variant 2014-10-15 23:32:37 -04:00
Daniel Larimer
ec9e85d268 fix fixed point math 2014-10-15 20:46:24 -04:00
Nathan Hourt
c3a6b40188 Test and bugfix real128 2014-10-15 17:53:50 -04:00
Daniel Larimer
b55ae3431a adding real 128 for fixed point 64.64 math 2014-10-15 17:00:49 -04:00
Nathan Hourt
1a78fd2931 Add directory_size call
Recursively iterate the specified directory, summing up the files
inside, and return the total size.
2014-10-13 15:17:14 -04:00
Eric Frias
b63e6a8b81 Allow recursive fc::mutexes 2014-10-12 17:28:41 -04:00
Eric Frias
5a615e6b21 Execute async tasks in the order they were asynced (this only changes the behavior of tasks that hadn't started executing yet, it doesn't change anything about the order blocked tasks unblock) 2014-10-03 16:53:14 -04:00
Vikram Rajkumar
5fa3cb8632 Add < operation to private_key to allow usage as an ordered key 2014-10-02 12:55:20 -04:00
Eric Frias
8def04f341 Add a path::preferred_string() function that generates a string in the platform's preferred format, using backslashes on win32 (uses boost::filesystem::path::make_preferred()).
Modify the log file configuration and rotating code to call to_native_ansi_path() and do more paths manipulation in fc::path objects and less in std::strings, in an attempt to improve BitShares/bitshares_toolkit#791
2014-09-25 08:57:31 -04:00
Eric Frias
2f066e4adf Fix a crash in fc::process when not capturing all three stdin/out/err
Quiet a few 64-bit warnings.
2014-09-18 11:17:41 -04:00
Eric Frias
3ee5f756fb Fix a yield-during-catch bug in udp_socket, and add a shared_ptr version of udp_socket::send_to() which will avoid reading from uninitialized memory in the face of cancellation. 2014-09-12 19:42:25 -04:00
Eric Frias
751777e754 Fix more locations where we were making boost::asio calls with buffers declared on the stack which could cause problems when the calling tasks were canceled. 2014-09-11 16:30:03 -04:00
Eric Frias
aa6882b3b7 Allow us to safely cancel tasks that are executing asynchronous network reads
and writes.  This was previously unsafe because we almost always passed read/write
buffers to boost that were on the stack. Canceling the task deleted the stack and
therefore the buffer, but couldn't reliably prevent boost from writing to the buffer
if data came in after the cancel.  This commit adds variants of the read and write
functions that take a shared_ptr<char> instead of a raw char* as the buffer, and
these variants will ensure the shared_ptr will outlive the boost::asio read/write.
2014-09-09 11:10:37 -04:00
dnotestein
10fdbcf5b3 Dequeue a thread from a blocking promise's notify list when the all the thread's tasks that are waiting on that promise are canceled. This prevents a crash when the promise is fulfilled after the thread is destroyed.
Re-organize read-loop execution to avoid crashes in read_loop on Win32 when ntp object destructs. Call quit on ntp_thread when ntp object destructs to free up thread (eventually we need to make fc::threads call quit in their destructor, but more work is required to make that work properly).
~fc::udp_socket now closes socket on destruction (consider doing this for tcp sockets as well).
2014-09-08 15:31:13 -04:00
Eric Frias
130da3623e Allow fibers to be canceled while they're sleeping or blocked on promises 2014-09-08 10:41:59 -04:00
Eric Frias
454573e048 Add support for boost 1.56. 2014-09-08 10:41:59 -04:00
Nathan Hourt
21db937ba7 Add reflector for multimap 2014-09-04 19:14:23 -04:00
Eric Frias
a0b3a9a92d Restore function-like semicolon-swallowing behavior to FC_THROW 2014-09-02 15:21:30 -04:00
Eric Frias
3222dc7c0b When reusing a context, re-initialize most of its fields. This fixes at least two errors:
- we were canceling tasks that hadn't been canceled, because the canceled flag was left set to true and the next task assigned to the context then became canceled as soon as it yielded
 - we were resumeing blocked tasks before they should have resumed, because their blocking_promises list wasn't cleared and they were unblocking because the erroneous promises were fulfilled
As a debugging aid, we also record the cancellation reason whenever a task is canceled, and include that in the canceled_exception (this is only enabled in debug builds)
2014-08-28 15:43:26 -04:00
Eric Frias
477d3397f6 Merge branch 'log_task_names' 2014-08-28 15:29:14 -04:00
Eric Frias
da15557c85 assert() instead of throwing fc::null_optional exception when dereferencing an invalid optional. Before, the behavior was to throw null_optional in debug mode and to allow the dereference in release, which masked the error 2014-08-28 11:42:46 -04:00
Eric Frias
ac385d1f6b Allow the user to supply a reason string when canceling a task (useful for debugging) 2014-08-27 14:07:44 -04:00
Eric Frias
8841f5e271 Import thread/task_specific variables 2014-08-27 12:20:19 -04:00
Eric Frias
27096f15a7 Log the names of tasks to the log file (now contains thread_name:task_name} 2014-08-24 18:33:05 -04:00
Eric Frias
578527626c Support GNTP password authentication 2014-08-21 19:32:56 -04:00
Eric Frias
156a7cc4b4 Allow setting hostname 2014-08-21 16:14:08 -04:00
Eric Frias
362884fc52 Import GNTP notification code 2014-08-21 15:21:48 -04:00
Eric Frias
978de7885a Add a macro to check if a task that shouldn't yield actually yields. 2014-08-02 19:43:28 -04:00
Eric Frias
8fa21821ae Suppress "inherited via dominance" warning 2014-08-02 15:49:07 -04:00
Daniel Larimer
6e31ffd963 Merge branch 'master' of https://github.com/InvictusInnovations/fc 2014-08-01 17:21:24 -04:00
dnotestein
7cc69f3bb7 Set canceled flag in task's context object so that we cancel out of active tasks when they try to resume. Wrap a try-catch block around tcp and udp resolve requests to convert any non-fc exceptions to fc exceptions. Minor change to clarify design intent that request_time_task should always be running in _ntp_thread. 2014-08-01 11:31:36 -04:00
Daniel Larimer
3ccbe26dd5 adding aes exception 2014-07-29 13:54:50 -04:00
Vikram Rajkumar
a23f3a86be Add missing integer variant conversions 2014-07-28 22:36:47 -04:00